What chkdsk Actually Fixes
chkdsk (Check Disk) scans the NTFS file system structures on a volume — the Master File Table (MFT), directory indexes, security descriptors, and the free-space bitmap — and repairs inconsistencies caused by improper shutdowns, driver crashes, or bad sectors. It's important to understand what it can and can't do: chkdsk repairs logical file system corruption and marks bad physical sectors so Windows stops using them. It cannot fix a mechanically failing hard drive or an SSD with worn-out NAND — if the underlying hardware is dying, chkdsk will only buy you time while you back up and replace it.
Understanding the Flags
Running chkdsk with no flags only scans and reports problems in read-only mode — it won't fix anything. The flags that matter are:
/f— fixes file system errors it finds (requires exclusive access to the volume, so it usually can't run on your active C: drive without a reboot)./r— locates bad sectors and recovers readable information from them; implies/f./x— forces the volume to dismount first if needed; implies/f./scan— runs an online scan on Windows 10/11 without dismounting the volume, useful for a non-disruptive first pass.
Step 1: Run a Non-Disruptive Scan First
Before committing to a repair that requires a reboot, run a read-only online scan to see what's actually wrong. Open Command Prompt as Administrator (right-click Start, choose Terminal (Admin) or Command Prompt (Admin)) and run:
chkdsk C: /scan
This checks the volume while it's still mounted and gives you a report of file system health without locking you out of the drive. If it reports no problems, you're done. If it flags errors, move on to the actual repair.
Step 2: Run the Repair
To fix errors on your system drive, you need the full repair with bad-sector recovery:
chkdsk C: /f /r
Since C: is in use by the running OS, Windows will respond:
Chkdsk cannot run because the volume is in use by another
process. Would you like to schedule this volume to be
checked the next time the system restarts? (Y/N)
Type Y and restart the PC. Chkdsk runs before Windows loads, in five stages: verifying files, verifying indexes, verifying security descriptors, verifying free space, and (with /r) scanning for bad sectors. On a large or heavily fragmented drive, especially with /r, this can take anywhere from 20 minutes to several hours — do not interrupt it or power off the machine mid-scan.
/r performs a full sector-by-sector surface scan and can take a very long time on large mechanical drives (multi-TB HDDs can take hours). If you just need a quick file-system-only repair without the sector scan, use /f alone.Checking a Non-System Drive Immediately
For any drive other than the one Windows is running from (a secondary internal drive, external HDD, or USB drive), chkdsk can lock the volume and run immediately without a reboot, as long as no files on it are currently open:
chkdsk D: /f /r
Step 3: Read the Results
After the scan completes and Windows boots, you can review the results in Event Viewer instead of watching the screen live next time: open eventvwr.msc, go to Windows Logs > Application, and filter for source Chkdsk (Event ID 26226 on modern Windows 10/11 builds, or search for "Wininit" source with a Chkdsk-related message). Look for lines mentioning bad clusters, orphaned files recovered to found.000 folders, or corrections made to the MFT.
When chkdsk Reports Bad Sectors Repeatedly
If you run chkdsk, it reports and "fixes" bad sectors, and a later scan finds new bad sectors again, that's a strong sign the drive is physically degrading rather than experiencing a one-off logical error. At that point:
- Back up your data immediately — don't wait.
- Check the drive's SMART attributes with a tool like CrystalDiskInfo. A rising Reallocated Sectors Count, Current Pending Sector Count, or an overall status of "Caution"/"Bad" confirms hardware failure.
- Plan to replace the drive — chkdsk manages symptoms, it doesn't reverse mechanical or NAND wear.
chkdsk /f without /r — the extra sector-by-sector scan adds unnecessary wear and rarely finds anything the drive's own controller hasn't already flagged.
Discussion & Insights