How to Perform an SSD Health Check

AbdulMusawwir Khatri

Read more posts by this author.

A Solid State Drives (SSDs) performs much faster than the usual Hard Disk Drive (HDD) you get when buying a PC or laptop. An SSD offers lesser chances of failure, but as all drives age, failure is inevitable. So how would you avoid loss of data? There are tools you can use for an SSD health check and even extend its life.

In this article, you’ll learn how to check your SSD’s health and performance via health check tools such as Crystal Disk Info and cmdlets available in PowerShell.

Let’s get started!


The tutorial runs all demos on a Windows 10 Build 19042 machine installed on an SSD, but other builds of Windows PC will work.

Performing SSD Health Check via CrystalDiskInfo

Perhaps you’re looking for a method to perform an SSD health check that doesn’t make you look like a geek. If that’s the case, take a look at CrystalDiskInfo. Crystal Disk Info is a free GUI HDD/SDD utility software available on the Crystal Mark website.

Differently themed versions of Crystal Disk Info are available to download, but this tutorial uses the standard version.

Download CrystalDiskInfo by clicking on CrystalDiskInfo, as shown below. Now run the installer you downloaded to install CrystalDiskInfo on your PC.

Downloading Crystal Disk Info
Downloading Crystal Disk Info

Launch CrystalDiskInfo from your desktop, and you’ll see a bunch of information about your SSD, as shown below.

Depending on your SSD’s health, the health status either appears Green (good), Yellow (caution), Red (failed), or Gray (unknown state). You can see below that the SSD’s health is Unknown, which indicates a firmware update is needed for the SSD or CrystalDiskInfo does not support the controller.

Your SSD manufacturer will usually provide firmware updates for bug fixes, performance, or security enhancements.

Opening Crystal Disk Info for the first time
Opening Crystal Disk Info for the first time

Performing an SSD Health Check via PowerShell

Even though CrystalDiskInfo might cover the most commonly used drive controllers, not all are supported. This limitation is one of the primary reasons to turn to PowerShell when performing an SSD health check.

If you spend most of your time running commands in PowerShell, then performing an SSD health check via PowerShell is what suits you best. PowerShell lets you check your SSD for read-write errors, wear leveling, percent, temperature, and several other important details.

Let’s cover how to jointly use two primary cmdlets (the Get-PhysicalDisk and Get-StorageReliabilityCounter) to get a better view of your SSD’s health status.

  • The Get-PhysicalDisk cmdlet retrieves all physical disks visible to any storage management provider. Storage management providers are storage management applications that provide integrated storage management services.
  • The Get-StorageReliabilityCounter cmdlet allows you to check the counters of the disk/ drive being queried.

Now open PowerShell as administrator, and run the Get-PhysicalDisk cmdlet on its own to return basic information about your SSD.


PowerShell is readily available to determine whether your SSD is in good condition or if it requires a replacement. And as you can see below, the SSD’s status is Healthy, which indicates the SSD is working normally and there are no problems.

Retrieving a list of physical disks via PowerShell
Retrieving a list of physical disks via PowerShell

Retrieving SSD Usage Statistics

The Get-PhysicalDisk command provides a handful of information about your SSD. But perhaps you’re only interested in information showing your SSD usage statistics, such as the write latency or power-on hours.

To narrow down returned SSD information, pipe the Get-StorageReliabilityCounter cmdlet to the Get-PhysicalDisk cmdlet and format the result as a list (Format-List).

Get-PhysicalDisk | Get-StorageReliabilityCounter | Format-List

Below, you see most of the important SSD health information.

Returning SSD Usage Statistics
Returning SSD Usage Statistics

Perhaps you only want to get specific information, such as the ReadErrorsTotal and Wear. If so, you’ll be adding the Select cmdlet, as shown below. The Select cmdlet allows you to select specified properties of an object.

Now run the Get-PhysicalDisk command below to filter out the output list by specifying required information (ReadErrorsTotal and Wear).

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select ReadErrorsTotal, Wear

Below, you can see only the specified information, ReadErrorsTotal and Wear.

If you see a number other than 0 appearing for any of the two fields, consider replacing your SSD.

Filtering the output by selecting only ReadErrorsTotal and Wear objects
Filtering the output by selecting only ReadErrorsTotal and Wear objects

Formatting Health Check Output for Multiple SSDs

You’ve learned how to perform an SSD health check in a single SSD so far. But what if you have more than 1 SSD? Enclosing commands in a For Each loop will save time and get the specific information you need simultaneously.

In the command below, the Get-PhysicalDisk cmdlet reads a set of objects (foreach) returned by the Get-StorageReliabilityCounter cmdlet piped with the Format-List cmdlet. The command completes when it’s finished with the last object.

Get-PhysicalDisk | foreach { $_ | Get-StorageReliabilityCounter | Format-List }
Looping through all physical disks to check health via PowerShell
Looping through all physical disks to check health via PowerShell

PowerShell offers extensive functionality, such as setting up a scheduled task to check your SSD’s health. That scheduled task can even email you the results, which would be more beneficial for a real-life scenario.

Erasing Unused Data Blocks with TRIM

Now that you know how to check your SSD’s health, it is vital to understand how to maintain the high performance of your SSD. As you perform read-write operations on your SSD, it will slowly wear out the flash memory cells.

Is there a way that you could minimize the damage and maximize the performance of your SSD? Sure there is! To keep an SSD at its prime performance, TRIM was designed. TRIM informs the operating system about which data blocks are no longer serve a purpose in a disk and can be safely erased.

Data recovery from a TRIM-enabled SSD is not possible due to the data being deleted permanently and overwritten.

TRIM is enabled by default for an SSD, but if you’re skeptical and want to confirm that TRIM is enabled, run the command below.

Run the fsutil behavior command below to query the system if TRIM (aka. DisableDeleteNotify) is enabled or not.

fsutil behavior query DisableDeleteNotify

Below, you can tell that TRIM is disabled as the returned value is zero (0). If the command returned (1), then TRIM is currently enabled.

Checking if TRIM is enabled or disabled via PowerShell
Checking if TRIM is enabled or disabled via PowerShell

Now run the same previous command to enable TRIM, but instead of querying the behavior of the delete notifications, you set it to 1.

fsutil behavior set DisableDeleteNotify 1
Enabling TRIM
Enabling TRIM


In this tutorial, you’ve learned how to perform an SSD health check via CrystalDiskInfo and PowerShell which ships with your Windows PC. Now you can surely expect to avoid situations whereby your SSD would fail unknowingly.

The question now is, would you rely on third-party software to perform an SSD health check or stick to PowerShell?

Subscribe to Stay in Touch

Never miss out on your favorite ATA posts and our latest announcements!

Looks like you're offline!