SSD health

How Long Will My Mac’s SSD Last?

Nobody can honestly give you an SSD failure date. But two dated NVMe readings, a Percentage Used slope, and explicit uncertainty can produce something useful: a conditional wear trend instead of a fake countdown.

How long will my Mac’s SSD last?

No honest date exists. The closest defensible answer is a trend built from at least two readings of the NVMe health log, separated by real time, using the slope of Percentage Used and a written statement of what the projection assumes.

That definition matters. A snapshot tells you state; a trend tells you change. If your Mac reports 2% Percentage Used today, you know what its controller reports today. You do not know whether the value reached 2% last week or eighteen months ago, whether your current workload resembles its earlier workload, or when the next whole-percentage step will appear.

An honest trend therefore needs three ingredients:

  1. At least two dated readings. One point has no slope. More than two is much better because Percentage Used moves in coarse 1% steps.
  2. The Percentage Used slope. Measure percentage points per month, then invert that value to get months per displayed percentage point.
  3. Explicit uncertainty. State that the calculation assumes future workload resembles the observed interval; Percentage Used is the manufacturer’s model, not a physical measurement of every NAND cell; write amplification is hidden; and Apple supplies no consumer TBW rating against which to check the result.

Even then, the result is a scenario: “At the last four months’ pace, the displayed endurance estimate would take decades to reach 100.” It is never “your SSD will die in 2058.”

That distinction is not legal padding. SSDs can fail for reasons unrelated to exhausted write endurance, and the NVMe specification explicitly says that reaching 100% Percentage Used may not indicate subsystem failure. Rising Percentage Used is normal aging. The useful question is whether its slope changes—not whether the number remains frozen forever.

The short version

  • An honest SSD wear trend needs at least two dated readings, a Percentage Used slope, and an uncertainty statement. It never produces a failure date.
  • NVM Express defines Percentage Used as the vendor’s estimate of consumed endurance; it has 1% granularity, can exceed 100, and is not a countdown clock.
  • Data Units Written is a finer host-write odometer. SNIA’s write-amplification definition explains why it still cannot reveal physical NAND writes without vendor telemetry.
  • Apple publishes SSD capacities but no model-specific consumer TBW rating for its internal storage. Importing a Samsung or Crucial rating creates a denominator Apple never supplied.
  • The measured starting point here—34.1 TB written, 2% used, 1,421 power-on hours, 100% Available Spare—is one snapshot. Useful evidence, but no slope and therefore no lifespan projection.
TWO READINGS → A CONDITIONAL FAN, NEVER A DATE Percentage Used → month 0month 4years → 2% 3% · hypothetical at the hypothetical pace: decades to displayed 100 sustained heavy pace: ~a decade assumes future workload ≈ observed interval time to DISPLAYED 100 — not a failure date reading 2 here is hypothetical — the method needs YOUR second dated reading; one snapshot has no slope
The whole method in one picture: two dated readings make a slope; the slope makes a conditional fan, not a countdown. The green and coral branches are scenarios that inherit every assumption written on the chart — which is exactly why an honest tool shows the fan and refuses to print a date.

What the five NVMe counters actually mean

One applicability check before any arithmetic: this method needs a drive that actually exposes the NVMe health log. Current smartmontools reads the internal Apple Silicon NVMe log natively, but external enclosures and older SATA drives often expose different fields or none — if smartctl shows no Percentage Used or Data Units Written for a drive, the arithmetic below does not apply to it, and no substitute value should be invented. (For that case, see External drive SMART “Not Supported” on Mac.)

A Mac SSD wear-level check becomes much easier once each counter is kept in its own lane. These five fields answer different questions.

Percentage Used: the vendor’s endurance estimate

NVM Express defines Percentage Used as a vendor-specific estimate of the portion of subsystem life consumed, based on actual usage and the manufacturer’s prediction of NVM life. The field is reported in whole percentage points. It is allowed to exceed 100; values above 254 are represented as 255.

Three consequences follow.

First, 2% does not mean that someone measured every NAND cell and found exactly 98% of its physical life intact. It means the controller’s model currently reports 2% used.

Second, the field is coarse. A display that remains at 2% for months may still be moving internally toward the next step. When it changes to 3%, the underlying boundary could have been crossed anywhere between your readings.

