Skip to content
HexaTransfer
Back to blog
File Transfer

Batch Upload Optimization: Transfer Folders Faster

Optimize batch uploads for maximum speed. Learn folder structure tips, parallel upload techniques, and settings that make bulk transfers lightning fast.

The fastest batch upload strategy: pack the folder into a single .zip (store mode, no compression) and upload one big object instead of thousands of small ones. A folder of 5,000 .jpg files at 500 KB each totals 2.5 GB but takes 10-20x longer to upload individually than as a single 2.5 GB archive because each small file pays full TLS and HTTP overhead. Services with parallel upload support (HexaTransfer, Dropbox, rclone) help when many chunks are large. Services without parallelism still win on throughput once you combine small files into one archive. Add deduplication of accidentally duplicated files, skip .DS_Store and Thumbs.db clutter, and you'll finish in a fraction of the naive time.

Why thousands of tiny files are slow

Every file upload over HTTPS carries fixed overhead: TLS handshake (reusable with connection keep-alive), HTTP headers (~500 bytes), server acknowledgment, and disk flush on the receiving side. For a 50 KB file, that overhead can exceed the file's own size. For a 500 KB file, overhead runs 10-20% of the total bytes on the wire.

Multiply by 5,000 files and you've burned half the time on metadata instead of payload. This is why copying a large folder with many small files to external storage is always slower than copying one equivalently sized archive.

Archive first, upload second

The single biggest speedup for folder uploads: compress into one .zip, .7z, or .tar file first. For already-compressed contents (photos, videos, office documents), use store mode (no compression) — you get the bundling benefit without the CPU cost. For text-heavy folders (logs, source code), use default compression for real size savings on top.

Commands:

  • macOS/Linux: zip -0 -r archive.zip folder/ for no compression; zip -r archive.zip folder/ for default compression.
  • Windows: Right-click folder → Send to → Compressed (zipped) folder. Or use 7-Zip with Add to archive → Compression level → Store.
  • Big folders: tar -cf archive.tar folder/ (no compression) or tar -czf archive.tar.gz folder/ (gzip).

Deduplicate before archiving

Folders accumulate duplicate files over time. Design projects have "final_v2.psd", "final_v2_COPY.psd", "final_v2_BACKUP.psd" — same content, different names. A 20 GB folder can routinely shrink to 12 GB after dedup.

Tools: fdupes (Linux), rmlint (Linux/macOS), Duplicate File Finder (macOS), dupeGuru (cross-platform). Most work by hashing files and flagging identical hashes. Review the results, delete duplicates, then archive.

For photographers, Lightroom's catalog already tracks unique photos; export only flagged selects rather than entire capture folders.

Skip OS clutter

Every macOS folder accumulates .DS_Store files (hidden metadata). Every Windows folder carries Thumbs.db. Linux .directory files appear from KDE. These add nothing for the recipient and bloat the archive count.

When zipping on macOS:

zip -r archive.zip folder/ -x "*.DS_Store" "__MACOSX"

On Windows via 7-Zip, exclude patterns in the UI or command line with -xr!Thumbs.db -xr!desktop.ini. For rsync-style transfers, use --exclude='.DS_Store' --exclude='Thumbs.db'.

Parallel chunked uploads

When the service supports it, parallel HTTP streams saturate bandwidth that a single TCP connection can't fill on high-latency paths. The tus.io protocol supports this via concurrent chunk uploads. Clients like the tus-js-client library default to one concurrent request but can be configured higher.

For cross-continental uploads (for example, US user to European service), parallelism doubles or triples effective throughput. For local uploads, a single stream usually saturates upload bandwidth anyway and parallelism adds nothing.

Chunk size tuning

Large chunks reduce per-request overhead; small chunks recover faster from network failures. The tradeoff depends on your connection:

