Expose localhost with a public HTTPS URL
tunnel.to gives an application running on localhost a public HTTPS URL through an outbound reverse tunnel.
Keep the application, code, logs, and debugger on your machine while remote browsers and services connect through the generated public URL.
tunnelto 3000How to expose localhost
- 1Run your application on a local port such as 3000.
- 2Start tunnelto for that port.
- 3Open or share the generated HTTPS URL.
Why localhost needs a tunnel
localhost is reachable only from the machine running the application. A reverse tunnel creates an outbound connection from that machine to tunnel.to, which provides the public HTTPS endpoint.
What can you expose from localhost?
- Development applications and demos
- Webhook handlers
- Local APIs
- MCP servers and agent tools
- Preview environments
- Temporary integrations
Start disposable. Make it permanent later.
Try it
localhost → anonymous public URL
Keep it
localhost → persistent tunnel.to hostname
Own it
localhost → custom domain + access controls
Use a stable URL when the workflow becomes permanent
An anonymous URL is useful for a quick test. Reserve a tunnel name or attach a custom domain when another service, teammate, or integration needs the endpoint to remain unchanged.
Related guides
Frequently asked questions
How do I expose localhost to the internet?
Run your application locally, start tunnelto for its port, and use the public HTTPS URL returned by the client.
Do I need to open a port on my router?
No. tunnel.to uses an outbound connection, so inbound port forwarding is not required.
Can I expose localhost without creating an account?
Yes. Anonymous tunnels provide a generated public hostname.
Can I use a stable URL later?
Yes. Move to a reserved tunnel name or custom domain when the endpoint needs to persist between sessions.
The shortest path from localhost to public HTTPS.
Start anonymously. Add a stable hostname or custom domain when you need one.