{"id":13377853,"url":"https://github.com/schlagmichdoch/pairdrop","last_synced_at":"2025-05-16T01:05:35.204Z","repository":{"id":233953127,"uuid":"586248938","full_name":"schlagmichdoch/PairDrop","owner":"schlagmichdoch","description":"PairDrop: Transfer Files Cross-Platform. No Setup, No Signup.","archived":false,"fork":false,"pushed_at":"2025-02-25T17:19:44.000Z","size":20801,"stargazers_count":6938,"open_issues_count":91,"forks_count":393,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-16T01:05:28.475Z","etag":null,"topics":["file-sharing","indexeddb","nodejs","pwa","webrtc","websockets"],"latest_commit_sha":null,"homepage":"https://pairdrop.net","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schlagmichdoch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"schlagmichdoch","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://buymeacoffee.com/pairdrop"}},"created_at":"2023-01-07T13:25:11.000Z","updated_at":"2025-05-16T01:04:11.000Z","dependencies_parsed_at":"2024-04-17T19:50:30.520Z","dependency_job_id":"e71f7fc4-176a-42f9-8ff2-eaa3a6552d19","html_url":"https://github.com/schlagmichdoch/PairDrop","commit_stats":{"total_commits":1078,"total_committers":97,"mean_commits":11.11340206185567,"dds":0.5538033395176252,"last_synced_commit":"957ca39f9019cd83a53fd2db016ad9a503411eca"},"previous_names":["schlagmichdoch/pairdrop"],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schlagmichdoch%2FPairDrop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schlagmichdoch%2FPairDrop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schlagmichdoch%2FPairDrop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schlagmichdoch%2FPairDrop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schlagmichdoch","download_url":"https://codeload.github.com/schlagmichdoch/PairDrop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254448579,"owners_count":22072764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["file-sharing","indexeddb","nodejs","pwa","webrtc","websockets"],"created_at":"2024-07-30T06:03:03.189Z","updated_at":"2025-05-16T01:05:30.188Z","avatar_url":"https://github.com/schlagmichdoch.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/schlagmichdoch/PairDrop\"\u003e\n    \u003cimg src=\"public/images/android-chrome-512x512.png\" alt=\"Logo\"  width=\"150\" height=\"150\"\u003e\n  \u003c/a\u003e\n \n  # _Send it_, with [PairDrop](https://pairdrop.net)\n\n  \u003cp\u003e\n    Local file sharing \u003ca href=\"https://pairdrop.net\"\u003e\u003cstrong\u003ein your web browser\u003c/strong\u003e\u003c/a\u003e. \n    \u003cbr\u003e\n    Inspired by Apple's AirDrop.\n    \u003cbr\u003e \n    Fork of Snapdrop.\n    \u003cbr\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://github.com/schlagmichdoch/PairDrop/issues\"\u003eReport a bug\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/schlagmichdoch/PairDrop/issues\"\u003eRequest feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\n## Features\nFile sharing on your local network that works on all platforms.\n\n- A multi-platform AirDrop-like solution that works.\n  - Send images, documents or text via peer-to-peer connection to devices on the same local network.\n- Internet transfers\n  - Join temporary public rooms to transfer files easily over the Internet.\n- Web-app \n  - Works on all devices with a modern web-browser.\n \nSend a file from your phone to your laptop?\n\u003cbr\u003eShare photos in original quality with friends using Android and iOS?\n\u003cbr\u003eShare private files peer-to-peer between Linux systems?\n\n\u003cimg src=\"docs/pairdrop_screenshot_mobile.gif\" alt=\"Screenshot GIF showing PairDrop in use\" style=\"width: 300px\"\u003e\n\n## Differences to the [Snapdrop](https://github.com/RobinLinus/snapdrop) it is based on\n\u003cdetails\u003e\u003csummary\u003eView all differences\u003c/summary\u003e\n\n### Paired Devices and Public Rooms — Internet Transfer\n* Transfer files over the Internet between paired devices or by entering temporary public rooms.\n* Connect to devices in complex network environments (public Wi-Fi, company network, iCloud Private Relay, VPN, etc.).\n* Connect to devices on your mobile hotspot.\n* Devices outside of your local network that are behind a NAT are auto-connected via the PairDrop TURN server.\n* Devices from the local network, in the same public room, or previously paired are shown.\n\n#### Persistent Device Pairing\n\nAlways connect to known devices\n\n* Pair devices via a 6-digit code or a QR-Code.\n* Paired devices always find each other via shared secrets independently of their local network. \n* Pairing is persistent. You find your devices even after reopening PairDrop.\n* You can edit and unpair devices easily.\n\n#### Temporary Public Rooms\n\nConnect to others in complex network situations, or over the Internet.\n\n* Enter a public room via a 5-letter code or a QR-code.\n* Enter a public room to temporarily connect to devices outside your local network.\n* All devices in the same public room see each other.\n* Public rooms are temporary. Closing PairDrop  leaves all rooms.\n\n### [Improved UI for Sending/Receiving Files](https://github.com/RobinLinus/snapdrop/issues/560)\n* Files are transferred after a request is accepted. Files are auto-downloaded upon completing a transfer, if possible.\n* Multiple files are downloaded as a ZIP file\n* Download, share or save to gallery via the \"Share\" menu on Android and iOS.\n* Multiple files are transferred at once with an overall progress indicator.\n\n### Send Files or Text Directly From Share Menu, Context Menu or CLI\n* [Send files directly from context menu on Ubuntu (using Nautilus)](docs/how-to.md#send-multiple-files-and-directories-directly-from-context-menu-on-ubuntu-using-nautilus)\n* [Send files directly from the context menu on Windows](docs/how-to.md#send-files-directly-from-context-menu-on-windows)\n* [Send directly from the \"Share\" menu on iOS](docs/how-to.md#send-directly-from-share-menu-on-ios)\n* [Send directly from the \"Share\" menu on Android](docs/how-to.md#send-directly-from-share-menu-on-android)\n* [Send directly via the command-line interface](docs/how-to.md#send-directly-via-command-line-interface)\n\n### Other Changes\n* Change your display name to easily differentiate your devices.\n* [Paste files/text and choose the recipient afterwards ](https://github.com/RobinLinus/snapdrop/pull/534)\n* [Prevent devices from sleeping on file transfer](https://github.com/RobinLinus/snapdrop/pull/413)\n* Warn user before PairDrop is closed on file transfer\n* Open PairDrop on multiple tabs simultaneously (Thanks [@willstott101](https://github.com/willstott101))\n* [Video and audio preview](https://github.com/RobinLinus/snapdrop/pull/455) (Thanks [@victorwads](https://github.com/victorwads))\n* Switch theme back to auto/system after dark or light mode is on\n* Node-only implementation (Thanks [@Bellisario](https://github.com/Bellisario))\n* Auto-restart on error (Thanks [@KaKi87](https://github.com/KaKi87))\n* Lots of stability fixes (Thanks [@MWY001](https://github.com/MWY001) [@skiby7](https://github.com/skiby7) and [@willstott101](https://github.com/willstott101))\n* To host PairDrop on your local network (e.g. on Raspberry Pi): [All peers connected with private IPs are discoverable by each other](https://github.com/RobinLinus/snapdrop/pull/558)\n* When hosting PairDrop yourself, you can [set your own STUN/TURN servers](docs/host-your-own.md#specify-stunturn-servers)\n* Translations.\n\n\u003c/details\u003e\n\n## Translate PairDrop on [Hosted Weblate](https://hosted.weblate.org/engage/pairdrop/)\n\u003ca href=\"https://hosted.weblate.org/engage/pairdrop/\"\u003e\n\u003cimg src=\"https://hosted.weblate.org/widget/pairdrop/horizontal-blue.svg\" alt=\"Translation status\" style=\"width: 300px\" /\u003e\n\u003c/a\u003e\n\n## Built with the following awesome technologies:\n* Vanilla HTML5 / JS ES6 / CSS 3 frontend\n* [WebRTC](http://webrtc.org/) / WebSockets\n* [Node.js](https://nodejs.org/en/) backend\n* [Progressive web app (PWA)](https://en.wikipedia.org/wiki/Progressive_web_app) unified functionality\n* [IndexedDB API](https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API) storage handling\n* [zip.js](https://gildas-lormeau.github.io/zip.js/) library\n* [cyrb53](https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js) super-fast hash function\n* [NoSleep](https://github.com/richtr/NoSleep.js) display sleep, add wake lock ([MIT](licenses/MIT-NoSleep))\n* [heic2any](https://github.com/alexcorvi/heic2any) HEIC/HEIF to PNG/GIF/JPEG ([MIT](licenses/MIT-heic2any))\n* [Weblate](https://weblate.org/) web-based localization tool\n* [BrowserStack](https://www.browserstack.com/) This project is tested with BrowserStack\n\n[FAQ](docs/faq.md)\n\n[Host your own instance with Docker or Node.js](docs/host-your-own.md).\n\n## Support\n\u003ca href=\"https://www.buymeacoffee.com/pairdrop\" target=\"_blank\"\u003e\n\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/v2/default-blue.png\" alt=\"Buy me a coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\n\u003c/a\u003e\n\u003cbr /\u003e\n\u003cbr /\u003e\n\nPairDrop is libre, and always will be. \\\nIf you find it useful and want to support free and open-source software, please consider donating using the button above. \\\nI footed the bill for the domain and the server, and you can help create and maintain great software by supporting me. \\\nThank you very much for your contribution!\n\n## Contributing\nFeel free to [open an issue](https://github.com/schlagmichdoch/pairdrop/issues/new/choose) or a\n[pull request](https://github.com/schlagmichdoch/pairdrop/pulls), following the\n[Contributing Guidelines](CONTRIBUTING.md).\n","funding_links":["https://github.com/sponsors/schlagmichdoch","https://buymeacoffee.com/pairdrop","https://www.buymeacoffee.com/pairdrop"],"categories":["Software","传文件"],"sub_categories":["File Transfer - Single-click \u0026 Drag-n-drop Upload"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschlagmichdoch%2Fpairdrop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschlagmichdoch%2Fpairdrop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschlagmichdoch%2Fpairdrop/lists"}