SpeedDrain
Published on

How to Fix a Download Stuck at 99% or 100% in Chrome, Edge, and Firefox

Authors
  • avatar
    Name
    SpeedDrain
    Twitter
How to Fix a Download Stuck at 99% or 100% in Chrome, Edge, and Firefox

You have waited hours for a 50GB game archive, an ISO image, or a high-res video project to finish. The progress bar crawls past 98%, touches 99%, reaches 100%—and freezes.

The transfer speed collapses to 0 B/s. The remaining time indicator spins endlessly on "Scanning for viruses..." or "1 second remaining." Your mouse hovers over the "Cancel" button.

Do not click cancel.

When a download halts at 99% or 100%, nearly all your data is already on your physical drive. Your browser hasn't crashed; it is stalled on the post-download handoff. Whether caused by an aggressive antivirus lock, a missing TCP termination packet, or an expired CDN token, you can rescue your file without starting from zero.


Quick Answer: How to Unfreeze a 99% or 100% Download Right Now

If your transfer is frozen right now, follow these five steps before touching anything else:

  1. Keep your browser open: Closing the browser triggers Chrome or Firefox to wipe partial temporary files from your disk.
  2. Toggle Pause and Resume: Press Ctrl + J (Windows/Linux) or Cmd + Shift + J (macOS). If the button reads Pause, click it, wait 5 seconds, and click Resume.
  3. Back up the temporary file: Open your Downloads folder. Locate filename.crdownload (Chrome/Edge) or filename.part (Firefox). If its size matches the full file, copy it to your Desktop immediately.
  4. Check Antivirus workload: Press Ctrl + Shift + Esc to open Task Manager. If Antimalware Service Executable (Windows Defender) is pegging your CPU or disk, it is scanning the payload. Give it 2 to 3 minutes to clear.
  5. Strip the temporary extension: If the download stays locked at 100%, copy the .crdownload or .part file to another folder and delete the trailing extension.

Why Downloads Freeze at 99% vs 100%: The Technical Causes

A freeze at 99% is technically distinct from a stall at 100%. Identifying where the transfer halted pinpoints the exact failure point.

+---------------------------------------------------------------------------------+
| 0%                          99%                                            100% |
| [============================|------------------------------------------------] |
|                              |                                                  |
|                   99% Hang: Network Layer                           100% Hang:  |
|                   - Dropped TCP FIN packet                          Local Disk  |
|                   - Expired CDN token / Range error                 - Antivirus |
|                   - Incomplete chunk terminator                     - Renaming  |
+---------------------------------------------------------------------------------+

The 99% Hang: Transport and CDN Failures

At 99%, your browser is still waiting for the final transmission packets:

  • Missing TCP FIN Handshake: When the remote server transmits the final data packet, it sends a TCP FIN packet to signal completion. If network jitter or firewall inspection drops that packet, the browser idles waiting for a closure signal that never arrives.
  • Server Session Expiration: Cloud file hosts (Pixeldrain, Rapidgator, Mega) assign temporary tokens to download links. If a transfer takes hours on a slow connection, the token can expire before the final block arrives, causing the CDN edge server to sever the connection.
  • Chunked Transfer Stalls: HTTP streams without a predetermined Content-Length rely on an empty zero-chunk (0\r\n\r\n) to signal data completion. Proxies or unstable Wi-Fi often swallow this terminator.

The 100% Hang: Antivirus, File Handles, and Disk Cache

At 100%, all bytes reside locally, but the operating system cannot finalize the file:

  • Antivirus and SmartScreen Inspection: Browsers invoke the Windows IAttachmentExecute API upon download completion. Windows Defender (MsMpEng.exe) or third-party suites lock the file handle to calculate hashes and unpack archive headers. On massive files, this synchronous check freezes the browser UI.
  • Temporary File Renaming Collisions: Chromium saves incoming streams as filename.crdownload, while Firefox writes to filename.part. When the stream finishes, the browser calls MoveFileEx (Windows) or rename() (POSIX) to assign the final name. If Windows Search Indexer, File Explorer thumbnailers, or cloud sync daemons hold an open handle, the rename fails with ERROR_SHARING_VIOLATION.
  • Disk Write Cache Flushing: The OS buffers incoming streams in volatile RAM. At 100%, the browser issues FlushFileBuffers to force dirty RAM pages onto physical storage. On mechanical HDDs or external USB drives, flushing several gigabytes of buffered data can take minutes.

