---
title: "How to Perform an SSD Health Check"
description: "Stop worrying that your SSD might be starting to fail. Prepare for the worst by learning how to perform an SSD health check in this tutorial!"
canonical: "https://adamtheautomator.com/ssd-health-check/"
---

# How to Perform an SSD Health Check

> Stop worrying that your SSD might be starting to fail. Prepare for the worst by learning how to perform an SSD health check in this tutorial!

Source: https://adamtheautomator.com/ssd-health-check/

---

ATA Learning

Tap to hide

[

ATA Learning

](/)

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Search for:  

*   [](https://twitter.com/adbertram)
*   [](https://github.com/Adam-the-Automator)
*   [](https://www.linkedin.com/company/adam-the-automator-llc)
*   [](/feed/)

![How to Perform an SSD Health Check](https://adamtheautomator.com/wp-content/uploads/2021/09/How-to-Perform-an-SSD-Health-Check.jpg)

# How to Perform an SSD Health Check

[![](https://secure.gravatar.com/avatar/1af914b6d78c9763370cebe4658d3cc0cbe27fa622f43f2cd4361dccdd36da8a?s=192&d=mm&r=g)AbdulMusawwir Khatri](https://adamtheautomator.com/author/abdulmusawwir-khatri/)9 September 20214 min. read

Categories: [IT Ops](/category/it-ops/)

Tags:[Disk Management](/tag/disk-management/)[Windows](/tag/windows/)

Table of Contents

*   [Prerequisites](#prerequisites)
*   [Performing SSD Health Check via CrystalDiskInfo](#performing-ssd-health-check-via-crystaldiskinfo)
*   [Performing an SSD Health Check via PowerShell](#performing-an-ssd-health-check-via-powershell)
*   [Retrieving SSD Usage Statistics](#retrieving-ssd-usage-statistics)
*   [Formatting Health Check Output for Multiple SSDs](#formatting-health-check-output-for-multiple-ssds)
*   [Erasing Unused Data Blocks with TRIM](#erasing-unused-data-blocks-with-trim)
*   [Conclusion](#conclusion)

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!

## Prerequisites

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](https://www.pcworld.com/article/486334/crystaldiskinfo.html). Crystal Disk Info is a free GUI HDD/SDD utility software available on the [Crystal Mark website](https://crystalmark.info/en/software/crystaldiskinfo/).

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](https://adamtheautomator.com/wp-content/uploads/2021/09/image-30.png)

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](https://crystalmark.info/en/software/crystaldiskinfo/crystaldiskinfo-controllers/).

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

![Opening Crystal Disk Info for the first time](https://adamtheautomator.com/wp-content/uploads/2021/09/image-31.png)

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`](https://docs.microsoft.com/en-us/powershell/module/storage/get-physicaldisk?view=windowsserver2019-ps) and [`Get-StorageReliabilityCounter`](https://docs.microsoft.com/en-us/powershell/module/storage/get-storagereliabilitycounter?view=windowsserver2019-ps)) 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](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/stormgmt/windows-storage-management-api-portal). 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](https://adamtheautomator.com/powershell-run-as-administrator/), and run the `Get-PhysicalDisk` cmdlet on its own to return basic information about your SSD.

```powershell
Get-PhysicalDisk
```

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](https://adamtheautomator.com/wp-content/uploads/2021/09/image-32.png)

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](https://storageswiss.com/2013/12/10/what-is-latency-and-how-is-it-different-from-iops/) or [power-on hours](https://en.wikipedia.org/wiki/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`).

```powershell
Get-PhysicalDisk | Get-StorageReliabilityCounter | Format-List
```

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

![Returning SSD Usage Statistics](https://adamtheautomator.com/wp-content/uploads/2021/09/image-33.png)

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`](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-object?view=powershell-7.1) 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`).

```powershell
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](https://adamtheautomator.com/wp-content/uploads/2021/09/image-34.png)

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](https://adamtheautomator.com/powershell-foreach/) 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.

```powershell
Get-PhysicalDisk | foreach { $_ | Get-StorageReliabilityCounter | Format-List }
```

![Looping through all physical disks to check health via PowerShell](https://adamtheautomator.com/wp-content/uploads/2021/09/image-35.png)

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._

Related:[How to Set Up and Manage Scheduled Tasks with PowerShell](https://adamtheautomator.com/powershell-scheduled-task/)

Related:[Send-MailMessage: The PowerShell Way to Send Email](https://adamtheautomator.com/send-mailmessage/)

## 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](https://en.wikipedia.org/wiki/Memory_cell_\(computing\)).

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](https://docs.microsoft.com/en-us/windows/compatibility/new-api-allows-apps-to-send-trim-and-unmap-hints) 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.

```powershell
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](https://adamtheautomator.com/wp-content/uploads/2021/09/image-36.png)

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`.

```powershell
fsutil behavior set DisableDeleteNotify 1
```

![Enabling TRIM](https://adamtheautomator.com/wp-content/uploads/2021/09/image-37.png)

Enabling TRIM

## Conclusion

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?

Share this article

[Share on X](https://twitter.com/intent/tweet?url=https%3A%2F%2Fadamtheautomator.com%2Fssd-health-check%2F&text=How%20to%20Perform%20an%20SSD%20Health%20Check)[Share on Facebook](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fadamtheautomator.com%2Fssd-health-check%2F)[Share on LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fadamtheautomator.com%2Fssd-health-check%2F)

## Related Posts

![](https://adamtheautomator.com/wp-content/uploads/publisher/3f95d9c85b2b817aab5dca59f1ca0e14/38378bffb6e067df12a1bd90a3921833213a6e328f7d3baabd1fae698d38ddfd.jpg)

### [Fix Kerberos Clock Skew Logon Failures Using w32tm](/fix-kerberos-clock-skew-w32tm/)

Fix Kerberos clock skew logon failures by checking w32tm sources, pointing the PDC emulator at NTP, and resyncing drifted clients.

![](https://adamtheautomator.com/wp-content/uploads/publisher/3f95d9c85b2b81798ecbd4ce17ad4211/3af27311d4ef00790ee9d17c229fa6097b6ee8b242b0a21e0b024c9807f61639.jpg)

### [Who Really Restarted Windows Server? Event ID 1074 and 6008](/event-id-1074-windows-server-restart/)

Use one Get-WinEvent filter to find which account, process, and reason restarted a Windows Server, from Event ID 1074 and 6008 logs.

![](https://adamtheautomator.com/wp-content/uploads/publisher/3ec5d9c85b2b815cacb1ece7c7ca9758/edff0257593a62603f4fae3b57f62db3fbe832f8af0bcc7638ea7ebd721274c7.jpg)

### [Set Up NPS RADIUS on Windows Server Without Silent Rejects](/nps-radius-windows-server-setup/)

Install Windows Server NPS as a RADIUS server for Wi-Fi and VPN, build PEAP and EAP-TLS policies, and decode event 6273 before users complain.

## Categories

*   [IT Ops](/category/it-ops/)
*   [Cloud](/category/cloud/)
*   [DevOps](/category/devops/)
*   [Home Ops](/category/home-ops/)
*   [Information Security](/category/infosec/)
*   [Software Development](/category/software-development/)

## Site

*   [Home](/)
*   [Tutorials](/tutorials/)
*   [Instructors](/author/)
*   [Advertising](/advertising/)
*   [Recommended Resources](/resources/)
*   [About Adam](/about-adam/)

Copyright 2026© ATA Learning | [Privacy Policy](/privacy/)
