> ngrok is great, but its pricing and closed agent pushed us to build Localport. Here is how they compare and why a transparent client matters for a tunneling tool.

**Author:** Localport Team | **Published:** 2026-02-20 | **Reading time:** 6 min read

**Tags:** comparison, ngrok

---

# Why we built a modern ngrok alternative

ngrok is the tool that popularised localhost tunneling. Millions of developers use it. We used it ourselves for years. And we kept hitting the same walls.

## What pushed us to build something new

**Pricing.** ngrok's free tier is limited to one agent with a bandwidth cap. Need more than one tunnel? That's $8/month per user. For a team of five, you're paying $40/month just to share dev servers and test webhooks. Localport charges a flat team price. $5/mo for Hobby, $20/mo for Pro. Same price whether you invite 1 teammate or 50.

**A closed binary on your machine.** When a tool tunnels traffic from your machine to the internet, you should be able to read what it does. ngrok's agent is closed source. You trust it based on reputation alone. That's a reasonable choice for many people, but we wanted an alternative for teams who need to actually review what installs.

**TCP costs extra.** TCP tunnels for databases, game servers, and SSH are a paid feature on ngrok. On Localport, HTTP, TCP, TLS, and mTLS are available on every plan.

**No webhook fanout.** ngrok routes traffic to one agent at a time. If four developers are debugging Stripe webhooks, only one person sees the payload. Localport's shared tunnels broadcast to every connected teammate at the same time.

**No URL per device.** If you have 20 IoT devices, ngrok needs 20 separate agents and 20 tokens. Localport's mesh tunnels let 20 devices share one token, each with its own URL.

## Side by side comparison

| Feature | ngrok (free) | ngrok (paid) | Localport (Hobby) | Localport (Pro) |
|---|---|---|---|---|
| HTTP tunnels | 1 | Unlimited | 3 | 15 |
| TCP tunnels | No | Yes | Included | Included |
| TLS tunnels | No | Yes | Included | Included |
| mTLS (locked tunnels) | No | $20/mo + usage | No | Included |
| Webhook fanout | No | No | Included | Included |
| Mesh (URL per device) | No | No | Included | Included |
| Custom subdomain | No | Yes | Included | Included |
| Agent source visibility | Closed | Closed | On GitHub | On GitHub |
| Price | $0 | $8/user/mo | $5/mo flat | $20/mo flat |

## What "agent on GitHub" means in practice

The Localport agent is the binary that runs on your machine and tunnels your traffic. Its source lives on [GitHub](https://github.com/pvkas/localport) so you can:

- Read every line that touches your network
- Build the binary from scratch
- Audit the tunnel protocol before it ever connects
- Hand the source to your security team for review

The server side components (edge servers, API, dashboard) are a managed service. The agent's licence is finalised before a public release. We're upfront about that rather than overstating what's "open source" today.

## When ngrok is the better choice

We're not claiming Localport beats ngrok in every scenario. ngrok has:

- More edge regions globally
- A longer track record (they've been around since 2013)
- A built in request inspection UI
- An API gateway product with traffic policies

If you need ngrok's request inspection or API gateway, ngrok is probably the better fit.

## When Localport is the better choice

- You need HTTP, TCP, TLS, and mTLS on the same plan, not behind a paywall
- You want to share webhooks with your team (shared tunnels)
- You manage IoT devices and need a URL per device (mesh tunnels)
- You want an agent your security team can actually read
- You're tired of per user pricing
- You operate behind NAT, CGNAT, or a corporate firewall

> [!INFO] Not a hostile fork
> Localport isn't based on ngrok's code. It's a ground up implementation with a different architecture. We respect ngrok's work. We just needed something different.

## Try it

```bash
curl -fsSL https://get.localport.dev | sh
localport http 3000 --token YOUR_TOKEN
```

[Create an account →](https://dashboard.localport.io/auth/login?mode=signup)