LocalXpose
• 12 min read • By Abdelhadi Dyouri

Best ngrok Alternatives: 8 Free, Open Source & Self-Hosted Tools

We tested 8 ngrok alternatives in 2026, from free hosted tunnels to open source and self-hosted tools, with real examples, current pricing and UDP support.

Best ngrok Alternatives - 8 Tools Tested for 2026

ngrok is the most popular way to make a local server public, but its free plan is very limited, custom domains need the $20/month Pay-as-you-go plan, and it still doesn’t support UDP.

In October 2026, we tested 8 ngrok alternatives, from hosted services to open source tools you run on your own server. Each one has a real example and current pricing.

Quick Picks

  • Best overall: LocalXpose
  • Already on Tailscale: Tailscale Funnel
  • Best self-hosted: frp
  • Lightest self-hosted: rathole
  • Simplest TCP tunnel: bore
  • Behind strict firewalls: chisel
  • No signup: Tunnelmole and localtunnel

ngrok in 2026: Plans and Limits

ngrok connects your machine to ngrok’s edge and gives your local service a public HTTP/S, TCP, or TLS endpoint. Version 1.x was open source, but today’s ngrok is a proprietary product.

PlanPriceKey limits
Free$03 endpoints, 1 GB transfer, 20k HTTP/S requests, interstitial page, TCP needs card verification
Hobbyist$10/month ($8 billed annually)3 endpoints, 5 GB and 100k requests, no interstitial, ngrok-branded domains
Pay-as-you-go$20/month + usageUnlimited endpoints, your own domains, wildcards, TLS endpoints
EnterpriseCustomSSO, SCIM, SLAs, compliance

Hobbyist includes a $10 usage credit each month. If you use it up, your endpoints stop working until the next billing cycle. Here’s the free plan with our demo app, a small Node.js server on port 3000:

ngrok config add-authtoken <YOUR_AUTHTOKEN>
ngrok http 3000

ngrok agent forwarding

The agent also runs a local web inspector at 127.0.0.1:4040, where you can see each request.

ngrok web inspector

Why Developers Look for ngrok Alternatives

  • Tight free limits and an interstitial page
  • No UDP for game servers, VoIP or IoT (see our ngrok UDP alternative guide)
  • No self-hosting, since the service is closed source

ngrok Alternatives Compared

ToolProtocolsFree optionPaid fromMain downside
LocalXposeHTTP/S, TLS, TCP, UDP2 HTTP/S tunnels$8/mo (annual)TCP, TLS and UDP need Pro
Tailscale FunnelHTTPS, TCP✅$8/user/moOnly ports 443, 8443 and 10000, no request inspection
frpTCP, UDP, HTTP/S✅FreeYou run and secure your own server
ratholeTCP, UDP✅FreeNo HTTP routing, unencrypted by default, no release since 2023
boreTCP✅ No signupFreeTCP only, traffic is not encrypted
chiselTCP, UDP✅FreeYou run your own server, no HTTP routing
TunnelmoleHTTP/S✅ No signupSubscriptionNew URL on every run
localtunnelHTTP/S✅ No signupFreeVisitors hit a password page, frequent outages

1. LocalXpose

LocalXpose gives your local services a public address with one command, using the CLI (loclx) or the desktop app. It also includes UDP, custom and wildcard domains, basic auth, IP whitelisting, request inspection, webhook replay and a built-in file server.

  • Pros: unlimited bandwidth (fair use), UDP support and 10 tunnels on Pro
  • Cons: Closed source, and the free plan has an interstitial page and 2 HTTP/S tunnels with time limits

Example: Host a Minecraft Java Server From a Mac

With your Java Edition server running on its default port (TCP 25565), log in and open a TCP tunnel:

loclx account login
loclx tunnel tcp --to 127.0.0.1:25565

LocalXpose TCP tunnel

In Minecraft, open Multiplayer, click Add Server, and enter the tunnel address (for example us.loclx.io:53441) in the Server Address field. Our Minecraft guide covers the full server setup.

The server showing up in the Minecraft multiplayer list

LocalXpose vs ngrok

LocalXpose Prongrok Hobbyist
Price$8/mo billed annually$8/mo billed annually ($10 monthly)
Tunnels103 online endpoints
UDP and TLS✅❌
Custom domains✅ Including wildcards❌
BandwidthUnlimited (fair use)5 GB, then paid from the monthly credit

Pricing: Enterprise is priced on request; Pro is $8/month when billed annually and Starter is free.

2. Tailscale Funnel

