External monitor not detected on Mac: diagnose and fix it from the Terminal
Find out whether macOS detects your external monitor, re-apply a working display mode with displayplacer, and verify the connection is healthy.
What this covers
When an external monitor shows nothing or macOS acts like it isn't there, the cause is usually either a failed physical connection or a stale display mode the system can't recover from on its own. This guide walks you through detecting the problem at the hardware level, forcing the display back to a working mode, and verifying the fix — all from the Terminal.
Symptom
Check whether macOS actually sees the display
Before touching cables or settings, find out if the monitor is detected at the hardware level. This report lists every display macOS knows about, its resolution, scaled modes, and the graphics chip driving it. If your external monitor appears here, the connection works and the issue is likely layout or resolution — go straight to the fix. If it's missing entirely, the problem is physical (cable, adapter, port) and no software fix will help until it shows up.
system_profiler SPDisplaysDataType prints every connected display's resolution, scaled modes, and graphics chip.
$ system_profiler SPDisplaysDataTypeRe-apply the display's mode with displayplacer
Once the monitor is detected, a common cause of 'not detected' symptoms is a stale or invalid saved mode: the screen is black, sleeping, or stuck at a resolution it can't use. Install displayplacer and list the current screen IDs and modes, then re-apply a mode you know the monitor supports. This forces macOS to re-initialize the output, which usually brings a stubbornly dark or misconfigured monitor back to life. Save the working arguments so you can restore them later.
Use the displayplacer utility to list screen IDs and modes, change resolutions, rotate screens, set the primary display, and arrange multi-monitor layouts — all from the macOS command line.
$ brew install displayplacer && displayplacer list▾ Undo
$ Run `displayplacer list` before changing anything and re-apply the saved args later, e.g. displayplacer "id:<screenId> res:<width>x<height> hz:<num> color_depth:<num> scaling:<on/off> origin:(<x>,<y>) degree:<0/90/180/270>"Confirm the monitor reports a healthy connection
Run the filtered display report one more time and check that your external monitor appears with a sensible resolution, display type, and connection type (e.g. DisplayPort or HDMI). Seeing the expected connection and resolution lines means the link is stable end-to-end — the monitor is detected, initialized, and driving pixels. If it drops off the list again, the fault is intermittent hardware: try a different cable, adapter, or port.
List every connected monitor's model, resolution, and connection type from the Terminal.
$ system_profiler SPDisplaysDataType | grep -E 'Resolution|Display Type|Connection|Chipset'How to confirm it worked
The external monitor shows a picture and appears in the filtered display report with the expected resolution and connection type.
Undo everything
Every command above can be reverted. Run these in order to undo all of it.
$ Run `displayplacer list` before changing anything and re-apply the saved args later, e.g. displayplacer "id:<screenId> res:<width>x<height> hz:<num> color_depth:<num> scaling:<on/off> origin:(<x>,<y>) degree:<0/90/180/270>"Review before running — some steps may not be independent.
Sources
- system_profiler — hardware reports (macOS man page)Evidence: SPDisplaysDataType reports connected displays, resolutions, UI scaling, color depth and the GPU in use.
- GitHub - jakehilborn/displayplacer: macOS command line utility to configure multi-display resolutions and arrangements. Essentially XRandR for macOS. · GitHubEvidence: Install via Homebrew with brew install displayplacer or visit the releases tab.
Last verified: 2026-09-21
Related guides
Diagnose a stubborn Bluetooth device with system_profiler, then power-cycle Bluetooth and restart bluetoothd to get it connected again.
Step-by-step Terminal guide to fix AirDrop on macOS: check awdl0, restart sharingd, bounce the wireless interface, and verify Bluetooth is healthy.
A terminal-first walkthrough to find what is holding your external disk open on macOS and eject it safely, from quitting apps to forcing an unmount.