Open inspector →
developer guide

ngrok Tunnel Not Found: Fix It or Skip the Tunnel

ngrok tunnel not found means the agent is down or nothing is listening. Check the process, or forward to 127.0.0.1 without a tunnel.

Tunnel not found (often ERR_NGROK_3200 in the browser, or a failed provider delivery to an ngrok-free.app / ngrok.io host) means the public hostname no longer maps to a running ngrok agent. The provider reached ngrok’s edge. The agent on your machine was not there. This page is that one failure, not a list of HTTP statuses.

The agent is not running

ngrok is a process. If it exited, the URL dies with it. Laptop sleep, a crashed terminal, Ctrl+C, and a reboot all produce “tunnel not found”.

Check the agent first:

pgrep -lf ngrok
ngrok status
curl -s http://127.0.0.1:4040/api/tunnels

If nothing listens on the ngrok inspect port (default 4040) and pgrep is empty, start the agent again and copy the new HTTPS URL into the provider. Free ngrok URLs change every start unless you pay for a reserved domain. Leaving an old URL in Stripe or GitHub is the same error with a healthier-looking dashboard.

Confirm the local upstream is up before you blame ngrok:

curl -i http://127.0.0.1:3000/health

An agent pointing at a dead port can look like a tunnel failure from the provider’s side, or a 502 from ngrok.

You never opened a tunnel

A second shape of this error: a CLI or script prints http://127.0.0.1:3001 and you paste that into a cloud provider. There is no public hostname. The provider cannot reach your loopback. That is not an ngrok bug.

Either:

  1. run an ngrok (or similar) agent and use the https://…ngrok… URL it prints; or
  2. skip the tunnel. The OpenWebhook CLI watches a public hooks.openwebhook.co URL and replays each request only to 127.0.0.1. The first listen --port run does not need an account.
npm install --global openwebhook
openwebhook listen --port 3001

Paste the printed HTTPS URL into the provider. Your handler stays on localhost. Nothing exposes the rest of the machine.

Agent up, URL still 404

Then the hostname and the session do not match:

  • you restarted ngrok and the provider still has the previous host;
  • two agents are fighting over a reserved domain;
  • a team member’s agent holds the domain and yours does not;
  • DNS or a bookmark points at an old region or account.

Compare the URL in the provider dashboard with the URL in ngrok status character for character. Restart the agent, update the provider, send one test event.

Related guides