Method 1: The .crdownload / .tmp Rescue and Manual Rename

If your browser is frozen at 100% or looping on "Scanning for viruses," you can bypass the browser's rename sequence and access the file immediately.

Chromium browsers (Chrome, Edge, Brave, Opera) save data as filename.crdownload. Firefox writes to filename.part.

# Inspect the raw byte size of stuck temporary files in your Downloads folder
Get-Item "$HOME\Downloads\*.crdownload", "$HOME\Downloads\*.part" | Select-Object Name, Length, LastWriteTime

Step-by-Step Instructions:

  1. Duplicate the file: Open your Downloads directory. Locate the .crdownload or .part file. Right-click and choose Copy, then paste it onto your Desktop. Never alter the original file while the browser tab remains open.
  2. Enable file extensions:
    • Windows 11: In File Explorer, select View > Show > check File name extensions.
    • Windows 10: In File Explorer, click the View tab and check File name extensions.
  3. Remove the temporary extension: On your Desktop copy, press F2 to rename the file. Delete the trailing .crdownload or .part suffix:
    • game-archive.zip.crdownload $\rightarrow$ game-archive.zip
    • linux-distro.iso.part $\rightarrow$ linux-distro.iso
  4. Confirm the rename: When Windows warns you that changing an extension might affect stability, click Yes.

Verifying File Usability:

  • Archives (ZIP, RAR, 7z): Open the renamed file with 7-Zip and click Test. 7-Zip checks the archive table and allows extraction even if the trailing checksum block was omitted.
  • Media (MP4, MKV): Launch the file in VLC Media Player. VLC parses incomplete container headers and reconstructs playback indices automatically.
  • ISOs and Installers: Compare the SHA-256 hash against the publisher's manifest. If missing bytes corrupt the installer, proceed to Method 6 to fetch only the missing tail.

Method 2: Disabling Antivirus Real-Time Web Scan or SmartScreen Safely

When a download hits 100% and displays "Scanning for viruses..." for over five minutes, your local security suite is usually choking on a massive binary.

[ Download at 100% ] ──► [ IAttachmentExecute API ] ──► [ Windows Defender / SmartScreen ]
                                                                   │
                                                   (Deep Archive Scan / Hash Lock)
                                                                   │
                                                                   ▼
                                                   [ UI Freezes Until Handle Released ]

Safely Releasing the Windows Defender Lock:

  1. Press Ctrl + Shift + Esc to open Task Manager.
  2. Under the Processes tab, inspect Antimalware Service Executable.
  3. If CPU or disk utilization is elevated, Windows Defender is actively scanning the file. Allow it 3 to 5 minutes.
  4. If CPU utilization is at 0% and the browser remains frozen, the scanning hook has deadlocked.

To release the lock safely:

  1. Open Windows Start, type Windows Security, and press Enter.
  2. Navigate to Virus & threat protection > Manage settings.
  3. Temporarily switch Real-time protection to Off.
  4. Check your browser: the transfer will finish instantly and rename the file.
  5. Immediately toggle Real-time protection back to On.

TIP

To prevent future scanning delays on large software archives, open Virus & threat protection settings, scroll down to Exclusions, click Add or remove exclusions, and add your primary downloads directory.

Handling Third-Party Antivirus Suites:

Third-party packages (Bitdefender, Avast, AVG, Kaspersky) run continuous web traffic filters. They buffer network packets locally and re-scan the entire payload before releasing the final byte. Open your antivirus dashboard, navigate to Web Shield or Encrypted Connection Scanning, and temporarily pause the module or whitelist your download URL.


Method 3: The Pause and Resume Trick via chrome://downloads

When a download freezes at 99% due to an idle socket, relying on the miniature browser toolbar download icon is ineffective. You must interface directly with the browser's download manager.

