SMART data straight onto a label: how we mapped our SSD stock

Lars ·27 August 2026

SMART data straight onto a label: how we mapped our SSD stock

Every hosting company has them: boxes and drawers full of loose SSDs and hard drives. Left over after an upgrade, swapped out during maintenance, or included with a second-hand server. The sticker tells you the model and the capacity, but not the one thing that actually matters: how much life is left in it?

Our pile was growing steadily. So we built a tool that solves that in a single action: drive into the dock, and a label rolls out of the printer with that drive's health on it. The result was honestly a bit confronting, because quite a lot of it could go straight in the bin.

The tool is open source on GitHub, so you can use it yourself. In this article we explain why we built it, what SMART data actually tells you, and how it works under the hood.

The problem: a drawer full of drives without a story

Without testing it, you know essentially nothing about a loose SSD. Model and capacity say nothing about wear: a 1 TB SSD might be fresh out of the box, or it might have spent years in a busy server. And that difference is exactly what decides whether you can still do anything with it.

You can of course work it out by hand: connect it, run smartctl, scroll through the output, note it down somewhere. Count on a few minutes per drive. With twenty drives you have lost a morning, and halfway through you have lost track of which drive was which.

That last part is the real problem. A row in a spreadsheet is not stuck to the drive. A label is.

What SMART data tells you

SMART stands for Self-Monitoring, Analysis and Reporting Technology. Every modern SSD and hard drive keeps its own statistics about use and wear. A few values that genuinely matter:

  • Endurance or percentage used: how much of the estimated write lifespan has already been consumed. For SSDs this is by far the most important number.
  • Reallocated and pending sectors: sectors that have been remapped or are suspect. On hard drives, a classic warning sign.
  • Power-on hours and power cycles: how long and how often the drive has been running.
  • Total bytes written: how much data has been written to the drive in total.
  • Temperature and overall health: the temperature during the test, and the verdict the manufacturer itself reports.

The tricky part is that you get those values back as a wall of text with dozens of raw attributes, named slightly differently and expressed in slightly different units by every manufacturer. Fine for judging one drive. Unworkable when you want to go through an entire stock.

Our solution: SMART data straight onto a label

So we built smart-labels. The way it works is deliberately simple:

  • Connect: drive into a USB dock, that is all you have to do.
  • Detect: the tool recognises the drive through both WMI and the Windows Storage layer, so docks that report themselves as SCSI are picked up too.
  • Read: the SMART data is retrieved with smartctl, automatically trying SAT as well as the USB-to-NVMe bridge protocols from ASMedia, JMicron and Realtek.
  • Assess: all those separate values are translated into a single verdict: GOOD, CHECK or BAD.
  • Print: out comes a label with that verdict, plus the model, serial number, a scannable Code 39 barcode, capacity, drive type, remaining endurance, temperature, power-on hours and the test date.

Under the hood it is a single PowerShell script with no further dependencies. No runtime to install, no SDKs: it runs on a stock Windows 10 or 11 machine and prints through the regular Windows printer driver. smartmontools is downloaded automatically on first run. The label design scales itself to your label size (89 x 28 mm by default) and drops the barcode automatically when there is not enough room to print it legibly.

GOOD, CHECK or BAD: how the verdict is reached

That verdict on the label is not a wild guess. These are the thresholds we use:

  • BAD: SMART overall status FAILED, uncorrectable sectors, an NVMe critical warning, media errors or spare below the threshold, ten or more reallocated sectors, or less than 10% endurance left.
  • CHECK: a few reallocated or pending sectors, or less than 30% endurance left.
  • GOOD: none of the above.

One nuance that often goes wrong: UDMA CRC errors are reported on the label, but they do not count towards the verdict. They almost always point at a cable or a dock, not at a problem with the drive itself. Count them anyway, and you end up rejecting perfectly good drives.

The remaining endurance percentage is determined carefully too. First we look at the value smartctl calculates itself, then at the NVMe percentage_used field, and only after that at a life attribute matched by name. And only if the result is a plausible percentage between 0 and 100. That prevents a misread vendor attribute from labelling a healthy drive as worn out.

Assembly-line mode, and a trail you can follow

For one drive a tool like this is overkill; for fifty it makes all the difference. That is why smart-labels has an assembly-line mode: leave the window open, plug drives into the dock one after another, and the labels roll out on their own. A drive that is no longer detected at all still gets a BAD label with a single keypress, because a dead drive is something you also want to recognise in the bin.

Every test is written to a CSV log with the date, model, serial number, health and verdict, and a PNG copy of every label is kept. So alongside the physical labels you also have a digital overview of your entire stock, which opens straight in Excel.

What it gets us

  • Stock mapped out: we know per drive what we have, without connecting it again.
  • Faster work: assessing a drive takes seconds instead of minutes.
  • Scannable: the serial number is on the label as a barcode, so logging drives in is a matter of scanning them.
  • Fewer surprises: worn drives are caught immediately, rather than at the worst possible moment.
  • Less waste: what is still fine stays in use, and what is genuinely finished goes to recycling in a controlled way.

That last point matters more to us than it sounds. We run our VPS and dedicated infrastructure on our own hardware in two ISO 27001 certified datacenters in Amsterdam. Owning your hardware also means being responsible for what goes into it, and then you would rather not be guessing based on a sticker.

Want to use it yourself? It is on GitHub

We have released smart-labels as open source on GitHub. You do not need much more than this:

  • Windows 10 or 11 with administrator rights. The script requests elevation via UAC itself, because it needs low-level access to the disk.
  • A USB dock or adapter that passes SMART through. Virtually every modern dock does.
  • A label printer installed as a regular Windows printer: DYMO, Brother, Zebra or a NIIMBOT-style printer, it does not matter.

After that it is a matter of printing a test label to check the alignment, putting the printer name in config.json, and getting started. Label size, number of copies, the footer text and whether you want a barcode: it is all in that same configuration file.

Small script, big difference

This is not exciting technology. SMART has been around for decades and smartctl does the real work. The only thing we added is the last step: getting the data off the screen and onto the label, where it actually gets used.

That is often exactly where the win is with jobs like this. Not in a big system, but in removing the one manual step nobody keeps up consistently.

Running a server or a homelab yourself and want to know how your drives are doing? Feel free to grab the tool from GitHub. Questions or ideas? Ask them through our Discord or open a ticket, we are happy to think along with you!

Back to blog

What are you waiting for?

Did you know that every service can be canceled at any time with no hidden costs?

View the Web hosting packages now