| Connection type | Suggested chunk size | |---|---| | Gigabit fiber, wired | 32-64 MB | | Residential fiber, Wi-Fi | 10-20 MB | | Office broadband | 10 MB | | Mobile 4G/5G | 2-5 MB | | Unstable/hotel Wi-Fi | 1-2 MB |

Most consumer services pick a sensible default (5-10 MB) and don't expose the setting. Command-line tools (rclone, aws s3 cp, gsutil) let you tune precisely.

Folder structure matters less than total volume

A common myth: "deeply nested folders slow down uploads." They don't. The archive format flattens paths into string headers regardless of depth. A folder of 10,000 files 3 levels deep uploads identically to a folder of 10,000 files 10 levels deep once archived.

What does matter: the individual file count. 10,000 small files flat is the same problem as 10,000 small files nested — archive them.

Compression strategy per content type

  • Mixed photos (.jpg/.heic): store mode .zip. No CPU waste.
  • RAW photos (.cr3/.arw/.nef): store mode .zip. Already compressed internally.
  • Video projects (.mp4, .mov, .prproj): store mode .zip.
  • Source code: 7z with LZMA2 for maximum ratio.
  • Log files: 7z with LZMA2; expect 10-20x reduction.
  • PDFs: store mode. Most PDFs have internal compression.
  • Mixed office docs (.docx, .xlsx): store mode. These are already ZIP-compressed XML internally.
  • Database dumps (.sql): 7z with LZMA2. Excellent compression.

Background vs foreground

Browser-based uploads must keep the tab open. Closing the tab typically kills the upload. Some services offer Service Worker-backed background uploads that continue briefly after the tab closes, but this is unreliable on mobile browsers and in some enterprise browser profiles.

For truly large batch uploads (100+ GB), desktop clients win because they run as OS-level processes. rclone mounts and syncs to any major cloud. The Dropbox desktop client queues uploads reliably. These survive laptop lid-closes and Wi-Fi changes in ways browsers struggle with.

For batch uploads under 10 GB, a modern browser-based service with chunked uploads via tus.io handles the workload fine. HexaTransfer's client-side encryption adds modest CPU overhead but doesn't materially affect throughput on current hardware.

Split oversized batches

When your batch exceeds the service's per-transfer ceiling, split logically rather than mechanically. "Photos by date" folders for a month-long shoot work better than arbitrary byte-count splits because recipients can verify each batch is complete ("March 1-7.zip", "March 8-14.zip") rather than wondering if volume .005 is missing.

For services without per-transfer limits but with session limits, sequential uploads of multiple archives avoids hitting concurrent-upload caps.

Verify before you walk away

Large batch uploads are tempting to fire and forget. Don't. Before closing the laptop:

  • Confirm the upload page shows "complete" not "in progress"
  • Open the link in a different browser or incognito window and verify the recipient's experience
  • Check the archive opens correctly (a corrupted .zip during upload is rare but possible)
  • Confirm expiry settings match what you wanted

Five minutes of verification beats an awkward email tomorrow asking if the recipient got the files.

Delta sync for repeated batches

If you're updating a batch — say, weekly backups of a project folder — full re-upload is wasteful. Tools like rclone, rsync over SSH, or dedicated sync clients transfer only changed files. This requires persistent storage (not ephemeral transfer services), so it's a cloud-storage pattern rather than a transfer pattern.

For true transfer workflows where the recipient is different each time, full archive each batch is the right approach.

Verdict

The fast path for folder uploads: archive everything into one .zip (store mode for pre-compressed content, real compression for text), skip OS clutter files, deduplicate where worthwhile, and upload the single archive through a service that supports chunked resumable uploads. For very large batches, use a desktop client. The difference between naive "upload folder directly" and the optimized path is often 10x in elapsed time.

Try it at hexatransfer.com — free, no account, 10 GB max.

Send large files securely with end-to-end encryption

Transfer files up to 10 GB for free with end-to-end encryption. No account required. Your files are encrypted in your browser before upload — no one else can read them.

Send a file