I built a file transfer tool that does not pass through any server: LocSend
Whether it’s WeChat, QQ, cloud drives, temporary file-sharing websites, or even many so-called “encrypted transfer tools”,
in essence they all still work like this:
Your file is first uploaded to their server, and then forwarded to the other person.
Functionally, this is of course very convenient.
But from an engineering and privacy perspective, it has never felt truly “clean”.
So I spent quite a long time building a product:
LocSend
Its core goal can be summed up in one sentence:
Let files flow only between two devices whenever possible — instead of passing through a server.

How does LocSend actually work?
LocSend is built on the browser’s native WebRTC.
This means:
- File data travels through the browser’s low-level, peer-to-peer encrypted channel
- The data does not pass through my server
- The server does only one thing:
- helping both sides exchange signaling messages to establish the connection
You can think of it like this:
The server just “introduces you to each other.”
The real conversation and file transfer happen privately between the two of you.
Once the connection is established:
- I cannot see what you are sending
- I cannot access your file contents
- I don’t even know how large the file is
Is it “fully offline”?
This is a point where I try to be very honest.
Strictly speaking:
When WebRTC establishes a connection, the browser needs to briefly contact a STUN server
to determine each other’s network address and NAT situation.
So you do need a network connection — even if it’s just enough to reach a STUN endpoint.
But once the connection is established:
- The file data itself is peer-to-peer
- It does not go through the LocSend server
- Even if the server crashes on the spot, existing transfers will continue
If both sides are on the same LAN, or both are in an IPv6 direct-connect environment,
even STUN is not used at all.
Why insist on “no relay server”?
To be honest, this path is harder.
Once you stop relaying data through servers:
- NAT traversal becomes more complex
- Some extreme network environments will fail
- Debugging cost goes way up
- Feature expansion becomes slower
But I still chose this direction, for very simple reasons:
Cleaner privacy
I don’t want to even technically have the ability to see your data.
More honest architecture
I don’t need to write pages of “we will not peek at your files” disclaimers,
because by design I literally cannot.
More controllable future
This system can be ported to offline bundles, local HTML files, and intranet environments,
instead of being permanently dependent on cloud services.
Who is LocSend for?
If you:
- Occasionally need to send large files to colleagues or friends
- Don’t want to upload to a cloud drive first and then send a link
- Don’t want to register accounts, log in, or do real-name verification
- Don’t want your files to be temporarily “hosted on someone else’s server”
Then LocSend is actually a pretty good fit.
You open the page → they open the page → it auto-connects → you send the file.
No software installation.
No account registration.
Is it perfect right now?
Not at all (laughs).
LocSend is still evolving quickly. For example:
- Connections may fail in extreme NAT environments
- The mobile experience is still being optimized
- The UI still has obvious “engineer aesthetics”
- TURN relay fallback hasn’t been added yet (intentionally)
But it already stably supports:
- Direct transfer of multi-GB files
- End-to-end encryption in the browser
- 30–100 MB/s LAN transfer speeds
- Automatic signaling exchange (no manual SDP copying)
A “directionally correct” tool
I don’t see LocSend as a replacement for all cloud drives, IM apps, or file-transfer tools.
It’s more like a very pure complementary option:
When you truly don’t want your file to pass through any third-party server,
you still have a usable — and pleasant — choice.
If you’re interested in WebRTC, P2P, privacy tools,
or “cleaner ways of doing internet communication”,
feel free to try it.
If it has bugs, feels bad to use, looks ugly, or the idea itself feels stupid —
you can absolutely roast me.
I really will fix it.

