Same 1 GB, Yet a Photo Folder Copies Slower Than a Single Video — Why?

· Updated: · · Windows, Windows 11, File Copy, Performance, SSD, NAS, ZIP, robocopy

Revision history (first version, published Sep 5, 2026)
First published
Cite this article(DOI: 10.5281/zenodo.22640304)

This article is archived on Zenodo. Below are both the DOI that always resolves to the latest version and the DOI pinned to the version you are reading.

Go Komura (2026). Same 1 GB, Yet a Photo Folder Copies Slower Than a Single Video — Why?. KomuraSoft LLC. https://doi.org/10.5281/zenodo.22640304 https://comcomponent.com/en/blog/windows-small-files-copy-slow/

DOI (latest version)
10.5281/zenodo.22640304
DOI (this version)
10.5281/zenodo.22640305

A 1 GB video copied in no time, yet a photo folder that totals 1 GB seems to take forever. You moved to a new SSD, but the transfer speed drops sharply as soon as you move lots of small files.

If the size is the same, the time ought to be the same too — but what decides copy time is not only “how many bytes to move” but also “how many files to handle.”

This article is an introduction for everyday users who copy photos and documents to external drives or a NAS on Windows 11. It explains the mechanism, then shows a procedure for comparing data of the same total size yourself. It is based on official documentation checked on September 5, 2026, and is not the result of measuring the speed of any particular PC or NAS.

1. “Moving 1 GB” and “Processing 10,000 Items” Are Different Jobs

Think of a house move: even when the total weight is the same, one large box and 10,000 small parcels whose address labels each have to be checked are not the same amount of work. Files, too, involve work before and after the contents are moved.

The same size, a different number of filesEven with 1 GB of data in total, one file and many files require a different number of management operations.1 GB of data in totalOne large file10,000 small filesFew per-file operationsPer-file operations repeated

Figure 1: The same number of bytes does not mean the same number of files.

Microsoft, too, explains that when many small files are copied one after another across a network, work other than data transfer takes over and the line speed cannot be fully used.1

Of course, this is not a rule by format along the lines of “photos are slow, videos are fast.” A handful of large photos and tens of thousands of tiny images are different situations. Start by opening the folder’s Properties and looking at both the total size and the file count. For the comparison, match the total number of bytes of file contents, not “Size on disk.”

In the diagram a solid line marks a relation that always holds and a dashed line marks a conditional one (the conditions are given per relation on the detail page). The full list of relations (11 in total, with evidence and certainty) and the definitions of the main concepts are collected on the knowledge map detail page (in Japanese). Data: JSON-LD / Turtle

2. A Copy Handles More Than the Contents

When a file is copied, the source is opened, the destination file is created, the contents are read and written, the required information is set, and the file is closed. Opening a file on Windows also involves conditions such as access rights and whether other operations may open the file at the same time.2

The information used to manage a file, such as its name, size, and timestamps, is called metadata. The NTFS file system, for example, records per-file management information in structures such as the MFT (Master File Table). It is not a mechanism where writing the photo’s pixel data is all there is to it.3

The work involved in copying one fileBesides reading the source, creating the destination, managing its information, and closing it are required for each file.Open the sourceCreate the destinationRead and write the contentsSet the information and closeRepeat for the next file

Figure 2: A conceptual flow. The actual order of operations and any parallel execution depend on the copy method and the file system.

An SSD does not make this management work disappear. The large transfer-rate figure on a product’s spec sheet alone cannot tell you how long 10,000 files will take to copy. It is also too crude to simply call copying small files “all random I/O.” Beyond where the reads and writes land, the file-handling work itself has to be considered separately.

3. On a NAS, “Waiting for the Other Side to Reply” Is Added

A NAS is a storage device used over the network. With SMB (Server Message Block), the protocol behind Windows shared folders, file operations are requested from the other side, and there are points where the PC waits for that side to process the request and respond.

