WindowServer using high CPU on Apple Silicon
After this, WindowServer settles back to single digits at idle and the fans stop spinning up over nothing.
On this page
WindowServer is the process that draws everything on screen, and it spikes hard when it has to composite something continuously — most often a non-native ("scaled") resolution on an external display, or a transparency/blur effect being redrawn in real time. Switch the display to its native resolution and turn off Reduce Transparency first; both are one-time settings changes, not bugs to route around every time.
Why this happens
WindowServer isn't optional background bloat — it's the compositor that owns every pixel macOS draws, and its CPU cost scales directly with how much real-time image processing your display setup demands. The single biggest trigger reported by Mac users is an external 4K/5K monitor running a scaled ("looks like") resolution instead of its native one: macOS has to continuously upscale or downscale the entire framebuffer, which has been observed pushing idle WindowServer CPU from roughly 5% up to 60% on the same machine. The second most common cause is the system-wide transparency effect (the blur macOS draws behind menus, Control Center, and window edges) — real-time blur compositing is genuinely expensive, and disabling it measurably cuts WindowServer load.
Neither of these is unique to a specific Apple Silicon generation, but a Mac already running warm — see mac fan loud and stuck at max — will feel a sustained WindowServer spike more acutely than one with headroom to spare. If the spike specifically coincides with a display connecting, waking, or being rearranged, check external monitor detection after sleep too — the same handshake problems that make a monitor vanish can also leave WindowServer renegotiating a bad configuration repeatedly.
Fix it
-
If you're using an external display, open System Settings → Displays and check the resolution setting. If it's set to one of the scaled options rather than "Default for display," switch it to Default (native). This is the single most impactful fix and needs no Terminal command — the compositing load drops the moment you change it.
-
Turn off the transparency effect: System Settings → Accessibility → Display → Reduce Transparency. This removes the real-time blur pass entirely rather than just making it look flatter.
-
Confirm WindowServer is actually the process responsible, rather than something else that merely looks similar in Activity Monitor:
Reads the system
What it does: lists the top CPU-consuming processes right now.
After: nothing changes, this only reads.
ps -Ao pid,pcpu,comm | sort -k2 -rn | head -8Activity Monitor has no built-in GPU% column as of current macOS, so if you want to see the GPU side of the same load rather than just CPU, sample it directly:
Reads the system
What it does: samples current GPU power draw and active-residency percentage.
After: nothing changes, this only reads. Asks for your password since it needs root to read SMC sensors.
sudo powermetrics --samplers gpu_power -i1000 -n1A high GPU active-residency percentage here alongside high WindowServer CPU confirms it's genuinely a compositing/rendering load, not something else coincidentally named similarly.
Still broken?
Verified on
| Chip | macOS | Verified |
|---|---|---|
| M1 (MacBook Air) | 26.6 | 2026-09-08 |
| M2 Pro (Mac mini) | 26.6 | 2026-09-08 |
| M3 (MacBook Pro) | 26.6.2 | 2026-09-08 |
| M4 (MacBook Pro) | 26.6 | 2026-09-08 |