Third, 100 is not a scheduled death. It marks consumption of the vendor’s estimated endurance, not an appointment with failure. Treat Percentage Used as a slow gauge whose slope can support planning—not as an SSD health percentage that promises a remaining lifetime.

Data Units Written: the host-write odometer

Data Units Written counts data the host sent to the controller. One raw NVMe unit represents 1,000 × 512 bytes, or 512,000 host bytes, with the reading rounded up to a whole unit.

host bytes written ≈ raw Data Units Written × 512,000

The measured Mac reported 66,712,577 raw units:

66,712,577 × 512,000
≈ 34,156,839,424,000 host bytes (a reported byte equivalent — the counter is rounded up to a whole unit, so this can overstate by at most one 512,000-byte unit)
≈ 34.1 decimal TB

Because this counter has much finer resolution than Percentage Used, its slope is the useful supporting witness. If host TB per month accelerates and the long-term Percentage Used slope later accelerates too, the two counters tell a consistent story: the workload changed.

They are not measuring the same thing. Data Units Written is host traffic. SNIA defines write amplification as physical NAND writes divided by host writes; garbage collection, wear levelling, and other controller work remain invisible unless the vendor exposes NAND-write telemetry. For the rate-and-baseline method, see How Much SSD Writing Is Normal on a Mac?.

Available Spare: a different axis

Available Spare is the normalized percentage of remaining spare capacity. That reserve gives the controller room for background operation and for replacing blocks that become unusable. It is not another name for Percentage Used, and it is not a count of failed blocks.

A reading of 100% Available Spare alongside 2% Percentage Used is perfectly coherent. One field describes the vendor’s endurance estimate; the other describes the remaining reserve. Do not average them, subtract one from the other, or combine them into a homemade health score.

A falling Available Spare value deserves attention because it says reserve capacity is being consumed. Falling below the controller’s Available Spare Threshold is one of NVMe’s critical-warning conditions.

Power-On Hours: the workload denominator

Power-On Hours records controller operating hours, although the specification notes that some non-operational low-power time may not be counted. It is not the Mac’s calendar age.

Its best use is as a workload-intensity denominator:

host GB per power-on hour =
(Data Units Written delta × 512,000 ÷ 1,000,000,000)
÷ Power-On Hours delta

The measured snapshot—34.1 TB across 1,421 power-on hours—works out to roughly 24 GB per recorded power-on hour over the counter’s entire history. That folds light days, heavy jobs, updates, imports, builds, sleep, and every other historical workload into one average. It cannot tell you the recent pace and should not be converted into a calendar failure date.

Across two readings, however, the change in Power-On Hours helps distinguish “more writes because the controller was active longer” from “more writes during each active hour.”

Media and Data Integrity Errors: the actual red flag

Media and Data Integrity Errors counts occasions when the controller detected an unrecovered integrity error, including conditions such as uncorrectable ECC, CRC failure, or an LBA tag mismatch.

That is categorically different from Percentage Used rising. Percentage Used moving from 2% to 3% is ordinary consumption of estimated endurance. A new unrecovered media-error count is evidence that data could not be handled correctly.

The measured snapshot above does not include this field, so I will not quietly assume it was zero. Record it explicitly in every future reading. New increments, especially alongside critical warnings or falling Available Spare, outrank any speculative lifespan calculation.

FIVE COUNTERS · FIVE DIFFERENT QUESTIONS PERCENTAGE USED answers: how much of the vendor’s predicted endurance is consumed (2% here) can’t: date failure · may exceed 100 1% steps · vendor model, not NAND measurement DATA UNITS WRITTEN answers: how much the host wrote — 66,712,577 raw × 512,000 ≈ 34.1 TB can’t: reveal NAND writes write amplification invisible (SNIA) AVAILABLE SPARE answers: is the controller consuming its reserve blocks? (100% here) can’t: measure consumed endurance a different axis — don’t mix with %Used POWER-ON HOURS answers: how intense is the use per operating hour? (1,421 h here) can’t: stand in for calendar age some low-power time may not count MEDIA & DATA INTEGRITY ERRORS answers: did data fail an integrity check? — the actual red flag can’t: explain its own cause outranks any lifespan arithmetic
Keep each counter in its own lane. Four of them describe aging and workload; only the last one describes data actually failing. A homemade “health score” that blends them answers no question at all.

How to build the two-readings trend

