copyparty turns almost any device into a file server with resumable uploads and downloads, usable from any web browser — from Internet Explorer 6 to the latest Chrome, and even from a PlayStation Portable or a Nintendo 3DS. The server is a single Python program with no mandatory dependencies beyond Python itself; every extra feature (thumbnails, media tags, FTP, SFTP, SMB, WebDAV, TFTP) is an optional add-on you enable only if you want it.
This guide walks you through installing copyparty, sharing folders, uploading and downloading files through the browser, and the everyday features you will actually use. Deep configuration, deployment, security hardening, and internals live in the Admin Guide.
Note
copyparty follows an "inverse unix philosophy" — instead of doing one thing well, it does everything and does an okay job at all of it. The result is a drop-in service that gives you a huge feature set in a pinch, with zero setup required.
1. Quick Start
The fastest way to run copyparty is the self-contained sfx (self-extracting) build — a single .py file that unpacks itself and runs.
Any OS with Python
python3 copyparty-sfx.py
pip (PyPI)
python3 -m pip install --user -U copyparty
copyparty
Windows (no Python)
Download copyparty.exe and double-click it, or run from a terminal:
copyparty.exe
uv
uv tool run copyparty
Running copyparty with no arguments gives everyone read/write access to the current folder, then prints a URL you can open:
http://127.0.0.1:3923/
Warning
The zero-argument default shares your current folder as read-write for everyone on the network. Before exposing copyparty beyond your own machine, set up accounts and volumes so only the right people can read or write.
Tip
The default HTTP port is 3923. Open
http://127.0.0.1:3923/in any browser to reach the web UI.
Recommended first options
A few flags dramatically improve the experience:
| Option | What it enables |
|---|---|
-e2dsa |
Index all files so search, dedup, and upload-undo work |
-e2ts |
Index audio metadata (needs FFprobe or Mutagen) |
-v /mnt/music:/music:r:rw,foo -a foo:bar |
Share /mnt/music at URL /music, readable by anyone and read-write for user foo (password bar) |
python3 copyparty-sfx.py -e2dsa -e2ts -v /mnt/music:/music:r -a foo:bar
2. Installation
2.1 Requirements
copyparty needs only Python (2.7 or 3.3+). The single mandatory library, jinja2, is bundled inside the sfx and exe builds.
Note
copyparty runs on an extraordinary range of platforms: Windows, Linux, macOS, Android, iOS, FreeBSD, arm32/arm64, ppc64le, s390x, RISC-V, and even SGI IRIX. If it has Python, it probably runs copyparty.
2.2 Enabling thumbnails, media indexing, and transcoding
These features need FFmpeg and/or Pillow. Install the recommended extras for your OS:
Debian / Ubuntu
apt install --no-install-recommends python3-pil ffmpeg
Alpine
apk add py3-pillow ffmpeg
Fedora
dnf install python3-pillow ffmpeg --allowerasing
macOS
brew install pillow ffmpeg
Windows
python -m pip install --user -U Pillow
Install Python and FFmpeg manually. Do not use winget or the Microsoft Store — they break $PATH.
Important
copyparty.exealready bundles Pillow, so it only needs FFmpeg for media tags and video thumbnails.
2.3 Install methods at a glance
| Method | Command | Notes |
|---|---|---|
| sfx | python3 copyparty-sfx.py |
Recommended; one file, all features |
| English-only sfx | python3 copyparty-en.py |
Smaller |
| PyPI | python3 -m pip install --user -U copyparty |
System Python |
| Windows exe | run copyparty.exe |
win8+; copyparty32.exe for win7 |
| zipapp | python copyparty.pyz |
Emergency fallback, fewer features |
| Arch | pacman -S copyparty |
From extra |
| Homebrew | brew install copyparty ffmpeg |
Intel + Apple Silicon |
| Nix | nix profile install github:9001/copyparty |
Flake-enabled Nix |
| Gentoo | emerge www-servers/copyparty::guru |
From ::guru overlay |
| Android | install in Termux | See §15 |
| iOS | install in a-Shell | See §15 |
Tip
The sfx is a self-extractor that unpacks an embedded
tar.gzinto$TEMP. If that worries you, use the zipapp instead — it runs entirely from the zip without writing temporary files, at slightly lower performance.
3. The Web Browser Interface
The web UI is copyparty's main surface. Open the server URL and you get a file listing with a toolbar of tabs.
3.1 The main tabs
| Tab | Purpose |
|---|---|
[🔎] |
Search by size, date, path/name, mp3-tags |
[🧯] |
Unpost — undo/delete your accidental uploads |
[🚀] / [🎈] |
The two uploaders (fancy / basic) |
[📂] |
mkdir — create directories |
[📝] |
New textfile |
[📟] |
Send message to the server log or into a textfile |
[🎺] |
Audio-player settings |
[⚙️] |
General client settings |
3.2 Hotkeys
copyparty has a rich keyboard interface (keys are always QWERTY positions):
| Key | Action |
|---|---|
? |
Show the hotkey help overlay |
B |
Toggle breadcrumbs / navpane |
I / K |
Previous / next folder |
M |
Parent folder (or collapse current) |
G |
Toggle list / grid view |
T |
Toggle thumbnails / icons |
ctrl-X / ctrl-C / ctrl-V |
Cut / copy / paste selected files |
ctrl-K |
Delete selected files/folders |
Y |
Download selected files |
F2 |
Batch rename |
ESC |
Close the current overlay |
When a media file is open, more keys appear:
- Audio:
J/Lprev/next song,U/Oskip 10 s,0..9jump to 0–90 %,Pplay/pause. - Images/video:
J/Lor←/→prev/next,Ffullscreen,Rrotate,Home/Endfirst/last. - Video extras:
Mmute,[/]set loop range,Vloop entire file. - Markdown editor:
^ssave,^hheader,^kautoformat table,^etoggle editor/preview.
3.3 Navpane
Press B (or click the 🌲) to switch between the breadcrumb path and a tree-browser sidebar (the navpane).
[+]/[-](or hotkeysA/D) adjust the tree width.[🎯]jumps to the currently open folder.[📃]toggles between showing folders and textfiles.[👀]shows the full name on hover when wordwrap is off.
3.4 Thumbnails and grid view
Press g (or click 田 bottom-right) to toggle grid view; t toggles between icons and thumbnails.
- Thumbnails are generated from images (Pillow / pyvips / FFmpeg), videos (FFmpeg), and audio (FFmpeg spectrograms).
- Enable for a single page by adding
?imgsto a link; disable with?imgs=0. - A folder's thumbnail is taken from an image named
folder.png,folder.jpg,cover.png, orcover.jpg(in that priority order).
Note
pyvips produces higher-quality thumbnails ~3× faster than Pillow, and Pillow is ~3× faster than FFmpeg. Your admin chooses which engines are available.
Tip
If thumbnails show as a colorful box with the filetype instead of a preview, the server is missing FFmpeg or Pillow — ask your admin to install one of them.
3.5 Zip / tar downloads
Download a whole folder (or a selection of files) as an archive. Choose the archive type in the [⚙️] config tab, or append a URL suffix directly:
| Name | URL suffix | Description |
|---|---|---|
| tar | ?tar |
Plain gnutar; pairs with curl | tar -xv |
| pax | ?tar=pax |
Futureproof pax tar |
| tgz | ?tar=gz |
gzip-compressed tar |
| txz | ?tar=xz |
xz/lzma-compressed tar (slow) |
| zip | ?zip |
Works everywhere |
| zip_dos | ?zip=dos |
cp437, fixes glitchy filenames on old Windows |
| zip_crc | ?zip=crc |
cp437 with early CRC32, for truly ancient software |
# download a folder as a tar stream and extract on the fly
curl 'http://127.0.0.1:3923/music/?tar' | tar -xv
Tip
Append
?tar&opusor?tar&mp3to transcode every audio file in the folder before adding it to the archive — perfect when your server only has FLACs and you need MP3s on your phone before takeoff. Add&name=footo rename the top-level folder, or&j/&wto get jpeg/webm thumbnails instead of originals.
3.6 Uploading
Drag files or folders into the browser window to upload. You can also:
- Select files in your file explorer and press
CTRL-Vinside the browser. - Use the command-line uploader
u2c.py. - Use curl, ShareX, ishare, etc.
There are two uploaders:
[🎈] bup— the basic uploader; works in almost every browser since Netscape 4.0.[🚀] up2k— the fancy one, and the default for drag-and-drop.
up2k advantages:
- Drop whole folders (added recursively).
- Files are split into checksummed chunks, so uploads auto-resume after a network drop, browser restart, or reboot — just upload the same files again.
- The server detects corruption and re-requests only the affected chunks.
- Already-existing files are skipped (not re-uploaded).
- No filesize limit, even behind a proxy that caps request size (e.g. Cloudflare).
- The file's last-modified timestamp is preserved.
Important
It is perfectly safe to restart or upgrade copyparty while someone is uploading — all up2k clients resume cleanly.
The up2k panel has these controls:
- parallel uploads — how many chunks to send at once.
[🥔]— a simpler "potato" UI for faster uploads from slow devices.[🛡️]— overwrite policy:🛡️never (new filename),🕒overwrite if older,♻️always overwrite if different.[🎲]— generate random filenames.[🔎]— switch between Upload and File-Search mode.
Tabs below show progress: [ok] succeeded, [ng] failed/rejected, [busy] hashing/uploading, [que] queued, [done] combined.
Tip
Turn on
faviconin the[⚙️] settingstab and the browser-tab icon becomes an upload progress indicator. The[🔔]/[🔊]switches enable visible and audible completion notifications.
3.7 File-Search
When you drag files into the browser you get two dropzones: Upload and Search. Drop into Search and copyparty hashes the files locally, sends only the hashes, and tells you whether identical contents already exist on the server.
- Matches land in
[ok]with a link to where the file lives; non-matches land in[ng]. - On a phone, flip the
[🔎]switch green before tapping the big yellow Search button.
Note
File-search requires the server admin to have enabled indexing (
-e2dsa). If search returns nothing, indexing may be off.
3.8 Unpost — undo your uploads
The [🧯] tab lets you delete files you uploaded, even without normal move/delete permission — but only within the --unpost window (default 12 hours) and only if the server runs with -e2d. This is also where you abort unfinished uploads (refresh the page first).
3.9 Self-destruct uploads
If the admin enabled the lifetime rule on a volume, uploads expire automatically after a set time. You can choose a shorter lifetime in the up2k UI when uploading into such a folder.
3.10 File manager
Select a file by clicking on its line (not the link), then:
spacetoggle,up/downmove cursor,shift-up/downselect-and-move, shift-click for range-select.ctrl-xcut,ctrl-ccopy,ctrl-vpaste (in another folder or even another browser tab),F2rename.
Cut/copy/delete/rename require the matching permission on the folder.
3.11 Batch rename
Select files and press F2. Basic mode renames the chosen files; advanced mode renames by rules using regex on the original name and/or the file's tags (artist/title/…).
regexis matched against the original filename; non-matching files are skipped.formatis the new name, drawing from regex capture groups(1),(2), … and tag names like(artist),(title),(ext).- Functions
$lpad(text,len,char)and$rpad(...)are available; counters.n.s(nth in selection) and.n.d(nth in folder) help with numbering.
Example — file meganeko - Eclipse - 07 Sirius A.mp3 with tags Artist:meganeko, Title:Sirius A, tn:7:
regex = (.*) - (.*) - ([0-9]{2}) (.*)
format = (3). (1) - (4)
output = 07. meganeko - Sirius A.mp3
3.12 Shares
When the admin enables shares (--shr), click the bottom-right share button to create a temporary link to the current folder, or select files/a folder first to share only those. When creating a share you can set:
- Password protection.
- Expiry time (
0or blank = never). - Allow visitors to upload (if you have write access).
You can delete your own shares from the control panel.
Caution
A share link bypasses normal auth for that specific path — but it does not replace proper accounts and volumes. Restrict any volume you don't intend to expose; reverse-proxy rules on just the share folder are not sufficient.
3.13 RSS and OPDS feeds
- RSS: if enabled (volflag
rss/--rss), append?rssto a folder URL to get a feed (with iTunes metadata for podcast readers). Parameters includerecursive,fext=mp3,opus,nf=30(limit), andsort=m(by mtime). - OPDS: for e-readers; append
?opdsto a folder URL and point your reader at it (e.g.https://copyparty.example/books/?opds).
3.14 Recent uploads
Click "show recent uploads" in the control panel to list recent uploads. Admins also see uploader IP and time. For your own uploads, the 🧯 unpost tab is better because it lets you undo them.
4. Media Player
copyparty plays almost every audio format. These usually play without FFmpeg: aac flac m4a mp3 ogg opus wav; anything else is transcoded on-demand if the server has FFmpeg.
- Add
?vto any audio/video/image link to open it in the media player. - The player shows the audio waveform in the seekbar and supports OS lock-screen controls.
- Video files can be played as audio only, saving bandwidth.
Open the [🎺] settings tab to configure:
- Switches:
[🔁]repeat one,[🔀]shuffle folder,[preload]start loading the next track early,[os-ctl]enable lock-screen controls,[art]show album art on lock screen. - At end of folder:
[loop]keep looping,[next]play into next folder. - Transcode:
[flac]/[aac]/[oth]decide which source formats get converted. - Transcode to:
[opus](best on Android/PC),[awo]/[caf](iPhone variants),[mp3](works everywhere),[flac]/[wav](lossless; admin must allow with--allow-flac/--allow-wav).
4.1 Playlists
Click an .m3u/.m3u8 file to Play or Edit it. Playlists may reference songs across folders, but filekeys/dirkeys are not supported, so the listener needs read or get access to each file.
To build a playlist in copyparty itself, enable [📻] in the [🎺] tab — [📻add] adds the current/selected songs and [📻copy] puts the playlist on your clipboard, ready to paste into a new .m3u textfile.
4.2 Audio equalizer
The [🎺] tab includes an equalizer and a dynamic-range compressor; it can also boost volume and adjust stereo width. Leaving the EQ enabled (even flat) reduces the gap between songs, helping gapless albums.
Note
The equalizer is unavailable on iPhones/iPads because Safari's AudioContext currently breaks background playback.
5. Viewing Files
5.1 Textfile viewer
Click -txt- next to a textfile to open the viewer. Toolbar:
✏️ edit— open the textfile editor.📡 follow— stream new lines in realtime, liketail -f. Add&tailto the URL to start following immediately.
Terminal color codes render correctly.
5.2 Markdown viewer and editor
Markdown files render with a built-in viewer, and there are two editors. Inline clickable thumbnails are supported — add <!-- th --> to the document, then !th[l](your.jpg) (l/r = left/right align).
Markdown variables: documents can contain server-side variables like {{self.ip}} (the client's IP) or {{srv.htime}} (server time), expanded before display.
5.3 Image gallery and comics
The grid view doubles as an image gallery with a webm player and a CBZ manga/comics reader.
5.4 Other tricks
- Link a timestamp in an audio file by adding it to the URL, e.g.
&t=1:20after the#af-...anchor. - Get a plaintext listing with
?ls=t, or a colored terminal listing with?ls=v. - Files named
.prologue.html/.epilogue.htmlrender before/after directory listings. README.mdrenders after a listing;PREADME.mdrenders above it.
6. Accounts and Volumes
Permissions in copyparty are per-folder, per-user. A volume maps a URL (like /music/) to a real folder on the server (like /mnt/music); an account is a username + password.
Tip
Once your setup grows beyond a couple of folders, switch from command-line flags to a config file — it is far easier to manage and can be reloaded without restarting.
6.1 Permission letters
| Letter | Permission |
|---|---|
r |
read — browse, download, zip/tar, see filekeys/dirkeys |
w |
write — upload, move/copy files into this folder |
m |
move — move files/folders out of this folder |
d |
delete — delete files/folders |
. |
dots — may request to see dotfiles |
g |
get — download only; cannot list folder or zip/tar |
G |
upget — like g, but uploaders also see their own filekeys |
h |
html — like g, but folders return their index.html |
a |
admin — see upload times, uploader IPs, reload config |
A |
all — equivalent to rwmda. |
6.2 Configuring with command-line flags
-a user:pwdadds an account.-v src:dst:perm:perm:…adds a volume — local path, URL path, then one or more permission groups.
Examples:
# three accounts
-a u1:p1 -a u2:p2 -a u3:p3
# /srv as the webroot, read-only for everyone
-v /srv::r
# /mnt/music at /music, read-only for u1/u2, read-write for u3
-v /mnt/music:music:r,u1,u2:rw,u3
# write-only dropbox for u1, read-move for u2
-v /mnt/incoming:inc:w,u1:rm,u2
Note
The group
@acctalways contains every logged-in user, so-v /mnt/music:music:r,@acctgrants read to anyone who has logged in. To grant access only to users who are not logged in, use*,-@acct. You can subtract a single user from a group, e.g.@admins,-james.
6.3 Passwords in URLs
You can pass a password in a link by appending ?pw=hunter2 (use &pw= if the URL already has parameters). With --usernames enabled, use ?pw=username:password.
Warning
Anyone who bruteforces a password gets banned per
--ban-pw(default: 24-hour ban after 9 failed attempts in 1 hour). If you keep seeingthank you for playing, you have been banned — ask your admin.
7. Configuration Files
For anything beyond a trivial setup, use a config file and run python copyparty-sfx.py -c foobar.conf. The same volumes and accounts from §6.2 look like this:
[accounts]
u1: p1 # create account "u1" with password "p1"
u2: p2 # (comments need TWO spaces before the # )
[groups]
g1: u1, u2
[/] # this URL maps to...
/srv # ...this server folder
accs:
r: * # read-only for everyone
[/music]
/mnt/music
accs:
r: u1, u2 # only these can read
rw: u3 # u3 can read-write
[/inc]
/mnt/incoming
accs:
w: u1 # upload-only
rm: u2 # browse + move out
Tip
You can reload accounts and volumes without restarting — run
systemctl reload copyparty(orkill -s USR1), or click[reload cfg]in the control panel if you have admin (a) in any volume. Changes to the[global]section still require a restart.
Note
You can also point copyparty at a config with the environment variable
PRTY_CONFIG=foobar.conf, which is handy in Docker.
8. Searching
When started with -e2dsa, copyparty indexes your files, which both prevents duplicate uploads and makes volumes searchable from the [🔎] tab.
- Search by size, date, path/name, or mp3 tags.
- Name/path queries are space-separated and AND-ed; prefix a word with
-to exclude it.shibayan -bossa→ folders containingshibayanbut notbossa.
- The
rawfield accepts richer SQL-like queries, e.g.( tags like *nhato* or tags like *taishi* ).
To search by music tags, also start the server with -e2ts so tags get indexed.
Note
If you have a "wark" (copyparty's file identifier), search for it in the
[🔎]tab by puttingw = kFpDiztbZc8Z1Lziin therawfield.
9. Filekeys and Dirkeys
These let an admin share specific files or folders without granting full read access — you only need the g (get) permission plus the correct key.
- Filekeys (volflag
fk): each file gets a per-file access key shown as?k=...at the end of its URL. Ag-user must supply that exact URL or get a 404. - Dirkeys (volflag
dk): each folder gets a key granting read access to that folder.
If your admin enabled these, links you share must include the ?k= key. With permission wG, you can upload files and receive your own working links without seeing anyone else's uploads.
10. Accessing copyparty from Other Protocols
Besides the browser, copyparty can speak several network protocols if the admin enables them. As a user, here is how to connect.
10.1 WebDAV (mount as a drive)
WebDAV lets you mount copyparty straight from your OS file explorer. Click the connect button in the control panel for exact instructions.
Windows
Right-click My Computer → Map network drive → Folder: http://192.168.123.1:3923/. Type your password in the username field (the password field can be empty).
macOS
Finder → Go → Connect to Server… → http://192.168.123.1:3923/
Linux (rclone, recommended)
rclone's WebDAV backend is the fastest and most reliable client.
Warning
Windows' built-in WebDAV client is buggy. If reconnecting after a reboot fails, try logging in with a wrong password first then the correct one — or just put your password in the username field. rclone avoids all of these bugs.
10.2 FTP / FTPS
If the admin started --ftp 3921 (or --ftps for TLS), connect with any FTP client:
lftp -u k,wark -p 3921 127.0.0.1 -e ls # plaintext FTP
curl --ssl-reqd ftp://127.0.0.1:3990/ # encrypted FTPS
Log in with any username plus your password, or put your password in the username field (unless --usernames is enabled). FTP uploads are not resumable — delete and restart if interrupted.
10.3 SFTP
If the admin started --sftp 3922, connect with any SSH/SFTP client. Authentication is by SSH key by default; password login works only if the admin enabled --sftp-pw.
10.4 SMB / CIFS
If enabled (--smb read-only or --smbw read-write), copyparty appears as a Windows network share. Authenticate with either username + password, or username $password + password k.
Caution
SMB is slow and not recommended over the internet — the built-in Windows WebDAV client is ~5× faster, and rclone-WebDAV ~30× faster. Use SMB only on a trusted LAN.
10.5 TFTP
If enabled (--tftp 3969), copyparty serves TFTP — mostly useful for talking to very old hardware (firmware on 1990s devices):
curl --tftp-blksize 1428 tftp://127.0.0.1:3969/firmware.bin
11. Non-Browser Clients
copyparty is friendly to scripts and command-line tools.
11.1 curl / wget upload
# upload, get HTML back
curl -F f=@movie.mkv http://127.0.0.1:3923/?pw=wark
# upload, get a plain hotlink URL back
curl -F f=@movie.mkv 'http://127.0.0.1:3923/?want=url&pw=wark'
# stream stdin to a file (chunked)
curl -H pw:wark -T- http://127.0.0.1:3923/ < movie.mkv
# append to an existing file
echo hey | curl -H pw:wark -T- http://127.0.0.1:3923/logfile.txt?apnd
You can supply a password via header PW: hunter2, cookie cppwd=hunter2, url-param ?pw=hunter2, or basic-auth (as username or password).
Important
curl will not send the original filename when you combine
-Twith url-params. Always leave a trailing slash in URLs unless you intend to override the filename.
11.2 u2c.py — the command-line up2k client
u2c.py is the Python uploader with resumable uploads, file-search, and folder sync. Download it from the control panel → connect → u2c.py, or from the repo's bin/ folder.
11.3 Folder sync
u2c.py --dr /local/folder https://server/volume/
--dr verifies checksums, uploads in parallel, and deletes unexpected server files after upload (so renames are cheap — copyparty renames server-side instead of re-uploading).
Note
copyparty does one-way sync only (client→server or server→client); full bidirectional sync like Nextcloud/Syncthing is intentionally never supported. You can, however, safely combine copyparty with Syncthing on the same folders.
11.4 FUSE — mount the server as a filesystem
partyfuse.py (cross-platform Python) mounts a copyparty server read-only as a local filesystem. rclone gives ~5× the performance and also supports writing.
12. Making it Reachable Over the Internet
The quickest way to expose a local copyparty is a Cloudflare quick-tunnel:
cloudflared tunnel --url http://127.0.0.1:3923
This prints a public URL anyone can use to browse your files or upload to you.
Important
When users connect through Cloudflare (or any reverse proxy), start copyparty with
--xff-hdr cf-connecting-ipso it sees the real client IP. Otherwise everyone may share one IP and get each other banned. See the Admin Guide for full reverse-proxy and real-IP setup.
13. Performance Tips (Client Side)
When uploading, you can speed things up:
- In the
[⚙️] settingstab, enable[wasm]when uploading from a very fast SSD with Chrome/Firefox to use all CPU cores for hashing. Do not enable it on Safari or old browsers. - Chrome is faster than Firefox for hashing (up to 90 %) and for uploading over very fast links (up to 40 %).
- If your CPU is the bottleneck, hide the upload list by switching away from the
[🚀]tab (or switch to the[🥔]potato UI) — up to 30 % faster. - On Android-Chrome, increase "parallel uploads" for higher speed.
Tip
Defaults are usually fine — expect roughly 8 GiB/s download and 1 GiB/s upload on a fast LAN.
14. Mobile Apps and Shortcuts
- Android: PartyUP! is a one-tap upload client (not the full server). To run the server on Android, install it in Termux (see below).
- iOS: there is no app, but an upload-to-copyparty shortcut can strip EXIF and upload files, pics, vids, links, and clipboard contents.
14.1 Run the server on Android (Termux)
Install Termux and Termux:API, then paste:
yes | pkg upgrade && termux-setup-storage && yes | pkg install python termux-api && python -m ensurepip && python -m pip install --user -U copyparty
Launch with copyparty (add --qr for a QR code to your external IP).
14.2 Run the server on iOS (a-Shell)
Install a-Shell, then:
curl -L https://github.com/9001/copyparty/raw/refs/heads/hovudstraum/contrib/setup-ashell.sh | sh
This creates a config file cpc and a cpp command to launch copyparty.
15. Browser Support
TLDR: yes. copyparty works in essentially every browser ever made.
| Feature | IE6 | IE9 | IE11 | Firefox 52 | Chrome 49 | iOS | Android |
|---|---|---|---|---|---|---|---|
| Browse files | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Basic uploader | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| up2k (resumable) | — | — | slow | ✅ | ✅ | ✅ | ✅ |
| Thumbnail view | — | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Media player | — | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Markdown editor | — | — | text only | ✅ | ✅ | ✅ | ✅ |
Even text browsers (links, lynx, w3m) and exotic clients (Sony PSP, Nintendo 3DS, an SGI O2 with 64 MiB RAM) can browse and often upload — try appending ?b=u for the simplified HTML uploader on very old clients.
16. Troubleshooting
Error: thank you for playing
Cause: Your IP was banned for too many failed password attempts (or your real IP is hidden behind a reverse proxy and someone else on that shared IP triggered the ban).
Solution: Wait out the ban, or ask the admin to configure real-IP detection (--xff-hdr). See §12.
Prevention: Type passwords carefully; behind Cloudflare, the admin should set --xff-hdr cf-connecting-ip.
Error: Thumbnails show a colored box with the filetype
Cause: The server has no FFmpeg or Pillow installed. Solution: Ask the admin to install FFmpeg or Pillow (§2.2). Prevention: Install the recommended media dependencies up front.
Error: Thumbnails broken only for iPhone photos/videos
Cause: The Docker image and bootable builds can't read HEIF/HEIC images or H.265/HEVC video for legal reasons.
Solution: Run copyparty natively with pyvips (or convert the media first).
Error: Some thumbnails blank or broken-image
Cause: A reverse proxy is stripping the ?th=w query parameter, or a CDN is mis-caching, or a privacy browser extension is interfering.
Solution: Ensure the proxy/CDN preserves the query string; try disabling browser extensions.
Error: Firefox "Secure Connection Failed" / SEC_ERROR_BAD_SIGNATURE with no "Accept the Risk" button
Cause: Firefox's certificate store is corrupted.
Solution: Exit Firefox and delete cert9.db from your Firefox profile folder.
Error: copyparty thinks you're on HTTP even though the URL is HTTPS
Cause: Your reverse proxy isn't sending the X-Forwarded-Proto: https header.
Solution: Ask the admin to fix the proxy so it forwards that header end to end.
Error: Drag-and-drop folder upload skips symlinked files
Cause: A known Chrome bug (1317069) — not a copyparty bug. Solution: Upload the real files directly, not via symlinks.
Error: Music playback randomly stops on Android
Cause: Android's power saver kills the browser's background audio. Solution: Disable power saving for your music browser in the app settings; use a dedicated browser for music.
Error: Windows "directory iterator got stuck" during upload
Cause: Windows max-path-length limit. Solution: Move the files to a shorter path before uploading.
Issue: Uploads to an anonymous-read WebDAV folder fail to write (Windows)
Cause: Windows decides it doesn't need to authenticate, then can't write.
Solution: Connect twice (first to an auth-required folder, then your target), or ask the admin to set --dav-auth.
17. FAQ
Q: Is it CopyParty or copyparty?
It's copyparty (all lowercase) or Copyparty — one word.
Q: What is a volume?
A mapping from a URL (e.g. /music/) to a folder on the server's filesystem (e.g. C:\Users\ed\Music), with its own permissions and options.
Q: What is a volflag? Per-volume configuration. Most global options can be set per-volume as a volflag, and vice-versa.
Q: Can I block folder listing but still allow direct file links?
Yes — use the g (get) permission instead of r. Combine with filekeys to stop filename guessing.
Q: Can I put the password in a share link?
Yes — add ?pw=hunter2 to the end (&pw= if the URL already has parameters). With --usernames, use ?pw=username:password.
Q: How do I stop .hist folders appearing all over my drive?
copyparty creates a .hist folder per volume for its index/thumbnails. Ask the admin to move them with --hist or the hist volflag.
Q: Can copyparty download a file to the server from a URL I give it? Yes, via a server-side hook — an admin feature.
Q: My uploads keep failing with corruption — is my data safe? up2k checksums every chunk and re-requests only the corrupted ones, so the final file is always verified. Just let it resume.
Q: Can I upload files bigger than my proxy's request limit? Yes. up2k splits files into chunks (default ≤96 MiB to slip under Cloudflare), so there is no effective filesize limit.
Q: Where do I report bugs? At github.com/9001/copyparty (primary), or the GitLab/Codeberg mirrors. Include your command-line arguments and config.