File operations across a networkAn operation request from the PC travels across the network, becomes a file operation on the other side, and the response returns to the PC.PC requests a file operationTravels across the networkOther side processes the fileResponse returns to the PC

Figure 3: Being able to move a lot at once and getting a quick reply to a single operation are two different things.

Bandwidth corresponds to the number of lanes on a road; latency corresponds to the time until a reply comes back. When the wait per small file grows, the amount transferred does not increase even with bandwidth to spare. Antivirus scanning can also affect the processing time per file.1

This does not mean, however, that every file always requires a fixed number of round trips. SMB has a mechanism for bundling requests, and caching and concurrency conditions also change how the waiting plays out.45 Results also differ between a home LAN and a shared folder at a remote site.

A Simplified Example for Thinking in Numbers

Assuming everything is processed in sequence with no overlap, the reasoning goes like this.

Copy time ≈ total bytes ÷ data transfer rate
          + number of files × extra time per file

This is neither a measured value nor Windows’ exact formula. For illustration, assume the data portion runs at 100 MB/s and the extra time is 2 milliseconds per file. Here 1 GB = 1,000 MB.

The 1 GB data portion takes 10 seconds. With one file the extra time is 0.002 seconds, but with 10,000 files it is 20 seconds, for a total of about 30 seconds. The model leaves out parallelism, caching, and CPU and storage limits, but it does explain why “the same size takes a different amount of time.”

Splitting copy time into two partsDistinguishes the transfer time determined by total size from the extra time that accumulates with the number of files.Time proportional to total sizeTotal copy timeExtra time proportional to file count

Figure 4: As the file count grows, time that was invisible from the data volume alone starts to matter.

4. ZIP Does Not Just “Shrink” — It Also “Bundles Into One”

ZIP has two roles: compressing data and bundling multiple files into a single container. JPEG is already a compressed format, so putting it in a ZIP may not reduce the size much.6

Even so, there is a separate effect: the number of files handled during transfer drops from 10,000 to one. Looking only at the compression ratio and concluding “the ZIP was pointless” is premature.

The two roles of ZIPThe change in file count from bundling into a ZIP and the change in size from compression are separate effects.Bundle the photos into a ZIPOne file to transferSize change depends on the contents

Figure 5: Even when almost nothing compresses, the number of files to transfer goes down.

Neither bundling nor extracting is free, though. If you want to use the photos as an ordinary folder, compare the following total.

Time via ZIP = ZIP creation + ZIP transfer + extraction

Creating the ZIP reads the small files, and extraction creates them again at the destination. The point is not to eliminate the per-file work but to change where that work happens and the form of the transfer. If the processing before and after the transfer is heavy, not bundling can be faster.1

5. “Where You Extract” Changes What ZIP Buys You

If you send the ZIP to the receiving PC and extract it on that PC’s local drive, the small files do not have to be streamed across the network one at a time. Microsoft’s guidance also lists extracting the archive on the destination system as a method.1

Extracting on the destination versus extracting from the PC to the shareDistinguishes the path where the destination extracts internally from the path where the PC writes the extracted files to the share.Send the ZIP to the destinationDestination extracts internallyPC app extractsSmall files sent to the share

Figure 6: “The ZIP is on the NAS” does not by itself mean the extraction is performed inside the NAS.

This is an easy place to get wrong. If you open a ZIP on the NAS in File Explorer on the PC and choose the same shared folder as the extraction target, the PC writes the extracted small files to the NAS, so the fine-grained network operations happen all over again.

Distinguish this from the case where the NAS itself has a supported extraction feature that can run inside the NAS, from its management console or the like. If no such feature exists, do not settle for “sending a ZIP solves it”; measure the whole path you will actually use. When comparing extraction inside the NAS with extraction to the PC’s local drive, also keep in mind that the final location of the files is different.

6. Comparing Large, Small, and ZIP at the Same 1 GB

