TunnelPad
NEW Team plans, with shared names and domains

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

~/Sites/acme
$ 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
Stripe & GitHub webhooks· Client previews· Testing on real phones· OAuth callbacks· Pair debugging

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 →
POST/webhooks/stripe 200
GET/checkout/success 302
GET/ 200
POST/api/orders 422
Request headers
stripe-signature: t=1762…
content-type: application/json
Body
{ "type": "checkout.session.completed",
  "data": { "object": { … } } }
Replay request

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.

$0 forever
  • Unlimited tunnels, 90 minutes each
  • Random names
  • HTTPS, request inspector, QR codes
  • Password and email protection
  • London server
Get started
Most popular

Pro

For developers who share every day.

$5 per month
  • Tunnels that stay open
  • 3 reserved names
  • 5 custom domains
  • TCP ports (databases, SMTP…)
  • No notice page for visitors
Go Pro

Team

Share names and domains across your team.

$4 per member / month
  • 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
Start a team

Compare plans in detail

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