Best Self-Hosted File Sharing Tools
Quick Picks
| Use Case | Best Choice | Why |
|---|---|---|
| Best overall | Send | End-to-end encrypted, expiring links, clean UI — the closest thing to WeTransfer you can self-host |
| Best for LAN sharing | PairDrop | Peer-to-peer WebRTC transfers, zero config, works across every device on your network |
| Best for beginners | PicoShare | One container, one env var, zero dependencies — upload and share in under 2 minutes |
| Best lightweight | Gokapi | Single Go binary, S3 support, expiring downloads, 256 MB RAM |
| Best for screenshots/ShareX | Zipline | Modern dashboard, URL shortener, paste bin, Discord embeds, S3 storage |
| Best battle-tested | Jirafeau | Stable since 2008, PHP-based, no database, just works |
| Best web file manager | FileBrowser | Browse, upload, download, and share server files through a clean web UI |
| Best media gallery | ChibiSafe | Album organization, tagging, polished gallery view with ShareX support |
What Are Self-Hosted File Sharing Tools?
File sharing tools are distinct from file sync platforms. Sync tools like Nextcloud and Seafile keep directories in lockstep across devices. File sharing tools solve a different problem: getting a file from point A to point B, usually through a link, usually once.
You need file sharing when you want to send someone a large video, share a screenshot with a coworker, distribute a build artifact, or give a client temporary access to a document. The cloud options — WeTransfer, Google Drive sharing links, Dropbox Transfer — work fine until you care about privacy, file size limits, or not paying $12/month for the privilege.
Every tool in this roundup runs in a single Docker Compose stack. Most need less than 512 MB of RAM. Several need no database at all.
The Full Ranking
1. Send — Best Overall
Send is a maintained fork of the discontinued Firefox Send. Upload a file through the web UI, get a link. Files are encrypted in your browser with AES-GCM before they ever touch the server — the server stores encrypted blobs it literally cannot read. Links expire after a configurable number of downloads or a time limit.
This is the tool you reach for when you need to share something securely with someone who does not have an account on your system. The recipient clicks a link, enters an optional password, and downloads. No signup, no app install, no friction.
Send requires Redis for session management and a domain name (the encryption depends on BASE_URL), so it is slightly heavier than the single-container tools below. That trade-off buys you real end-to-end encryption, not just HTTPS transport.
Pros:
- End-to-end encryption (AES-GCM, client-side)
- Configurable download limits and time-based expiry
- Clean, intuitive web UI
- No recipient account required
- Supports files up to 2.5 GB (configurable)
- Active community maintaining the Firefox Send fork
Cons:
- Requires Redis (adds a container)
- Needs a domain name with HTTPS for encryption to work
- No API for programmatic uploads out of the box
- 512 MB RAM minimum
Best for: Anyone who needs a WeTransfer replacement with real encryption. The default recommendation for most people.
Here is a Docker Compose configuration to get Send running:
services:
send:
image: registry.gitlab.com/timvisee/send:v3.4.27
container_name: send
ports:
- "127.0.0.1:1443:1443"
environment:
# REQUIRED: Your public-facing URL (no trailing slash)
BASE_URL: https://send.example.com
NODE_ENV: production
PORT: "1443"
# Redis connection
REDIS_HOST: send-redis
# Max file size in bytes (2.5 GB)
MAX_FILE_SIZE: "2684354560"
# Max download count options shown in UI
MAX_DOWNLOADS: "100"
# Max expiry in seconds (7 days)
MAX_EXPIRE_SECONDS: "604800"
# Default download limit
DEFAULT_DOWNLOADS: "5"
# Default expiry in seconds (24 hours)
DEFAULT_EXPIRE_SECONDS: "86400"
depends_on:
send-redis:
condition: service_healthy
restart: unless-stopped
send-redis:
image: redis:7.4-alpine
container_name: send-redis
volumes:
- send-redis-data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
restart: unless-stopped
volumes:
send-redis-data:
Start with docker compose up -d, then open your domain. Upload a file and you will get a shareable link immediately.
Read our full guide: How to Self-Host Send
2. PairDrop — Best for LAN Sharing
PairDrop is AirDrop for everything. Open the web UI on two devices connected to the same network, and they discover each other automatically via WebRTC. Select files, click send, done. Files transfer directly between browsers and never touch the server.
PairDrop is a fork of Snapdrop with persistent device pairing, room-based sharing, and text message support. It uses under 256 MB of RAM because the server is just a signaling relay — actual file data flows peer-to-peer.
The limitation is the peer-to-peer model. Both devices need to be online simultaneously, and sharing with someone outside your network requires a TURN server or a public instance. For async sharing via links, use Send or Gokapi instead.
Pros:
- Peer-to-peer — files never touch the server
- Works on any device with a modern browser
- Zero friction — no accounts, no apps, no configuration for users
- Persistent device pairing across sessions
- Under 256 MB RAM
- Room-based sharing for cross-network transfers
Cons:
- Both devices must be online at the same time
- LAN-only by default (TURN server needed for WAN)
- No shareable links — real-time transfer only
- No encryption at rest (there is no “rest” — files are in-flight only)
Best for: Quick file transfers between devices on the same network. The AirDrop replacement that works on Android, Windows, and Linux.
Read our full guide: How to Self-Host PairDrop
3. Gokapi — Best Lightweight
Gokapi sits in the sweet spot between PicoShare’s minimalism and Send’s encryption. It is a single Go binary (one container, no database) that gives you expiring downloads with both time-based and download-count limits, an optional end-to-end encryption mode, S3-compatible storage support, and an API for scripted uploads.
Gokapi is designed for single-admin use: one person uploads, anyone with the link downloads. There are no user accounts for recipients. The admin dashboard is clean and functional — upload, set expiry, copy link, done.
Pros:
- Single container, no external dependencies
- Optional end-to-end encryption
- S3-compatible storage support (offload to MinIO, Backblaze, etc.)
- Both time-based and download-count expiry
- API for programmatic uploads
- 256 MB RAM
Cons:
- Single admin — no multi-user support
- No gallery or media preview
- Web UI is functional but basic
Best for: Developers and sysadmins who want a lightweight, API-friendly file drop with expiring links. Particularly useful when you want to store files in S3 rather than local disk.
Read our full guide: How to Self-Host Gokapi
4. Zipline — Best for Screenshots and ShareX
Zipline is a full-featured file hosting server built for ShareX, Flameshot, and similar screenshot tools. Upload through the API or web dashboard, get shareable links with custom OG/embed metadata for Discord and Twitter. Zipline also includes a URL shortener and paste bin.
Built with Next.js and PostgreSQL, Zipline is the heaviest tool on this list (1 GB RAM minimum) but also the most feature-rich for power users. Multi-user support, invite codes, chunked uploads, gallery view, and S3 storage make it a platform rather than a single-purpose tool.
Pros:
- Modern Next.js dashboard with gallery view
- ShareX/Flameshot compatible out of the box
- URL shortener and paste bin built in
- Multi-user with invite codes
- S3-compatible storage
- Chunked uploads for large files
- Custom embed metadata (Discord, Twitter previews)
Cons:
- Requires PostgreSQL (heavier stack)
- 1 GB RAM minimum
- Overkill if you just need simple file sharing
- Configuration is extensive
Best for: Power users and teams who share screenshots and files constantly and want a polished dashboard with embed previews. See our Zipline vs XBackBone comparison if you are deciding between ShareX upload servers.
Read our full guide: How to Self-Host Zipline
5. PicoShare — Best for Beginners
PicoShare is the simplest tool on this list. One container, one volume, one environment variable (PS_SHARED_SECRET), and you are sharing files. The web UI is clean, the codebase is small and well-engineered (built by Michael Lynch), and there is nothing to misconfigure because there is almost nothing to configure.
Upload a file, get a link with optional expiry. PicoShare stores everything in SQLite, so there is one volume to back up. No Redis, no PostgreSQL, no complexity.
Pros:
- Simplest setup of any tool on this list
- Single container, SQLite storage, zero dependencies
- Clean web UI
- Optional link expiry
- 256 MB RAM
- Well-maintained, clear codebase
Cons:
- No encryption (beyond HTTPS transport)
- No multi-user support
- No S3 storage option
- No download count limits
- Limited customization
Best for: Anyone who wants file sharing that just works with zero configuration overhead. Deploy in 2 minutes, share files immediately.
Read our full guide: How to Self-Host PicoShare
6. ChibiSafe — Best Media Gallery
ChibiSafe (formerly lolisafe) is a modern file upload service that leans into the gallery experience. Albums, file tagging, clean thumbnails, and shareable galleries make it feel more like an image hosting platform than a file transfer tool. It supports ShareX uploads, multi-user management, and has a polished Next.js frontend.
ChibiSafe needs PostgreSQL and 1 GB of RAM, placing it in the same weight class as Zipline. The difference is focus: ChibiSafe emphasizes media organization and presentation, while Zipline emphasizes developer features like URL shortening and paste bins.
Pros:
- Polished gallery UI with albums and tagging
- ShareX compatible
- Multi-user with permissions
- Shareable album links
- Modern Next.js interface
Cons:
- Requires PostgreSQL
- 1 GB RAM minimum
- Less focused on file transfer, more on file hosting
- Smaller community than Zipline
Best for: Teams and individuals who upload a lot of images and want organized, shareable galleries rather than just download links.
Read our full guide: How to Self-Host ChibiSafe
7. FileBrowser — Best Web File Manager
FileBrowser is not a file sharing tool in the traditional sense — it is a web file manager that happens to include link sharing. Point it at a directory on your server, and you get a browser-based UI to upload, download, rename, move, and share files. Multi-user support with granular permissions makes it useful for giving people access to specific directories.
FileBrowser belongs in this roundup because its sharing feature is genuinely useful: generate a link to any file or folder with optional password protection and expiry. It fills the gap between “I need a file manager” and “I need to share a file.”
Pros:
- Full web file manager (browse, upload, download, edit, share)
- Multi-user with directory-level permissions
- Extremely lightweight (20 MB RAM)
- Single container, no dependencies
- Built-in text editor for config files
Cons:
- Sharing is a secondary feature, not the primary focus
- No encryption beyond HTTPS
- No expiring download counts
- No gallery or media optimization
Best for: Anyone who needs a web file manager first and file sharing second. Pairs well with a dedicated sharing tool like Send or Gokapi. Also covered in our file sync roundup.
Read our full guide: How to Self-Host FileBrowser
8. Jirafeau — Most Battle-Tested
Jirafeau has been around since 2008. It is a PHP-based file upload tool that stores everything on the filesystem — no database, no Redis, no Node.js. Upload a file, get a link with optional password protection, download count limit, and time-based expiry.
Jirafeau is not exciting. The UI looks dated. There is no API, no gallery, no ShareX integration. But it has been running reliably for nearly two decades. If you want file sharing that will not break with the next Node.js major release, Jirafeau is the conservative choice.
Pros:
- Battle-tested since 2008
- No database required — filesystem storage
- Password-protected downloads
- Time-based and download-count expiry
- Minimal resource usage (256 MB RAM)
- PHP-based — runs anywhere
Cons:
- Dated web UI
- No API for programmatic uploads
- No encryption beyond HTTPS
- No multi-user management
- No gallery or media previews
- No S3 storage option
Best for: Anyone who values stability and simplicity above all else. Jirafeau will still be running when the Node.js tools on this list have been rewritten twice.
Read our full guide: How to Self-Host Jirafeau
Honorable Mention: XBackBone
XBackBone is a lightweight ShareX upload server with gallery view and user management. It overlaps significantly with Zipline and ChibiSafe but with a smaller feature set — no URL shortener, no paste bin, no S3 support. It runs on PHP with SQLite, making it lighter than both.
If you want the simplest possible ShareX upload destination and do not need Zipline’s extras, XBackBone is a solid choice. See our Zipline vs XBackBone comparison for a detailed breakdown.
Read our full guide: How to Self-Host XBackBone
Full Feature Comparison
| Feature | Send | PairDrop | Gokapi | Zipline | PicoShare | ChibiSafe | FileBrowser | Jirafeau | XBackBone |
|---|---|---|---|---|---|---|---|---|---|
| End-to-end encryption | Yes (AES-GCM) | N/A (P2P) | Optional | No | No | No | No | No | No |
| Expiring links (time) | Yes | N/A | Yes | Yes | Yes | No | Yes | Yes | No |
| Expiring links (download count) | Yes | N/A | Yes | No | No | No | No | Yes | No |
| Password-protected downloads | Yes | No | No | No | No | No | Yes | Yes | No |
| S3-compatible storage | No | N/A | Yes | Yes | No | No | No | No | No |
| ShareX/Flameshot support | No | No | Via API | Yes | No | Yes | No | No | Yes |
| Multi-user | No | N/A | No | Yes | No | Yes | Yes | No | Yes |
| Gallery/album view | No | No | No | Yes | No | Yes | Yes (file list) | No | Yes |
| URL shortener | No | No | No | Yes | No | No | No | No | No |
| Paste bin | No | No | No | Yes | No | No | No | No | No |
| API for uploads | No | N/A | Yes | Yes | No | Yes | Yes | No | Yes |
| Database required | Redis | None | None | PostgreSQL | None (SQLite) | PostgreSQL | None (SQLite) | None (filesystem) | None (SQLite) |
| Min RAM | 512 MB | 256 MB | 256 MB | 1 GB | 256 MB | 1 GB | 20 MB | 256 MB | 256 MB |
| Language/stack | Node.js | Node.js | Go | Next.js | Go | Next.js | Go | PHP | PHP |
| License | MPL 2.0 | GPL 3.0 | AGPL 3.0 | MIT | Apache 2.0 | MIT | Apache 2.0 | AGPL 3.0 | AGPL 3.0 |
How to Choose
The decision tree is straightforward:
Need to send files to people who do not have accounts? Use Send for encrypted, link-based sharing. Use Gokapi for lightweight link-based sharing without the Redis dependency.
Need to send files to devices on your local network? Use PairDrop. Nothing else comes close for LAN transfers.
Need a ShareX upload server? Use Zipline if you want the full feature set (URL shortener, paste bin, S3). Use XBackBone if you want the lightest option. See our Zipline vs XBackBone comparison for details.
Need the simplest possible setup? Use PicoShare. One container, working in 2 minutes.
Need a web file manager with sharing? Use FileBrowser. It manages files first, shares them second.
Need to replace WeTransfer or Dropbox Transfer? Use Send. It is the most direct replacement. See our WeTransfer alternatives guide for a deeper comparison.
Related
- Best Self-Hosted File Sync & Storage
- How to Self-Host Send
- How to Self-Host PairDrop
- How to Self-Host Gokapi
- How to Self-Host Zipline
- How to Self-Host PicoShare
- How to Self-Host ChibiSafe
- How to Self-Host FileBrowser
- How to Self-Host Jirafeau
- How to Self-Host XBackBone
- PairDrop vs Send
- Zipline vs XBackBone
- Send vs WeTransfer
- Self-Hosted Alternatives to WeTransfer
- Self-Hosted Alternatives to AirDrop
- Self-Hosted Alternatives to ShareX Server
- Self-Hosted File Transfer Alternatives
- Secure Self-Hosted File Sharing
- Docker Compose Basics
- Reverse Proxy Explained
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments