Windows Update failed: error codes and fixes

Before you try every fix you can find, look at the code. It is Windows telling you where the update stopped and why, and once you know the group, you only have a couple of fixes to try instead of all of them.

Windows Update error codes you can filter by code

The four groups in the table (27 codes)

Install and corrupted files
0x800f0922, 0x800f081f, 0x80073712, 0x800f0831 and more
Permissions and services
0x80070005, 0x80070422, 0x80070020 and more
Download and connection
0x800705b4, 0x80240034, 0x80244022 and more
Upgrading to Windows 11
0xC1900101, 0xC1900200, 0x80070070 and more

Type a code such as 0x800f0922, or a cause such as "disk space" or "VPN", into the search box above the table and only the matching rows stay. The group tabs narrow it further. What you type is handled in your browser and is not sent anywhere.

The "Meaning and cause" and "How to fix it" columns summarize what Microsoft Support and Microsoft Learn say about each code. Codes that get plenty of searches but have no explanation on those pages, such as 0x80070643 and 0x80070103, are not listed. Blue screen stop codes work differently and are also left out.

Update history shows which updates installed and when

Write the code down as soon as you see it. It is 0x followed by eight hex digits, like 0x80070002, so a screenshot saves you from copying it wrong. If you captured the whole screen, crop it down to the code so it is easy to compare with the table later.

To see which update didn't go through, open Start > Settings > Windows Update > Update history. The list shows every update that installed and the date it did. With the code and the name of the missing update, you have what you need to look it up.

An update history is available so you can see which updates were installed, and when. — from the answer on how to see installed updates
View official source →

0x8 codes are Win32 errors and 0xC codes are NTSTATUS values

According to Microsoft Learn, the first digit after 0x tells you the kind of code. An 8 means a Win32 error code, and a C means an NTSTATUS value. So 0x80070002 is a Win32 error, while 0xC1900200 is an NTSTATUS value.

In both kinds, the last four digits carry the actual error. For 0x80070070 that is 0070, and the digits in between identify where the error came from.

Write down the last four digits of the error code (ex: 0x80070070 = 0070). — from the steps for reading a result code
View official source →

Install errors 0x800f0922 and 0x800f081f

Two reasons an install stops

Not enough room
0x800f0922: low disk space, a VPN, or .NET Framework
Damaged files
0x800f081f, 0x80073712, 0x800f0831: a corrupted component store

If the download finishes but the install fails, there are two usual suspects. Either Windows has no room to unpack the update, or the system files the update builds on are damaged. The code tells you which, so you can skip the fix that won't help.

0x800f0922 means low disk space or an active VPN

0x800f0922 shows up when the drive is short on free space, or when .NET Framework or another component has a problem. Check drive C first. Microsoft asks for at least 16 GB free on 32-bit Windows and 20 GB on 64-bit Windows, and on a PC with a small drive you can plug in a USB drive for the update to use.

If you were connected to a VPN, disconnect it and run the update again. If there is enough space and no VPN, move on to the DISM and SFC repair below.

Disable VPN: If you're using a VPN, disable it and try again. — from the fixes for 0x800f0922
View official source →

0x800f081f and 0x80073712 mean corrupted system files

0x800f081f and 0x80073712 mean system files the update needs are damaged or missing. Windows keeps the pieces it updates in an area called the component store, and when that store is damaged, new updates can't be applied on top of it. 0x800f0831, 0x80070570 and 0x80073701 belong to the same group.

0x80073701 usually means a component was left only partly installed. Microsoft's answer for this whole group is the DISM and SFC repair in the next steps.

Corrupted or missing system files, or incomplete download — from the error code table, row for 0x800F081F and 0x80073712
View official source →

Run DISM RestoreHealth before sfc /scannow

