Your localhost,
live on the internet.
Share a site from your computer at a public HTTPS address in seconds. For webhooks, client previews and testing on your phone, with every request in view.
curl -fsSL https://tunnelpad.com/install.sh | sh
macOS and Linux. Windows and other downloads
$ tunnelpad share https://acme.test --subdomain=acme Connecting to https://relay-lon-1.tunnelpad.dev… Sharing https://acme.test Public URL https://acme.tunnelpad.dev Dashboard http://127.0.0.1:4040 Press Ctrl+C to stop. 12:04:31 200 GET / 38ms 12:04:32 200 GET /build/app.css 4ms 12:04:47 200 POST /webhooks/stripe 112ms 12:05:02 404 GET /favicon.ico 2ms
Everything you need
Built for the way you actually work.
Point it at a port or a local URL (Laravel Herd, Valet, Rigly, Docker or anything else) and get a public address that just works.
Real HTTPS, instantly
Every tunnel gets a trusted certificate. Test payment flows, OAuth callbacks and service workers that need HTTPS.
See every request
The dashboard on localhost:4040 shows headers and bodies for every request, and replays them: perfect for webhooks.
Names that stay put
Reserve acme.tunnelpad.dev and your webhook URLs and client links never change between sessions.
Your own domain
Serve a tunnel at share.yourcompany.com with an automatic certificate. Point a CNAME and you're done.
Keep it private
Add a password, or ask visitors for their email first, optionally only from your company's domain.
Vite hot reload
Share a Laravel project while npm run dev runs and the Vite dev server comes along, so styles and hot reload work for visitors.
TCP ports too
Share a database, Redis or an SMTP server at a public host:port when a colleague or a service needs to reach it.
On your phone in a second
A QR code in the terminal and the dashboard opens your site on your phone, with no typing long URLs.
Request inspector
Debug webhooks without guessing.
Every request through your tunnel shows up on localhost:4040 with its headers and body, and the response your app sent back. Fix your code, then replay the request instead of triggering the webhook again.
How the dashboard works →Works with what you already run.
Share a port, a local domain or an HTTPS site. TunnelPad sends the right Host header, rewrites redirects to the public address and leaves your app alone.
tunnelpad share 8000
Any port: artisan serve, npm run dev, Rails, Django, Go…
tunnelpad share https://acme.test
Local domains from Laravel Herd, Valet, Rigly or Docker
tunnelpad share 8000 --auth=client:preview
Send a client a password-protected preview
tunnelpad share-port 5432
A database or any TCP service, at a public host:port
Using Rigly? Sharing is built in: sign in once in Settings, then share any local site from its Share card.
Simple pricing.
Start free. Upgrade when you want tunnels that stay open and names that don't change.
Free
Try it out and share something quickly.
- Unlimited tunnels, 90 minutes each
- Random names
- HTTPS, request inspector, QR codes
- Password and email protection
- London server
Pro
For developers who share every day.
- Tunnels that stay open
- 3 reserved names
- 5 custom domains
- TCP ports (databases, SMTP…)
- No notice page for visitors
Team
Share names and domains across your team.
- Everything in Pro, for everyone
- Shared reserved names and domains
- 5 names + 10 domains per member
- One bill for the whole team
- From 2 members; add or remove people any time
Questions
How is this different from ngrok or Expose? +
It does the same core job, at a lower price, with a few extras built in: email sign-in for visitors, Vite sharing for Laravel projects, and the request inspector with replay. It's also built into Rigly, so sharing a local site there is one click.
Do I need PHP or anything else installed? +
No. The tunnelpad command is a single self-contained file for macOS, Linux and Windows. (There's also a PHP archive if you prefer.)
What happens when a free tunnel reaches 90 minutes? +
It closes. Run the command again for a new one with a new random name. Pro and Team tunnels stay open for as long as you're sharing.
What do visitors see? +
Your site. On the Free plan, browsers see a one-time notice first (so tunnels can't be used to impersonate other sites); webhooks and API calls never do. Paid plans have no notice.
Is my traffic stored? +
No. Requests pass through our servers to your computer; we keep traffic totals per day for billing and abuse prevention, not the contents. The request inspector runs on your own machine.
Can I cancel any time? +
Yes. Plans are monthly, you can cancel in the billing portal, and you keep your plan until the end of the period you've paid for.
Share your first site in a minute.
Create a free account, install the command and run tunnelpad share. No credit card needed.
Get started free