You can start by trying it with a video and photos you already have. But since the contents, file count, and compressibility all differ, use test data when you want to isolate the cause. What follows is not a set of measured speeds but a comparison procedure to run in your own environment.

Prepare three things: one large file, 10,000 small files, and an uncompressed ZIP that bundles those 10,000 files. The contents of A and B both total exactly 1,000,000,000 bytes. C carries ZIP’s management information on top, so its file size will not match A and B exactly.

Three kinds of comparison dataCreate one large file and a set of small files with the same total size, then create an uncompressed ZIP from the latter.Prepare the same 1 GB totalOne 1 GB file10,000 files of 100 KBSame contents into an uncompressed ZIP

Figure 7: With an uncompressed ZIP, it is easier to observe the effect of bundling the files separately from any difference in compression ratio.

Creating the Test Files (Optional)

This is for readers who can use the command line. In Windows PowerShell 5.1 or later, create a new test folder in the local temporary folder. The large file and the small files alone take about 2 GB, about 3 GB including the ZIP, and the destination needs its own free space as well. To avoid filling the disk, make sure the source has at least about 5 GB free.

No existing photos or documents are used. The data is generated from pseudo-random numbers, so the files cannot be opened as videos or photos. This avoids the extreme compression you would get with zero-filled data alone, but it does not reproduce scanning or application behavior for real photos.

$ErrorActionPreference = 'Stop'
$lab = Join-Path ([System.IO.Path]::GetTempPath()) ('copylab-' + [guid]::NewGuid().ToString('N'))
$drive = New-Object System.IO.DriveInfo ([System.IO.Path]::GetPathRoot($lab))
if ($drive.AvailableFreeSpace -lt 5GB) {
    throw 'Make sure the test drive has at least 5 GB of free space.'
}
$largeDir = Join-Path $lab 'large'
$smallDir = Join-Path $lab 'small'
[System.IO.Directory]::CreateDirectory($largeDir) | Out-Null
[System.IO.Directory]::CreateDirectory($smallDir) | Out-Null
Write-Host "Created at: $lab"

$fileCount = 10000
$buffer = New-Object byte[] 100000
$random = New-Object System.Random 20260905
$large = [System.IO.File]::Open(
    (Join-Path $largeDir 'one.bin'),
    [System.IO.FileMode]::CreateNew,
    [System.IO.FileAccess]::Write,
    [System.IO.FileShare]::None
)
try {
    for ($i = 0; $i -lt $fileCount; $i++) {
        $random.NextBytes($buffer)
        $name = 'part-{0:D5}.bin' -f $i
        [System.IO.File]::WriteAllBytes((Join-Path $smallDir $name), $buffer)
        $large.Write($buffer, 0, $buffer.Length)
    }
}
finally {
    $large.Dispose()
}
Write-Host "Preparation complete. The contents of each data set are $([long]$fileCount * $buffer.Length) bytes."

The same byte sequence is written both to the small pieces and to the single file. Next, in the same PowerShell window, create the uncompressed ZIP. Record the creation time here. NoCompression stores the files in the ZIP without compressing them.7

$zip = Join-Path $lab 'small.zip'
$watch = [System.Diagnostics.Stopwatch]::StartNew()
Compress-Archive -LiteralPath $smallDir -DestinationPath $zip -CompressionLevel NoCompression
$watch.Stop()
Write-Host "ZIP creation: $($watch.Elapsed.TotalSeconds) seconds"
Write-Host "ZIP size: $((Get-Item -LiteralPath $zip).Length) bytes"

This procedure is only for the generated ordinary files. Compress-Archive has limitations such as ignoring hidden files, so do not reuse it as is for a complete backup of an important folder.7 If it stops with an error, do not use that run for measurement; check the test folder whose path was displayed. Clean up only after confirming that the folder is the one you created yourself.

Keeping the Measurement Conditions the Same

Use the same source and destination devices, the same network, and the same copy method. To begin with, copy all three in File Explorer; do not use move. Make the destination a new, empty folder every time so that skipping of existing files or overwrite prompts do not get mixed in.