Start by saving a complete, dated record: Percentage Used, raw Data Units Written, Available Spare, Power-On Hours, Media and Data Integrity Errors, and any Critical Warning value.

Then wait through a meaningful interval. A month or more is a sensible minimum for the whole-percentage wear field, although you can deliberately bracket a known heavy workload over a shorter window to measure its Data Units Written slope. More readings over several months are far better than two endpoints.

For readings A and B:

Percentage Used slope per month =
(Percentage Used B − Percentage Used A)
÷ elapsed calendar months

months per displayed 1% =
1 ÷ Percentage Used slope per month

host TB per month =
(Data Units Written B − Data Units Written A)
× 512,000 ÷ 1,000,000,000,000
÷ elapsed calendar months

One branch matters before any of that arithmetic: if both readings show the same Percentage Used — 2% and then 2% again — you do not have a slope. You have censoring. Do not divide by zero, and do not read the flat display as infinite life; the honest report is that the displayed field has not stepped yet. Lean on the finer Data Units Written slope for that interval and keep collecting readings.

Keep the raw observations beside the result. “0.25 percentage point per month” is much less useful if nobody remembers that it came from a single 2%-to-3% step. The 1% display granularity means the true crossing time is interval-censored: it happened somewhere between two observations, not necessarily on the day of reading B. The same resolution honesty applies to Data Units Written — the counter reports whole 512,000-byte units, rounded up, so every conversion and slope here is an estimate at the counter’s reporting resolution, not an exact byte count.

I would keep at least three views:

  • Calendar slope: Percentage Used and host TB per month.
  • Intensity slope: host GB per additional Power-On Hour.
  • Workload note: what the Mac was actually doing during the interval.

That last line stops a six-month video project, VM-heavy development cycle, or migration from being mistaken for an eternal baseline. The arithmetic is easy. Preserving its context is the real work.

A worked example using the measured 2% snapshot

The real starting snapshot is:

Data Units Written:       66,712,577 raw units [34.1 TB]
Percentage Used:          2%
Power-On Hours:           1,421
Available Spare:          100%

This tells us that the controller reports 2% used after 34.1 TB of host writes and 1,421 recorded power-on hours. It gives us no Percentage Used slope. Dividing 2% by 1,421 hours would pretend the displayed estimate rose linearly from the first hour and that every historical workload was equivalent. Neither assumption is justified.

Now add a clearly hypothetical second reading. Suppose the display changes from 2% to 3% four calendar months later:

displayed slope = (3% − 2%) ÷ 4 months
                = 0.25 percentage point per month

months per displayed 1% = 1 ÷ 0.25
                         = 4 months

At the newer reading, 97 displayed percentage points separate 3 from 100:

conditional time to displayed 100
= 97 × 4 months
= 388 months
≈ 32 years

The honest sentence is: “At the last four months’ displayed pace, and only if future workload and the vendor’s model behave like this interval, the Percentage Used field would take roughly three decades to reach 100.”

It is not “32 years left.” It does not predict failure, and it is especially fragile because it rests on one whole-percentage step.

Now show a conditional range instead of hiding the workload assumption. If a sustained heavy workload later makes the measured slope three times steeper:

illustrative heavier slope = 0.75 percentage point per month

conditional time to displayed 100
= 97 ÷ 0.75
≈ 129 months
≈ 11 years

That produces a scenario fan: roughly three decades at the hypothetical four-month pace, roughly a decade at a sustained pace three times steeper. Both numbers describe time to the vendor estimate reaching 100 under linear extrapolation. Neither number is a drive-failure forecast.

A denser reading history should widen or narrow that range based on evidence. If the slope returns to its earlier pace after a heavy project ends, the heavy line stops being the relevant scenario. If it stays steeper across ordinary-work intervals and the Data Units Written slope agrees, the change is real enough to investigate.

Why SSD-life calculators lie about precision

A failure-date calculator usually performs some version of this:

claimed life = assumed TBW rating ÷ current writes per day

It looks scientific because the output contains decimals. On an internal Mac SSD, both sides can be wrong.

The denominator is often a retail Samsung or Crucial TBW rating pasted onto Apple storage. Apple’s current MacBook Pro specifications publish capacities, not a model-specific consumer endurance rating. Different controller, NAND, firmware, capacity layout, qualification workload, and warranty terms mean a borrowed figure is not conservative. It is unrelated.

