Public APIs
All posts

Best ngrok Alternatives in 2026, Ranked

Quick answer: The strongest free ngrok alternatives right now are Cloudflare Tunnel for a zero-cost public HTTPS URL, localhost.run if you want no install at all, and frp or bore if you would rather self-host. Avoid localtunnel: it is the most recommended option on the internet and its last commit was over a year ago.

Most "ngrok alternatives" lists are written by tunnel vendors ranking themselves first. This one is not. We run a directory of public APIs, so we care about one thing: getting a public HTTPS URL onto a service running on your laptop, usually because something needs to call you back.

Every fact below was checked on 15 September 2026.

Why do people look for an ngrok alternative?

Because the free tier changed shape. As of today, ngrok's free plan gives you $5 of one-time credit with no usage beyond it, up to 3 online endpoints, 1GB of transfer, 20,000 HTTP requests, and one team member. It also puts an interstitial warning page in front of your HTTP endpoints, which is removed on the $10/month Hobbyist plan.

That interstitial is the part that actually breaks work. A webhook sender or an OAuth provider hitting your URL gets the interstitial instead of your app, and you spend twenty minutes debugging your own code before you find it.

The most recommended free alternative has not shipped in a year

Search for a free ngrok replacement and localtunnel appears everywhere. Here is what the repositories look like today:

| Project | Stars | Last push | Licence | |---|---|---|---| | frp | 109,446 | 2026-09-15 | Apache-2.0 | | tailscale | 36,496 | 2026-09-15 | BSD-3-Clause | | localtunnel | 22,471 | 2025-08-29 | MIT | | cloudflared | 15,620 | 2026-09-15 | Apache-2.0 | | bore | 11,495 | 2026-02-04 | MIT | | expose | 4,571 | 2026-09-11 | MIT | | zrok | 4,679 | 2026-06-22 | Apache-2.0 | | tunnelmole-client | 1,889 | 2026-04-13 | MIT |

localtunnel has the third-highest star count on that list and the oldest commit by more than six months. Stars measure how many people recommended something once, not whether it still works.

What are the best ngrok alternatives?

Ranked for the job of exposing a local API to the internet.

  1. Cloudflare Tunnel. The default answer. cloudflared tunnel --url http://localhost:8080 gives you a public trycloudflare.com HTTPS URL with no account at all, and named tunnels on your own domain are free if the domain is on Cloudflare. Actively developed (last push today).
  2. localhost.run. The fastest possible start. One command, ssh -R 80:localhost:8080 nokey@localhost.run, using the SSH client you already have. Nothing to install, no signup, and the free domain tier is advertised as permanent. Custom domains are $9/month billed annually.
  3. Tailscale Funnel. The right tool when the thing calling you is a teammate or another machine rather than the public internet. Your device gets a stable HTTPS name and you decide whether it is private to your network or publicly reachable. The client is open source and shipped today.
  4. frp. The self-hosting standard, and by far the most active project here. You run the server on any VPS and get TCP, UDP, HTTP and HTTPS forwarding with no third-party in the path. Worth it if the traffic is sensitive or long-lived.
  5. bore. frp's opposite. Under 1,000 lines of Rust, one binary, TCP only, no config file. Perfect when all you need is a port on a server you already own.
  6. zrok. Open source and built on OpenZiti, available hosted or self-hosted, and the only option here whose default mental model is private sharing rather than public exposure. Also shares files and directories, not just HTTP.
  7. Pinggy. Another SSH-only option with no binary to install, including TCP, UDP and TLS tunnels. Free tunnel URLs change whenever the tunnel reconnects, which is a real problem when you have pasted the URL into a webhook configuration.
  8. Expose. A PHP tunnel server you can host yourself, most at home in a Laravel codebase. Actively maintained, MIT licensed.
  9. Tunnelmole. Open source, installs from npm, hosted or self-hosted. A reasonable pick if your whole toolchain is already Node and you want npx rather than a binary.
  10. localtunnel. Listed only because you will be pointed at it. It still installs and often still works. It has not been touched since August 2025, so do not build a team workflow on it.

Which one should you pick?

| If you need | Use | |---|---| | A free public URL in ten seconds, no account | localhost.run or Cloudflare quick tunnels | | A stable URL to paste into a webhook config | Cloudflare Tunnel on your own domain | | No third party in the traffic path | frp, or bore if you want it minimal | | To share with teammates, not the world | Tailscale Funnel or zrok | | Only a raw TCP port, not HTTP | bore or frp | | To stay on ngrok | Hobbyist at $10/month, mostly to drop the interstitial |

How many APIs actually need a tunnel?

This is the part worth measuring rather than assuming. Of the 1,574 live APIs in our directory, 177 document webhooks, OAuth redirects or callbacks, which is 11.2%. Every one of those is an integration you cannot finish testing without a public URL pointing at your own machine.

That number is also why "just use a mock" only takes you so far. A mock proves your handler parses the payload. It does not prove the provider's retry behaviour, signature header or redirect flow does what the docs claim.

If the callback side is what you are actually building, two entries in the directory do that job without a tunnel: Svix for sending webhooks with retries and signatures, and Beeceptor for capturing and inspecting them at a hosted endpoint. Tunnels and capture endpoints solve adjacent problems, and most projects end up using both. For practising against something harmless first, the test data APIs are a better target than a payment provider's sandbox.

Frequently asked questions

Is there a free alternative to ngrok?

Several, and two of them need no account. Cloudflare's quick tunnels give you a public HTTPS URL from a single cloudflared command, and localhost.run does the same over plain SSH with nothing installed. Both are free for the basic case; you pay only when you want a stable custom domain.

What is the best self-hosted ngrok alternative?

frp, by a wide margin on activity: 109,446 stars and commits landing today. It handles TCP, UDP, HTTP and HTTPS and runs on any VPS. If frp feels heavy for what you need, bore is a single small Rust binary that forwards one TCP port and nothing else.

Is localtunnel still maintained?

Not meaningfully. The repository's last push was 29 August 2025, over a year before this was written, despite 22,471 stars. It frequently still works, but an unmaintained tunnel is a bad dependency for anything a team relies on.

Do I need a tunnel to test webhooks?

Only if you want to test the real sender. A hosted capture endpoint lets you inspect what a provider sends without exposing anything locally, which is often enough while you are writing the parser. You need the tunnel once you want the provider to hit your actual handler, with your real signature verification and your real database behind it.

Is it safe to expose localhost with a tunnel?

Treat any tunnel URL as public, because it is. Anyone who learns the hostname can reach whatever is behind it, and short random hostnames get scanned. Run only the service you mean to expose, keep authentication switched on rather than disabling it for convenience, and close the tunnel when you stop working.