Skip to main content

Overview

copyparty provides multiple upload methods to suit different browsers and use cases, from legacy IE6 support to modern resumable uploads with no filesize limit.

up2k: Resumable Uploads

The primary upload method is up2k, a JavaScript-based resumable uploader with several advantages:

Resumable

Uploads automatically resume if interrupted by network issues or browser restarts

No Size Limit

Upload files of any size, even through Cloudflare and other proxies

Multithreaded

Upload multiple chunks in parallel for maximum speed

Verified

Each chunk is checksummed - server detects corruption and requests retransmission

How up2k Works

  1. Files are split into chunks (dynamically sized based on file size)
  2. Each chunk is hashed on the client side
  3. Hashes are sent to the server to check what already exists
  4. Only missing chunks are uploaded
  5. Server reassembles the file from chunks
up2k has to read each file twice (once for hashing, once for uploading), but the resumability and deduplication make it worthwhile for most use cases.

Uploading Files

There are several ways to initiate an up2k upload:
Drag files or folders from your file explorer directly into the browser window. The up2k uploader will automatically handle them.
Folder uploads work in modern browsers - files are added recursively.

Upload UI Features

The up2k interface provides several configuration options:
  • Parallel uploads: Number of chunks to upload simultaneously (increase on Android for better speed)
  • 🏃 Continue analysis: Keep processing other files while one is uploading
  • 🥔 Potato mode: Simplified UI for faster uploads from slow devices
  • 🛡️ Overwrite mode:
    • 🛡️ Never overwrite (generate new filename)
    • 🕒 Overwrite if server file is older
    • ♻️ Always overwrite if files are different
  • 🎲 Random filenames: Generate random filenames during upload
  • 🔎 File search: Switch between upload and search mode

Upload Tabs

  • [ok] - Successfully completed files
  • [ng] - Failed/rejected uploads (already exists, etc.)
  • [done] - Combined chronological list of ok and ng
  • [busy] - Currently hashing, pending, or uploading
  • [que] - Queued files waiting to process

Basic Uploader (bup)

The basic uploader uses plain multipart uploads and supports browsers as old as Netscape 4.0 and IE6.
The basic uploader can theoretically be up to 2x faster than up2k for files larger than RAM on slow connections, since it doesn’t need to hash files.
Access the basic uploader by clicking the [🎈] bup tab.

Advanced Upload Features

Deduplication

With -e2dsa enabled, copyparty detects when uploaded content already exists:
  • Client doesn’t upload anything that already exists on the server
  • Server creates a symlink or hardlink to the existing file (with --dedup)
  • No wasted bandwidth or disk space
If you edit a deduplicated file, you will modify ALL copies of that file. This is especially surprising with hardlinks.

Unpost: Undo Uploads

Delete accidental uploads using the [🧯] unpost tab.
Users can delete their own uploads even without delete permission, but only within the configured timespan.

Self-Destruct Uploads

Files can automatically expire after a specified time.
Clients can request a shorter lifetime through the up2k UI.

Race the Beam

Download files while they’re still uploading! This feature enables near-peer-to-peer transfers.
Requires up2k uploads and -e2d indexing enabled.
Drop files into the Search dropzone to check if they already exist on the server.
  1. Files are hashed client-side
  2. Hash is sent to server
  3. Server checks database for matching content
  4. Results show existing file locations
On mobile, toggle the [🔎] switch before selecting files.

Upload Configuration

Server-Side Limits

Upload Organization

Compressed Uploads

Or allow optional compression:

Chunk Size Configuration

The default chunk size is calculated dynamically:
  • Starts at 1 MiB for small files
  • Increases for larger files to keep chunk count reasonable
  • Maximum ~256-4096 chunks per file
Server-side override:

Performance Tips

  • Android Chrome: Increase “parallel uploads” to overcome Android-specific performance issues
  • Large files: Consider basic uploader if files exceed your RAM and you have a fast connection
  • Slow devices: Enable 🥔 potato mode for simpler UI
  • Resume massive uploads: Enable turbo mode to skip hashing already-completed files (read the tooltip first!)

Example Commands