DISM repairs the component store, and SFC (System File Checker) checks Windows system files and replaces the broken ones. Microsoft's steps run DISM first and SFC second, and both need an administrator Command Prompt.

  1. Type "command prompt" in the taskbar search box and select Run as administrator
  2. Type DISM.exe /Online /Cleanup-image /Restorehealth and press Enter. If no confirmation message appears, type it again
  3. Type sfc /scannow and press Enter, then wait until verification reaches 100%
  4. Close Command Prompt and run Windows Update again

Type the commands exactly, spaces included. Microsoft's steps call out the spaces too.

Wait until the sfc scan verification reaches 100% completion, and then close Command Prompt. — from the steps to repair system files
View official source →

Access and service errors 0x80070005 and 0x80070422

Where to look for each code

0x80070005
The account type you signed in with, and your antivirus
0x80070422
The Windows Update service (services.msc)
0x80070020
Another program holding a file the update needs

If the repair didn't help and the same update still fails, the problem may be with what runs the update rather than the files. There are three common cases: the account lacks permission, the Windows Update service is off, or another program is in the way. You can check all three without opening Command Prompt.

0x80070005 means access denied by permissions or antivirus

0x80070005 means access was denied, usually because the account doesn't have permission to install the update. Some updates need an administrator account.

On a shared family or work PC where you sign in as a standard user, ask the person with the admin account to run the update. If you send them a screenshot of the error, blur your account name or email address first.

If permissions look fine, antivirus or firewall software may be blocking the update. Security apps usually have an option to pause protection, often in their Settings, Tools or Protection tab, where you pick a duration such as 10 minutes or 1 hour. Turn protection back on afterward, and update the security software itself.

Some updates require administrator access. — from the fixes for 0x80070005
View official source →

0x80070422 means the Windows Update service is disabled

0x80070422 appears when the Windows Update service has been disabled or has stopped. Set it back to start on its own:

  1. Press Win + R, type "services.msc" and press Enter
  2. Find Windows Update, right-click it and select Properties
  3. Set Startup type to Automatic, and select Start if the service is stopped
  4. Select Apply, then OK, restart the PC and check for updates again

0x80070020 is a different case. Another program has a file open that the update is trying to replace, for example antivirus or backup software in the middle of a scan.

Restart the PC and try again. If it keeps happening, do a clean boot, which starts Windows with only a minimal set of drivers and programs, and run the update from there.

Ensure that the Windows Update service is enabled: — from the fixes for 0x80070422
View official source →

Download errors 0x800705b4 and 0x80240034

What to check when the download stalls

1. Connection
Is the PC online, and is security software blocking it?
2. Cache
Delete the half-downloaded files so Windows fetches them again

These are the codes you get when the progress bar stalls or the update says it couldn't download. Either the connection dropped while Windows was fetching the files, or what it fetched arrived damaged. Check the connection first; if that is fine, make Windows download the files again.

0x800705b4 and 0x80244022 mean a dropped or busy connection

0x800705b4 means the update took too long or was interrupted. Open Start > Settings > Network & Internet and check that you're connected. If not, reconnect to Wi-Fi or Ethernet.

If you are online and it still stops, security software or a firewall may be blocking the connection. Pause protection, restart the PC and try the update again. 0x80244022 means the update server is temporarily overloaded, so trying again later can be enough.

Disable Antivirus/Firewall: Temporarily disable any antivirus or firewall that might be blocking the update. — from the fixes for 0x800705b4
View official source →

Clear SoftwareDistribution to reset the update cache

0x8007000d means the downloaded update data was damaged, and 0x80240034 means the download failed. In both cases, the partly downloaded files sit in a folder called SoftwareDistribution. Empty it, and Windows starts the download from scratch.

  1. Press Win + R, type "services.msc" and press Enter
  2. Right-click Windows Update and select Stop
  3. In File Explorer, open C:\Windows\SoftwareDistribution and delete everything inside it
  4. Go back to Services, right-click Windows Update and select Start

Delete what's inside the folder, not the folder itself. Before you clear it, it is worth running the Windows Update troubleshooter once from Start > Settings > System > Troubleshoot > Other troubleshooters.

