Sharing a site
tunnelpad share <port, host:port or URL>
| Example | Shares |
|---|---|
tunnelpad share 8000 |
http://127.0.0.1:8000 |
tunnelpad share 192.168.1.20:3000 |
a port on another machine on your network |
tunnelpad share https://acme.test |
a local site by its name: Laravel Herd, Valet, Rigly, Docker… |
TunnelPad prints the public address and logs every request as it arrives:
Sharing https://acme.test
Public URL https://k7x2mn4p.tunnelpad.dev
Dashboard http://127.0.0.1:4040
Press Ctrl+C to stop. If your connection drops or your computer sleeps, TunnelPad reconnects and keeps the same address.
Choosing the name
On Pro and Team, pick the address yourself:
tunnelpad share 8000 --subdomain=acme # https://acme.tunnelpad.dev
Names are first come, first served while a tunnel is open. To keep a name for yourself even when you're not sharing, reserve it. On the Free plan every tunnel gets a random name.
Local sites with their own names
When you share a URL such as https://acme.test, TunnelPad sends requests to it with Host: acme.test, so your local web server routes them to the right site. Redirects your app makes to acme.test are rewritten to the public address, so visitors stay on the tunnel.
If your app needs to see the public host name instead (for example to build absolute URLs), add --preserve-host.
What visitors see
On the Free plan, people opening a tunnel in a browser first see a one-time TunnelPad notice that says whose tunnel it is. This stops tunnels being used to impersonate other websites. Webhooks and API calls never see it, and automated browser tests can skip it by sending a TunnelPad-Skip-Warning header. Pro and Team tunnels have no notice.
Free tunnels
Free tunnels close after 90 minutes. Run the command again for a new tunnel (with a new random name). Pro and Team tunnels stay open for as long as the command runs.
Options
See the CLI reference for every option, including --qr for a QR code, --inspect to save requests to files and --json for scripts.