Docs
Windows Update Event IDs in Event Viewer: Common Error Messages and What They Mean
Decode the common Windows Update Client event IDs in Event Viewer so you can separate scan failures, download failures, install failures, restart requirements, and service health changes quickly.
Troubleshooting for Windows admins and MSPs decoding Windows Update Event Viewer errors
Free Audit
Run The Free Audit
If you need to separate stale scans, reboot debt, failure signals, and real patch risk across endpoints, run the free RMM Patch Health Audit.
Short Answer
Direct answer: the main Event Viewer log for Windows Update triage is Applications and Services Logs > Microsoft > Windows > WindowsUpdateClient > Operational.
The highest-signal IDs are usually 25 for scan failures, 31 for download failures, 20 for install failures, and 21 for restart-required state.
If you are troubleshooting Windows patching in Event Viewer, the log that matters most is Applications and Services Logs > Microsoft > Windows > WindowsUpdateClient > Operational. That log shows the sequence Windows Update followed: it found updates, started downloading, started installing, required a restart, or failed with a specific error code.
The fastest workflow is to read the sequence, not just one event in isolation. In practice, admins usually pivot around Event ID 25 for scan failures, 31 for download failures, 20 for install failures, and 21 for restart-required states.
Official resource: Microsoft Learn: Windows Update log files
Caution: one event ID rarely tells the whole story. Read the sequence around the failure so you do not mistake a restart blocker or scan issue for an install issue.
Windows Update Event Viewer IDs help you tell whether the failure happened during scan, download, install, or restart completion. That makes Event Viewer one of the fastest ways to classify a Windows update problem before you start broad remediation.
This guide focuses on the WindowsUpdateClient Operational log and the event IDs that save the most triage time, then points you to the right next page when Event Viewer alone is not enough.
Use Microsoft's Windows Update logging documentation when Event Viewer is not enough and you need the deeper Windows Update log path. Microsoft Learn: Windows Update log files
What You'll Get
- Map common Windows Update Event Viewer IDs to scan, download, install, and restart phases quickly
- Pull the highest-signal error events with short PowerShell filters instead of manual scrolling
- Know when to stay in Event Viewer and when to pivot to WindowsUpdate.log or servicing checks
Where to Look in Event Viewer
Open Event Viewer, then browse to the Windows Update client operational channel:
Applications and Services Logs
Microsoft
Windows
WindowsUpdateClient
Operational
When you are triaging one machine, sort by time and read the update session as a timeline. A normal flow often looks like 26 found updates, 44 started download, 41 download completed, 43 install started, then 19 install succeeded or 20 install failed.
PS> Get-WinEvent -LogName 'Microsoft-Windows-WindowsUpdateClient/Operational' -MaxEvents 50 |
>> Select-Object TimeCreated, Id, LevelDisplayName, Message
If you need the broader log-location view, use where are Windows Update logs. That page covers Event Viewer, Get-WindowsUpdateLog, and update-related files together.
The Event IDs That Matter Most
| Event ID | What it usually means | What to do next |
|---|---|---|
| 16 | Windows could not connect to the Automatic Updates service | Check connectivity, proxy, service health, and update source reachability. |
| 19 | Update installation succeeded | Use it as the success anchor when comparing failed devices with healthy ones. |
| 20 | Update installation failed and the message includes an error code | Capture the HRESULT, then classify whether the failure is space, reboot, corruption, or service-related. |
| 21 | Restart is required before Windows can continue scanning or downloading | Reboot first; do not keep forcing scan or install retries. |
| 25 | Windows Update failed to check for updates | Treat it as a scan-layer failure and verify WUA, WSUS or Microsoft Update reachability, proxy, and policy. |
| 26 | Windows successfully found updates | Use it to prove scan is working before you investigate download or install stages. |
| 29 | Windows Update lost connectivity | Look for network interruptions, VPN changes, proxy issues, or update-source outages. |
| 30 | Windows Update re-established connectivity | Correlate it with retry success to confirm the issue was transient network access. |
| 31 | Windows Update failed to download an update | Check content source reachability, BITS, disk pressure, and any proxy or TLS inspection issues. |
| 32 | Client could not connect to the update server | Verify the configured server, DNS resolution, firewall path, and WSUS or Microsoft Update availability. |
| 33 | Proxy authentication blocked Windows Update | Correct proxy credentials or bypass rules before deeper servicing repair. |
| 34 | Windows Update Client Core self-update failed | Investigate update agent health before trusting any later patch results from that machine. |
| 35 | Windows Update Client Auxiliary self-update failed | Treat it as client-health debt that can distort later patch behavior. |
| 42 | Windows Update health changed | Use nearby events to determine whether the health change reflects recovery or a newly degraded state. |
| 43 | Installation started | Use it with Event ID 19 or 20 to confirm whether the failure happened during the actual install phase. |
| 44 | Download started | Use it with Event ID 31 to isolate content download failures from scan failures. |
The event names above are paraphrased from the Windows provider metadata. On the local system used for authoring, the Microsoft-Windows-WindowsUpdateClient provider exposes these IDs directly through Get-WinEvent -ListProvider.
How to Read the Message Text
The two message patterns that matter most in practice are install failure and scan failure. Event ID 20 usually says Windows failed to install a specific update and includes an error code, while Event ID 25 usually says Windows failed to check for updates and includes a scan-layer error code.
That distinction matters operationally:
- If you see
25, solve scan, policy, or connectivity first. - If you see
31, solve download path, proxy, BITS, or content-access issues first. - If you see
20after43, solve install blockers such as pending reboot, low disk space, servicing corruption, or prerequisite issues.
PS> Get-WinEvent -FilterHashtable @{
>> LogName = 'Microsoft-Windows-WindowsUpdateClient/Operational'
>> Id = 20, 25, 31
>> } -MaxEvents 30 |
>> Select-Object TimeCreated, Id, Message
When Event ID 21 is part of the pattern, pivot to update requires restart. When Event ID 20 or 31 repeats, continue to Windows Update fails to install common fixes.
PowerShell Filters for Fast Triage
If you need to collect evidence quickly, filter the operational log by the high-signal IDs rather than dumping everything.
PS> Get-WinEvent -FilterHashtable @{
>> LogName = 'Microsoft-Windows-WindowsUpdateClient/Operational'
>> StartTime = (Get-Date).AddDays(-7)
>> Id = 19, 20, 21, 25, 31, 43, 44
>> } |
>> Sort-Object TimeCreated |
>> Format-Table TimeCreated, Id, LevelDisplayName, Message -Auto
Inference from Windows patch operations: this filtered view is usually enough to tell whether the machine never scanned correctly, never downloaded correctly, or reached the install phase and failed there.
When Event Viewer Is Not Enough
Event Viewer is the fast triage surface, but it is not always the deepest source. If you need more detail for an HRESULT or servicing failure, pivot next to Get-WindowsUpdateLog, CBS logs, DISM results, and the underlying service state for wuauserv, BITS, and cryptsvc.
Microsoft's Windows Update log documentation is the right reference when you need to understand what Event Viewer can tell you quickly versus what the full log path can confirm.
PS> Get-WindowsUpdateLog
PS> Get-Service wuauserv, bits, cryptsvc, trustedinstaller | Select-Object Name, Status, StartType
PS> DISM /Online /Cleanup-Image /ScanHealth
Use this sequence when Event ID 20 or 31 tells you the phase that failed, but not enough about the root cause to remediate safely.
If the failing event references a specific update, match it with what is a KB number in Windows Update. If the real issue is that Windows will not even scan, use how to check for Windows updates for the first branch.
Common Mistakes
- Looking at one event in isolation instead of reading the update timeline around it.
- Treating Event ID
20and Event ID25like the same problem branch. - Ignoring restart-required state when Event ID
21appears. - Stopping at Event Viewer when you still need WindowsUpdate.log or service health checks.
- Skipping the update identity and KB context when a specific patch keeps failing.