Chrome:   chrome://downloads
Edge:     edge://downloads
Firefox:  about:downloads
Brave:    brave://downloads

Clearing the Socket Deadlock:

  1. Open a new browser tab and navigate to chrome://downloads (or edge://downloads).
  2. Locate the stalled transfer.
  3. If the control shows Pause, click it.
  4. Reset your network adapter: disconnect your Wi-Fi or unplug your Ethernet cable for 3 seconds, then reconnect. This flushes lingering half-open TCP connections.
  5. Return to the downloads page and click Resume.

Your browser sends an HTTP Range request to fetch only the missing bytes:

GET /archive-image.iso HTTP/1.1
Host: cdn.example.com
Range: bytes=52428800000-
If-Range: "4e91c-5d1b70d"

If the remote host supports byte ranges, it returns HTTP/1.1 206 Partial Content and finishes the transfer immediately.

WARNING

If the button displays Retry instead of Resume, do not click it. Chrome's retry routine wipes your local .crdownload file and re-requests byte 0. If you encounter this, consult our detailed guide on how to resume an interrupted download to recover the stream safely.


Method 4: Clearing Locked Browser Disk Cache and Temp Storage

Recurring freezes at 99% across different websites usually signal an issue with your browser's disk cache subsystem or system drive capacity.

The System Temp Drive Bottleneck

Even if you configure Chrome or Edge to save downloads onto a secondary drive (D: or E:), browsers frequently buffer incoming network streams through your Windows user profile:

C:\Users\<Username>\AppData\Local\Google\Chrome\User Data\Default\Cache
C:\Users\<Username>\AppData\Local\Temp

If your C: drive runs out of disk space during the transfer, the browser stalls at 99% when writing out the final sectors. Always verify that your primary OS drive has at least twice the file size in free headroom.

Resetting Network Socket Pools

Clear stale network socket allocations without purging cookies or history:

  1. In Chrome's address bar, visit:
    chrome://net-internals/#sockets
    
  2. Click Flush socket pools.
  3. Try resuming your download. If your browser continues dropping transfers with network errors, follow our troubleshooting steps for the Chrome failed network error fix and tune your performance with the best browser settings for faster downloads.

Method 5: Overcoming Cloud Storage and CDN Session Dropouts

A substantial share of 99% transfer stalls happen on free cloud storage platforms such as Pixeldrain, Mega, and Rapidgator.

Why File Host Transfers Die at 99%:

Free tiers operate under aggressive connection limits:

  • Ephemeral Access Tokens: Download links include expiring authentication hashes (e.g., ?token=ab39x&expires=1730530000). If your transfer speed fluctuates and the token expires before the last block transfers, the CDN severs the connection.
  • Dynamic Bandwidth Quotas: When your IP reaches a daily quota ceiling (such as Pixeldrain's daily cap), the server throttles throughput down to zero. The browser waits for the remaining bytes until its internal connection timeout triggers.
  • On-the-Fly Archive Creation: When file hosts package multiple files into a single zip dynamically, they cannot advertise a reliable Content-Length. Resuming is disabled, meaning any late drop kills the transfer.
[ Browser Stream ] ──► (Requests Last 10MB) ──► [ CDN Edge Server ]
                                                        │
                                          [ Token Expired or Quota Hit? ]
                                                        │
                                    ┌───────────────────┴───────────────────┐
                                    ▼                                       ▼
                              [ Drop Socket ]                        [ Send 206 Partial ]
                                    │                                       │
                             (Stuck at 99%)                          (Download Complete)

How to Bypass Cloud Host Freezes:

If a cloud transfer stalls at 99%, refresh your access token rather than redownloading from scratch:

  1. Return to the file download page and click download to acquire a fresh temporary link.
  2. If you regularly use Pixeldrain and struggle with bandwidth walls or connection drops, route the file through SpeedDrain. SpeedDrain generates high-speed, direct CDN links that bypass bandwidth caps and maintain stable connections through the entire file. See our step-by-step SpeedDrain tutorial to get started.

Method 6: Moving to a Dedicated Multi-Threaded Download Manager

Web browsers are built to render web applications, not manage multi-gigabyte data pipelines. They open single TCP streams, have basic retry algorithms, and easily choke when a server drops a packet.

Dedicated download managers use multi-segmented chunking, opening multiple concurrent connections to different parts of the file. If one thread stalls at the end, the manager restarts that individual segment without aborting the rest.

How to Import a Broken .crdownload into a Download Manager:

You can inject an unfinished .crdownload file into Free Download Manager (FDM) or JDownloader 2 (read our JDownloader 2 speed optimization guide for peak performance) to pull down just the missing bytes:

  1. Back up your stuck .crdownload file to your Desktop.
  2. Open your download manager (check our benchmarked guide on the best download manager in 2026 for recommendations).
  3. Paste the original download link into the manager and start the transfer.
  4. Allow it to run for 5 seconds to generate its internal allocation tables, then click Pause.
  5. Close the download manager.
  6. Open the download manager's active folder, remove the newly created file, and drop your backed-up 99% .crdownload file in its place (rename it to match the manager's target file name).
  7. Relaunch the download manager and choose Force Check / Resume.
  8. The software will verify the existing 99% of bytes on disk and download only the missing final megabytes.

