ngrok vs Cloudflare Tunnel: pricing, limits, quick tunnels and setup compared

Cloudflare Tunnel is included on every plan, even Free; a fixed hostname needs an account and a domain on Cloudflare, while a trycloudflare quick tunnel needs neither and caps in-flight requests at 200. ngrok Free needs an account and gives 20,000 requests and 1 GB a month on a fixed dev domain.

Cloudflare Tunnel comes free on every Cloudflare plan and its trycloudflare quick tunnels don't even need an account, while ngrok requires an account up front but gives you a free dev domain that stays the same and a built-in request inspector. That's the practical split: use a quick tunnel for zero setup, ngrok Free when you want a stable URL without owning a domain, or a named Cloudflare Tunnel when you're putting your own domain on it.

ngrok vs Cloudflare Tunnel at a glance

The comparison usually comes down to three setups (ngrok Free, a Cloudflare quick tunnel and a named Cloudflare Tunnel), with ngrok Hobbyist as the first paid step up. For webhook testing, the biggest difference is that a quick tunnel gets a new URL every run, so you paste it into the provider's settings again, while ngrok's free dev domain stays the same.

Featurengrok Freengrok HobbyistCloudflare quick tunnelCloudflare named tunnel
Price$0$10 a month, $8 billed annually$0Included on all plans, including Free
Account neededYes, with authtokenYesNoYes, plus a domain on Cloudflare
Public hostname1 dev domain, same after restarts10 ngrok-branded domainsRandom trycloudflare.com, new each runYour own domain
Usage limits20,000 requests and 1 GB a month100,000 requests and 5 GB included200 in-flight requestsNo throughput limits on the connector
Access controlOAuth or OIDC sign-in, 3 users a monthOAuth or OIDC sign-in, 5 users a monthEmail one-time codesCloudflare Access, free up to 50 users
How long it runsNo timeoutNo timeout, stops if monthly credit runs outUntil cloudflared stopsAs an installed service

Cloudflare quick tunnels (trycloudflare.com)

With Cloudflare quick tunnels, you run one command with no account and get a random trycloudflare.com URL that dies as soon as the cloudflared process stops. --allowed-mail can require one-time email codes, but that needs a browser, so it won't work for webhook senders.

  • Quick tunnels are meant for testing and have no uptime guarantee.
  • They cap out at 200 in-flight requests and return HTTP 429 beyond that.
  • Server-Sent Events aren't supported.
  • You get a new hostname every time you start the tunnel.
  • They won't start if a config.yaml file exists in your .cloudflared directory.

In our October 29, 2026 test, a quick tunnel gave us a URL in 6.0 seconds, POST requests through it returned 200 in about 0.12 seconds, and a browser User-Agent hit our app directly with no warning page. Our sandbox needed --protocol http2 because the default QUIC connection timed out.

# No account: random trycloudflare.com URL
cloudflared tunnel --url http://localhost:3000

# If QUIC connections time out on your network
cloudflared tunnel --protocol http2 \
  --url http://localhost:3000

Named Cloudflare Tunnels

A fixed hostname needs a named tunnel, which requires a Cloudflare account and a domain added to Cloudflare.

  1. Create the tunnel in the dashboard under Networking, Tunnels.
  2. Install the connector on your machine with sudo cloudflared service install <TUNNEL_TOKEN>.
  3. Publish a hostname, which Cloudflare sets up as a CNAME pointing to <TUNNEL_ID>.cfargotunnel.com.

