Best Self-Hosted File Sharing Tools

Quick Picks

Use CaseBest ChoiceWhy
Best overallSendEnd-to-end encrypted, expiring links, clean UI — the closest thing to WeTransfer you can self-host
Best for LAN sharingPairDropPeer-to-peer WebRTC transfers, zero config, works across every device on your network
Best for beginnersPicoShareOne container, one env var, zero dependencies — upload and share in under 2 minutes
Best lightweightGokapiSingle Go binary, S3 support, expiring downloads, 256 MB RAM
Best for screenshots/ShareXZiplineModern dashboard, URL shortener, paste bin, Discord embeds, S3 storage
Best battle-testedJirafeauStable since 2008, PHP-based, no database, just works
Best web file managerFileBrowserBrowse, upload, download, and share server files through a clean web UI
Best media galleryChibiSafeAlbum 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

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

FeatureSendPairDropGokapiZiplinePicoShareChibiSafeFileBrowserJirafeauXBackBone
End-to-end encryptionYes (AES-GCM)N/A (P2P)OptionalNoNoNoNoNoNo
Expiring links (time)YesN/AYesYesYesNoYesYesNo
Expiring links (download count)YesN/AYesNoNoNoNoYesNo
Password-protected downloadsYesNoNoNoNoNoYesYesNo
S3-compatible storageNoN/AYesYesNoNoNoNoNo
ShareX/Flameshot supportNoNoVia APIYesNoYesNoNoYes
Multi-userNoN/ANoYesNoYesYesNoYes
Gallery/album viewNoNoNoYesNoYesYes (file list)NoYes
URL shortenerNoNoNoYesNoNoNoNoNo
Paste binNoNoNoYesNoNoNoNoNo
API for uploadsNoN/AYesYesNoYesYesNoYes
Database requiredRedisNoneNonePostgreSQLNone (SQLite)PostgreSQLNone (SQLite)None (filesystem)None (SQLite)
Min RAM512 MB256 MB256 MB1 GB256 MB1 GB20 MB256 MB256 MB
Language/stackNode.jsNode.jsGoNext.jsGoNext.jsGoPHPPHP
LicenseMPL 2.0GPL 3.0AGPL 3.0MITApache 2.0MITApache 2.0AGPL 3.0AGPL 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.

Comments