Tailscale links your devices in a private WireGuard network. It also has a Funnel feature (still in beta) that publishes a service from one of those devices at a public HTTPS address on ts.net.

  • Pros: Free on every plan, with no extra agent
  • Cons: Only ports 443, 8443 and 10000, ts.net URLs, and no request inspection

Example: Share a Local App From Your Laptop

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
sudo tailscale funnel 3000

Tailscale Funnel publishing

The first run asks you to enable Funnel for your tailnet, then prints the public URL. Add --bg to keep it running in the background, and run tailscale funnel reset to stop it. When you test, use a phone with Tailscale turned off, because devices on your tailnet may bypass Funnel.

The demo app loading through the Funnel URL

Pricing: The Personal plan is free for up to 6 users. Standard costs $8 and Premium $18 per user per month.

3. frp

frp is one of the most widely used self-hosted ngrok alternatives. It consists of a server (frps) on a machine with a public IP, and a client (frpc) next to your services. It is licensed under Apache 2.0, supports TCP, UDP, HTTP/S and peer-to-peer modes, and gets frequent releases. Version 0.68.1 (April 2026) fixed an authentication bypass in some HTTP proxy setups, and 0.71.0 (August 2026) fixed a bug that let a client crash the server, so use 0.71.0 or later.

  • Pros: Covers almost any protocol, with no usage limits
  • Cons: You run and secure the server yourself, and plain TCP proxies have no HTTPS or login

Example: Publish a Home App Through Your Own Server

Download the build for each machine’s OS and CPU from the releases page.

Create frps.toml on the server side:

bindPort = 7001
auth.method = "token"
auth.token = "CHANGE_ME"

On the home machine, frpc.toml forwards an Uptime Kuma dashboard (port 3001):

serverAddr = "SERVER_IP"
serverPort = 7001
auth.method = "token"
auth.token = "CHANGE_ME"

[[proxies]]
name = "uptime-kuma"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3001
remotePort = 3001

Run ./frps -c frps.toml and ./frpc -c frpc.toml, open TCP 7001 and 3001 on the server, then visit http://SERVER_IP:3001.

frps running on the server

frpc connected with the uptime-kuma proxy

Pricing: Free. You cover only server costs.

4. rathole

rathole is a lightweight TCP and UDP reverse proxy written in Rust. Its config is similar to frp, but the binary is much smaller, so it fits on routers. Its last tagged release is v0.5.0 (October 2023), but the repository, now under rathole-org, continues to receive commits.

  • Pros: Tiny footprint, per-service tokens and hot reload
  • Cons: No HTTP routing or dashboard, and traffic is unencrypted unless you enable Noise or TLS

Example: SSH Into a Home Machine

The setup mirrors the frp example with a matching block for each service in both files. On the server, create the file server.toml:

[server]
bind_addr = "0.0.0.0:2333"

[server.services.home_ssh]
token = "CHANGE_ME"
bind_addr = "0.0.0.0:5202"

On the second device, create client.toml:

[client]
remote_addr = "SERVER_IP:2333"

[client.services.home_ssh]
token = "CHANGE_ME"
local_addr = "127.0.0.1:22"

Run ./rathole server.toml and ./rathole client.toml, open TCP 2333 and 5202, then connect from another network with ssh -p 5202 user@SERVER_IP.

Pick rathole when memory and binary size are more important than features. frp adds HTTP routing, a dashboard and peer-to-peer modes.

Pricing: Free (Apache 2.0).

5. bore

bore is a small TCP tunnel written in Rust (MIT). You can use the free public server at bore.pub with no account, or run the same binary as your own server. The latest release is v0.6.0 (June 2025).

  • Pros: One command, no signup, and the server is a single binary
  • Cons: TCP only, no HTTPS or custom domains, and traffic is not encrypted

Example: Share a Local Port With One Command

Install bore with cargo install bore-cli, or download a binary from the releases page. Then forward the demo app:

bore local 3000 --to bore.pub

bore prints a remote port, for example bore.pub:41235. Open http://bore.pub:41235 and the demo app loads.

To use your own server, run the server with a secret and point the client at it:

bore server --secret CHANGE_ME                        # on the server
bore local 3000 --to SERVER_IP --secret CHANGE_ME     # on your machine

Open TCP 7835 for the control connection, plus the ports bore hands out (1024 to 65535 by default, you can limit them with --min-port and --max-port). The secret is only used to log in, so the traffic itself is not encrypted.

Pricing: Free.

6. chisel

