Skip to the page

Localhost tunnels compared: prices and limits

ngrok, Cloudflare Tunnel, localtunnel, Pinggy, zrok, VS Code and more: free limits, warning pages, passwords and prices, checked October 2026.

By Mads Sauer, who makes ouicu, one of the tools here, so read it as a maker's comparison: each fact about another product links to that product's own page, read on . Published .

There is no single best way to share localhost. Below, the common tunnels answer the same questions, each answer from the tool's own page, then the hosts that preview a build instead. Use the table to rule tools out, and the sections under it for the details that decide.

How we compared

  • On , we read each tool's own pricing page and docs, and wrote down only what they say. Every fact links to its page, listed under Sources.
  • Where a page says nothing, the table says “Not stated” rather than guess. Where only a third party says something, we say so.
  • We make ouicu. Its numbers come from its own code, and the sections below say where other tools do better.
  • Facts are read again at least every three months; the date at the top moves when they are.

The table

As of , from each product's own pages (listed under Sources). Prices in US dollars.

Localhost tunnels compared: price, free plan, warning page, sign-in, links, protocols and source
Paid fromFree planWarning page on freePasswords and sign-inSame link each timeProtocolsOpen source
ngrokHobbyist, $10 a month1 GB out and 20,000 HTTP requests a month, up to 3 online endpointsYes, on HTML browser traffic; after Visit, a cookie hides it for 7 daysOAuth, OpenID Connect, SAML or basic auth1 stable dev domain, on Free tooHTTP and TCP; TLS from Pay-as-you-goIts open source v1 is archived
Cloudflare TunnelFree: Tunnel is on every planQuick Tunnels: 200 requests in flight, then 429None in the Quick Tunnel docs' list of limitsCloudflare Access sign-in, free up to 50 usersQuick Tunnels: a new name each runHTTP for visitors; TCP, SSH and RDP need cloudflared on their side toocloudflared is open source (Apache-2.0)
localtunnelNot statedNot statedVisitors must type a tunnel password: your public IP address, from loca.lt/mytunnelpasswordNot statedA name you ask for with --subdomain isn't promisedNot statedYes, MIT; you can run your own server
localhost.runCustom domain, $9 a month billed yearlyA speed limit, and a name that changesNot statedNot statedA stable domain on the paid planNot statedNot stated
serveoPro, $6 a month or $60 a year3 tunnels, with custom subdomainsYes, on anonymous and free tunnels; not on paid onesNot statedNot statedNot statedNot stated
PinggyPro, $3 a seat a month, or $2.50 billed yearly60-minute tunnels, unlimited dataYes, once per browser; none on ProBasic auth with a username and passwordA new random name after each restart on FreeHTTP(S), TCP, UDP and TLSNot stated
TunnelmoleEssential, $9.99 a monthNo signupNot statedNot statedNot statedNot statedYes, an MIT client and an AGPL-3.0 server you can host
zrokNo public price; NetFoundry sells commercial plans5 GB a day, 50 sharesYes, on free accounts; adding a card removes itNot statedReserved shares keep a nameHTTP, TCP and UDPYes, Apache-2.0, and you can host it yourself
LocalXposePRO, $8 a month billed yearly ($96)2 HTTP(S) tunnels, with time limitsYes, on the free planBasic auth, key auth and IP allowlists on every planNot statedHTTP(S), TCP, TLS and UDP on PRONot stated
ExposePro, $79 a user a yearA time limit, random URLs, one EU serverNot statedAccess control on ProPersistent URLs and custom domains on ProNot statedYes, MIT, with your own server
Microsoft dev tunnelsNo price listed; in public preview, without an SLA5 GB a month, 10 tunnels, up to 20 MB/s“When connecting to a web-forwarding url for the first time, users are presented with an interstitial anti-phishing page.”Private by default; or anyone, your Entra tenant or a GitHub organizationNot statedNot statedNot stated
Tailscale FunnelFree for up to 6 users; Standard $8 a user a monthOn every plan; bandwidth limits that can't be changedNot statedNone for visitors: a Funnel port is publicA stable name, on your tailnet's ts.net domain onlyTLS on ports 443, 8443 and 10000 onlyNot stated
LocalCanSolo, $8 a month1 live link, 60-minute sessions, 1 GB a monthNot statedPassword, secret link and IP rules, from SoloSnapshots: a copy that stays up with the laptop offHTTPS and TCP on paid plansNot stated
ouicuHobby, $4 a month1 share at a time, 2 hours each, 1 GB a monthYes, a notice on page loads, once a week per browser and share; none on Hobby and ProPassword on Hobby and Pro; invited emails on ProReserved names on Hobby and ProHTTP and WebSockets, web pages onlyNo; the MCP server and SDK are MIT

