Windows Modules Installer Worker — TiWorker.exe — at 40%, 60%, even 80% CPU is one of the most-googled Windows complaints, and the answer is usually boring: it’s installing updates. TiWorker is the engine that applies Windows updates and manages optional features, and update installation is genuinely CPU-intensive work. The real question isn’t “what is it” but “is it making progress or stuck?” — because a TiWorker that’s working will finish and vanish, while a stuck one will torment you for days. Here’s how to tell the difference and fix the stuck kind. For the related Service Host update container, see Service Host high CPU
; for the 24H2-specific TiWorker variant, see TiWorker high CPU in 24H2
.
Why this happens
- Legitimate update installation: Monthly cumulative or feature updates being applied — heavy but temporary.
- Post-update component cleanup: WinSxS cleanup and update finalization after a reboot.
- A stuck or corrupted update: A failed download or broken package retried endlessly.
- Corrupt SoftwareDistribution cache: Damaged update metadata causing re-scan loops.
- Optional features installing: Language packs, .NET features, or RSAT tools installing in the background.
- Interrupted updates: Shutdowns mid-install leaving the worker in a resume loop.
- Failing disk slowing installs: Update I/O on a dying drive stretches a 30-minute job into hours.
How to fix it
Work through these in order — diagnose first, then act.
Fix 1: Determine whether it’s working or stuck
This distinction decides everything else.
- Open Settings > Windows Update and read the status: “Downloading,” “Installing,” or a percentage = working; no status but high TiWorker = possibly stuck.
- Open Task Manager > Details, find TiWorker.exe, and watch CPU over 30 minutes: gradually declining = progressing; flat at high CPU for hours = stuck.
- Check disk activity alongside: working TiWorker shows heavy disk writes (it’s replacing system files); stuck TiWorker often shows high CPU with little disk activity (spinning, not progressing).
- Look at C:\Windows\Logs\CBS\CBS.log (the component servicing log) — recent timestamps with progress entries = working; repeating identical errors = stuck.
- If it’s working, the correct fix is patience: let it finish, preferably plugged in and undisturbed. Only proceed if it’s genuinely stuck.
Fix 2: Run the Windows Update troubleshooter
The automated first pass for stuck updates.
- Go to Settings > System > Troubleshoot > Other troubleshooters > Windows Update > Run.
- Let it complete — it resets update service registrations, clears pending states, and restarts the update components.
- Reboot when prompted, then check Settings > Windows Update > Check for updates.
- Monitor TiWorker for an hour: the troubleshooter resolves simple stuck states, and you’ll see it either complete the update or idle at zero.
- If the troubleshooter reports problems it couldn’t fix, note the details — they usually point at the cache corruption Fix 3 addresses.
Fix 3: Reset the SoftwareDistribution cache
Clears the corrupted metadata behind most stuck TiWorkers.
- Open an elevated Command Prompt and stop the services:
net stop wuauserv,net stop cryptSvc,net stop bits,net stop msiserver. - Rename the cache folders:
ren C:\Windows\SoftwareDistribution SoftwareDistribution.oldandren C:\Windows\System32\catroot2 catroot2.old. - Restart the services:
net start wuauserv,net start cryptSvc,net start bits,net start msiserver. - Go to Settings > Windows Update > Check for updates — Windows rebuilds fresh metadata and re-downloads what’s needed.
- This is safe: the
.oldfolders are just caches; Windows recreates them. Delete the.oldfolders after a week of stable updates.
Fix 4: Repair the component store with DISM
When the corruption is deeper than the download cache.
- Open an elevated Command Prompt and run:
DISM /Online /Cleanup-Image /RestoreHealth— this repairs the component store TiWorker installs from. - This takes 15–30 minutes and legitimately uses CPU itself — let it finish uninterrupted.
- Follow with
sfc /scannowto repair protected system files from the now-healthy store. - Reboot, then check Windows Update again — with a healthy store, previously failing updates usually install cleanly.
- If DISM fails with source errors, provide an install source: mount the Windows 11 ISO
and run DISM with
/Source:pointing at itsinstall.wim.
Fix 5: Manage active hours and update scheduling
Keep TiWorker from ambushing your workday.
- Go to Settings > Windows Update > Advanced options > Active hours — set them to cover your actual workday so restarts and heavy install phases avoid those hours.
- On Windows 11 Pro, use Group Policy (
gpedit.msc> Computer Configuration > Administrative Templates > Windows Components > Windows Update > Manage end user experience) to configure deadline and notification behavior. - Pause updates strategically: Settings > Windows Update > Pause updates for 1–5 weeks when you have a critical deadline — but don’t leave them paused indefinitely.
- For metered connections, enable “Download updates over metered connections” = off so big updates wait for unmetered Wi-Fi.
- Schedule a weekly maintenance window: let the laptop sit plugged in and idle for an hour so TiWorker completes its work without competing with you. Microsoft’s Windows support hub documents active-hours configuration.
Fix 6: Check the disk and consider a manual update
When the hardware or a specific KB is the blocker.
- Run
chkdsk C: /scanfrom an elevated prompt — update installs on a failing drive stall and stretch; S.M.A.R.T. warnings mean the drive, not the updater, is the problem. - Ensure 20GB+ free on C: — feature updates need substantial scratch space; cramped drives cause install loops.
- If one specific KB keeps failing, hide it or install it manually: download it from the Update Catalog and run the standalone installer, which often succeeds where Windows Update fails.
- Check Update history (Settings > Windows Update > Update history) for the failing KB’s error code (e.g., 0x800f0922, 0x80073701) — searching the code focuses the fix.
- As a final measure, an in-place upgrade with the Windows 11 ISO refreshes the entire servicing stack — the definitive cure for a TiWorker that survives everything else.
Closing
TiWorker high CPU is usually just Windows doing maintenance — the fix is letting it finish. When it doesn’t finish, it’s a stuck update: troubleshooter first, SoftwareDistribution reset second, DISM third. Work that sequence and the Modules Installer goes back to being a background process you never notice.