Procedure for keeping comparison conditions the sameFix the copy path and method, copy to an empty destination several times in varying order, and check the contents after completion.Same devices, path, and methodEmpty destination every timeMeasure several times in varying orderCheck count and contents too

Figure 8: Do not treat time saved by skipping files that were already copied as a faster transfer.

Measure each case, say, three times, varying the order, and record the median and the spread. Windows caches files in memory, so only the second run may come out faster. A new destination does not clear the cache on the reading side. What this procedure reveals is a tendency close to everyday copying, not strict cache-free media performance.5

Copies within the same physical drive have reads and writes competing with each other, so do not mix them with copies to a separate device. Do not use online-only cloud files, because the time to fetch them would be included, and do not change conditions such as antivirus or sync partway through.

Case Creation time Transfer time Extraction time Total until the photos etc. are usable
A: One large file Excluded (preparation for comparison) Measure and record Not needed Transfer time (control)
B: 10,000 small files Excluded (preparation for comparison) Measure and record Not needed Transfer time
C: Uncompressed ZIP bundling B Record ZIP creation Measure and record Record if needed Creation + transfer + extraction

This is a table for recording; no result figures are filled in. A is a control for observing the characteristics of the transfer; because its file structure is different, it is not a substitute for B. For the practical comparison between B and C, the goal is to place the same set of files in the same final location. Always record where the extraction was done as well.

After copying or extracting, cross-check the file count and total bytes, and verify the contents with hashes if necessary. Do the verification reads outside the measurement, and note that they also affect the cache for the next trial. The time until the copy dialog closes does not measure the time until the data can survive a power loss, so do not experiment with unplugging an external device right afterward either.5

7. When You Cannot Use a ZIP, Copy in Parallel a Little at a Time

For uses where individual files must be usable at the destination right away, or where only the files that changed are sent each time, bundling into a ZIP may not be a good fit. Windows’ built-in robocopy has /MT, which handles multiple files in parallel.89

Overlapping the per-file wait in parallelBy working on several files at once, another transfer can proceed while one file is waiting.Handle several files at onceFile A waits for a responseFile B is transferringWaits overlap

Figure 9: Parallelism is a way to overlap waits; it does not make the line or the disk itself faster.

The following example copies from the $smallDir created earlier. Change only $targetRoot to a destination you can write to. Create a separate destination folder for each run, and do not use options that delete the source data or the destination.

$targetRoot = '\\NAS\share\CopyLab' # change to your own destination
$runId = [guid]::NewGuid().ToString('N')
$target = Join-Path $targetRoot ('small-mt8-' + $runId)
$log = Join-Path $lab ('robocopy-' + $runId + '.log')
robocopy $smallDir $target /E /MT:8 /R:1 /W:1 /XJ "/LOG:$log"
$code = $LASTEXITCODE
if ($code -ge 8) {
    throw "The copy had failures. Exit code=$code, log=$log"
}
Write-Host "Exit code=$code. Check the copied and failed counts in the log and the contents of the destination: $log"

/MT:8 means 8 threads, /R:1 /W:1 are the retry count and the wait in seconds on failure, and /LOG saves the log. robocopy reports a successful copy even with exit code 1, and 8 or higher includes failures. That does not mean 0 to 7 excuses you from checking the contents.8

/MT:8 is an example starting point for the comparison, not an optimal value. Too much parallelism increases the load on the other side and can actually make things slower.1 Limit what you change at a time, for instance by comparing /MT:1 and /MT:8 with the same method. Do not judge the effect of either from a result where the ZIP and the parallelism were changed at the same time.

8. Before Concluding “It Is Slow, So It Must Be Broken”

Is it only the many small files that are slow, or are large files slow too? What happens when the same files are copied locally? Separating these narrows down where to look. When the speed drops partway through, the cache may be involved, and the displayed speed alone cannot pinpoint the cause.5