Free plans: the limits that bite

Time

  • Pinggy Free: 60-minute tunnels, unlimited data.
  • LocalCan Free: 1 live link, 60-minute sessions, 1 GB a month.
  • Expose's free plan: a time limit, random URLs, one EU server.
  • ouicu Free: a share runs 2 hours.
  • ngrok is the exception: free endpoints have no timeout.

Data

ngrok Free allows 1 GB out and 20,000 HTTP requests a month, up to 3 online endpoints. zrok allows 5 GB a day, 50 shares, Microsoft dev tunnels 5 GB a month, 10 tunnels, up to 20 MB/s, and ouicu Free 1 GB a month.

Names that change

Cloudflare's Quick Tunnels give a new name each run. localhost.run's free plan has a speed limit, and a name that changes. On localtunnel, a name you ask for with --subdomain isn't promised. When the name changes, the link you sent last week is dead.

Passwords and sign-in

  • ngrok: OAuth, OpenID Connect, SAML or basic auth, set in Traffic Policy.
  • Cloudflare: Cloudflare Access sign-in, free up to 50 users.
  • Pinggy: basic auth with a username and password. LocalXpose: basic auth, key auth and IP allowlists on every plan.
  • VS Code's port forwarding is private by default:

    “you'll be required to sign in with the same GitHub account you used to start the port forwarding process”

    VS Code docs, Port Forwarding
    Public ports need no sign-in.
  • ouicu: a password with Hobby and Pro; invited email addresses with Pro.

localtunnel is the odd one out: visitors must type a tunnel password: your public IP address, from loca.lt/mytunnelpassword. It has shown a reminder page since at least November 2020, and the client's last release is 2.0.2, from September 2021.

  • ngrok: 1 stable dev domain, on Free too.
  • Tailscale Funnel: a stable name, on your tailnet's ts.net domain only.
  • localhost.run: a stable domain on the paid plan, custom domain, $9 a month billed yearly.
  • zrok: reserved shares keep a name. Expose: persistent URLs and custom domains on Pro.
  • ouicu: reserved names with Hobby and Pro; on Pro, up to 5 subdomains of your own, like preview.yourstudio.com. No root domains.

Protocols

For SSH, databases or games you need TCP or UDP. Pinggy has HTTP(S), TCP, UDP and TLS; zrok HTTP, TCP and UDP; LocalXpose HTTP(S), TCP, TLS and UDP on PRO. On Cloudflare, HTTP for visitors; TCP, SSH and RDP need cloudflared on their side too. Tailscale Funnel takes TLS on ports 443, 8443 and 10000 only. ouicu carries HTTP and WebSockets, and only what web pages are made of.

Open source and self-hosting

  • localtunnel: yes, MIT; you can run your own server.
  • zrok: yes, Apache-2.0, and you can host it yourself.
  • Expose: yes, MIT, with your own server.
  • Tunnelmole: yes, an MIT client and an AGPL-3.0 server you can host.
  • Cloudflare: cloudflared is open source (Apache-2.0).
  • ngrok: its open source v1 is archived.

ouicu's command line tool is closed source and the service is hosted; its MCP server and SDK are MIT.

Previews without a tunnel

If the client can wait for a build, a host can show it with your laptop off. What decides it is who can open the preview, and what a password costs:

As of , from each product's own pages (listed under Sources). Prices in US dollars.

Preview hosts: the free plan, and what a password costs
On the free planA password
Vercel“the Hobby plan restricts users to non-commercial, personal use only”Password Protection: not on Hobby; $20 per month per protected project on Pro
NetlifyTeams made from 28 July 2026 start private, and previews need a Netlify login“password protected (only available on Pro)”
Cloudflare PagesPreviews are public unless you turn on AccessNot stated
GitHub PagesSites are public, even from a private repositoryPublishing privately needs GitHub Enterprise Cloud
SurgeFree: unlimited publishing and a custom domainPasswords come with Professional, $30 a month
Tiiny HostFree: 1 project of 3 MB, with a Tiiny Host bannerPasswords from Solo, $18 a month, or $156 a year
ouicu1 site of 25 MB, kept 7 daysHobby, $4 a month