For massive 50GB–100GB files, command-line utilities like Aria2 handle byte ranges with maximum stability. Explore our 100GB download guide for advanced transfer configurations.


Browser Downloads vs. Dedicated Download Managers

The comparison table below highlights why browsers freeze on large files and how dedicated download utilities resolve the issue:

Feature / CapabilityStandard Web Browsers (Chrome / Edge / Firefox)Dedicated Download Managers (IDM, FDM, Aria2)
Connection ThreadingSingle stream per file downloadMulti-stream (8 to 32 parallel TCP segments)
99% Stall RecoveryHangs on dropped TCP FIN or socket idleAutomatically terminates stuck threads and reconnects
Antivirus ProcessingSynchronous scan via IAttachmentExecuteAsynchronous scan without locking transfer UI
Expired Link HandlingAborts with generic error; forces 0% restartDedicated "Refresh Address" swaps tokens seamlessly
Disk AllocationAppends incrementally; prone to fragmentationPre-allocates disk blocks (fallocate) instantly
Integrity ChecksNone (assumes transport layer integrity)Real-time CRC32 / MD5 / SHA-256 verification
File Rename HandlingFails silently on file handle lockRetries file moves gracefully until handle releases

Real-World Troubleshooting: Windows 11 vs macOS

File quarantining and handle verification differ significantly between operating systems.

Windows 11: Zone.Identifier and SmartScreen

Windows tags files downloaded from the web using NTFS Alternate Data Streams (ADS). When a transfer hits 100%, Windows applies a Zone.Identifier stream with Zone 3 (Internet). If SmartScreen fails to reach Microsoft's cloud reputation servers to authenticate an unsigned binary, the file remains locked in a temporary state. (If your entire network stack feels sluggish on Microsoft's newest OS, explore our deep dive on how to fix slow download speeds on Windows 11).

# Inspect the active alternate data streams on your downloaded file
Get-Item -Path "$HOME\Downloads\archive.zip" -Stream *

# Strip the security block instantly from PowerShell
Unblock-File -Path "$HOME\Downloads\archive.zip"

You can also right-click the rescued file in File Explorer, select Properties, check the Unblock box at the bottom of the General tab, and click Apply.

macOS: Gatekeeper and Safari .download Bundles

On macOS, Safari stores transfers inside a directory bundle labeled filename.download, containing the raw data and an Info.plist tracking file. Chromium browsers on macOS output .crdownload files, but both interface with Apple's Gatekeeper via extended attributes.

  1. If a download stalls at 100% on macOS, launch Activity Monitor.
  2. Look for syspolicyd or XprotectService. If these processes consume high CPU, macOS is running security checks on the payload.
  3. If the process locks up, open Terminal and inspect the quarantine flags:
# Check quarantine attributes on the file
xattr -l ~/Downloads/installer.dmg

# Remove the quarantine attribute to release the system lock
xattr -d com.apple.quarantine ~/Downloads/installer.dmg

