Skip to main content

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 username admin.
  • --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/sharex on Linux/macOS, %USERPROFILE%\\sharex on 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:

  1. 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.
  2. Install the certificate as trusted. Copy ~/.dropit/cert.pem to 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.
  3. Skip TLS entirely with dropit --http for devices that refuse self-signed certificates. There is no warning at all, but everything — including your --password credentials — 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, or Shift-click to extend a range. Ctrl/Cmd+A selects everything currently shown.
  • Opening: double-click a row, or press Enter on 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 sharex under your home directory ($HOME/sharex on Linux/macOS, %USERPROFILE%\\sharex on 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 as admin with 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 --password there 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 5001 is allowed through firewalls.
  • Upload fails due to size: increase --maxsize to 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/... or fix/...).
  • 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 .venv then .venv\Scripts\activate)
    • pip install . (ensure dependencies and console entry work)
    • dropit --version (standalone; prints the version and exits)
    • dropit --geturl or dropit --getqr (separate run; starts the server and prints URL or QR, shows the resolved storage path)
  • Push your branch and open a PR against master with a short description and verification steps.
  • Releases: bump dropit/__version__, tag vX.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)

Source distribution for dropit 0.1.18
File Size Uploaded
dropit-0.1.18.tar.gz 70.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dropit 0.1.18
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.1.20

2 release files

0.1.19

2 release files

This release

0.1.18 This release

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page