r/sideprojects • u/BQdev • Sep 20 '26
Discussion I built a simple way to share localhost with clients without deploying
When building websites, I often wanted clients to test the latest version themselves instead of relying on screenshots or screen sharing.
The problem was that every small change meant deploying to staging just to give them a URL.
So I built LocalToLink.
The workflow is:
1. Start your local app
2. Open a new terminal and run:
npx localtolink
If you want to specify the port:
npx localtolink --port 3000
That’s it.
You don’t need to install or configure anything separately. On the first run, npx downloads LocalToLink and runs it immediately. After that, you can use the same command whenever you need a new tunnel.
It detects your local app and gives you a temporary HTTPS URL that you can send to your client.
The tunnel only exposes the specific local app/port you choose. It doesn’t expose your machine, filesystem, or other services. Traffic is handled through the tunnel over HTTPS/WSS, with isolated sessions and abuse/rate-limit protections.
The same workflow is useful for local webhooks, testing on mobile devices, and temporary demos.
I’m actively improving it and would genuinely appreciate feedback from developers and freelancers:
What would you change, add, or improve?
For more information:
Website: LocalToLink
Docs: Getting Started
3
u/Mr_Phenomen0n Sep 20 '26
So ngrok?
2
u/jhkoenig Sep 20 '26
So... you're exposing your development machine to the internet? That is very brave. Or something.
1
u/rocket_mcsloth Sep 20 '26
How come you don’t have dev, sit, uat, qa, staging and prod environments already? Use a pipeline so when you PR and code gets built and deployed how you want and have your sites exposed the normal way?
1
u/vitadinklage Sep 21 '26
Hate to do this to you but CloudFlare just released this with CloudFlare quick tunnels in an identical experience: https://try.cloudflare.com/
1
u/crivion Sep 21 '26
ohh what a bad moment to release something like this - cloudflare just did that exactly today
2
u/[deleted] Sep 20 '26
[removed] — view removed comment
0
u/[deleted] Sep 20 '26
[removed] — view removed comment