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.
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.
| Plan | Price | Key limits |
|---|---|---|
| Free | $0 | 3 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 + usage | Unlimited endpoints, your own domains, wildcards, TLS endpoints |
| Enterprise | Custom | SSO, 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

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

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
| Tool | Protocols | Free option | Paid from | Main downside |
|---|---|---|---|---|
| LocalXpose | HTTP/S, TLS, TCP, UDP | 2 HTTP/S tunnels | $8/mo (annual) | TCP, TLS and UDP need Pro |
| Tailscale Funnel | HTTPS, TCP | ✅ | $8/user/mo | Only ports 443, 8443 and 10000, no request inspection |
| frp | TCP, UDP, HTTP/S | ✅ | Free | You run and secure your own server |
| rathole | TCP, UDP | ✅ | Free | No HTTP routing, unencrypted by default, no release since 2023 |
| bore | TCP | ✅ No signup | Free | TCP only, traffic is not encrypted |
| chisel | TCP, UDP | ✅ | Free | You run your own server, no HTTP routing |
| Tunnelmole | HTTP/S | ✅ No signup | Subscription | New URL on every run |
| localtunnel | HTTP/S | ✅ No signup | Free | Visitors 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

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.

LocalXpose vs ngrok
| LocalXpose Pro | ngrok Hobbyist | |
|---|---|---|
| Price | $8/mo billed annually | $8/mo billed annually ($10 monthly) |
| Tunnels | 10 | 3 online endpoints |
| UDP and TLS | ✅ | ❌ |
| Custom domains | ✅ Including wildcards | ❌ |
| Bandwidth | Unlimited (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.netURLs, 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

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.

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.


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

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
Example: Send a Client a Preview Link
npx localtunnel --port 3000 --subdomain my-demo
curl https://loca.lt/mytunnelpassword

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.

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.