This is a way to transfer your files directly from one device to another. To establish a connection to
each other, you and the recipient exchange a set of generated "codes". After that, you can send the recipient
as many files as you want (until you close your browser). Also note that there's a 15 second timeout while
connecting, so type fast! (This limit wasn't set by me, it's a feature/limitation of Google Chrome)
In peer-to-peer file transfer, your data never gets sent to another server, so it's faster and more secure.
You also don't have to worry about the file size limits that exist in emails or texts.
This implementation uses WebRTC to establish a connection between browsers and is (almost) completely serverless.
In order for peers to discover each other, a STUN (Session Traversal Utilities for NAT) server must be used. This
server finds a network path between the two peers by implementing the ICE (Interactive Connectivity Establishment)
protocol. After finding a path, the peer initiating the connection generates an SDP (Session Description Protocol)
offer, which must be sent to the other peer. After the recipient receives the first peer's offer, they generate a
SDP answer, which must be sent back to the first peer. After both peers receive each other's handshake, the connection
can be established and data can start passing directly between them. Normally, a signaling server is used to send the
initial handshake. However, I wanted to rely on as little external servers as possible (without hosting my own
server instance of course), so I decided to let the users send this data directly to each other. To make this feasible,
the handshake had to be heavily compressed. First, the data was first split into smaller chunks, and each chunk was assigned a key.
Finally, the combination of shorter keys are assigned to a single key. Each "code" generated is actually a key linked to a
chunk of encoded JSON handshake data. If the initial ICE connection fails, it's most likely an issue with a firewall or symmetrical NAT,
so sending data directly between the two peers isn't possible.
Waiting for a file to download...
This purpose of this policy is to inform visitors regarding the collection, use, and disclosure of personally identifiable information (PII).
If you do not agree to the following policy you may wish to cease use of this service.
This service is provided at no cost and is intended for use as is.
Information Collection & Use
This app uses a third party service that may collect certain personally identifiable information for advertisement attiribution / identification (Google AdMob).
I do not control the actual advertisements seen / displayed by advertising partners.
Clicking on any advertisements may track your actions by using a cookie saved to your device.
Where ad preferences are requested as 'non-personalised', cookies may still be used for frequency capping, aggregated ad reporting and to combat fraud and abuse.
Cookies are files with a small amount of data that are commonly used as unique identifiers. These are stored on your device's internal memory.
This service does not use “cookies” explicitly, however, it may contain third party libraries that use such “cookies” to collect information and improve their services.
No method of transmission over the internet, or method of electronic storage is 100% secure and reliable. Therefore, I cannot guarantee its absolute security.
Changes to this Policy
I may modify this policy at any time. Thus, you are advised to review this page periodically for any changes. These changes are effective immediately after they are posted.