Quick fix: CHKDSK can pause for 30-60 minutes on bad sectors or fragmented metadata. If stuck at the same percent for 4+ hours: hold power button to force restart. Boot → open Command Prompt (Admin) → run chkdsk C: /f /r /x to retry. For drives with hardware issues: clone with ddrescue first, then run chkdsk on the clone. Repeated stuck means failing hardware.
CHKDSK can take hours, especially with /r flag (which checks every sector). It often appears stuck for long periods, especially: 10-12% (file system scan), 50-55% (security descriptors), 80% (file scanning). True stuck means hardware likely failing.
Affects: Windows 11 (and Windows 10).
Fix time: ~30 minutes (excluding chkdsk runtime).
What causes this
CHKDSK is checking different things at different stages:
- Stage 1 (10-12%): File system check.
- Stage 2 (12-50%): Indexing check.
- Stage 3 (50-55%): Security descriptors.
- Stage 4 (55-80%): File data check (long with /r flag).
- Stage 5 (80-100%): Free space.
If percentage hasn’t moved in 4+ hours, drive may be retrying bad sectors endlessly. That’s usually a sign of failing hardware.
Method 1: Wait it out (recommended initially)
The first step.
- Check disk activity LED: still blinking = chkdsk still working.
- For HDDs: 500GB-1TB drive with /r can take 6-12+ hours.
- For SSDs: typically under 30 minutes (no /r needed; SSDs handle differently).
- If percentage is moving (even very slowly): wait. /r reads every sector.
- Common “long pauses”:
- 10-12% (checking files): 30 minutes to several hours.
- 50-55%: 30-60 minutes.
- ~80%: long for big drives with /r.
- For real-time progress: chkdsk shows current file or sector being checked. Look at the line below percentage.
- If after 4 hours, no progress: hardware likely.
This is the patience step.
Method 2: Force restart and retry
For genuine stuck.
- Hold power button to force shutdown.
- Power on. Windows tries to boot or restarts chkdsk.
- If chkdsk restarts: it picks up where it left off. May still stuck.
- To prevent chkdsk on next boot: at boot, press a key when prompted “Press any key to skip disk check.” You have 10 seconds.
- Once in Windows: run chkdsk manually with different options:
chkdsk C: /f /xJust /f (fix) without /r (sector check). Faster.
- For more verbose progress:
chkdsk C: /f /r /v(verbose). Shows which files are being checked. - For C: drive (in-use): chkdsk schedules for next reboot. Reboots and runs.
- For D: drive: runs immediately if unused.
This is the retry route.
Method 3: Diagnose hardware health
For chronic stuck.
- Boot to Windows (if possible, even Safe Mode).
- Install CrystalDiskInfo (free). Run it.
- Check the drive’s health status:
- Good: drive healthy. CHKDSK should complete.
- Caution: drive showing wear. May still complete but failing soon.
- Bad: drive failing. CHKDSK won’t complete; replace drive.
- Look at Reallocated Sectors Count: high value = drive remapping bad sectors. CHKDSK’s retry on those is the cause of stuck.
- Look at Current Pending Sector Count: sectors awaiting remap. Causes long chkdsk delays.
- If drive is failing: don’t run chkdsk further. It accelerates wear. Instead:
- Boot Linux Live USB.
- Use
ddrescueto image the failing drive to a healthy one. - Run chkdsk on the imaged drive in Windows.
- For SMART self-test from BIOS: most BIOS have built-in SMART check. Run there.
- For HDD manufacturer tool: Seagate SeaTools, Western Digital Data Lifeguard.
This is the hardware diagnosis.
How to verify the fix worked
- CHKDSK reports: “Windows has scanned the file system and found no problems” or “found and corrected errors.”
- Drive accessible normally after.
- CrystalDiskInfo shows Good status.
- Files read without errors.
If none of these work
If chkdsk keeps getting stuck: Cancel via cmd: chkntfs /x C: excludes C: from boot-time chkdsk. For chronic bad sectors: drive is failing. Back up immediately. Replace. Bypass chkdsk on boot: fsutil dirty query C: shows if drive is marked dirty. chkntfs /x C: excludes. May not work if Windows insists. For booted but slow: chkdsk C: /f /spotfix uses online spot-fix (much faster). For SSD chkdsk: usually unnecessary; trim and built-in error correction handle errors. Last resort: clone drive: ddrescue to new drive. Run chkdsk on clone. If clone passes: original was failing. Discard original. For RAID arrays: chkdsk on RAID can corrupt if not done correctly. Use RAID controller’s tools instead.
Bottom line: Wait 4 hours if first time. If still stuck, force restart and retry with chkdsk C: /f /x (no /r) for speed. Check drive health with CrystalDiskInfo. Failing drives need replacement, not more chkdsk.