TunnelPad

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.