Put your local app on a public URL.
Securely expose a web server on localhost to the internet, even from behind a NAT or firewall, with secure tunnels.
Then, inspect and replay every request in real-time.
Stop context switching and turn “how do I trigger that webhook again?” into a single click to replay.
The fastest way to put anything on the internet.
The ngrok agent on your local machine creates a secure outbound tunnel to ngrok's cloud service.
Demo without redeploying
Give your local app a public URL to work with collaborators directly from your dev machine, then protect it with auth.
Build webhook integrations faster
Send webhooks to your local machine to inspect, debug, and iterate. We'll even verify signatures with your signing key.
Connect ChatGPT & Claude to local MCP servers
Let cloud LLMs pull data from your local machine. Debug MCPs with exact request payloads and hit replay to iterate quickly.
Test mobile apps against development backends
Configure your app to use the ngrok URL that points at your local backend—it won’t change between home, work, or a coffee shop.
Get a public URL for your app right now.
ngrok is a standalone executable with zero runtime dependencies that works on every OS.
Install the ngrok agent
Start an endpoint
Open your URL at https://your-assigned-url.ngrok.app
That’s it! You didn’t need to open ports, provision a TLS certificate, or run your own reverse proxy.
Secure your URL with authentication.
Instead of sharing localhost with the whole internet, lock it down to just the people or requests you authorize.
policy.yml
When you're ready for more than just a URL.
Any protocol, not just web services
Developing on databases, Kafka, gRPC, WebSockets, WebRTC, SSH? If it speaks TCP, you can go online in one line.
$ ngrok tcp 22$ ngrok http 80$ ngrok tls 5432Packaged for your stack
The ngrok agent also comes as Docker container, Docker Desktop extension, and Kubernetes Ingress + Gateway controller. Or embed ngrok in your app with native SDKs.
~ docker pull ngrok/ngrok