ngrok alternatives · checked September 2026

The best ngrok alternative for webhook development in 2026

For webhook work, use Hooklistener: a hosted webhook URL that keeps every request, a CLI that forwards it to localhost, replay with edited payloads, and an MCP server your coding agent can drive, free to start. If you only need a general-purpose tunnel, Cloudflare Tunnel is free on every Cloudflare plan, localtunnel and Tunnelmole are open-source quick shares, and Pinggy runs over plain SSH with nothing to install.

Jump to the 8-tool comparison

Start free
$hooklistener tunnel --port 3000
terminal — -zsh
➜~hooklistener tunnel --port 3000
Tunnel Status ● Online
Forwarding https://quiet-river-42.hook.events → http://localhost:3000
Web Interface https://app.hooklistener.com/cli
POST/api/webhooks/stripe200 OK24ms
POST/api/webhooks/github200 OK12ms
POST/api/webhooks/slack...

Trusted by engineers at

  • Shopify
  • Docker
  • Boeing
  • Cisco
  • IBM
  • T-Mobile
  • Okta
  • Wiz
  • Razorpay
  • HackerOne

Which ngrok alternative fits your job

No single tunnel wins everything. Here's the short answer by use case; the table below has the details and sources.

Webhook development: capture, history, replay to localhost, AI agents
HooklistenerHosted URL that keeps every request, CLI forwarding, replay with edits, hosted MCP server.
A free general-purpose tunnel for any HTTP app
Cloudflare TunnelAvailable on every Cloudflare plan; named tunnels need a domain on Cloudflare.
A quick open-source share with nothing to sign up for
localtunnel or TunnelmoleMIT-licensed clients; Tunnelmole's server is self-hostable.
No client install at all
PinggyOne ssh command; free tunnels time out after 60 minutes.
Production webhook routing with retries and transformations
HookdeckAn event gateway; its CLI forwards gateway events to localhost.
Self-hosted, zero-trust sharing
zrokApache 2.0, self-hostable, reserved shares on the free hosted tier.

Checked September 2026

ngrok alternatives compared: free tiers, replay and MCP

Eight tools, eight questions that matter when the thing you're tunneling is a webhook. Each competitor cell comes from the vendor's own pricing page or docs, linked below. Where a vendor doesn't say, the cell reads “Not documented”.

ngrok alternatives for webhook development, compared as of September 2026
CriteriaHooklistenerngrokCloudflare TunnelPinggylocaltunnelTunnelmoleHookdeck CLIzrok
Free tier1 hosted endpoint, 50 stored requests, 1-day history, 1 CLI tunnel at a time1 GB transfer, 20,000 HTTP requests/mo, up to 3 endpoints; interstitial page on HTTP endpointsTunnel on all plans. Quick Tunnels need no account but cap at 200 in-flight requests and don't support SSEUnlimited data transfer; tunnels time out after 60 minutesFree public server, no accountFree HTTPS URL on a random subdomainGuest mode without an account; Developer plan 10,000 events/mo, 3-day retention, 1 user5 GB/day, 25 environments, 50 shares; interstitial page on public shares
Persistent URL on the free tierYes for the hosted endpoint URL. The CLI tunnel gets a random subdomain; static tunnels start on ProYes, 1 static dev domainYes with a named tunnel on your own domain added to Cloudflare. Quick Tunnel URLs are randomNo, random subdomains (persistent on Pro)--subdomain is a request, not a guaranteeNo, custom subdomains are paidYes, each source gets a permanent event URLYes, reserved shares
Request inspection & historyYes, stored in the cloud: 1 day on Free, up to 90 days on ScaleTraffic Inspector, 24-hour retention on Free; full bodies need opt-in Full CaptureNot documentedWeb debugger with live request/response inspectionNot documentedNot documentedCLI Events page (not in guest mode)Not documented
ReplayYes, to localhost or any URL, with an edited body; saved replay suitesYes, requires Full Capture (opt-in)Not documentedYesNot documentedNot documentedRetry CLI events locally (not in guest mode)Not documented
Webhook signature toolsVerify Stripe, GitHub and Slack signatures; re-sign on replay (secrets on paid plans)verify-webhook Traffic Policy action, 80 providers listedNot documentedNot documentedNot documentedNot documentedSource verification, e.g. Stripe, GitHub, ShopifyNot documented
AI agent / MCP supportHosted MCP server, OAuth, 67 tools: create endpoints, wait for webhooks, replay to localhostMCP server searches ngrok docs onlyNot documentedMCP server to start, stop and inspect tunnelsNot documentedNot documentedLocal stdio server (hookdeck gateway mcp) for Event Gateway data; read-only unless --allow-writeNot documented
Open sourceCLI only (MIT); the service is hostedSDKs only (MIT)cloudflared connector (Apache 2.0)Not documentedYes (MIT)Yes: client MIT, server AGPLv3, self-hostableCLI (Apache 2.0); the gateway is hostedYes (Apache 2.0), self-hostable
First paid tierPro $12/mo: 1 static tunnel, 25,000 requests/mo, 14-day historyHobbyist $10/moNo separate tunnel pricePro $3/mo ($2.50/mo billed yearly)None, freeStarter $3.99/mo ($2.99/mo billed yearly)Team from $39/moNot listed, contact NetFoundry

