'%' in file path gives "Failed to copy: read metadata failed: error 400: 400 Bad Request"

What is the problem you are having with rclone?

Logs errors on files with “%” in their names or full paths. The actual files are transferred to the remote.

Run the command 'rclone version' and share the full output of the command.

rclone v1.73.5

  • os/version: unknown
  • os/kernel: 3.10.108 (armv7l)
  • os/type: linux
  • os/arch: arm (ARMv7 compatible)
  • go/version: go1.25.9
  • go/linking: static
  • go/tags: none

Which cloud storage system are you using? (eg Google Drive)

jotta/elgiganten

The command you were trying to run (eg rclone copy /tmp remote:tmp)

rclone   sync   /volume1/storage/PPC21-oldc   jotta-archive:Synology-DS1517/storage/PPC21-oldc   --create-empty-src-dirs   --transfers=4   --checkers=8   --exclude   @eaDir/\*\*   --exclude   .DS_Store   --exclude   Thumbs.db   --stats=5s   --stats-one-line-date   --stats-one-line-date-format   15:04:05   --stats-one-line   --human-readable   --stats-log-level   NOTICE   --progress   --log-level   NOTICE   --use-json-log   --log-file   /tmp/rclone_sync_17851.json

The rclone config contents with secrets removed.

[jotta-archive]
type = jottacloud
configVersion = 1
client_id = XXX
tokenURL = https://cloud.elgiganten.se/auth/realms/elgiganten/protocol/openid-connect/token
token = XXX
device =
mountpoint =

A log from the command with the -vv flag

{"time":"2026-04-27T14:24:17.50042839+02:00","level":"error","msg":"Failed to copy: read metadata failed: error 400: 400 Bad Request","object":"Program Files (x86)/Mozilla Firefox/ftp%3a%2f%2fftp.sunet.se%2fpub%2flang%2fcygwin%2f/release/libsigsegv/libsigsegv2/libsigsegv2-2.10-1.tar.bz2","objectType":"*local.Object","source":"slog/logger.go:256"}
{"time":"2026-04-27T14:28:51.100800427+02:00","level":"error","msg":"Failed to copy: read metadata failed: error 400: 400 Bad Request","object":"Program Files (x86)/Mozilla Firefox/ftp%3a%2f%2fftp.sunet.se%2fpub%2flang%2fcygwin%2f/release/man/man-1.6f-1.tar.bz2","objectType":"*local.Object","source":"slog/logger.go:256"}
{"time":"2026-04-27T14:39:41.305537644+02:00","level":"error","msg":"Failed to copy: read metadata failed: error 400: 400 Bad Request","object":"Program Files (x86)/Mozilla Firefox/ftp%3a%2f%2fftp.sunet.se%2fpub%2flang%2fcygwin%2f/release/ncurses/libncurses10/libncurses10-5.7-18.tar.bz2","objectType":"*local.Object","source":"slog/logger.go:256"}
{"time":"2026-04-27T14:42:28.786196867+02:00","level":"error","msg":"Failed to copy: read metadata failed: error 400: 400 Bad Request","object":"Program Files (x86)/Mozilla Firefox/ftp%3a%2f%2fftp.sunet.se%2fpub%2flang%2fcygwin%2f/release/ncursesw/libncursesw10/libncursesw10-5.7-18.tar.bz2","objectType":"*local.Object","source":"slog/logger.go:256"}

These log entries are probably related. My explanation below the partial log:

{"time":"2026-04-27T18:31:58.139872947+02:00","level":"notice","msg":"Duplicate directory found in source - ignoring","object":"Users/peo/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/usr/share/perl/5.22.1/pod","objectType":"*local.Directory","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:32:02.192159827+02:00","level":"error","msg":"error reading destination directory: couldn't list files: error 400: 400 Bad Request","object":"Users/peo/Downloads/ftp%3a%2f%2fftp.acc.umu.se%2fmirror%2fcygwin%2f","objectType":"string","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:32:07.848083964+02:00","level":"notice","msg":"Duplicate object found in source - ignoring","object":"Users/peo/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc/LocalState/rootfs/usr/share/man/man7/PAM.7.gz","objectType":"*local.Object","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:40:13.08931493+02:00","level":"error","msg":"not deleting files as there were IO errors","object":"jottacloud root 'Synology-DS1517/storage/PPC21-oldc'","objectType":"*jottacloud.Fs","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:40:13.089498242+02:00","level":"error","msg":"not deleting directories as there were IO errors","object":"jottacloud root 'Synology-DS1517/storage/PPC21-oldc'","objectType":"*jottacloud.Fs","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:40:13.08968845+02:00","level":"error","msg":"Attempt 3/3 failed with 11 errors and: march failed with 3 error(s): first error: couldn't list files: error 400: 400 Bad Request","source":"slog/logger.go:256"}
{"time":"2026-04-27T18:40:13.104655095+02:00","level":"notice","msg":"18:40:13 91.203 MiB / 91.203 MiB, 100%, 0 B/s, ETA 0s\n","stats":{"bytes":95633797,"checks":1226916,"deletedDirs":0,"deletes":0,"elapsedTime":30477.562943967,"errors":11,"eta":0,"fatalError":false,"lastError":"march failed with 3 error(s): first error: couldn't list files: error 400: 400 Bad Request","listed":3482310,"renames":0,"retryError":true,"serverSideCopies":0,"serverSideCopyBytes":0,"serverSideMoveBytes":0,"serverSideMoves":0,"speed":4e-323,"totalBytes":95633797,"totalChecks":1226916,"totalTransfers":612432,"transferTime":27937.027392619,"transfers":612432},"source":"slog/logger.go:256"}
{"time":"2026-04-27T18:40:13.104992063+02:00","level":"notice","msg":"Failed to sync with 11 errors: last error was: march failed with 3 error(s): first error: couldn't list files: error 400: 400 Bad Request","source":"slog/logger.go:256"}

“Duplicate directory” and “Duplicate object”: Microsoft Ubuntu have stored the same files or folders with the “same” name (different case, “PAM.7.gz” and “pam.7.gz”, “pod” and “Pod”)
"error reading destination directory: couldn't list files” - related to the suspected bug with ‘%’ in the file paths.