FeaturesGuidesBlogDocumentationFreeGet Started

Expose Localhost Without Installing Software

npx localtolink needs no global binary — Node 22.14+ only. Quick install model; see the pillar guide for full setup steps.

What "no install" actually means

"No install" in the tunnel world is often misleading. Every tool requires something on your machine — a binary, a package manager, or Node.js. What developers usually mean is no global install and no permanent footprint: run a command, get a URL, done.

LocalToLink fits that workflow. You run npx localtolink without installing anything globally. The first run downloads the package from npm; subsequent runs use the cache.

This is not zero dependencies — you need Node.js and a running dev server. It is zero permanent install.

Requirements

RequirementDetails
Node.js22.14 or later
Local appDev server running on a detectable port
NetworkOutbound HTTPS and WebSocket allowed

Check your Node version:

node --version
# v22.14.0 or higher required

If Node is not installed, download it from nodejs.org or use your system package manager. LocalToLink does not bundle Node.

One-command tunnel

npx localtolink

LocalToLink auto-detects common dev ports (3000, 5173, 8080, etc.) and prints a public HTTPS URL. No config file, no account signup.

Specify a port manually:

npx localtolink --port 3000

No account needed

Anonymous tunnels require no signup. LocalToLink assigns a random 10-character subdomain automatically, e.g. https://k7m2x9p4q1.localtolink.com.

There are no API keys, no dashboard login, and no credit card for the free tier.

Compare install models

Different tunnel tools have different install requirements. This table compares honestly — no tool is truly "zero install" unless you already have its runtime.

ToolInstall modelAccount for free tier
LocalToLinknpx localtolink (needs Node ≥ 22.14)No
localtunnelnpx localtunnel (needs Node)No
ngrokBinary download, brew, or npmYes (signup required)
Cloudflare Tunnelcloudflared binary requiredNo for quick tunnels; yes for named tunnels

If Node is already in your workflow (it is for most JavaScript projects), npx localtolink adds zero permanent footprint.

What npx does

npx is included with npm (Node 22+). It:

  1. Downloads the localtolink package if not cached
  2. Runs it without a global install
  3. Caches the package for faster subsequent runs

Important: cached copies are not updated automatically. Use @latest (and --yes to skip the install prompt) when you want the current release:

npx --yes localtolink@latest --port 3000

Plain npx localtolink may keep running an older cached version until you refresh it.

npx cache vs installation.json

These are separate:

npm / npx cacheinstallation.json
StoresThe CLI package versionA local device UUID for abuse limits
Locationnpm cache dire.g. ~/.config/localtolink/installation.json
Clearing cacheNext run may download a newer CLIDoes not change
Deleting the fileDoes not affect npm cacheNew device identity on next session

Pin a version in CI when you need reproducibility; use @latest on your laptop when you want fixes and new features.

CI and scripts without global install

Use --json for machine-readable output in pipelines:

URL=$(npx localtolink --json --port 3000 | jq -r .url)
echo "Testing webhooks at $URL/api/webhooks"

Hide the QR code in headless environments:

npx localtolink --json --port 3000 --no-qr

Pinning versions in CI

Reproducible pipelines should pin the CLI package so npx does not pull an unexpected release:

npx localtolink@1.0.1 --json --port 3000 --no-qr

Combine with --json and --no-qr in headless runners. Session limits still apply — tear down the tunnel when the job finishes.

What you still need locally

A tunnel forwards traffic — it does not run your app. You always need:

When npm-based is not the right fit

SituationAlternative
No Node.js on the machinengrok binary or cloudflared
Need request inspectorngrok (requires account)
Production ingressCloudflare Tunnel with named tunnel
Want free custom subdomainlocaltunnel --subdomain (reliability varies)

For a problem-first take on picking a tunnel (without competitor directories), see Expose Localhost in One Command and the step-by-step expose localhost guide.

Free tier limits

LimitValue
Session duration2 hours
Bandwidth1 GB per session
Rate limit10 requests/second
Tunnels per IP1
SubdomainRandom 10-character

Troubleshooting

ProblemFix
command not found: npxInstall Node.js 22.14+
No local app detectedStart dev server first
Slow first runnpx downloads package — subsequent runs are faster
Corporate proxy blocks npmConfigure npm proxy or use ngrok binary

FAQ

Is this the same as "no download"?
The npm package downloads on first run. Nothing stays installed globally unless you choose to npm install -g localtolink.

Can I use this on a machine without admin rights?
Yes, if Node.js is available in your user PATH. No admin install needed.

Does it work in Docker?
Yes, if the container has Node 22.14+ and network access. Forward to the container's dev server port.

See Expose Localhost to the Internet for the full walkthrough with troubleshooting and FAQ.

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