Why webhook developers switch from ngrok

ngrok is a good general-purpose tunnel. The friction shows up when the traffic is webhooks, which arrive when they want, get retried, and need to be reproduced exactly. These are the four complaints behind most “ngrok alternative” searches, with ngrok's current limits as of September 2026.

1. Free tier limits

ngrok Free includes 1 GB of transfer, 20,000 HTTP requests a month and up to three online endpoints, and shows an interstitial page on HTTP endpoints. The next step up, Hobbyist, is $10/month. Other free tiers trade limits differently: Pinggy Free times out after 60 minutes, and Cloudflare Quick Tunnels cap at 200 in-flight requests with no SSE. Hooklistener Free is sized for one integration: one endpoint, 50 stored requests, a day of history and one tunnel at a time. Pro is $12/month.

2. The URL changes when you restart

This used to be the top complaint. ngrok Free now includes one static dev domain, so it's solvable there, but random URLs are still the default on Quick Tunnels, Pinggy Free and Tunnelmole Free, and every new URL means editing the webhook in Stripe or GitHub again. With Hooklistener you give the provider the hosted endpoint URL, which never changes on any plan, and forward it to whatever port you're on today. On paid plans a static tunnel such as my-api.hook.events also survives restarts.

3. No history or replay once the tunnel closes

ngrok's Traffic Inspector keeps 24 hours of traffic on Free, and replay needs the opt-in Full Capture mode. localtunnel, Tunnelmole and zrok don't document any history. If your handler threw on a Stripe event at 2 a.m., you want that exact payload tomorrow. Hooklistener stores requests in the cloud (1 day on Free, up to 90 days on Scale), lets you replay them to localhost or any URL with an edited body, and can re-sign Stripe, GitHub and Slack payloads so your signature check still passes.

4. Forwarding webhooks to localhost

A tunnel only works while your laptop is online. Hooklistener gives you two modes: hooklistener tunnel --port 3000 exposes your local server on a public URL like ngrok does, and hooklistener listen forwards a hosted endpoint to localhost, so webhooks that arrive while you're offline are captured and waiting. For a step-by-step walkthrough, see how to test webhooks locally without ngrok.

ngrok alternatives for AI coding agents

If Claude Code, Codex or Cursor is writing your webhook handler, the agent needs to see real requests and trigger them again. ngrok's MCP server only searches ngrok's documentation; it can't open a tunnel or read your traffic. Hookdeck's MCP runs locally over stdio and reads Event Gateway data. Pinggy's MCP starts and stops tunnels.

Hooklistener runs a hosted MCP server with OAuth and 67 tools. In one session the agent can create a debug endpoint and call wait_for_request, which returns a task it follows until the webhook lands (or holds the call open up to 60 s with blocking: true). It then checks the request with verify_request_signature and sends it to your running hooklistener listen session with replay_request, editing the body first if it wants to test an edge case. A read-only scope lets it inspect without changing anything. See the Hooklistener MCP server and the webhook MCP server comparison.

terminal
# Claude Code: add the hosted MCP server, then run /mcp to sign in
claude mcp add --transport http hooklistener https://app.hooklistener.com/api/mcp

# Optional: teach the agent the CLI
npx skills add hooklistener/skills --skill hooklistener-cli

Quick start: replace ngrok in two minutes

Install the CLI, sign in, and pick a mode. Every request shows up in the dashboard with headers, body and timing, ready to replay. Details on static subdomains are on the CLI tunnel page; plan limits are on pricing.

terminal
# 1. Install the CLI (MIT, open source)
brew tap hooklistener/tap && brew install hooklistener
# or: npm i -g hooklistener

# 2. Sign in (browser device flow)
hooklistener login

# 3a. Public URL straight to your local server
hooklistener tunnel --port 3000

# 3b. Or keep a stable hosted URL and forward it to localhost
hooklistener listen <endpoint-slug> --target http://localhost:3000/webhooks

Comparing hosted webhook tools rather than tunnels? Read Hooklistener vs Hookdeck.

No signup required

Try it right now

webhook debugger
Webhook URL
Anonymous

Provisioning a live anonymous endpoint for this browser tab

Events
Preparing live event stream...
Details
Waiting for a live session
Endpoints
Unlimited
Capture latency
<100ms

More than a pipe

