Skip to main content
← All Comparisons

Open-source ngrok alternatives

Twelve tools with open-source code you can run or host yourself, with their licenses, latest releases, and who can reach the app.

To run the whole stack on your own server, frp covers TCP, UDP, HTTP and HTTPS, and Pangolin adds SSO and expiring share links. zrok can be self-hosted or used as a service. To skip the server and keep the app off a public URL, the qURL™ CLI is MIT-licensed and needs no account.

Facts checked October 1, 2026, each value linked to its source. Full dataset.

Why people look for ngrok alternatives

  • The ngrok agent is closed source, and every tunnel runs through ngrok’s own edge.
  • An account and authtoken before the first URL, and a warning page for free-plan browser visitors.
  • Free-plan limits: 3 endpoints, 1 GB a month out, and 20,000 HTTP requests a month.
  • A public URL that anyone with the address can request unless you add a Traffic Policy.

The alternatives at a glance

License and release metadata checked October 14, 2026.

Open-source ngrok alternatives: what each is best for, its license and latest release, and account needed before the first URL, who can reach it, visitor access control
ToolBest forLicenseLatest releaseAccount needed before the first URLWho can reach itVisitor access control
qURL CLIAn MIT-licensed CLI that shares an app with no account, no server and no public URLMITv3.5.0 (2026-10-10)No. The first publish creates the device identity our testNo one until a link is opened; then the opener’s public IP for that session, including other devices behind that IP layerv.aiSingle-use access link by default; link and session lifetimes. IP allow and deny lists and other rules can gate links through the API, not the CLI layerv.ai
frpA full self-hosted reverse proxy for TCP, UDP, HTTP and HTTPSApache-2.0v0.71.1 (2026-10-14)No; you run frps on your own server github.comPublic: anyone who reaches the server port or domain; STCP/XTCP proxies only to visitors with the secret key github.comHTTP basic auth (httpUser/httpPassword) on http proxies; secretKey for STCP/XTCP visitors; token or OIDC authenticates clients, not visitors github.com
zrok (free)Public or private shares, self-hosted or on the zrok.io serviceApache-2.0v2.0.8 (2026-10-08)Yes: a free account, no card zrok.ioYour choice per share: public shares are open to anyone with the URL; private shares only to zrok accounts you grant netfoundry.ioBasic auth; OAuth with an email pattern; private shares github.com
PangolinA self-hosted reverse proxy with SSO, PIN codes, email one-time codes and expiring share linksAGPL-3.01.24.0 (2026-09-30)Yes: a Pangolin Cloud account, or the admin account on your own server docs.pangolin.netVisitors who pass the resource's authentication; Pangolin SSO is on by default docs.pangolin.netSSO and identity providers, users and roles, PIN, passcode, email OTP, header auth, share links, IP/geo/path rules docs.pangolin.net
sishSelf-hosted tunnels over plain ssh -R, with nothing to install on the clientMITv2.24.1 (2026-10-09)No, on your own server; your SSH public key goes in its pubkeys directory github.comPublic: anyone with the URL; TCP aliases only to authenticated SSH users docs.ssi.shHTTP basic auth per forwarded host; server-wide IP and country allowlists; TCP aliases limited to listed SSH key fingerprints docs.ssi.sh
chiselTCP and UDP tunnels over HTTP, secured with SSH, to a server you runMITv1.12.0 (2026-08-29)No; you run chisel server yourself github.comAnyone who can reach the reverse port on your server github.comNot documented for visitors; --auth and --authfile authenticate tunnel clients github.com
Expose (free)PHP developers who want a self-hostable server or the free hosted oneMIT3.2.4 (2026-09-17)Yes: a free account for the auth token expose.devPublic: anyone with the URL expose.devBasic auth (--basicAuth); pricing lists access control under Pro expose.dev
bore (bore.pub)Forwarding a raw TCP port, through bore.pub or your own serverMITv0.6.0 (2025-06-09)No, for the public bore.pub server github.comPublic: anyone who connects to the port github.comOptional shared secret between client and server, not visitors github.com
ratholeA small, fast NAT-traversal proxy for TCP and UDPApache-2.0v0.5.0 (2023-10-01)No; you run the rathole server yourself github.comPublic: anyone who connects to the port github.comNot documented for visitors; a mandatory per-service token authenticates clients github.com
TunnelmoleAn HTTPS URL with no account from an npm package, or a self-hosted serviceMIT2.4.0 (2025-06-05)No tunnelmole.comPublic: anyone with the URL github.comNot documented github.com
localtunnelA one-line npx command in a Node.js projectMIT2.0.2 (2021-09-18)No github.comPublic: anyone with the URL github.comNot documented github.com
boringproxyA self-hosted tunnel server with a web UI, automatic HTTPS and optional basic authMITv0.10.0 (2023-01-04)No; boringproxy server creates the admin login on first run github.comPublic: anyone with the URL, unless the tunnel is password-protected github.comOptional HTTP basic auth per tunnel (Password Protect) github.com

