Skip to content
πŸ“² WebRTC file transfer - React/TypeScript front end.
TypeScript CSS HTML
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
src added a progressbar presence animation Feb 17, 2020
.env moved app title to env Jan 12, 2020
.gitignore first commit Jan 7, 2020
LICENSE first commit Jan 7, 2020
tsconfig.json added clipboard upload Feb 7, 2020
yarn.lock updated typesocket Feb 8, 2020


Easy WebRTC file transfer.

Click here to open



What is the motivation behind the project?

I didn't feel comfortable logging into my e-mail account on devices I don't own just to download an attachment and cloud services have extremely long URLs that aren't really easy to type.

Where do my files go after I send them through the service?

To the other device. Sometimes the (encrypted, since WebRTC uses encryption by default) data goes through the TURN server I run. It's immediately discarded after being relayed. File metadata also is not saved.

Doesn't this exist already?

While ShareDrop and SnapDrop are both excellent projects and most definitely exist, I felt the need to create my own version for a several reasons:

  • I wanted to build something using React.js and TypeScript. While the back end doesn't use TypeScript the front end benefits greatly from being written in it - this saved me countless hours I'd spend debugging and also provides me with better autocomplete.
  • ShareDrop doesn't work when the devices are on different networks but still behind NAT.
  • I didn't like the layout and design of both, I feel like the abstract design of FileDrop makes it easier to use.
  • I was not aware of these projects while I started working on this project.
  • ShareDrop's URLs are extremely long.

How is it related to the other projects you've mentioned?

I don't use PeerJS (while the other two projects do) and I also host TURN and WebSocket servers myself (instead of relying on Firebase). Sometimes you may get connected to Google's STUN server (always if a TURN server is not provided in the configuration).

You can’t perform that action at this time.