chisel is a TCP and UDP tunnel written in Go (MIT). It sends traffic over HTTP using WebSockets and encrypts it with SSH, so it works on networks that only allow web traffic. It can also act as a SOCKS5 proxy. The latest release is v1.12.0 (August 2026).

  • Pros: One binary for server and client, encrypted by default, and works through HTTP proxies
  • Cons: You run your own server, there’s no HTTP routing, and proxies that block WebSockets break it

Example: Publish a Local App Through Your Own Server

Install chisel on both machines with curl https://i.jpillora.com/chisel! | bash, or get a binary from the releases page. On the server, allow reverse tunnels and set a user:

chisel server --port 8080 --reverse --auth user:CHANGE_ME

On your machine, connect and forward port 3000 on the server to the demo app:

chisel client --auth user:CHANGE_ME http://SERVER_IP:8080 R:3000:localhost:3000

Open TCP 8080 and 3000 on the server, then visit http://SERVER_IP:3000. On a network that only allows web traffic, put the chisel server behind HTTPS on port 443.

Pricing: Free.

7. Tunnelmole

Tunnelmole is an open-source HTTP tunnel with an MIT client and AGPL server. It uses its hosted service by default, so it works without an account.

  • Pros: No signup, plus a Node.js API for npm scripts
  • Cons: HTTP/S only, and the URL is different on every run

Example: Test a Webhook Endpoint Before Deploying

Start the demo app, then install Tunnelmole and expose port 3000:

sudo npm install -g tunnelmole
tmole 3000

Tunnelmole exposing localhost

Open the HTTPS URL it prints on your phone to see if the app loads. Next, from another terminal, send a POST to the same URL that looks like GitHub’s ping webhook event:

curl -X POST https://<your-tunnelmole-url>/webhook \
  -H "Content-Type: application/json" \
  -H "X-GitHub-Event: ping" \
  -d '{"zen":"test"}'

curl prints OK, and the demo app logs Webhook: ping, confirming the request reached your laptop through the tunnel. To opt out of telemetry, set TUNNELMOLE_TELEMETRY=0.

Pricing: Public URLs are free. Custom subdomains need a subscription, or you can self-host the server.

8. localtunnel

localtunnel is one of the oldest open source tunnels (MIT). One npx command gives you a loca.lt HTTPS URL with no account. But the server is run by the community and has outages (see our LocalTunnel 503 guide).

  • Pros: No account, zero setup
  • Cons: HTTP/S only, and visitors must enter a tunnel password first
npx localtunnel --port 3000 --subdomain my-demo
curl https://loca.lt/mytunnelpassword

localtunnel exposing localhost

The second command prints the tunnel password, which is your public IP. Visitors enter it on the reminder page that loca.lt shows first, once every 7 days per visitor. API clients can skip this page by sending a bypass-tunnel-reminder header.

localtunnel reminder page

Pricing: Free.

ngrok Alternatives FAQs

What is the best alternative to ngrok?

It depends on what you need. LocalXpose is the best overall, with UDP, custom domains and unlimited bandwidth for $8/month billed annually. If you already use Tailscale, try Funnel. For self-hosting, use frp.

Is there a free ngrok alternative?

Yes. LocalXpose has a free plan with 2 HTTP/S tunnels and no credit card. No account is needed for Tunnelmole, localtunnel or bore’s public server, Tailscale Funnel has a free plan, and frp, rathole, bore and chisel are free to self-host.

Is ngrok open source?

No. Only the old 1.x version was open source. For open source options, look at frp, rathole, bore, chisel, Tunnelmole or localtunnel.

What is the best open-source ngrok alternative?

frp if you want the most features, rathole for small devices, bore for a quick TCP tunnel, and chisel when only web traffic can get out.

Does ngrok support UDP?

No. For UDP, use LocalXpose Pro, or self-host frp, rathole or chisel.

Can I self-host an ngrok alternative?

Yes. frp, rathole, bore and chisel are built for it. You need a server with a public IP.

Conclusion

The free plan of ngrok is restricted and it still doesn’t support UDP. Of the ngrok alternatives we tested, LocalXpose Pro covers HTTP/S, TLS, TCP and UDP with a custom domain and unlimited bandwidth for just $8/month on an annual subscription. If you want to own the whole stack, use frp, rathole on small devices, or chisel behind strict firewalls. For throwaway links, Tunnelmole and localtunnel only need a single command.

Read Also

Share this article

Abdelhadi Dyouri

Abdelhadi Dyouri

Developer & Technical Writer

Abdelhadi is a developer educator and SEO with a deep passion for the worlds of code, data, and 🍵tea🍵.