FeaturesGuidesBlogDocumentationFreeGet Started

Share Localhost with a Client (Demo Checklist)

Pre-call checklist: start dev server, tunnel, send the HTTPS link — short how-to; see the blog for the full client-preview story.

Use case story: Read Share Localhost With a Client Without Staging for when and why to skip staging deploys.

Try it before the call

You do not need staging deployed to get a client link. Two commands:

npm run dev
npx localtolink

Send the HTTPS URL from your terminal. Your client sees live work-in-progress while you keep coding. When the call ends, stop the tunnel — the link goes offline. No cleanup on a remote server.

For a pre-call checklist, see client demo checklist.

When to use a tunnel for client previews

Deploying to staging for every review cycle is slow and expensive. A development tunnel lets you share live work-in-progress with clients, designers, or stakeholders while you iterate locally. They open a URL in their browser; you keep coding on your machine.

This works well for:

It does not replace staging for multi-day reviews, load testing, or sign-off on production-like environments.

Quick setup

1. Start your dev server:

npm run dev

2. Start the tunnel:

npx localtolink --port 5173

3. Send the public URL to your client:

https://k7m2x9p4q1.localtolink.com

The URL works from any network — your client's office Wi-Fi, home, or cellular.

Before the review: checklist

TaskWhy
Confirm app loads through tunnel URLTest yourself before sharing
Warn about the interstitialClients see a one-time LocalToLink warning page
Use --port if multiple apps runAvoid forwarding to the wrong server
Hide QR code in screen sharesUse --no-qr if the terminal art is distracting
Prepare fallback if session expiresSessions last 2 hours on the free tier

Best practices during the review

Keep the tunnel running for the entire session. If it stops, the URL goes dead immediately.

Stay on the same subdomain — restarting the tunnel generates a new random subdomain. Send an updated link if you restart.

Share context about limitations — this is a dev build, not production. Performance and error handling may differ.

Use screen share as backup — if the client has network restrictions blocking tunnel domains, fall back to a video call with screenshare.

Communicating the interstitial

When the visitor interstitial policy is enabled, browser visitors see Opening a shared link before your app. Tell clients:

"You'll see a brief LocalToLink safety screen — tap Continue once to view the preview."

They only need to continue once per subdomain you send. Webhook traffic from providers does not hit this page.

Limitations to communicate upfront

LimitImpact on client previews
2-hour sessionSchedule reviews within the window or restart and resend link
Random subdomainURL changes on new session — send updated link
1 GB bandwidthSufficient for UI review; not for media-heavy load testing
10 req/sFine for normal browsing; not for stress testing
Single-region serviceAdds latency vs production CDN; not for production traffic
No authentication persistence across sessionsNew subdomain may reset cookies depending on app config

Custom subdomains and extended session limits are not available on the free tier yet.

Mobile client reviews

Scan the terminal QR code so clients can open the preview on their phone:

npx localtolink --port 5173

This is ideal for responsive design reviews. See Test Localhost on Your Phone.

Alternatives for longer reviews

ScenarioBetter approach
Multi-day async reviewDeploy to staging or record a Loom walkthrough
Formal sign-offStaging environment with production-like config
Client needs a memorable URLlocaltunnel --subdomain (reliability trade-offs) or staging deploy
Security-sensitive dataDo not expose via tunnel — use staging with access controls

Troubleshooting during client calls

ProblemQuick fix
Client sees "tunnel unavailable"Confirm tunnel is running; restart if expired
Client stuck on warning pageAsk them to click Continue
Assets not loadingCheck for hardcoded localhost in frontend code
OAuth login failsRegister tunnel URL in OAuth provider — see OAuth guide
Slow page loadsExpected — tunnel adds latency; set expectations

FAQ

Can multiple clients view the same URL?
Yes. Up to 20 concurrent connections on the free tier.

Is the preview secure?
Anyone with the URL can access your dev server while the tunnel runs. Do not share publicly if the app contains real user data.

Can clients submit forms and test flows?
Yes, as long as your backend works locally. Webhooks from external services need the tunnel URL registered separately.

See Expose Localhost to the Internet for full tunnel setup.

Try it now

Start a tunnel from your project directory — no account required.

$ npx --yes localtolink@latest

See the full CLI reference for flags and exit codes.

LocalToLink CLI 1.0.1 — verified 2026-09-20