Each alternative

  1. qURL CLIMade by LayerV

    Best for: An MIT-licensed CLI that shares an app with no account, no server and no public URL.

    Trade-off vs ngrok: The CLI is open source; the service it connects to is LayerV’s. No raw TCP.

    Command to the first shareable URLqurl publish http://127.0.0.1:3000 qurl share <CRID>

    All qURL CLI facts →

  2. frp

    Best for: A full self-hosted reverse proxy for TCP, UDP, HTTP and HTTPS.

    Trade-off vs ngrok: You run frps on a server with a public IP; visitor access is basic auth on HTTP proxies.

    Command to the first shareable URL./frps -c ./frps.toml (on the server) ./frpc -c ./frpc.toml

    qURL vs frp →

  3. zrok (free)

    Best for: Public or private shares, self-hosted or on the zrok.io service.

    Trade-off vs ngrok: The service needs an account; public shares from unverified free accounts show a warning page.

    Command to the first shareable URLzrok2 enable <TOKEN> zrok2 share public 8080

    qURL vs zrok (free) →

  4. Pangolin

    Best for: A self-hosted reverse proxy with SSO, PIN codes, email one-time codes and expiring share links.

    Trade-off vs ngrok: You run the server and a site connector; the Community Edition is AGPL-3.0.

    Command to the first shareable URLpangolin up site --id <ID> --secret <SECRET> --endpoint https://app.pangolin.net Then add a public HTTPS resource in the dashboard

    qURL vs Pangolin →

  5. sish

    Best for: Self-hosted tunnels over plain ssh -R, with nothing to install on the client.

    Trade-off vs ngrok: You run the server; the managed tuns.sh is a paid service.

    Command to the first shareable URLdocker run ... antoniomika/sish:latest --domain=example.com (on your server) ssh -p 2222 -R 80:localhost:8080 example.com

    All sish facts →

  6. chisel

    Best for: TCP and UDP tunnels over HTTP, secured with SSH, to a server you run.

    Trade-off vs ngrok: No hosted server and no visitor access control; users authenticate tunnel clients.

    Command to the first shareable URLchisel server --port 8080 --reverse (on your server) chisel client http://<server>:8080 R:3000:localhost:3000

    All chisel facts →

  7. Expose (free)

    Best for: PHP developers who want a self-hostable server or the free hosted one.

    Trade-off vs ngrok: The hosted server needs an account; free connections are time-limited.

    Command to the first shareable URLexpose token <TOKEN> expose share http://localhost:3000

    All Expose (free) facts →

  8. bore (bore.pub)

    Best for: Forwarding a raw TCP port, through bore.pub or your own server.

    Trade-off vs ngrok: TCP only, with no TLS; anyone who connects to the port reaches it.

    Command to the first shareable URLbore local 8000 --to bore.pub

    All bore (bore.pub) facts →

  9. rathole

    Best for: A small, fast NAT-traversal proxy for TCP and UDP.

    Trade-off vs ngrok: You run the server; tokens authenticate clients, not visitors; the latest release is from 2023.

    Command to the first shareable URL./rathole server.toml (on the server) ./rathole client.toml

    All rathole facts →

  10. Tunnelmole

    Best for: An HTTPS URL with no account from an npm package, or a self-hosted service.

    Trade-off vs ngrok: HTTP only; the URL is public and contains your IP address.

    Command to the first shareable URLnpx tunnelmole 3000

    All Tunnelmole facts →

  11. localtunnel

    Best for: A one-line npx command in a Node.js project.

    Trade-off vs ngrok: Public; visitors are asked for a tunnel password, per the maintainer.

    Command to the first shareable URLnpx localtunnel --port 8000

    qURL vs localtunnel →

  12. boringproxy

    Best for: A self-hosted tunnel server with a web UI, automatic HTTPS and optional basic auth.

    Trade-off vs ngrok: You run the server; the latest release is v0.10.0, from 2023.

    Command to the first shareable URLboringproxy server -admin-domain <domain> (on the server) boringproxy client -server <domain> -user <user> -token <token> -client-name <name> Then add a tunnel in the web UI

    All boringproxy facts →

When to keep ngrok

Keep ngrok when you want a managed edge with no server to run, request inspection and one-click replay for webhook debugging, and OAuth, OIDC, basic auth and IP rules in one Traffic Policy.

Frequently Asked Questions

Is there a free, open-source ngrok alternative?

Yes. frp (Apache-2.0), rathole (Apache-2.0), chisel (MIT), sish (MIT), bore (MIT), Expose (MIT), zrok (Apache-2.0), boringproxy (MIT), localtunnel (MIT) and the Tunnelmole client (MIT) are open source. Pangolin’s Community Edition is AGPL-3.0. The qURL CLI is MIT-licensed and connects to LayerV’s service.

Which open-source tunnels need no server of my own?

bore has a public server at bore.pub, Tunnelmole and localtunnel have hosted defaults, Expose has a free hosted server with an account, and zrok has the zrok.io service. frp, rathole, chisel, sish and boringproxy expect a server you run. The qURL CLI needs no server and no account.

Which open-source alternatives control who can open the app?

Pangolin has SSO, PIN codes, passcodes, email one-time codes and share links that can expire and be revoked. zrok has basic auth, OAuth with an email pattern, and private shares. sish has basic auth, IP and country allowlists and per-tunnel deadlines. frp has basic auth for HTTP proxies and secret keys for STCP. A qURL link opens once and expires within 24 hours.

Is inlets open source?

inlets Pro, the version that is maintained, is commercial software that needs a paid subscription and a license key.

Built it with an agent? Let it share it.

One prompt points Claude Code, Cursor, or Windsurf at the qURL skill. Or install the CLI and publish the app yourself. No account either way.

Get the prompt ↗

New to qURL? Start at qurl.link

Contact sales

Contact our team for enterprise deployments.

Enterprise starts with a scoped, paid pilot on one application, typically 60 to 90 days, credited in full toward year one if you convert within 60 days. Then an annual package sized to what you protect. Not per seat.