## TL;DR
A machine stuck at 100 percent has usually finished downloading and is wedged in the staging step, often on a corrupt SoftwareDistribution cache entry or a hung TrustedInstaller. Confirm there is no real activity in Task Manager, restart the Windows Update and BITS services, clear the download cache if it persists, and retry.

```text
windows update stuck at 100 percent preparing to install
```

## Use this when
- Settings shows Preparing to install 100 percent for over two hours.
- The update never offers a restart even though it says 100 percent.
- The same state survives a normal reboot.

## Not for this skill when
- Progress is at 90 to 99 percent and still creeping up. Leave it alone; large cumulative updates stage slowly.
- The machine is mid-install after a restart with a percentage on a black screen. Never interrupt that phase.

## Steps
1. Check Task Manager for TiWorker.exe and the Windows Update service activity for 10 minutes. Verify: CPU and disk use stay near zero, confirming a wedge rather than work
2. Restart the Windows Update, BITS, and Cryptographic Services from an elevated prompt with net stop and net start. Verify: all three services report running again
3. Retry the check for updates. Verify: the update moves past staging to a restart prompt, or restarts the download cleanly
4. If it wedges again at the same point, stop the services, rename the SoftwareDistribution and catroot2 folders, restart the services, and re-download. Verify: a fresh download begins and the old cache folders are recreated
5. Install and restart when prompted. Verify: Update history records the KB as installed

## Variant phrasings
### windows update preparing to install stuck
The message-first phrasing without the percentage.
### windows update downloading 100 percent stuck hours
The download-side variant of the same wedge.
### update stuck at 100 percent no restart prompt
The symptom phrasing focused on the missing restart offer.

Compatibility: Compatibility: Windows 10 and 11, and Server with the desktop experience; service names as shown.

## Why it happens
The percentage shown in Settings covers download and staging, and the last step involves the component store committing staged packages. A damaged cache entry, a pending operation from an earlier failed update, or a hung installer worker can leave the UI at 100 percent while nothing is actually running, which is why confirming zero activity matters before resetting anything.

## Edge cases / pitfalls
- Renaming SoftwareDistribution clears update history in the Settings view; export the history first if you need it for compliance.
- On metered or very slow links a large .NET or cumulative payload can legitimately sit near the end for a long time; check activity, not the clock alone.
- If the wedge returns for every update, run DISM restore health; the cache is a symptom and the store is the cause.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_kuoUqiH-IIsz99PeZqiH1A
