Dropit – Local HTTPS file drop
Dropit is a small Flask app that lets you share files with other devices on the same network. It runs a local HTTPS server with a drag-and-drop UI for uploading, downloading, and deleting files.
Install
pip install dropit
Python ≥ 3.9 is supported.
Commands and flags
dropit [--password <password>] [--geturl] [--getqr] [--maxsize <GB>] [--http] [--version]
--password <password>: enable Basic Auth with usernameadmin.--http: serve plain HTTP instead of HTTPS — no certificate warning, but traffic is unencrypted.--geturl: print the server URL in color to the terminal.--getqr: render the URL as an ASCII QR code in the terminal.--maxsize <GB>: maximum upload size in gigabytes (default:2).--version: print the installed Dropit version and exit.
Examples:
# start server and print URL
dropit --geturl
# start server and show an ASCII QR
dropit --getqr
# require a password (user: admin)
dropit --password "mypassword"
# allow larger uploads (10 GB)
dropit --maxsize 10
# just show the installed version
dropit --version
# no certificate warning (unencrypted — trusted networks only)
dropit --http
Quick start
dropit --geturl
Then, from another device on the same network, open the URL shown (e.g., https://<your-ip>:5001).
What you get
- Local HTTPS server on port
5001, with a certificate that is reused across restarts. - A file-manager UI: folders, breadcrumbs, search, type filters, details/icon views, image previews.
- Drag-and-drop upload, multi-file download as a ZIP, and delete.
- Optional Basic Auth: set a password and use the fixed username
admin. - Handy discovery: print the URL (
--geturl) and an ASCII QR code (--getqr). - Upload size limit configurable via
--maxsize(default 2 GB). - Files are stored under your home directory in
sharex($HOME/sharexon Linux/macOS,%USERPROFILE%\\sharexon Windows). The exact resolved path is printed on startup. - A keep-alive HTTP server (cheroot) with a worker pool, so several devices can browse while others download.
Certificates and the browser warning
Dropit serves HTTPS with a self-signed certificate stored at ~/.dropit/cert.pem. It is
generated once, covers localhost, your machine's hostname, and your current LAN IP, and is
reused on every restart — so a device only has to be told to trust it once, rather than on
every run.
Three ways to deal with the warning, in order of least friction:
- Accept it per device. Tap through the browser's "advanced → proceed" prompt. Because the certificate no longer changes between runs, most browsers stop asking after the first time.
- Install the certificate as trusted. Copy
~/.dropit/cert.pemto the device and install it (Android: Settings → Security → Encryption & credentials → Install a certificate → CA certificate; iOS: open the file, then Settings → General → About → Certificate Trust Settings; macOS: add it to Keychain Access and mark it Always Trust). The warning is then gone for good. - Skip TLS entirely with
dropit --httpfor devices that refuse self-signed certificates. There is no warning at all, but everything — including your--passwordcredentials — travels the network in the clear, so only do this on a network you trust.
Dropit regenerates the certificate automatically if your LAN IP changes or it is about to expire.
Using the web UI
- Actions: right-click an item (long-press on a phone or tablet) to get Open, Select, Download, and Delete. Right-clicking empty space in the list offers Upload Files, Select All, Clear Selection, and Refresh.
- Selecting: a plain click never selects, so you can browse without disturbing a selection.
Use the row checkbox, the context menu's Select,
Ctrl/Cmd-click to add one item, orShift-click to extend a range.Ctrl/Cmd+Aselects everything currently shown. - Opening: double-click a row, or press
Enteron the focused row. Folders open in place; images open in a preview dialog. - Downloading: one selected file downloads directly; several are streamed as a single ZIP.
- Upload: drag files anywhere onto the page, or use Upload in the toolbar, then
Upload Here. Uploads land in the folder you are currently viewing and never overwrite an
existing file — a duplicate name is saved as
name (1).ext. - Deleting: folders must be empty before they can be removed.
- Storage: uploaded files are saved to
sharexunder your home directory ($HOME/sharexon Linux/macOS,%USERPROFILE%\\sharexon Windows).
Keyboard
| Key | Action |
|---|---|
↑ ↓ Home End |
Move between rows |
Space |
Toggle selection of the focused row |
Enter |
Open the focused row |
Ctrl/Cmd + A |
Select everything shown |
Ctrl/Cmd + F |
Jump to the search box |
Shift + F10 / Menu key |
Open the context menu for the focused row |
Esc |
Close menus, the preview, or the Places panel |
Authentication
- Default: open access.
- To require a password: start with
--password mysecret. Sign in asadminwith that password. Basic Auth is only enforced when a password is provided.
Anyone on your network can read, upload to, and delete from the shared folder while the server is running. Without
--passwordthere is no access control at all, so start it only on networks you trust and keep private files out of~/sharex.
Troubleshooting
- Browser warning about HTTPS: see Certificates and the browser warning. Quickest escape hatch is
dropit --http. - A device refuses to open the page at all: some Android builds will not let you past a self-signed certificate. Use
dropit --http, or install the certificate as trusted. - Slow with several devices connected: make sure you are on the release that uses the keep-alive server; large images are also served as icons rather than thumbnails past 2 MB.
- Can’t reach the URL: ensure devices are on the same network and that port
5001is allowed through firewalls. - Upload fails due to size: increase
--maxsizeto the number of gigabytes you need. - Port 5001 is already in use: stop the other program using it, then start Dropit again.
Contributing
Issues and pull requests are welcome. For significant changes, please open an issue first to discuss what you’d like to adjust.
Contribution flow
- Branch from
master(e.g.,feature/...orfix/...). - Make your change. If it affects behavior, note how to verify in the PR.
- Quick local checks:
- Create/activate a virtual env to avoid polluting your global Python:
python3 -m venv .venv && source .venv/bin/activate(on Windows:python -m venv .venvthen.venv\Scripts\activate) pip install .(ensure dependencies and console entry work)dropit --version(standalone; prints the version and exits)dropit --geturlordropit --getqr(separate run; starts the server and prints URL or QR, shows the resolved storage path)
- Create/activate a virtual env to avoid polluting your global Python:
- Push your branch and open a PR against
masterwith a short description and verification steps. - Releases: bump
dropit/__version__, tagvX.Y.Z, and push the tag to trigger the publish workflow. - For larger contributions: discuss design/approach in an issue first, keep PRs focused, and add tests/docs alongside code changes so reviewers can validate quickly.
Metadata
Release files for dropit 0.1.18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dropit-0.1.18.tar.gz | 70.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dropit-0.1.18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 135.4 kB
Release files / dropit-0.1.18.tar.gz
| Download URL | dropit-0.1.18.tar.gz |
|---|---|
| Size | 70.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
171bc7fea1f61c1a5b8ae1f5167d2c9f69bbe0cf34f77cb97277874985b7b3cc
|
|
BLAKE2b-256 checksum How to use checksums |
d3784a1e1bd0272d1cee76c081aaec9bfc2918787c6ab34d4ac2cc1c3fe4fa49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / dropit-0.1.18-py3-none-any.whl
| Download URL | dropit-0.1.18-py3-none-any.whl |
|---|---|
| Size | 65.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1494082f80461038bbbbaa6c1c15eddbf0ecc4d9fdd2b902f936a52c0a59ef49
|
|
BLAKE2b-256 checksum How to use checksums |
b955a3461f803bf0b01e591b6b6992809b04b0a94b2a3ea259cdd0b761e3d19e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|