I built [PinSend](https://pinsend.app) — a free web app for instantly sharing text between devices, using a simple 6-character PIN.
- No login, no account, no install. - Peer-to-peer WebRTC transfer (no server relay, no cloud). - Cross-platform: works on any modern browser.
I built PinSend for myself while developing web apps—I was always copying ngrok links and sending error logs between my laptop and mobile devices. I wanted a frictionless, instant way to move links and text between anything.
*Demo:* 1. Open https://pinsend.app on your phone & laptop 2. Paste or type some text and hit "Send", enter the PIN on the other device 3. Instant sync! 4. No more emailing or Whatsapping notes to yourself
Would love feedback!
How do we know that it’s end-to-end encrypted and that it’s peer-to-peer (without examine the network traffic)? The source doesn’t seem to be available (I presume this is not open source) and there doesn’t seem to be a self hosting option. This brings me to my next question: what is the business model here?
Your page says “Share text and images instantly and securely across all your devices”, but I don’t see a way to send images. Is that on the roadmap or is the inclusion of images in this description a mistake?
Transferring data across devices on different platforms (like photos from an event, for example) is not easy if one wants to avoid messaging apps. Firefox Send and similar services hosted by generous people for others to use have different limits to manage costs and handle abuse. If this service offers transferring images and videos and the concerns about encryption and privacy are addressed, it could be very useful.
Communication inside a sharing session is end-to-end encrypted as it uses WebRTC, and session will "expire" as soon as all clients are disconnected, because no data is stored on a server - it's all between connected clients
It isn't the wormhole protocol. I am on mobile at the moment but someone can definitely link websites which are genuinely using the wormhole protocol as I was involved in the scene of learning about such protocols and the alikes of crocs and there was atleast one open source website based wormhole app.
Also,I may be wrong,I usually am but if you are suggesting the pin to be long and e2ee, then isn't that just pure wormhole, doesn't wormhole protocol also do the same?
Also, i may be wrong again but by p2p / webrtc. I was already imagining encryption. Isn't that the case with webrtc given I have considered it "secure"
There is chitchatter which can be self hosted with ease as a static app and I am pretty sure that one can reconfigure it to better suit the purpose of this app.
Cheers! Hope you can edit out the mistake. Appreciate it.
i often use the 'me' channel in slack, but not every device has that. similarly, between myself on apple devices, I might use 'notes' - which is fine (and long lasting) but I like this approach.
i do share the other stated concern about security. offering '5 minute sessions' and/or a way to 'approve' another device connecting would alleviate some concerns about a random unknown connection happening.
Magic Wormhole (https://github.com/magic-wormhole/magic-wormhole) avoids this by using a password authenticated key exchange (PAKE) protocol. If you don’t use a PAKE, you get trivial brute force attacks from anyone with a transcript.
Even if you assume the PIN is uniformly random (you should not assume this), it is only log2((10+26)^6) ~ 31 bits of entropy. This does not satisfy standard notions of secure channel establishment.
The resulting DTLS keying material is subsequently used for SRTP encryption (for media) and SCTP over DTLS (for the data channel, which is presumably what's being used here).
- Superb domain name.
- I'd clean up less relevant bits as much as possible. The subtitle for example says "Share text and images instantly and securely across all your devices". I'd s/and\ images// and s/across\ all\ your devices//.
- There is a strong use case for sharing just text. I'd encourage you to focus this app on just that. If tempted to add file/image/whatever sharing, I'd break that out into something separate.
- Shortening the url would be an expression of focus. Think https://pinsend.app/sessioncode .
- The copy functionality for each text string shared is great.
- Why not make the qr code visible by default?
- Let your audience decide how they want to use string sharing functionality. Don't presume on their behalf. What if two technicians on either side of a theatre want to use this to share secret streaming strings? You'd want to make sure your messaging is welcoming to them too.
Shameless plug: I built small file sharing tool with encryption in browser and added a "tunnel" feature to make it easier for sharing between personal devices : https://www.relaysecret.com/tunnel/
The aes256 key is derived from hashing the tunnel name but never sent back to backend as it is behind anchor tag and the tunnel name is derived from substring of this hash. It is quite fun to use and share files. The file never lives more than 10 days (bucket lifecycle) but user can reduce this to delete upon download and the code can easily be reviewed (back end is a single lambda function to generate signed url):)
They use a self-signed certificate for DTLS-SRTP, and the fingerprint of that is sent over the signalling channel.
I have a lot of suggestions and I would love to get into touch with ya on some suggestions as I have unplugged my computer for quite some time now and am solely on mobile at the moment.
Maybe on signal perhaps?
Now there are a lot of suggestions I can give.
Firstly, there is piping server through which I sent my brother some link using hello and he curled it and it felt so cool. I love piping server.
Secondly, wormhole protocol as I mentioned in other post.
There is also iroh.computer which is coming to wasm as well.
Theoretically, if one had to ask me the most private way though. My truest bet would be tor and onion routes though its a shame that additional software has to be configured for it. But if you don't mind a computer hosting texts "live" ie no middleman store the text (I am of course assuming webrtc works the same way)
Of course, there are a lot of fancy stuff but a big problem with them is that they have a huge link for better privacy I suppose.
One can use a link shortener. Wouldve recommended dub.sh earlier but I am seeing quite some limitations in it and the free tier to me personally the last time I checked if I remember correctly, was very slow but its still nice and can be used.
I reckon if one wanted collaboration of text, one could also use proton docs + dub.sh to a similar experience to your website except its more collaborative given proton can now support accountless edits in some sense(of course, I forgot its real name but it was in their blog post, I wish to create a github issues like stuff but using it but like in the web but maybe after some time, wish proton had better dev support.
Great idea. If I may ask Btw whats the tech stack and what services are you using to host it and do you intend to make money(unlikely I presume), what's your take on it
Cheers man. I have seen the world ignore people when they build something. I don't know but I want to say from the bottom of my heart that I think you made a meaningful change to world I suppose in its own manner. Of course, i watched the princess bride so I feel quite poetic at the moment but one must imagine you happy.
Unless you have some sort of throttling implemented, that's not really a lot and could probably be brute forced.
Hope you figure it out though!
I solved it for myself using Signal, it has a "Note to Self" feature and you can access it with Signal mobile and desktop. It's also E2E encrypted. https://support.signal.org/hc/en-us/articles/360043272451-No...
How do you set up the initial connection? A six digit alphanumeric code isn't long enough to include WebRTC connectivity setup data, so I assume a server is involved for at least that part?
Also, a small nit: The code is alphanumeric and also to be shared with the recipient, so it's arguably neither personal, nor is it a number ;)