← All articles

ngrok Alternatives for Webhooks: Tunnels, Relays and Gateways

Webhooker Team Updated 10 min read
Flat illustration of receiving webhooks while a laptop sleeps under a crescent moon: envelopes spill out of an open tunnel pipe, while a second pipe runs through the blue Webhooker pulse node where envelopes wait in a stack with a dashed line to the laptop.

The right ngrok alternative for webhooks depends on one question: what should happen to an event that arrives while your laptop is asleep? A tunnel, whether ngrok, Cloudflare Tunnel, Tailscale Funnel or localtunnel, forwards traffic only while its agent runs, so that event fails and you wait for the provider to retry. A webhook relay such as the Hookdeck CLI, Webhook Relay or Webhooker keeps a public URL that is always up, accepts the event while you are away, and in most cases stores it so you can inspect or replay it later. For exposing a whole local app, pick a tunnel. For receiving webhooks during development, a relay is usually the better fit.

We build Webhooker, one of the relays on this page, so treat that part as a vendor’s view. Every limit and price below links to the tool’s own documentation, checked on 14 September 2026.

Why look for an ngrok alternative for webhooks?

ngrok works well for webhooks, and some common complaints about it are out of date. Free accounts now get one assigned development domain that stays the same across restarts, so you no longer have to update the Stripe dashboard every morning. The free-tier warning page is shown only to HTML browser traffic, and ngrok says it “does not impact users serving APIs or accessing ngrok endpoints programmatically”, so webhook POSTs pass straight through without the ngrok-skip-browser-warning header.

The reasons that remain are real, though:

None of these matters for a quick demo. They matter when you work on a webhook integration for days and events keep arriving while you are away.

Tunnels vs webhook relays: what is the difference?

A tunnel connects a public hostname to a port on your machine. Every request goes straight through, so the tunnel works for web apps, APIs and webhooks alike, and nothing is stored in between. When the agent stops, the hostname stops answering.

A webhook relay gives you a public URL hosted by the relay service, receives each webhook there, and streams it to a small client on your machine that replays it against localhost. Because the service accepts the request, the provider sees a 200 even while you are offline. Whether the event is kept for later depends on the relay: some store it, smee.io does not.

The difference shows up with providers that retry slowly or give up fast. Stripe retries live-mode events for up to three days, but sandbox events only three times over a few hours. Close the laptop at 6pm and a sandbox event sent at 7pm may be gone by morning.

How do the ngrok alternatives compare? (checked 14 September 2026)

Table: ngrok alternatives for webhooks compared on type, free tier, stable URL, what happens while you are offline, and source availability.

ToolTypeFree tierPaid fromStable URL on freeEvents while offlineOpen source
ngrokTunnel1 GB, 20,000 requests/mo$10/moYes, 1 dev domainFailAgent SDKs only
Cloudflare TunnelTunnelFree; Quick Tunnels without accountFreeNamed tunnel needs a domain on CloudflareFailYes, Apache 2.0
Tailscale FunnelTunnel (beta)Personal plan, up to 6 users$8/user/moYes, ts.net nameFailClient BSD-3-Clause
localtunnelTunnelFree public serverNoneNo, random by defaultFailYes, MIT
PinggyTunnel60-minute timeoutPro plan, price by regionPro onlyFailNo
LocalXposeTunnel2 HTTP tunnels$8/moCustom domains on ProFailNo
zrokTunnel5 GB/dayContact NetFoundryReserved sharesFailYes, Apache 2.0
Hookdeck CLIRelayGuest mode; 10,000 events/mo with account$39/moNot statedNot stated for the CLICLI Apache 2.0
smee.ioRelayFreeFreeYes, channel URLDropped, never storedYes, MIT
Webhook RelayRelay and tunnels150 webhooks/mo$8.99/moYesStored and retriedClient only
WebhookerRelay and gateway10,000 events/mo, 14-day retention€29/moYesStored in source historyNo

Which tunnels work best for webhooks?

Cloudflare Tunnel is free and a natural pick if your domain already sits on Cloudflare. A named tunnel gives you a stable hostname on that domain. Quick Tunnels on trycloudflare.com need no account but get a random subdomain each time, allow 200 in-flight requests, and come with no uptime guarantee, which makes them fine for a quick test and awkward for anything you register in a provider’s dashboard.

Tailscale Funnel exposes a service on your tailnet at a stable ts.net name, on ports 443, 8443 or 10000 only. It is in beta but available on all plans, including the free Personal plan. If your team already uses Tailscale, it is the least new software to install.

localtunnel is MIT licensed and needs no account, but the latest npm client dates from 2021 and subdomains are random by default. Its reminder page affects browser user agents only; after the 2023 change some users reported broken webhooks until they sent the Bypass-Tunnel-Reminder header, as issue 598 shows.

