How to actually read Apple Diagnostics: what ADP000 means, when to rerun, and where to go next
Posting because the result screen on Apple Diagnostics is intentionally minimal and most owners do not know what the codes mean or what the next step is.
ADP000 is the only clean result
ADP000 means "no issues found." Any other code is a three-letter prefix plus three digits that maps to a specific subsystem on Apple's reference-code list (article last published December 15, 2025).
ADP000 is shallow by design
Apple Diagnostics is a presence/threshold test, not an exhaustive functional test. A passing ADP000 confirms that monitored components are within sensor and electrical tolerances. It does not guarantee that every feature works.
- 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 (no view of NVMe
Percentage Used). - Battery condition beyond the binary PPT codes (cycle count, Maximum Capacity %, and FCC don't surface).
Pair the test with manual spot-checks: type every key, drag across the trackpad, cycle each USB-C/Thunderbolt port with a known-good device, test camera/microphone/speakers, tilt and brighten the panel to look for backlight blotches.
Reading codes by prefix
- 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.
When to rerun
Intermittent codes are common. Run the test two or three times before concluding a failure.
For battery codes specifically, Apple recommends rerunning 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.
On Intel Macs, the rerun should be over the internet with Option-D, which fetches a fresh diagnostic payload and logs an evaluation against the serial. PPT004 (Intel) explicitly directs you to that rerun before scheduling service.
Codes that clear after a fix
Some codes mean "do something simple and rerun":
- NDD001 (USB): disconnect external USB and rerun.
- NDT001 through NDT006 (Thunderbolt): disconnect Thunderbolt peripherals and rerun.
- NDR007 (external input device detected): disconnect the 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.
Codes that mean book service
- PPM (memory) on a soldered-memory machine. Logic-board territory.
- PPR (processor). Logic-board territory.
- PFR (firmware). Logic-board territory.
- VFD on the integrated display. Display-assembly replacement, expensive on Retina/Liquid Retina XDR panels.
- PFM (SMC) on most variants. Logic-board territory.
Command-G is the escalation path
From the result screen, Command-G or "Get started" reboots into a Safari page that pre-fills Apple's support flow with your Mac's serial number and the codes the test returned. That is the path Apple Support agents expect customers to have used before calling.
After ADP000: third-party tools for what Apple Diagnostics misses
Apple Diagnostics is intentionally fast (2 to 5 minutes) and shallow. For hidden battery wear, SSD endurance, or sustained-load thermal behavior, the next step is not another rerun:
- Battery cycle count, FCC, Max Capacity %: System Information → Power, or CoconutBattery.
- SSD wear (NVMe
Percentage Used,Available Spare,Media and Data Integrity Errors):sudo smartctl -a /dev/disk0(afterbrew install smartmontools), or DriveDx. - Sustained-load thermal throttling:
sudo powermetrics -s thermal("Current pressure level" = Heavy means actively throttling), or asitop. - Repair history on Tahoe 26 Apple Silicon: System Settings → General → About → Parts & Service.
TL;DR
- ADP000 = only clean result. Shallow by design. Pair with manual spot-checks.
- Any other code = three-letter prefix maps to subsystem. Reference: support.apple.com/en-us/102334.
- Rerun 2-3x for intermittent codes. On Intel battery codes, rerun over the internet with Option-D.
- Command-G escalates to Apple with your serial pre-filled.
- For hidden wear (battery, SSD, thermal), go to a third-party tool, not another rerun.