Delete all files and folders inside this directory. — from the steps to clear the Windows Update cache
View official source →

Windows 11 upgrade failed with 0xC1900101

Common upgrade codes

0xC1900101
The upgrade failed and rolled back, usually because of a driver
0xC1900200
The PC doesn't meet the system requirements
0x80070070
Not enough free space for the upgrade

Upgrading to Windows 11 is handled by Windows Setup, so the codes mostly start with 0xC19 and the fixes are different from the monthly updates. A common one is 0xC1900101.

0xC1900101 usually points to an incompatible driver

0xC1900101 means the upgrade failed partway and Windows rolled back to where it started. Microsoft says the cause is usually a driver that isn't compatible with the new version. Incompatible drivers can also cause blue screens and unexpected restarts along the way.

Update your drivers and BIOS, then unplug everything except the mouse, keyboard and display before trying again. Microsoft's steps also include uninstalling antivirus software for the upgrade. If it still fails, do a clean boot so Setup runs with only a minimal set of drivers and startup programs.

A result code of 0xC1900101 is generic and indicates that a rollback occurred. — from the section on result codes
View official source →

The extend code shows the SAFE_OS or MIGRATE_DATA failure

Upgrade errors often come with a second code, like 0xC1900101 - 0x20004. Microsoft calls it the extend code.

Its first digit is the phase that failed, and its last two digits are the operation Windows was running at the time. Messages such as "failed in the SAFE_OS phase" or "error during MIGRATE_DATA operation" are that same information in words.

Extend code Phase that failed What Microsoft says to do
0x20004 SAFE_OS (setting up the recovery environment) Uninstall antivirus, remove unused SATA devices and drivers, update drivers and BIOS
0x2000c SAFE_OS (applying the image in WinPE) Disconnect every peripheral except the mouse, keyboard and display
0x3000D FIRST_BOOT (migrating data) Disconnect peripherals, then update or uninstall the display driver
0x4000D OOBE_BOOT Check the rollback logs for the stop code

The first digit maps to a phase: 2 is SAFE_OS, 3 is FIRST_BOOT and 4 is OOBE_BOOT. If the code is 0x80070070, the drive is out of space whatever the extend code says, so free up 16 GB on 32-bit Windows or 20 GB on 64-bit Windows and try again.

Use the first digit to identify the phase (ex: 0x4000D = 4). — from the steps for matching an extend code to a phase
View official source →

Windows Update failed: codes and fixes in short

Key points

Start here
Write down the code and look it up in the table
Fix by group
Disk space and VPN / DISM and SFC / service and permissions / cache reset
Upgrades
For 0xC1900101, suspect a driver and read the extend code

When Windows Update fails, the code narrows down what to try. 0x800f0922 points to disk space and VPNs, 0x800f081f to damaged files, and 0x80070005 or 0x80070422 to permissions and the update service. If you see a code you don't recognize, type it into the table and start with the fix in that row.

For Excel's #VALUE! and #N/A, see "Excel errors: what #VALUE!, #N/A and #REF! mean". For the keys you'll use when typing commands and paths, see "Mac keyboard shortcuts vs Windows: 58 compared", and for typing symbols like the backslash (\), see "Keyboard symbols: names and how to type all 33". More articles on Microsoft products are on the category page.

FAQ

Windows Update keeps failing on the same update. What else can I try?
Work through the troubleshooter, the cache reset and the DISM and SFC repair first. If the same update still fails, Microsoft suggests temporarily uninstalling third-party antivirus or security software, installing the update, and then reinstalling the software. Before you uninstall anything, make sure you have the installer and any product keys you need to put it back.
My error code is not in the table. Where do I look it up?
Open Microsoft Learn's "Windows Update error code list by component" and search the page for your code. It groups codes by the part of Windows Update they come from, such as automatic updates, the user interface and downloads. The message name next to the code (the one starting with WU_E_) tells you which part stopped.