Skip to content
Peer-to-Peer filesharing in pure client-side Javascript
JavaScript CSS Shell
Branch: master
Clone or download
Pull request Compare This branch is 1437 commits ahead of Miserlou:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
config Setting handshake servers info from an Array to run it from file:// Jul 6, 2013
css Showing compatibility smiley centered May 3, 2013
doc Updated general class diagram Jun 30, 2013
images Using local versions of the images Feb 14, 2013
json Setting handshake servers info from an Array to run it from file:// Jul 6, 2013
lib Updated shareit-core Jul 20, 2013
test_images Removed invalid test files Apr 28, 2013
.allow-devtools-edit Allow DevTools edit Jun 23, 2013
.project Restored DataChannel polyfill Jun 1, 2013 Fixed URL of deploy in GitHub Oct 2, 2013
VERSION Added VERSION file for Apr 28, 2013 Split html_basic in an own project Jul 27, 2013
index.html Set policy inside index.html instead of independent file Jul 18, 2013
oauth_receiver.html Simplified file hierarchy for updates (all libs together) Jan 31, 2013

ShareIt! - Pure Javascript Peer to Peer filesharing

P2P filesharing application running inside the web browser. No install, no config, no problems: just ShareIt! ;-)

Jesús Leganés Combarro "Piranna" - []

ShareIt! is a "Peer to Peer" filesharing system written in pure Javascript that runs inside your web browser like a normal web page that don't need servers thanks to WebRTC technology.

This project was finalist for the OpenITP's first round of 2013 project funding and is currently candidate for the spanish national Universitary Free Software Championship 2013.

If you will fork the project (and more if you want to do modifications) please send me an email just to let me know :-)


File transfers in ShareIt! is build over WebRTC PeerConnection [DataChannels] ( so they could be transfered directly between peers. Currently it's being used an encrypted DataChannel polyfill using secure WebSockets, but in the near future (version 2.0) they will be used native DataChannels, making it perfect for anonymity. You can take a preview on branch Chromium_v28.

Source code from DirtyShare proof-of-concept by Rich Jones ( was used as basis for the initial stages of development.

Let's make a purely browser based, ad-free, Free and Open Source private and anonymous distributed filesharing system!

Mailing List

If you'd like to discuss P2P web applications further, send an email to

and you'll be part of the discussion mailing list! ([Archives here] (

Development blog

How to test it

The webapp is designed to be fully client side, so files can be served by any static web server or web hosting. If you have Python installed they can be served directly from the project folder using

python -m SimpleHTTPServer 8000

so the webapp will be available on localhost:8000. You can also host it on DropBox if desired. It is currently publicly hosted on

The peer connections are managed by an external handshake channel. Currently is being used Jappix anonymous XMPP server and it's being researched to use some more standard and distributed handshake protocols in an anonymous way. Previously it was being used the PubNub pubsub platform, and the [SimpleSignaling] ( server using a test server hosted on Nodejitsu, but now althought maintained they are deprecated and it's recommended to don't use this centralized, single-point-of-failure platforms.

You can test it locally opening two browser tabs, but it should work also if used between several machines if there are no symetric NATs on both ends (it was succesfully tested to transfer files through the wild Internet from Finland to Spain... :-) ). Due to its architecture, it can work between tabs launched from different domains, too.


Because of the usage of DataChannel polyfile, currently it's only compatible with Chromium v23, v24 & v25 due to incompatible changes on the PeerConnection API on higher versions. You can find portable versions for Windows (and on Linux using Wine) at [SourceForge] ( . Later, you'll need to enable the RTCPeerConnection support on the chrome://flags panel, and after that you'll be able to run ShareIt! sucessfully.

Experimental (and working! :-D ) support for native DataChannels is available on Chromium_v28 branch using the reliable library due to current limitations on Chromium native DataChannels, although is terrible slow. It's spected that native reliable support will be available in the next weeks.

External libraries



Random utilities

Some related projects

Derivated projects


All this code is under the Affero GNU General Public License for non-profit, personal and/or academic purposses, and I will thank you if you send me an email to tell me your story and add some references to this project if this is your case. Regarding to other cases, I would be able to give you a commercial license, please contact me to talk about it.

The WebP2P protocol library (located at js/webp2p) and the ShareIt! app core (located at js/shareit-core) will be distributed as independent libraries some date in the future, and I am willing to relicense them under the BSD/MIT/Apache license if requested, I simply ask that you email me and tell me why. I'll almost certainly agree.

Third party libraries (located for each sub-system under 'lib', 'js/webp2p/lib' and 'js/shareit-core/lib' folders) have their own licenses and are property of their respective authors, please put in contact directly to them.

Patches graciously accepted!

You can’t perform that action at this time.