Isolating slow copiesInvestigates slowness limited to small files separately from slowness regardless of the type of data.YesNoOnly small files slow?Look at file count and wait timeAlso check device, connection, and loadAlso check for failures or disconnects

Figure 10: Speed that does not scale with small files and copy failures or device faults are not the same story.

When copy failures or disconnections occur, or things suddenly got much worse than before, do not stop at explaining it by file count alone. Put preserving important data first, and check the logs and the state of the devices.

Also, stopping antivirus or disabling SMB signing to gain speed is not recommended. SMB signing serves to prevent tampering with the communication, among other things.10 On a managed PC, do not work around the settings; consult the person in charge.

Summary

Copy time consists of both time proportional to the amount of data and work proportional to the number of files. That is why “it is 1 GB, so it takes the same time” does not necessarily hold.

If you try a ZIP, look beyond the compression ratio to creation, transfer, and extraction. If you try parallel copying, change only the number of threads at a time. Before buying faster hardware, looking at the total size and the file count together makes it easier to reason about what is happening on your Windows right now.

References

  1. Microsoft Learn, Slow SMB files transfer speed. On many small files, the burden of file creation, communication, and scanning, parallel copying, and extracting an archive on the destination.  2 3 4 5

  2. Microsoft Learn, CreateFileW function. On opening and creating files, access rights, and share modes. 

  3. Microsoft Learn, Master File Table. On how NTFS keeps per-file management information. 

  4. Microsoft Open Specifications, Sending Compounded Requests. On how SMB2 sends several related operations together. 

  5. Microsoft Learn, File Caching. On the system file cache and the mechanism that delays writes before applying them.  2 3 4

  6. Microsoft Support, Zip and unzip files. On bundling files with ZIP, and on JPEGs not getting much smaller with additional compression. 

  7. Microsoft Learn, Compress-Archive. On the NoCompression setting and limitations such as hidden files.  2

  8. Microsoft Learn, robocopy. On the thread count, retries, logging, copy options, and exit codes.  2

  9. Microsoft Learn, Performance Tuning for SMB File Servers. On robocopy parallelism and log output for copying small files. 

  10. Microsoft Learn, SMB signing overview. On what SMB signing protects and how to think about it operationally. 

Recent articles sharing the same tags. Deepen your understanding with closely related topics.

These topic pages place the article in a broader service and decision context.

This article connects naturally to the following service pages.

Frequently Asked Questions

Common questions about the topic of this article.

Why does a photo folder copy slower even though the size is the same?
A copy is not just a transfer of contents. For every file, the destination file is created, its information is managed, it is closed, and so on. When there are many small files, the share of this processing and waiting grows. What matters is not the photo format itself but the number of files and the size of each one.
Do small files still copy slowly on an SSD or a fast LAN?
Yes. Even on an SSD the file management work remains, and when copying to a NAS or similar, the time spent waiting for the network and for the other side's processing is added. The speed of a continuous transfer of large files and the speed of handling many small files are two different things.
If JPEGs do not get smaller in a ZIP, is there any point in bundling them?
Even when the size barely shrinks, bundling the files to be transferred into one still has an effect. Creating and extracting the ZIP take time as well, though. For uses that require extraction, compare the total time of creation, transfer, and extraction.
Is it faster to send a ZIP to the NAS and then extract it into the shared folder from the PC?
With that method the PC writes the extracted small files to the NAS, so file creation across the network happens all over again. Distinguish this from extracting inside the NAS with a feature the NAS itself supports, and measure with the extraction included.
Does robocopy's parallel copy get faster the more threads you add?
No. Parallelism lets the per-file waits overlap, but it also increases the load on the storage or the NAS. Compare under the same conditions starting from a small number of threads, and check the log for copy failures and missed files as well.

Author Profile

Profile page for the article author.

Go Komura

Representative of KomuraSoft LLC

Focused on Windows software development, technical consulting, and investigations into failures that are difficult to reproduce.

Back to the Blog