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 3000
Public HTTPS
No inbound ports
No firewall rules
Anonymous tunnels

How to expose localhost

  1. 1Run your application on a local port such as 3000.
  2. 2Start tunnelto for that port.
  3. 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.

Internet client
https://<generated-host>.tunnel.to
tunnel.to outbound connection
http://localhost:3000
Your local application

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.

Install tunnelto