On Vercel, a client gets in through Vercel Authentication: a Vercel login, or a Shareable Link. GitHub Enterprise starts at $21 a user a month. Cloudflare Pages previews send X-Robots-Tag: noindex, which keeps them out of search.

Where other tools are better

Changes to this page

  • : first published, with every fact read that day.

Questions people ask

How can I share my localhost with others?

Run a tunnel: a small program that gives your port a public https address. The table above compares them; the guide How to share localhost walks through one.

What is the best free tunneling service?

For a long-running link, ngrok's free plan; with a domain on Cloudflare, Cloudflare Tunnel; for TCP and UDP, Pinggy or zrok. For a client, a free plan's warning page or changing name is the problem, so look at what removes it.

Is there a free TCP tunneling service?

Yes: Pinggy's free plan lists TCP and UDP, and zrok's does too. ngrok Free has TCP once you add a card.

Is localtunnel safe to use?

It is open source, so you can read it or run your own server. Its hosted page asks visitors for your public IP address, which hands that address to everyone you send the link to.

Try ouicu

Install it (Getting started), then share a dev server, or upload a build:

ouicu share 3000ouicu deploy ./dist

Add a password (Hobby and Pro) with --password. The pricing has every plan.

Sources

Prices, defaults and quotes about other products, and the day each was last checked at its source.

  1. Pricing, ngrok. Checked .
  2. Free plan limits, ngrok docs. Checked .
  3. Authentication, ngrok docs. Checked .
  4. Domains, ngrok docs. Checked .
  5. inconshreveable/ngrok, ngrok on GitHub. Checked .
  6. Cloudflare Tunnel, Cloudflare docs. Checked .
  7. Quick Tunnels, Cloudflare docs. Checked .
  8. Access: pricing, Cloudflare. Checked .
  9. Routing, Cloudflare docs. Checked .
  10. cloudflare/cloudflared, Cloudflare on GitHub. Checked .
  11. Issue 648: IP password is not being accepted, localtunnel on GitHub. Checked .
  12. localtunnel/localtunnel, localtunnel on GitHub. Checked .
  13. localtunnel/server, localtunnel on GitHub. Checked .
  14. Custom Domains, localhost.run docs. Checked .
  15. The Forever Free Tier, localhost.run docs. Checked .
  16. Expose local servers to the internet, Serveo. Checked .
  17. Documentation, Serveo. Checked .
  18. Simple Localhost Tunnels, Pinggy. Checked .
  19. Browser Screening Page, Pinggy docs. Checked .
  20. Basic Authentication with HTTP Tunnel, Pinggy docs. Checked .
  21. Tunnelmole Dashboard, Tunnelmole. Checked .
  22. Instant public URLs for your local server, Tunnelmole. Checked .
  23. robbie-cahill/tunnelmole-service, Tunnelmole on GitHub. Checked .
  24. zrok Pricing, zrok. Checked .
  25. Pricing Plans, LocalXpose. Checked .
  26. Share local sites via secure tunnels with Expose, Expose. Checked .
  27. exposedev/expose, Expose on GitHub. Checked .
  28. What are dev tunnels?, Microsoft Learn. Checked .
  29. Azure subscription and service limits: dev tunnels, Microsoft Learn. Checked .
  30. Dev tunnels security, Microsoft Learn. Checked .
  31. Pricing, Tailscale. Checked .
  32. Tailscale Funnel, Tailscale docs. Checked .
  33. Pricing, LocalCan. Checked .
  34. Port Forwarding, VS Code docs. Checked .
  35. Issue 366: How to avoid Friendly Reminder page, localtunnel on GitHub. Checked .
  36. localtunnel, npm. Checked .
  37. Vercel Hobby Plan, Vercel docs. Checked .
  38. Usage & Pricing for Deployment Protection, Vercel docs. Checked .
  39. Deployment Protection on Vercel, Vercel docs. Checked .
  40. Project visibility, Netlify docs. Checked .
  41. Preview deployments, Cloudflare docs. Checked .
  42. Creating a GitHub Pages site, GitHub Docs. Checked .
  43. Changing the visibility of your GitHub Pages site, GitHub Enterprise Cloud Docs. Checked .
  44. Pricing, Surge. Checked .
  45. Pricing, Tiiny Host. Checked .
  46. Restrict access to deployments with Vercel Authentication, Vercel docs. Checked .
  47. Pricing, GitHub. Checked .
  48. localhost.run, localhost.run. Checked .