Hooklistener tunnels are part of a webhook debugger, so the request is still there after the tunnel closes.

History that outlives the tunnel

Requests are stored in the cloud, not in a local inspector: 1 day on Free, 14 days on Pro, up to 90 days on Scale. Close the laptop and they're still there.

A URL you configure once

The hosted endpoint URL never changes, on any plan. On paid plans a static tunnel like my-api.hook.events keeps its subdomain across restarts.

Replay, edit, re-sign

Replay any captured request to localhost or a URL, change the body first, and re-sign Stripe, GitHub or Slack payloads with a stored secret.

Built for coding agents

A hosted MCP server with 67 tools and OAuth sign-in, on every plan including Free. No local server to install.

ngrok alternative FAQ

What is the best ngrok alternative for webhook development in 2026?
For webhook work, Hooklistener. It gives you a hosted URL that stores every request, a CLI that forwards it to localhost (hooklistener tunnel or hooklistener listen), replay with edited bodies, signature verification for Stripe, GitHub and Slack, and a hosted MCP server for Claude Code, Codex and Cursor. The Free plan covers one endpoint and one tunnel at a time. If you only need a general-purpose tunnel, Cloudflare Tunnel is available on every Cloudflare plan.
What is the best free ngrok alternative?
It depends on what you need for free. As of September 2026: Cloudflare Quick Tunnels need no account but give a random trycloudflare.com URL, cap in-flight requests at 200 and don't support SSE. localtunnel is free and MIT-licensed, but a requested subdomain isn't guaranteed. Pinggy's free plan includes request inspection and replay, but tunnels time out after 60 minutes. Hooklistener Free gives you a hosted webhook URL that doesn't change, one day of request history, and one CLI tunnel at a time on a random hook.events subdomain.
What should I use instead of ngrok for webhook development?
A tool that keeps the webhook after it arrives. With a plain tunnel, a request that hits your machine while the server is down or the tunnel is closed is simply lost. Point the provider at a hosted Hooklistener endpoint, run hooklistener listen <endpoint> --target http://localhost:3000/webhooks while you work, and replay any captured request once you've fixed the handler.
ngrok vs Hookdeck for webhook forwarding: which should I use?
ngrok is a general-purpose tunnel: the Free plan includes 20,000 HTTP requests a month, one static dev domain, and a Traffic Inspector with 24 hours of retention; replay needs the opt-in Full Capture mode. Hookdeck is an event gateway: hookdeck listen gives each source a permanent URL and lets you retry events locally, the free Developer plan covers 10,000 events a month with 3-day retention, and the Team plan starts at $39/month. Hooklistener sits in between for development: a stable hosted URL, CLI forwarding, replay, signature tools and a hosted MCP server, with paid plans from $12/month.
What are the best open-source ngrok alternatives?
localtunnel (MIT), Tunnelmole (MIT client, AGPLv3 server, self-hostable), zrok (Apache 2.0, self-hostable) and Cloudflare's cloudflared connector (Apache 2.0). None of them document request history or replay. The Hookdeck CLI (Apache 2.0) and the Hooklistener CLI (MIT) are open source too, but they connect to hosted services.
Does ngrok's free plan still change the URL on every restart?
Not necessarily. As of September 2026 ngrok's Free plan includes one static development domain, so you can keep the same URL. Random URLs are still the default on Cloudflare Quick Tunnels, Pinggy Free, Tunnelmole Free, and the Hooklistener CLI tunnel on the Free plan. Hooklistener's hosted endpoint URL doesn't change on any plan.
Is Hooklistener's tunnel free?
Yes. The Free plan runs one tunnel at a time on a random hook.events subdomain. Pro ($12/month) adds a static tunnel that keeps its subdomain across restarts, three concurrent tunnels and 14 days of history. A static tunnel can also be set to buffer requests that arrive while you're offline and replay them when the CLI reconnects.
Can Claude Code, Codex or Cursor use it?
Yes. Hooklistener runs a hosted MCP server at https://app.hooklistener.com/api/mcp with OAuth sign-in and 67 tools, on every plan. An agent can create an endpoint, wait for the next webhook, verify its signature and replay it to your local listener. ngrok's MCP server only searches ngrok's documentation.
Does the Hooklistener tunnel support WebSockets?
No. The CLI tunnel forwards HTTP requests; WebSocket upgrades aren't passed through. To test WebSocket, Socket.IO, MQTT-over-WebSocket or SSE clients, use Hooklistener's hosted real-time endpoints instead.

Last updated

One command to connect

Give your coding agent a webhook debugger.

Connect Claude Code, Cursor, or Codex to the MCP server and your agent gets 67tools for webhooks, replays, email inboxes, real-time endpoints, and tunnels. You get the same data live in the dashboard.

Free plan includes MCP access. No credit card required.