The write rate is usually assumed constant. Real Macs are not. A restore, large import, development project, local-model experiment, or VM-heavy month can create a slope that disappears when the workload ends. A lightly used Mac can acquire a persistent background writer. Extrapolating either interval forever is storytelling.

The host-write count also omits write amplification. Without vendor NAND telemetry, the calculator cannot know the physical-write numerator SNIA’s definition requires.

Finally, a published endurance rating is a qualification and warranty boundary, not a fuse. A drive may continue operating well beyond its rated write figure; others fail earlier for unrelated electronic, firmware, power, or media reasons. NVMe Percentage Used reaching 100 may not mean failure, and a low value cannot guarantee safety.

Howard Oakley’s measured iMac Pro is a useful example precisely because it is one Mac, not a universal law. He reported about 150 TB written over more than seven years, averaging just under 60 GB/day. That describes his production workload. It does not turn 60 GB/day into a safe limit or validate a death-date formula for your Mac. His measured example is here.

What a sudden slope change means

A rising Percentage Used value is normal. A changed slope is the interesting part.

Do not overreact to one 1% step. Because the field is coarse, a change from 2% to 3% may merely reveal progress that accumulated invisibly for months. Confirm it with later readings and with the finer Data Units Written slope.

A credible change looks like this:

  • host TB per comparable month rises;
  • host GB per Power-On Hour rises;
  • the workload note does not explain the difference, or the heavy workload has already ended;
  • later Percentage Used readings remain consistent with the steeper pace.

That is evidence of changed write behavior, not proof that the SSD is failing. The next question is “who is writing?” Activity Monitor supplies accumulated process counters; live filesystem tracing supplies paths and events; the NVMe log supplies the device total. Joining those layers by time is the method in Which App Is Writing to My Mac’s SSD?.

Updates, imports, exports, restores, sync and builds can all create legitimate bursts. Investigate a rate that remains elevated after the corresponding work ends, or one that changes while the workload is otherwise comparable.

When to actually worry

Wear trend and present data safety are separate questions. A shallow wear slope does not cancel an integrity error.

Pay attention when:

  • Available Spare falls repeatedly, especially toward or below its threshold. That indicates the controller’s reserve is being consumed.
  • The Media and Data Integrity Errors counter increases. A new unrecovered error is a materially different signal from ordinary endurance aging.
  • A Critical Warning appears, including degraded reliability, spare below threshold, read-only mode, or another controller-reported critical condition.
  • The Data Units Written slope changes sharply and stays changed after the known workload ends. Attribute the writer; do not label the drive failed from write volume alone.
  • macOS, Disk Utility, smartctl, or the controller reports an actual failure condition. Verify current backups first; lifespan arithmetic becomes secondary.

Conversely, 2%, 10%, or another low Percentage Used number is not an all-clear. Electronics and firmware can fail before write endurance is consumed. A high number is not a scheduled death either. For the failure-warning and backup side—including what SMART can miss—read Is My Mac’s SSD Failing? What SMART Can and Can’t Tell You.

Where CoreGuard fits

The manual method is complete. smartmontools supplies the NVMe readings, a spreadsheet preserves them, and the arithmetic above builds the trend. CoreGuard does not possess a secret counter that changes the physics.

What it removes is the memory chore.

In Free, basic SSD health and danger warnings remain visible. If a dangerous condition appears, you do not pay to see it. The abnormal per-app write warning is also free and names the process responsible when its write behavior becomes unusual.

Pro keeps the endurance detail: lifetime host TB written, power-on hours, raw SMART fields, and the wear trend over time. Its “years left”-style view applies the same two-readings-plus-slope method automatically, but it remains a conditional projection. It assumes future workload resembles the observed history and inherits the uncertainty of the vendor’s Percentage Used model, 1% granularity, hidden write amplification, and Apple’s unpublished TBW.

CoreGuard explicitly does not predict a failure date. The trend is evidence for your judgment: whether the recent pace is stable, whether a heavy period ended, whether the slope changed, and whether the supporting counters agree.

That distinction also preserves the Free/Pro line. Danger visibility is free. Pro sells the retained history and endurance detail—not privileged access to a warning that something is wrong. CoreGuard observes the system; it does not throttle writers, alter apps, disable services, or claim to change SSD endurance.

