Learn Docker With My Newest Course

Dive into Docker takes you from "What is Docker?" to confidently applying Docker to your own projects. It's packed with best practices and examples. Start Learning Docker →

SMART Stats for Your SSD and HDD on Linux, macOS and Windows

smart-stats-for-your-ssd-and-hdd-on-linux-macos-and-windows.jpg

These stats let you see the health of your drives along with useful stats like temperatures and how long it's been powered on.

Quick Jump:

Prefer video? Here it is on YouTube.

Knowing the health of your drive, such as how much wear and tear has happened on your SSD is very useful information. It can help plan how long a drive will last as long as it doesn’t die from an unexpected hardware failure.

Useful stats to know are:

  • Percent lifetime remaining
  • How many hours it’s been powered on over its life
  • How many times it’s been power cycled (turned on and off)
  • How many bytes were written
  • Error counts
  • Temperature readings (current, min, max, etc.)
  • Serial number, firmware and other hardware related versions

# CrystalDiskInfo on Windows

Let’s start with the quick one.

I stopped using Windows in 2025 but when I used it, I was a fan of CrystalDiskInfo which you can download for free from https://sourceforge.net/projects/crystaldiskinfo/. That link includes screenshots.

There’s not a whole lot to go over. Once you install it, you can run it and it will give you all sorts of stats about your drives.

I’ve explained what some of the stats are below, so even if you’re using Windows with CrystalDiskInfo you can scroll down below and find explanations about some of the SMART stats. You can press Ctrl + f to search for “the table below” in your browser and read down from there.

With that said, Smartmontools also works on Windows which is what I use on both Linux and macOS. Feel free to use this if you prefer command line tools!

# Smartmontools on Linux / macOS

Smartmontools is available on most Linux distros and macOS. Technically it also runs on Windows too if you’re interested!

For example, here’s a few popular copy / paste’able commands to install it:

If you’re using DotFriedRice, it’s already set up for you!

sudo pacman -Syu smartmontools
sudo apt-get install smartmontools
brew install smartmontools

You can verify it’s installed by running: smartctl --version

Identify Your Disks

At the end of the day, we want to know the device path such as /dev/sda on Linux or /dev/disk0 on macOS. These paths may be different on your machine.

On Linux you can run:

lsblk --paths --output NAME,SIZE,VENDOR,MODEL

# Here's the output on my machine running Arch Linux with 3 physical drives:
NAME          SIZE VENDOR   MODEL
/dev/sda    238.5G ATA      Crucial_CT256MX100SSD1
├─/dev/sda1     1G
└─/dev/sda2 237.5G
/dev/sdb    931.5G ATA      WDC WD10EZEX-22BN5A0
└─/dev/sdb1 931.5G
/dev/sdc    931.5G WD       WDC WD10JMVW-11AJGS4
└─/dev/sdc1 931.5G
/dev/zram0      4G

On macOS you can run diskutil list which will list back your disks. I don’t have a way to show this but I’m sure you’ll find it. On my company issued M4 MBP it has /dev/disk0.

Enable SMART stats

For all smartctl commands below, I’m going to be using sudo since that’s necessary on Linux. If you’re on macOS you can omit sudo.

Check if it’s enabled:

Check to see if SMART support is enabled for your drive(s). You’ll want to check the last line of output. If it’s not enabled, don’t sweat it, it’s easy to enable.

Replace /dev/sda with your path if it’s different. I’ve included the outputs for both my internal SSD and HDD. I omit /dev/sdc which is an external HDD, it has it enabled but it’s not important to show everything here. I just wanted to demonstrate that SMART stats can be shown for both SSDs and HDDs.