The cloudflared daemon makes outbound-only connections (so you don't open inbound ports) and holds four long-lived connections to two Cloudflare data centers, with account limits of 1,000 tunnels and 25 active replicas per tunnel. For sign-in, Cloudflare Access on the Zero Trust Free plan covers up to 50 users with 24 hours of logs for $0; pay-as-you-go is $7 per user a month.

# Token comes from the dashboard: Networking, Tunnels
sudo cloudflared service install <TUNNEL_TOKEN>

ngrok Free, Hobbyist and Pay-as-you-go

ngrok requires an account and an authtoken (ngrok config add-authtoken <token>) before you can start a tunnel. See our ngrok free plan limits guide for the full breakdown.

  • Free ($0) includes 20,000 HTTP requests and 1 GB of transfer a month, a rate limit of 4,000 requests a minute, up to 3 online endpoints, a fixed dev domain that survives restarts, no session timeout, 500 webhook verifications a month, and the Traffic Inspector with replay and 24 hours of data.
  • Browser HTML traffic on Free hits an interstitial page that you can skip with the ngrok-skip-browser-warning header, though webhook senders don't see it.
  • Hobbyist costs $10 a month ($8 billed annually) with 100,000 requests and 5 GB included, no interstitial, and 10 ngrok-branded domains, and your endpoints stop if the monthly credit runs out.
  • Pay-as-you-go is $20 a month (with $20 of usage included) and lets you bring your own custom domains at $0.01 per active hour, plus $1 per 100,000 requests and $0.10 per GB after the included 100,000 requests and 5 GB.
# Skip the free-plan browser page from a script
curl -H "ngrok-skip-browser-warning: 1" \
  https://<your-dev-domain>/webhook

ngrok config add-authtoken <token>
ngrok http 3000

Which one to pick

  • Pick a Cloudflare quick tunnel for a quick demo without making an account.
  • Pick ngrok Free's dev domain when you need a webhook URL that survives restarts and you don't own a domain.
  • Pick a named Cloudflare Tunnel with Access when you have your own domain, a long-running service, and need team sign-in.
  • Pick ngrok's Traffic Inspector to inspect and replay requests in a UI while you debug.

When you don't need either for webhooks

Both tools only deliver webhooks while your machine, your local server and the tunnel are all running. If you just need to see what a provider sends, grab a free bin on webhooks.sh: it needs no signup, keeps a fixed URL for 48 hours, takes up to 100 requests a day, and captures payloads whether your laptop is on or not. It always replies 200 with a small JSON body like {"ok":true,"delivery_id":"..."} and doesn't run your code.

You can claim a bin with a free Google sign-in before it expires to keep the same URL and 30 days of rolling history. If you do want requests to hit your local code, Solo ($12 a month) adds the wsh CLI so you can relay live deliveries to localhost (wsh listen <endpoint> --to localhost:3000) and replay captured requests. Read more in our guide on testing webhooks without ngrok.

# Free bin: no signup, 48 hours, 100 requests a day
curl -X POST https://webhooks.sh/v1/bins

# Solo: relay a named endpoint to localhost
wsh listen <endpoint> --to localhost:3000

FAQ

Is Cloudflare Tunnel free?

Yes. Cloudflare's docs say Cloudflare Tunnel is available on all plans, including Free. Quick tunnels need no account, and Access sign-in is free for up to 50 users on the Zero Trust Free plan.

What is trycloudflare.com?

The domain Cloudflare quick tunnels use: cloudflared tunnel --url gives you a random subdomain of it. Quick tunnels are meant for testing, have no uptime guarantee and get a new subdomain every run.

What are the limits of a Cloudflare quick tunnel?

A quick tunnel caps at 200 in-flight requests (returning HTTP 429 after that), doesn't support Server-Sent Events, has no uptime guarantee, and changes its hostname every time you start it. It also won't start if you have a config.yaml file in your .cloudflared directory.

Is ngrok or Cloudflare Tunnel better for testing webhooks?

ngrok Free is usually easier: its dev domain stays the same across restarts and its Traffic Inspector can replay requests. A quick tunnel changes URL every run, and a named tunnel needs a domain on Cloudflare. To only read payloads, a webhooks.sh bin needs neither.

Does Cloudflare Tunnel need a domain?

Named tunnels need a domain added to your Cloudflare account. Quick tunnels on trycloudflare.com don't need a domain or an account.

How much does ngrok cost compared to Cloudflare Tunnel?

ngrok has a $0 Free tier, a Hobbyist plan at $10 a month ($8 billed annually), and Pay-as-you-go at $20 a month plus usage. Cloudflare Tunnel is included on all Cloudflare plans; Zero Trust pay-as-you-go ($7 per user a month) only matters if you need Access sign-in for more than 50 users.

Can I use my own domain for free?

Yes, with a named Cloudflare Tunnel, as long as your domain is on Cloudflare. On ngrok, your own domain needs at least the $20-a-month Pay-as-you-go plan and costs $0.01 per active hour.

Last updated

Try it in 10 seconds.

Create a free bin at view.webhooks.page — no signup, no install. Point your sender at the URL and watch requests land live. Bins expire after 48 hours.