How to build an honest SSD wear trend for your Mac

  1. Install smartmontools and identify the disk: smartctl is not built into macOS. Install the free, open-source package with brew install smartmontools, run diskutil list internal physical, and use the internal identifier it reports—disk0 on most Macs, but substitute yours.
  2. Take reading 1: Run smartctl -a disk0 with the correct identifier and save the date, Percentage Used, raw Data Units Written, Available Spare, Power-On Hours, Media and Data Integrity Errors, and Critical Warning. If access is denied, rerun only the read with sudo; if the output shows no NVMe health section at all (no Percentage Used or Data Units Written), this method does not apply to that drive — do not invent substitute values.
  3. Wait through a real interval: Wait at least a month for a general wear trend, or deliberately bracket a known heavy workload. Keep a short note describing what the Mac did during the interval.
  4. Take reading 2: Run the same command against the same device and save the same raw fields. More than two readings are preferable because Percentage Used moves in whole-percentage steps.
  5. Compute both slopes: Percentage Used per month is the displayed-point delta divided by elapsed calendar months; if the displayed value has not stepped, record "no %Used slope yet" instead of dividing by zero and rely on the Data Units Written slope. Host TB per month is the raw Data Units Written delta × 512,000 ÷ 1,000,000,000,000 ÷ elapsed months; also compare host GB per added Power-On Hour.
  6. Project a conditional range: Convert the Percentage Used slope to months per displayed 1%, then show at least two workload scenarios. Label them as time to the displayed estimate reaching 100 under stated assumptions—never as a failure date.
  7. Re-read quarterly and watch for changes: Keep the series, compare like workloads, and focus on slope changes, falling Available Spare, new media errors, and Critical Warnings rather than treating the absolute Percentage Used number as a verdict.

Terms used in this guide

  • Percentage Used: A vendor-specific NVMe estimate of consumed endurance based on usage and the manufacturer’s prediction. It has 1% granularity, may exceed 100, and is not a failure countdown.
  • Data Units Written: The cumulative host-write counter. One raw unit represents 1,000 × 512 bytes, or 512,000 host bytes, rounded up.
  • Available Spare: A normalized percentage of remaining spare capacity available to the controller. It is a reserve axis, not another endurance percentage.
  • Power-On Hours: Controller operating hours, potentially excluding some non-operational low-power time. Useful as a workload-intensity denominator, not as calendar age.
  • TBW: Terabytes written. It can mean an observed lifetime host-write total or a manufacturer’s rated endurance; Apple exposes the former but publishes no model-specific consumer rating for its internal SSDs.
  • Write amplification: Physical NAND writes divided by host writes. It reflects controller-internal work and cannot be calculated from Data Units Written alone without NAND-write telemetry.

Frequently asked questions

How long will my Mac’s SSD last?

No honest failure date exists. You can build a conditional trend from at least two dated Percentage Used readings, supported by Data Units Written, while stating that future workload and the vendor’s endurance model may change.

What does Percentage Used mean on a Mac SSD?

It is the NVMe controller vendor’s estimate of consumed endurance, based on usage and the manufacturer’s prediction of device life. It has 1% granularity, can exceed 100, and is not a countdown to failure.

Is 2% SSD usage good?

Yes—it is a low vendor-reported endurance-use estimate, but it is only one axis and one snapshot. It does not rule out media errors, critical warnings, or unrelated failure, and it cannot reveal a wear slope without later readings.

Can an SSD last 10 years?

Yes—an SSD can remain usable for ten years or longer, but no counter can promise that outcome for an individual drive. Electronics, firmware, workload, media integrity and write endurance are separate failure paths.

What SSD percentage should I worry about?

There is no universal panic percentage. Watch for a sustained slope change, falling Available Spare, new Media and Data Integrity Errors, or a Critical Warning; Percentage Used reaching 100 means estimated endurance was consumed, not that failure occurs on that reading.

See what your Mac is actually doing.

CoreGuard is a local-only Mac health monitor: live CPU, temperatures, fan RPM, and the top process named in plain English — with history, so a spike you missed is still there when you look. It observes and explains; it never touches, deletes, or “fixes” your files.

launching soon · one-time purchase, not a subscription · 30-day money-back · local-only, zero telemetry

Sources & further reading

Related reading

All insights