An SSD keeps its own health log, and you can read it with smartctl -a /dev/nvme0 (smartmontools, on Linux, macOS or Windows), with Get-PhysicalDisk | Get-StorageReliabilityCounter in an administrator PowerShell, or on Windows 11 in Settings under the disk's Properties. The three values that matter most on an NVMe drive are Critical Warning, Percentage Used and Available Spare.
None of these tools can promise a drive won't fail tomorrow. What they can tell you is whether the drive itself has flagged a problem, and how much of its rated write endurance is used up.
Windows 11: the drive health page
- Open Settings → System → Storage.
- Choose Advanced storage settings → Disks & volumes.
- Select the drive and click Properties.
On Windows 10 the path is Settings → System → Storage → Manage disks and volumes → Properties. The Drive health section shows estimated remaining life, available spare and temperature. Microsoft's support page notes that Windows monitors only NVMe SSDs here, "not SATA SSDs or hard disk drives."
If something is wrong, Windows shows one of three warnings, which map directly to bits in the NVMe Critical Warning field:
- Spare capacity is low: spare blocks have dropped below the manufacturer's threshold.
- Reliability is degraded: significant media errors or an internal error.
- Drive is set to read-only: you can still read data but can't write to the drive.
Microsoft's advice for any of them is to back up your data first.
Windows PowerShell: Get-StorageReliabilityCounter
Start by listing the drives. This works in a normal PowerShell window:
Get-PhysicalDisk | Format-Table FriendlyName, MediaType, HealthStatus, OperationalStatus
Output from the machine this article was checked on:
FriendlyName MediaType HealthStatus OperationalStatus
------------ --------- ------------ -----------------
WD_BLACK SN770 2TB SSD Healthy OK
CT1000P5PSSD8 SSD Healthy OK
For the detailed counters, open PowerShell as administrator and run:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Format-List DeviceId, Temperature, TemperatureMax, Wear, PowerOnHours, ReadErrorsUncorrected, WriteErrorsUncorrected
In a non-elevated window the second command fails with Access to a CIM resource was not available to the client. That was the exact result on the test machine, so run it as administrator.
Microsoft's class documentation defines the fields:
| Field | Meaning |
|---|---|
Wear | "The storage device wear indicator, in percentage. At 100 percent, the estimated wear limit will have been reached." |
Temperature | Current temperature in °C. |
TemperatureMax | The maximum temperature in °C at which the device is capable of normal operation. |
PowerOnHours | Hours the device has been powered on since manufacture. |
ReadErrorsUncorrected / WriteErrorsUncorrected | Errors the drive could not correct. Anything above zero deserves attention. |
Not every drive reports every counter, so blank fields are normal. HealthStatus from Get-PhysicalDisk is a summary; the counters are the detail behind it.
Any OS: smartctl from smartmontools
smartmontools runs on Linux, macOS and Windows and reads the drive's SMART data directly. First list the devices it can see:
smartctl --scan
Then read everything for one drive (on Linux and macOS, prefix with sudo; on Windows, use an administrator prompt):
smartctl -a /dev/nvme0 # NVMe drive
smartctl -a /dev/sda # SATA drive
The smartctl manual says -a "prints all SMART information about the disk." For NVMe it is equivalent to -H -i -c -A -l error: health, identity, capabilities, attributes and the error log. The NVMe device name /dev/nvme0 addresses the controller's broadcast namespace; /dev/nvme0n1 addresses namespace 1. For just the pass/fail verdict, use smartctl -H. For NVMe, that status comes from the Critical Warning byte.
Example NVMe output (the health section):
SMART overall-health self-assessment test result: PASSED
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 41 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 2%
Data Units Read: 23,456,789 [12.0 TB]
Data Units Written: 12,345,678 [6.32 TB]
Power On Hours: 5,210
Unsafe Shutdowns: 37
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
What the NVMe health fields mean
These definitions come from the NVM Express specification's SMART / Health Information log, which every NVMe drive implements:
- Critical Warning: a bit field.
0x00means no warnings. Set bits flag that available spare has fallen below the threshold, a temperature threshold was crossed, reliability is degraded by media or internal errors, the media is read-only, or a volatile memory backup has failed. - Available Spare: "a normalized percentage (0% to 100%) of the remaining spare capacity available." SSDs keep reserve blocks to replace worn-out ones; this is how much reserve is left.
- Available Spare Threshold: when Available Spare falls below this percentage, the drive raises a warning.
- Percentage Used: "a vendor specific estimate of the percentage of NVM subsystem life used based on the actual usage and the manufacturer's prediction of NVM life." 100 means the estimated endurance has been consumed, which "may not indicate an NVM subsystem failure." It can exceed 100 and is capped at 255.
- Data Units Written: reported in thousands of 512-byte units. One unit is 1,000 × 512 = 512,000 bytes, so 12,345,678 units is 6.32 TB, which smartctl shows in brackets.
Data Units Written lets you compare against the drive's TBW rating. If a drive is rated for 600 TBW and shows 6.32 TB written, about 1% of its rated endurance is used, which should roughly agree with Percentage Used. The SSD vs HDD guide explains TBW ratings.
SATA SSDs: attributes vary by vendor
SATA drives report a table of numbered SMART attributes instead of the fixed NVMe log. The attribute IDs and names for SSD wear differ between manufacturers, so look up your drive's attribute list in the vendor's documentation. The overall result line (PASSED or FAILED) and the error log work the same on every drive. To ask the drive to test itself, use smartctl -t short /dev/sda, which the manual describes as usually taking under ten minutes, then read the result with smartctl -a.
What to do with the results
- Critical Warning not 0x00, or Windows shows a warning: back up now, then replace the drive. Read-only mode means the drive has already stopped accepting writes.
- Available Spare dropping toward its threshold, or media errors climbing: the drive is consuming its reserve. Back up and plan a replacement.
- Percentage Used high but everything else clean: the drive has done a lot of writing but isn't reporting damage. Keep backups current and watch it.
- Everything clean: good, but a clean SMART log describes the past, not a guarantee. It is not a substitute for a backup.
Whatever the numbers say, keep at least one copy of important files on a different device. If you copy files to a backup drive, a checksum confirms the copy matches the original: larely's checksum tool computes SHA-256 in the browser without uploading the file.
Frequently asked questions
- My SSD says 'Percentage Used: 100%'. Is it about to die?
- Not necessarily. The NVMe specification defines 100 as the point where the manufacturer's estimated endurance has been consumed, and says it may not indicate a failure; the value is allowed to go above 100. Treat it as a strong signal to make sure backups are current and to plan a replacement, and watch Available Spare and the media error count, which change when the drive is actually degrading.
- Why does Get-StorageReliabilityCounter give an access error?
- Reading reliability counters requires an elevated session. Without one, PowerShell returns 'Access to a CIM resource was not available to the client.' Right-click PowerShell or Windows Terminal, choose Run as administrator, and run the command again.
- Does the Windows drive health page work for SATA SSDs?
- No. Microsoft states that Windows monitors only NVMe SSDs for these health warnings, not SATA SSDs or hard disk drives. For SATA drives, use smartctl from smartmontools or the drive maker's own utility.
- How often should I check SSD health?
- There is no fixed schedule. Windows checks NVMe drives itself and raises a notification on a critical warning. For other drives, checking every few months and before relying on an old drive for something important is a reasonable habit; backups matter far more than how often you look.
Sources
- Debian manpages: smartctl(8), smartmontools
- NVM Express Base Specification 1.4, Figure 194: SMART / Health Information Log
- Microsoft Learn: Get-StorageReliabilityCounter
- Microsoft Learn: MSFT_StorageReliabilityCounter class
- Windows Insider Blog: Build 20226 (NVMe storage health monitoring)
- Microsoft Support: What to do about a critical warning for a storage device