5 Actionable Tips to Prevent 99% Freezes on Large Files

Apply these optimizations to ensure large transfers finish reliably without hanging at the final percentage:

  1. Download to fast internal storage first: Avoid downloading directly to external mechanical drives or USB flash drives formatted in FAT32 or exFAT. These drives struggle with dirty page cache flushes at 100%. Always download to an internal NVMe SSD, then move the finished file.
  2. Turn on Parallel Downloading in Chrome: In your browser address bar, visit chrome://flags/#enable-parallel-downloading, switch the setting to Enabled, and restart Chrome. This enables multi-part chunking.
  3. Exclude download folders from Windows Indexing: Windows Search Indexer scans new files in real time. For 20GB+ archives, this creates file handle collisions. Navigate to Windows Settings > Privacy & security > Searching Windows and add your downloads folder to Excluded Folders.
  4. Disable system sleep during downloads: Prevent network adapter deactivation by setting your system power plan to keep the computer awake while plugged in (Settings > System > Power & battery > "Put my device to sleep after" $\rightarrow$ Never).
  5. Use direct CDN bridges for cloud storage: Avoid standard browser downloads for link-limited hosts. Use dedicated acceleration tools like SpeedDrain to generate persistent, uncapped download streams.

Frequently Asked Questions

Why does Chrome say "Scanning for viruses..." forever at 100%?

Chrome hands completed files to the operating system's security service via the Windows Antivirus API (IAttachmentExecute). For large compressed archives or system images, the antivirus extracts header manifests, unpacks sample files, and validates digital signatures. For files over 20GB, this scanning phase can take several minutes. If it locks permanently, temporarily toggle Real-time protection off, copy the file to your Desktop, and re-enable protection.

Can I use a .crdownload file if the download froze at 99%?

Yes. A .crdownload file contains the actual binary data downloaded up to the stall point. For media files (MP4, MKV), you can duplicate the file, delete the .crdownload extension, and play it directly in VLC. Compressed archives (ZIP, 7z) can be opened with 7-Zip to extract finished contents. Installers or ISO images, however, usually require the missing tail bytes for checksum validation.

Will restarting my computer delete the stuck download?

Yes, in most cases. If Chrome or Edge is closed while a download is stuck at 99%, the browser marks the task as failed on subsequent startup and purges the .crdownload file from your disk. Always copy the partial file to another location before closing your browser or rebooting.

Why do downloads freeze at 99% on Pixeldrain or Mega?

Cloud hosts implement expiring session tokens and daily bandwidth quotas. If your connection drops packets or the download duration exceeds the token window, the host cuts off the socket before the final bytes transfer. Routing your links through SpeedDrain prevents this by providing high-speed, direct CDN connections that bypass bandwidth limits.

Does manually renaming a file work for executable installers (.exe)?

It depends on where the installer expects its digital signature and checksum tables. Many modern software packages store archive manifests at the end of the executable. If the final 1% is missing, launching the installer will trigger an "Integrity check failed" error. In that case, importing the file into a download manager to fetch the missing bytes is necessary.

What is the difference between a .crdownload file and a .part file?

.crdownload is the temporary working file extension utilized by Chromium-based browsers (Chrome, Edge, Brave, Opera). .part is the temporary format used by Mozilla Firefox and command-line utilities like wget. Both hold the partial downloaded payload and can be recovered using identical renaming and import procedures.


Never Lose a Massive Download Again

Watching a download freeze at 99% after hours of waiting is frustrating, but clicking "Cancel" should never be your first reaction. Remember the standard recovery protocol:

  • Back up your temporary file immediately so your browser cannot delete it.
  • Check Task Manager to see if your antivirus is processing the finished payload.
  • Strip the .crdownload or .part extension on a duplicate copy to test the file in VLC or 7-Zip.
  • Switch to a dedicated download manager for transfers over 10GB.

If you regularly pull large archives from Pixeldrain and want to bypass bandwidth restrictions, token timeouts, and frozen transfers entirely, use SpeedDrain. Paste your file link, generate an uncapped direct CDN stream, and get your downloads across the finish line every time.