ngrok Alternatives in 2026: 7 Ways to Put a Public URL on localhost
An honest comparison of ngrok alternatives — inrok, zrok, Cloudflare Tunnel, Tailscale Funnel, localtunnel, and SSH tunnels — with pricing, limits, and trade-offs.
ngrok made "put a public URL on my laptop" a one-liner, and it's still a fine tool. But its free tier is tight (limited bandwidth, an interstitial warning page on every visit), paid plans start around $8/month, and bandwidth-heavy use cases get throttled. Depending on what you're tunneling, one of these alternatives may fit better.
Full disclosure: we build inrok, so it's first on the list — but the trade-offs below are stated as honestly as we can manage, including when ngrok is still the right choice.
1. inrok — free 100 GiB/month, persistent URLs
inrok is a managed tunneling service built on the open-source OpenZiti zero-trust stack. One command puts an HTTPS URL on any local port:
curl -fsSL https://inrok.in/install.sh | bash
inrok login
inrok http 3000 --name demo
# → https://demo.share.inrok.in
- Free while in beta: 100 GiB of bandwidth a month, 3 tunnels, no card required. Paid plans (from ₹99 / $2.50 a month) come after the beta.
- Names persist —
demo.share.inrok.instays yours across restarts, reboots, and network drops. - Media-friendly by policy: streaming your own Jellyfin, Plex, or Immich library is an explicitly supported use case, not a ToS gray zone.
- Supports HTTP(S), raw TCP and UDP, static sites, and shared directories.
Honest caveats: the managed edge is hosted in India, so if both you and your visitors are far from it, latency will be higher than a provider with a PoP next door. And inrok itself isn't open source — the open-source story is the OpenZiti core underneath (if you want fully self-hosted, see zrok below).
2. zrok — open source, self-hostable
zrok is the open-source project in this same family. You can use the public free instance or self-host the entire stack (controller, frontends, the works) on your own servers. If you want zero dependence on any vendor and don't mind operating it yourself, this is the most complete OSS option. The cost is exactly that: you run it, you patch it, you babysit the certificates.
3. Cloudflare Tunnel — free and excellent, until you stream
cloudflared gives you a free, robust tunnel into Cloudflare's network, ideally with your own domain. For ordinary websites, APIs, and webhooks it's hard to beat at ₹0.
The catch is media: Cloudflare's terms restrict serving video and other large files through its proxy, and homelabbers have repeatedly reported accounts flagged or banned for streaming Jellyfin or Plex through tunnels. If your traffic is dashboards and APIs, use it happily. If it's your media library, you're betting your setup on not getting noticed.
4. Tailscale Funnel — great if everyone installs Tailscale anyway
Tailscale is a brilliant private overlay network, and Funnel can expose a service on a public *.ts.net URL. It's free for personal use, but Funnel is bandwidth-limited, URLs are tied to Tailscale's naming, and the moment you want private sharing, every viewer needs the Tailscale client installed — fine for your own devices, painful for a TV, a console, or a link you send to a friend.
5. localtunnel — free and zero-signup, but fragile
npx localtunnel --port 3000 and you have a URL. It's open source and genuinely free. It's also community-run infrastructure: subdomains are random unless you're lucky, uptime is best-effort, and visitors hit an interstitial password page (it shows your public IP as the password) before reaching your service. Good for a five-minute demo, not for anything someone else depends on.
6. SSH reverse tunnels (localhost.run, serveo, your own VPS)
If you have SSH, you have a tunnel: ssh -R 80:localhost:3000 localhost.run returns a public URL with no installation at all. Services like localhost.run and serveo wrap this nicely. URLs are ephemeral on free tiers and bandwidth is unspecified, but as the zero-install option it's a beautiful trick. With your own VPS and a couple of sshd settings you can run the same thing fully under your control.
7. frp / rathole on a cheap VPS — full control, full responsibility
frp and similar reverse proxies let a ₹300-a-month VPS become your personal tunnel server. Unlimited(ish) bandwidth at VPS prices, your own domain, no third-party terms. You also own TLS renewal, security hardening, and the 2 a.m. pages when it breaks. Worth it if you enjoy that sort of thing (you might be reading a homelab blog, so: maybe).
Quick comparison
| Option | Free tier | Persistent URL | Media streaming | Self-host |
| ----------------- | --------------------- | ---------------- | ------------------- | ------------------- |
| inrok | 100 GiB/mo, 3 tunnels | Yes | Allowed | No (OSS core: zrok) |
| zrok | Public instance | Yes | Depends on instance | Yes |
| Cloudflare Tunnel | Unlimited-ish | Yes (own domain) | ToS risk | Partially |
| Tailscale Funnel | Yes, limited | *.ts.net only | Bandwidth-limited | Headscale (partial) |
| localtunnel | Yes | Mostly random | Impractical | Yes |
| SSH tunnels | Yes | Ephemeral | Impractical | Yes |
| frp + VPS | VPS cost | Yes (own domain) | Your rules | Fully |
When ngrok is still the right answer
ngrok's request inspector and replay tooling are still best-in-class for debugging webhooks, its docs are excellent, and if your employer pays for it, the paid tiers are solid. If those are your needs, use ngrok. If what you need is generous free bandwidth, a URL that doesn't change, and no ToS anxiety about your media library — that's the gap inrok exists to fill.