How to use Apple Diagnostics: invocation, ADP000, and what to do next
Apple Diagnostics returns one of two things: ADP000 (no issues found) or a three-letter-plus-three-digit code. ADP000 is shallow by design. Here's how to read the result, when to rerun, and which third-party tool fills which gap.

How to use Apple Diagnostics: invocation, ADP000, and what to do next#
Apple Diagnostics ends in one of two outcomes: ADP000 ("no issues found") or a three-letter-plus-three-digit code that maps to a specific subsystem. ADP000 is the only clean result, and it is shallow by design. The next-step decision depends on which code came back, whether it cleared on a rerun, and which subsystems the test does not check at all.
This walks through the result screen end to end. The invocation procedure (Apple Silicon's power-button path versus Intel's hold-D path) lives in the architecture-by-architecture startup guide; what follows here is what to do once the test finishes.
ADP000: the only clean result, but a shallow one#
A clean run returns the reference code ADP000, which Apple's documentation labels "No issues found." It is the only clean result. Any other code, including codes that the result screen labels as benign or rerun-and-confirm, is a non-zero outcome.
ADP000 is a presence and threshold check, not an exhaustive functional test. A passing ADP000 confirms that monitored components are present and within electrical and sensor tolerances. It does not guarantee that every feature works.
The specific failure modes Apple Diagnostics will not catch:
- A single dead key. NDK001 can miss intermittent stuck keys.
- An intermittent display flicker.
- A Thunderbolt port that fails only at full 40 Gb/s.
- Sustained-load thermal throttling.
- SSD endurance and wear. There is no view of NVMe
Percentage Usedin the Apple Diagnostics output. - Battery condition beyond the binary PPT codes. Cycle count, Maximum Capacity %, and Full Charge Capacity in mAh do not surface in the Apple Diagnostics result.
A passing ADP000 should be paired with manual spot-checks: type every key, drag across the whole trackpad, cycle each USB-C/Thunderbolt port with a known-good device, test camera (Photo Booth), microphone, and speakers, tilt and brighten the panel to look for backlight blotches or flexgate, connect Wi-Fi, pair Bluetooth.
Reading any other code: the three-letter prefix#
Any code other than ADP000 follows the format three-letter prefix plus three digits. The prefix identifies the subsystem, and the three digits identify the specific failure mode within that subsystem. The authoritative mapping is on Apple's "Apple Diagnostics reference codes" article (last published December 15, 2025).
The most common prefixes:
| Prefix | Subsystem |
|---|---|
| ADP | No issues found |
| PPT | Battery |
| PPM | Memory |
| PFM | System Management Controller / Power Management Unit |
| PFR | Firmware |
| PPR | Processor |
| PPF | Fan |
| PPN | Power-management system |
| PPP | Power adapter |
| VDH | Storage device |
| VFD | Display or graphics processor |
| NDC | Camera |
| NDD | USB |
| NDK | Keyboard |
| NDL | Bluetooth |
| NDR | Trackpad |
| NDT | Thunderbolt |
| CNW | Wi-Fi |
| CNT | Ethernet |
| VFF | Audio |
Rerun two to three times for intermittent codes#
Apple Diagnostics is short, and intermittent codes are common. Run the test two or three times before concluding a failure.
For battery codes specifically, Apple recommends rerunning the diagnostic to confirm before paying for service. macOS sometimes flags a healthy battery for service after a major update, and a single PPT code does not necessarily mean the cell is failing. Documented cases show macOS flagging Service Recommended at very low cycle counts (155 or 179 cycles) on perfectly healthy batteries.
On Intel Macs, the rerun should be over the internet with Option-D. The online path retrieves a fresh diagnostic payload from Apple's servers and logs an official evaluation against your serial. PPT004 on Intel explicitly directs you to that rerun before scheduling service.
Codes that clear after a simple fix#
Some codes mean "do something simple, then rerun." Apple's reference article calls these out explicitly:
- NDD001 (USB): disconnect external USB devices and rerun.
- NDT001 through NDT006 (Thunderbolt): disconnect Thunderbolt peripherals and rerun.
- NDR007 (external input device detected): disconnect the input device and rerun.
- PPP001 through PPP008 (power adapter): verify the correct adapter, reconnect, rerun.
- CEH001 and CEH002 (case handle / housing latch): fully lock the latch and rerun.
- PPT021 (battery charge too low to complete test): charge to ≥6% and rerun.
- PPP017 (both ports of Apple 35W Dual USB-C in use): use only one charging port during the test.
- VFD010 (Apple I/O card): reseat the card and rerun. If the card was uninstalled, the code is expected.
These are the most common "false alarms" on test runs. Disconnect external peripherals before the first run to avoid them altogether.
Codes that mean book Apple service#
Other codes point to logic-board territory and are not user-serviceable on a modern Mac:
- PPM (memory) on a soldered-memory Apple Silicon machine. The RAM is not separately serviceable. Logic-board replacement.
- PPR (processor). Logic-board replacement.
- PFR (firmware). Logic-board replacement.
- VFD on the integrated display. Display-assembly replacement, expensive on Retina and Liquid Retina XDR panels.
- PFM (SMC) on most variants. Logic-board replacement.
Many modern codes trace back to liquid ingress or thermal stress severing a communication trace on the board. SMC/PMU faults (PFM001 through PFM007) typically indicate a broken data or clock line between the controller and a sensor, which is characteristic of liquid corrosion attacking pull-up resistors or trace lines.
Battery codes are graded, not binary#
Battery codes (PPT prefix) are not all equivalent:
- PPT001: battery not detected. Logic-board territory.
- PPT002 / PPT003 / PPT007: battery needs replacement soon; still functioning, holds less charge. You can keep using the Mac while planning a battery service.
- PPT004: battery requires service. Intel: rerun over the internet with Option-D before scheduling. Apple Silicon, or after a confirming Intel rerun: book service.
- PPT005: battery not installed properly. Shut down. Logic-board / service territory.
- PPT006: battery requires service. Abnormal behavior possible.
- PPT021: charge too low. Charge to ≥6% and rerun.
A single PPT code rarely means the Mac is failing. Batteries are designed to be serviced, and PPT002/003/007 explicitly mean "you can keep using it."
Command-G is the Apple-recommended escalation path#
From the result screen, the available options are:
- Command-R or "Run the test again." Reruns the diagnostic. Useful for intermittent codes.
- R. Restart normally.
- S. Shut down.
- Command-G or "Get started." Reboots to a Safari page that pre-fills Apple's support flow with your Mac's serial number and the codes the test returned.
Command-G is the path Apple Support agents expect customers to have used before calling. The pre-filled Safari page logs the codes against your serial and walks you into Apple's service-scheduling flow.
What comes after ADP000: third-party tools for hidden wear#
Apple Diagnostics is intentionally fast and shallow. For hidden battery wear, SSD endurance, or sustained-load thermal behavior, the next step is not another Apple Diagnostics rerun. It is a different tool entirely:
- Battery cycle count, FCC, Max Capacity %. System Information → Power. CoconutBattery for the IOKit register read alongside.
- SSD wear.
sudo smartctl -a /dev/disk0afterbrew install smartmontools. DriveDx wraps the same data with trend logging. The field-by-field decoding of NVMe SMART on Apple Silicon covers what each field means and the Apple quirks (Available Spare Threshold often reported as 99 rather than 10). - Sustained-load thermal throttling.
sudo powermetrics -s thermalreports "Current pressure level" (Nominal, Moderate, Heavy, Trapping). Heavy means the Mac is actively throttling. asitop is the htop-style live view. The first-14-days stress-test protocol walks the workflow. - Repair history on Tahoe 26 Apple Silicon. System Settings → General → About → Parts & Service. The field guide to the Parts & Service pane covers what each label means and which components the pane tracks.
These four tools fill the four largest gaps in Apple Diagnostics. None of them replaces the test; they extend it.
What this means for the reader#
Apple Diagnostics is a fast, narrow test, and the result screen is intentionally minimal. ADP000 is the only clean result, but it is a presence pass, not a functional pass. Any other code maps to a subsystem and is graded by severity, with some clearing after a simple fix and others meaning logic-board territory.
Rerun two or three times for intermittent codes. On Intel battery codes, rerun over the internet with Option-D. Command-G is the Apple-recommended escalation path that pre-fills your serial number into the support flow.
For the hidden failure modes Apple Diagnostics does not check (cycle count, SSD wear, thermal throttling, repair history), the next step is a third-party tool, not another rerun. The same diagnostic data, packaged into a device-bound, shareable record that survives the screenshot-fabrication problem, is what a tamper-proof Mac diagnostic record is for. For the wider workflow this slot fits into, the 2026 Mac diagnostics pillar reference covers the rest.
Related posts
Apple Diagnostics: how to start the test on Apple Silicon and Intel Macs
Apple Silicon Macs start Apple Diagnostics from the startup-options window with Command-D, not the old hold-D-at-boot keystroke. Here's the exact sequence on both architectures and what to disconnect before you start.
Mac diagnostics: the complete 2026 guide
Apple Diagnostics is the only Apple-sanctioned hardware test built into every Mac since 2013, and a clean run returns reference code ADP000. This is the full 2026 guide: how to run it, the technician-only stack that isn't accessible to you, and the third-party tools (CoconutBattery, smartctl, DriveDx, EtreCheck) that fill the gaps Apple deliberately hides.
How to run diagnostics on a Mac: every method compared
There are five consumer-accessible ways to test a Mac's hardware health (Apple Diagnostics, CoconutBattery, smartctl, DriveDx, EtreCheck) and one technician-only stack you cannot run yourself. Each answers a different question. Running one is not running all five.

Written by
Marcus WilliamsMarcus Williams covers Mac hardware and repair for Macfax. He spent six years on the bench at an Apple Authorized Service Provider in the Pacific Northwest before going independent, most of that time on logic-board repair, display assembly swaps, and the failure patterns Apple's diagnostics don't surface. He writes about what's inside a Mac, what breaks first, and what a serial number can and can't tell you about a unit's history.
More posts by Marcus →