Others. Pinggy has a 60-minute timeout on free tunnels. LocalXpose allows 2 free HTTP tunnels, with Pro at $8 a month. localhost.run changes free domain names after a few hours. zrok is Apache 2.0 and self-hostable on OpenZiti. Microsoft Dev Tunnels needs a Microsoft, Entra ID or GitHub account and allows 5 GB and 10 tunnels per user a month. For full control, frp (Apache 2.0) and bore (MIT) run on your own server.

Every tunnel shares the same limit: when your machine is off, webhooks fail.

Which webhook relays keep events when you are offline?

Webhook Relay says webhooks “are persisted and automatically retried until delivery succeeds”. The free Starter plan covers 150 webhooks a month with 2 destinations and no tunnels, and Basic is $8.99 a month billed yearly. Its default tunnel region is Belgium, with a note that the country can change without notice.

Hookdeck CLI works without logging in by creating a temporary guest account, and Hookdeck describes it as a free ngrok replacement. Events show up on a CLI events page and can be retried to replay them locally. Hookdeck does not say whether events are queued while the CLI is closed. Its Event Gateway is hosted in the US only.

smee.io is built for GitHub Apps and never stores payloads. Only connected clients receive them, channels are not authenticated, and its own FAQ answers “Should I use this in production?” with “No!”.

Provider CLIs. stripe listen forwards Stripe events to localhost with no registered endpoint, and its signing secret stays the same between restarts. It only covers Stripe, and events are not buffered for the CLI while it is closed. Svix’s svix listen works without a Svix account.

Webhooker is an EU-hosted webhook gateway that also works as a relay for local development. Each source has a permanent ingest URL. Webhooker accepts and stores every event, verifies its signature, and the Webhooker CLI forwards the webhooks arriving on that source to a local URL. Events that come in while your laptop is closed are still recorded in the source’s history, and the same source can deliver to a staging or production endpoint once your code is deployed, so the URL registered in Stripe or GitHub never has to change. The free plan covers 10,000 events a month with 14-day retention.

Which ngrok alternative should you use for webhooks?

Table: which kind of tool fits which local webhook workflow.

Your situationUse
One quick test, nothing to register permanentlyCloudflare Quick Tunnel, Svix Play or stripe listen
You need to expose a whole local app, not just webhooksngrok, Cloudflare Tunnel or Tailscale Funnel
Only Stripe eventsstripe listen
A GitHub App built with Probotsmee.io
Days of work on an integration, events must not be lost overnightA relay that stores events: Webhook Relay, Hookdeck or Webhooker
The same URL should serve local, staging and productionA gateway with a CLI, such as Webhooker
Everything must run on your own serversfrp, bore, zrok or a self-hosted tester

If what you mainly need is to see what a provider sends, rather than run your handler against it, a request inspector is simpler still. We compare those in webhook.site and RequestBin alternatives.

Is it safe to expose localhost to receive webhooks?

It is safe enough for development if you treat the public URL as known to everyone. Anyone who finds a tunnel hostname can send requests to your local app, which may run with debug settings, seeded admin accounts or no authentication. Three habits help: verify webhook signatures in your handler even locally, forward only the webhook path rather than the whole app where the tool allows it, and stop the tunnel when you are done.

A relay narrows the exposure, because the public URL belongs to the relay service and only the CLI on your machine talks to localhost. A request bin or relay that stores payloads should still stay out of production data unless it requires login and you have a DPA with its operator, since webhook payloads often carry personal data.

Frequently asked questions

Is ngrok free?

Yes, with limits. The free plan includes one assigned development domain, 1 GB of data out, 20,000 HTTP requests and 500 webhook verifications a month, and up to 3 online endpoints. Hobbyist costs $10 a month, raises the limits and removes the browser warning page.

Does the ngrok browser warning block webhooks?

No. ngrok shows the warning page only to HTML browser traffic on the free tier and says it does not affect API or programmatic requests. Webhook POSTs from Stripe, GitHub or Shopify reach your local app without the ngrok-skip-browser-warning header.

What is the best free ngrok alternative?

For a stable hostname at no cost, Cloudflare Tunnel with a domain on Cloudflare or Tailscale Funnel. For no account at all, Cloudflare Quick Tunnels or localtunnel. For webhooks specifically, smee.io, the Hookdeck CLI and Webhooker’s free plan give you a permanent URL without running a tunnel.

What happens to webhooks when my tunnel is down?

The provider gets an error and the event is not stored by the tunnel. Whether you get it later depends on the provider’s retry policy: Stripe retries live events for up to three days but sandbox events only three times over a few hours. A relay that stores events, or a gateway, keeps them even while your machine is off.

Is ngrok safe?

ngrok is a legitimate service used widely for development. The risk comes from exposing a local app to the internet: anyone with the URL can send requests to it. Verify webhook signatures, avoid exposing admin interfaces, and stop the tunnel when you finish.