sudo smartctl --info /dev/sda

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron Client SSDs
Device Model:     Crucial_CT256MX100SSD1
Serial Number:    14370D313991
LU WWN Device Id: 5 00a075 10d313991
Firmware Version: MU01
User Capacity:    256,060,514,304 bytes [256 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.5/5706
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Jul 17 09:45:09 2026 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
sudo smartctl --info /dev/sdb

=== START OF INFORMATION SECTION ===
Model Family:     Western Digital Blue (CMR)
Device Model:     WDC WD10EZEX-22BN5A0
Serial Number:    WD-WCC3F1JAPXD9
LU WWN Device Id: 5 0014ee 2b61924e9
Firmware Version: 01.01A01
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database 7.5/5706
ATA Version is:   ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Jul 17 09:45:11 2026 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Enable SMART stats:

If it’s not enabled you can run sudo smartctl --smart on /dev/sda, it will persist across reboots since it sends the instruction straight to your drive’s firmware. Most drives will persist that, personally I’ve never encountered a drive that didn’t persist this.

Basic Health Check

If you want a basic self assessment test you can run this:

sudo smartctl --health /dev/sda

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

Keep in mind there could still be issues with your drive while passing. Still, a quick high level test like the above could be handy if you’re not interested in the nitty gritty.

Full Check

Here’s the full stats on my SSD. You can use --all instead of --xall to get legacy stats. I personally have a very old SSD and HDD, both are from 2014. The newer --xall flag includes more information.

On macOS your output will have a lot less information but the important stats will be there, they’ll be identified slightly different but I’m sure you’ll be able to correlate them to the lines below.

Here’s the full dump of information, I’ve broken it up a little bit so it can be commented on in chunks. If you see lines with # ... with surrounding empty lines, those are my comments and not part of the official output.

sudo smartctl --xall /dev/sda

# In general, seeing the firmware and various hardware information is good to
# know in case you need to reference it somewhere.

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron Client SSDs
Device Model:     Crucial_CT256MX100SSD1
Serial Number:    14370D313991
LU WWN Device Id: 5 00a075 10d313991
Firmware Version: MU01
User Capacity:    256,060,514,304 bytes [256 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.5/5706
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Fri Jul 17 09:39:28 2026 EDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
AAM feature is:   Unavailable
APM level is:     254 (maximum performance)
Rd look-ahead is: Enabled
Write cache is:   Enabled
DSN feature is:   Unavailable
ATA Security is:  Unavailable

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x80)	Offline data collection activity
					was never started.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever
					been run.
Total time to complete Offline
data collection: 		( 1190) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 (   3) minutes.
Conveyance self-test routine
recommended polling time: 	 (   3) minutes.
SCT capabilities: 	       (0x0035)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.

# In general, the table below contains a lot of useful information!

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAGS    VALUE WORST THRESH FAIL RAW_VALUE
  1 Raw_Read_Error_Rate     POSR-K   100   100   000    -    0

  # Ideally you'll want 0 as the count here. These are NAND blocks that have been
  # permanently retired and replaced with spare blocks. A small number isn't
  # necessarily a problem, but if the count keeps increasing it may indicate flash
  # wear or degradation.
  5 Reallocate_NAND_Blk_Cnt PO--CK   100   100   000    -    0

  # This drive has been powered on for a little over 11.5 years because I keep
  # my computer on 24 / 7. It has been power cycled 159 times in those 11.5 years
  # since it includes reboots and power outages.
  9 Power_On_Hours          -O--CK   100   100   000    -    100974
 12 Power_Cycle_Count       -O--CK   100   100   000    -    159

171 Program_Fail_Count      -O--CK   100   100   000    -    0
172 Erase_Fail_Count        -O--CK   100   100   000    -    0
173 Ave_Block-Erase_Count   -O--CK   054   054   000    -    1388

# This is how many times the power has been hard cut, such as during an outage.
# I didn't always have a UPS (universal power supply) that worked. It also
# accounts for hard software locks where your machine needs to be power cycled.
174 Unexpect_Power_Loss_Ct  -O--CK   100   100   000    -    63

180 Unused_Reserve_NAND_Blk PO--CK   000   000   000    -    2159
183 SATA_Interfac_Downshift -O--CK   100   100   000    -    0
184 Error_Correction_Count  -O--CK   100   100   000    -    0
187 Reported_Uncorrect      -O--CK   100   100   000    -    0

# Knowing stats about your temps is always handy. I live in NY so it gets quite
# hot in the summers, as high as 100f / 38c. I don't always turn the A/C on.
194 Temperature_Celsius     -O---K   063   050   000    -    37 (Min/Max 15/50)

196 Reallocated_Event_Count -O--CK   100   100   000    -    0

# Ideally you'll want 0 as the count here. These are blocks / sectors that have
# experienced read errors and are waiting to be retested. The count may decrease
# if the drive is later able to read or rewrite the data successfully.
197 Current_Pending_ECC_Cnt -O--CK   100   100   000    -    0

# Ideally you'll want 0 as the count here. It indicates there are blocks / sectors
# that could not be read or corrected during offline testing. A non-zero value
# often accompanies data loss.
198 Offline_Uncorrectable   ----CK   100   100   000    -    0

# I have a SATA SSD, and this could be related to a poor connection, this isn't
# related to data loss or a reason to freak out. When I switched to Linux I had
# issues around how Linux managed this SATA connection which caused occasional
# freezes for 10s but it's been resolved since then and hasn't increased in 6 months.
199 UDMA_CRC_Error_Count    -O--CK   100   100   000    -    14

# This one is very important, it's how long your SSD will last for since they
# have a finite life. In my case, in those 11.5 years I have 46% left. In other
# words, I've consumed 54% of its write endurance. It's not guaranteed to die
# at 100% consumption, it's what it's rated at by the manufacturer. It can also
# start having trouble earlier.
#
# If you start to see this number getting low, certainly make sure your data is
# backed up and be prepared to on average get a new drive.
202 Percent_Lifetime_Remain P---CK   054   054   000    -    46

206 Write_Error_Rate        -OSR--   100   100   000    -    0
210 Success_RAIN_Recov_Cnt  -O--CK   100   100   000    -    0

# Newer drives might show this as TBA (total bytes written), but if you're
# curious you can calculate that from the LBA along with the sector size which
# you can see up top in "Sector Size", which in my case is 512.
#
# You can calculate LBA to TBW with this formula:
#
# (TOTAL_LBAs * SECTOR_SIZE) / 1_TERABYTE_IN_BYTES = N TB
#
# In my case that would be:
#
# (138615507845 * 512) / 1000000000000 = ~70.9 TB
246 Total_LBAs_Written      -O--CK   100   100   000    -    138615507845

247 Host_Program_Page_Count -O--CK   100   100   000    -    2232353815
248 FTL_Program_Page_Count  -O--CK   100   100   000    -    1684185261

                            ||||||_ K auto-keep
                            |||||__ C event count
                            ||||___ R error rate
                            |||____ S speed/performance
                            ||_____ O updated online
                            |______ P prefailure warning

General Purpose Log Directory Version 1
SMART           Log Directory Version 1 [multi-sector log support]
Address    Access  R/W   Size  Description
0x00       GPL,SL  R/O      1  Log Directory
0x01           SL  R/O      1  Summary SMART error log
0x02           SL  R/O     51  Comprehensive SMART error log
0x03       GPL     R/O  16383  Ext. Comprehensive SMART error log
0x04       GPL,SL  R/O    255  Device Statistics log
0x06           SL  R/O      1  SMART self-test log
0x07       GPL     R/O      1  Extended self-test log
0x09           SL  R/W      1  Selective self-test log
0x10       GPL     R/O      1  NCQ Command Error log
0x11       GPL     R/O      1  SATA Phy Event Counters log
0x13       GPL     R/O      1  SATA NCQ Send and Receive log
0x24       GPL     R/O    429  Current Device Internal Status Data log
0x25       GPL     R/O    145  Saved Device Internal Status Data log
0x30       GPL,SL  R/O      9  IDENTIFY DEVICE data log
0x80-0x9f  GPL,SL  R/W     16  Host vendor specific log
0xa0       GPL     VS    2000  Device vendor specific log
0xa0       SL      VS     208  Device vendor specific log
0xa1-0xbf  GPL,SL  VS       1  Device vendor specific log
0xc0       GPL,SL  VS      80  Device vendor specific log
0xc1-0xdf  GPL,SL  VS       1  Device vendor specific log
0xe0       GPL,SL  R/W      1  SCT Command/Status
0xe1       GPL,SL  R/W      1  SCT Data Transfer

# Ideally you'll want to see no errors logged and completed without errors.

SMART Extended Comprehensive Error Log Version: 1 (16383 sectors)
No Errors Logged

SMART Extended Self-test Log Version: 1 (1 sectors)
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Vendor (0xff)       Completed without error       00%     17120         -
# 2  Vendor (0xff)       Completed without error       00%     16326         -
# 3  Vendor (0xff)       Completed without error       00%     16078         -
# 4  Vendor (0xff)       Completed without error       00%     15963         -
# 5  Vendor (0xff)       Completed without error       00%     15843         -
# 6  Vendor (0xff)       Completed without error       00%     15738         -
# 7  Vendor (0xff)       Completed without error       00%     15602         -
# 8  Vendor (0xff)       Completed without error       00%     15501         -
# 9  Vendor (0xff)       Completed without error       00%     15402         -
#10  Vendor (0xff)       Completed without error       00%     15307         -
#11  Vendor (0xff)       Completed without error       00%     15210         -
#12  Vendor (0xff)       Completed without error       00%     15124         -
#13  Vendor (0xff)       Completed without error       00%     15067         -
#14  Vendor (0xff)       Completed without error       00%     15004         -
#15  Vendor (0xff)       Completed without error       00%     14938         -
#16  Vendor (0xff)       Completed without error       00%     14880         -
#17  Vendor (0xff)       Completed without error       00%     14823         -
#18  Vendor (0xff)       Completed without error       00%     14767         -
#19  Vendor (0xff)       Completed without error       00%     14711         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

# Here's quite a bit more details about temperatures.

SCT Status Version:                  3
SCT Version (vendor specific):       1 (0x0001)
Device State:                        Active (0)
Current Temperature:                    37 Celsius
Power Cycle Min/Max Temperature:     32/46 Celsius
Lifetime    Min/Max Temperature:     15/50 Celsius
Under/Over Temperature Limit Count:   0/0

SCT Temperature History Version:     2
Temperature Sampling Period:         1 minute
Temperature Logging Interval:        1 minute
Min/Max recommended Temperature:      0/70 Celsius
Min/Max Temperature Limit:           -5/75 Celsius
Temperature History Size (Index):    478 (400)

Index    Estimated Time   Temperature Celsius
 401    2026-07-17 01:42    37  ******************
 ...    ..( 23 skipped).    ..  ******************
 425    2026-07-17 02:06    37  ******************
 426    2026-07-17 02:07    38  *******************
 ...    ..( 42 skipped).    ..  *******************
 469    2026-07-17 02:50    38  *******************
 470    2026-07-17 02:51    37  ******************
 471    2026-07-17 02:52    37  ******************
 472    2026-07-17 02:53    38  *******************
 ...    ..(  2 skipped).    ..  *******************
 475    2026-07-17 02:56    38  *******************
 476    2026-07-17 02:57    37  ******************
 ...    ..(401 skipped).    ..  ******************
 400    2026-07-17 09:39    37  ******************

SCT Error Recovery Control command not supported

# This contains a subset of information above but formatted differently.

Device Statistics (GP Log 0x04)
Page  Offset Size        Value Flags Description
0x01  =====  =               =  ===  == General Statistics (rev 1) ==
0x01  0x008  4             159  ---  Lifetime Power-On Resets
0x01  0x010  4          100974  ---  Power-on Hours
0x01  0x018  6    138615507845  ---  Logical Sectors Written
0x01  0x020  6      2763115913  ---  Number of Write Commands
0x01  0x028  6     78923585921  ---  Logical Sectors Read
0x01  0x030  6      1014927968  ---  Number of Read Commands
0x04  =====  =               =  ===  == General Errors Statistics (rev 1) ==
0x04  0x008  4               0  ---  Number of Reported Uncorrectable Errors
0x04  0x010  4             102  ---  Resets Between Cmd Acceptance and Completion
0x05  =====  =               =  ===  == Temperature Statistics (rev 1) ==
0x05  0x008  1              37  ---  Current Temperature
0x05  0x010  1              37  ---  Average Short Term Temperature
0x05  0x018  1              38  ---  Average Long Term Temperature
0x05  0x020  1              50  ---  Highest Temperature
0x05  0x028  1              16  ---  Lowest Temperature
0x05  0x030  1              44  ---  Highest Average Short Term Temperature
0x05  0x038  1              16  ---  Lowest Average Short Term Temperature
0x05  0x040  1              40  ---  Highest Average Long Term Temperature
0x05  0x048  1              23  ---  Lowest Average Long Term Temperature
0x05  0x050  4               -  ---  Time in Over-Temperature
0x05  0x058  1              70  ---  Specified Maximum Operating Temperature
0x05  0x060  4               -  ---  Time in Under-Temperature
0x05  0x068  1               0  ---  Specified Minimum Operating Temperature
0x06  =====  =               =  ===  == Transport Statistics (rev 1) ==
0x06  0x008  4               0  ---  Number of Hardware Resets
0x06  0x010  4               0  ---  Number of ASR Events
0x06  0x018  4              14  ---  Number of Interface CRC Errors
0x07  =====  =               =  ===  == Solid State Device Statistics (rev 1) ==
0x07  0x008  1               5  N--  Percentage Used Endurance Indicator
                                |||_ C monitored condition met
                                ||__ D supports DSN
                                |___ N normalized value

Pending Defects log (GP Log 0x0c) not supported

SATA Phy Event Counters (GP Log 0x11)
ID      Size     Value  Description
0x0001  4            0  Command failed due to ICRC error
0x000a  4            3  Device-to-host register FISes sent due to a COMRESET

Newer SSDs may even show more information. I haven’t updated my main desktop since 2014 because things are working quite nicely for software development and creating videos. Here’s a list of my hardware and the tools I use.

The video below shows using smartctl on Linux.

# Demo Video

Timestamps

  • 0:17 – CrystalDiskInfo on Windows
  • 0:56 – Installing Smartmontools on Linux and macOS
  • 1:37 – Identifying your disks
  • 2:22 – Enable SMART stats if needed
  • 3:21 – Running a basic self assessment test
  • 3:39 – Getting a ton of SMART stats on your drive
  • 4:00 – Device information
  • 4:26 – Important SMART stats for lifetime, power and errors
  • 9:14 – Calculating total bytes written
  • 10:42 – No errors hopefully
  • 10:54 – Extended temperature information
  • 11:14 – Subset of similar SMART info
  • 11:38 – SMART stats are available on HDDs too

How do you monitor your drive’s health? Let me know below.

Never Miss a Tip, Trick or Tutorial

Like you, I'm super protective of my inbox, so don't worry about getting spammed. You can expect a few emails per year (at most), and you can 1-click unsubscribe at any time. See what else you'll get too.



Comments