What is WindowServer, and why is it using so much CPU?
WindowServer is the part of macOS that actually draws the screen. Every window, every menu, every cursor movement goes through it. So when it is busy, the real question is what is asking it to redraw so much.
It is not a virus, it is not optional, and you cannot quit it. Quitting WindowServer logs you out, because without it there is nothing to show you.
Think of it as the compositor. Applications do not draw to the screen themselves. They hand their contents to WindowServer, which assembles the lot into the single image you see, sixty or a hundred and twenty times a second. Everything visible is its work.
What is normal
On an idle Mac with a couple of windows open, a few percent. While you are dragging a window, scrolling, or playing something, considerably more. Twenty or thirty percent during active use is unremarkable.
What is not normal is fifty to a hundred percent sustained while you are doing nothing in particular. That means something is forcing constant redraws.
The big one: displays
More pixels means more compositing, and the cost is not linear with how it feels.
- An external 4K or 5K display is several times the pixel count of a laptop screen. Two of them is more again.
- Scaled resolution is the expensive one. When you pick "More Space" or any resolution that is not the display's native one or an exact half of it, macOS renders at a larger size and then scales the result down every single frame. That work lands on WindowServer. Switching a display to its default scaling is the single most effective change available, and it costs nothing.
- Mixed displays, one HiDPI and one not, or different refresh rates, make it work harder than either alone.
If WindowServer is heavy only when a monitor is plugged in, you have found it.
The other usual causes
- Too many windows. Not applications, windows. Fifty open windows across ten apps is fifty surfaces to composite. Browsers with dozens of windows are the frequent offender.
- An app redrawing constantly. Anything with a live graph, a terminal printing output quickly, an animated web page, or a progress indicator that never stops. A terminal spooling thousands of lines a second can hold WindowServer at high CPU on its own.
- Transparency and motion effects. The blur behind menus, the Dock and sidebars is real per-frame work. Cheap on modern hardware, not free on older hardware driving a large display.
- Screen sharing or recording. Every frame gets captured and encoded as well as drawn.
- A stuck app. Occasionally one app gets into a redraw loop. WindowServer shows the cost, but the app is the cause.
Finding the culprit in a minute
- Open Activity Monitor and watch WindowServer's % CPU while you work.
- Unplug any external display. If it drops sharply, the display or its scaling is the answer.
- Still high? Quit apps one at a time, watching the number after each. It usually falls off a cliff at one specific app.
- Close surplus windows rather than whole apps if the app is one you need.
What actually reduces it
- Use a display's default scaled resolution, or its native one. Biggest single win, zero downside beyond slightly different text size.
- Reduce transparency. System Settings, Accessibility, Display, Reduce transparency. Modest but real, and the effect on how macOS looks is small.
- Reduce motion, in the same place, if you have many Spaces and switch often.
- Fewer windows. Unglamorous, and it works.
- Restart if WindowServer has climbed gradually over days. It does occasionally accumulate, and a restart genuinely resets it.
Seeing it climb rather than discovering it. WindowServer creeping up over a week is invisible until the machine feels wrong. GuardMac keeps the heaviest processes and a live health score in the menu bar alongside CPU, memory, swap, disk and thermal state, so a gradual climb is something you notice rather than something you eventually investigate. Free version, no account. Download it here.
What not to bother with
There is no setting that makes WindowServer cheap, no maintenance script that fixes it, and nothing to delete. Advice telling you to remove caches or run a cleaner to reduce WindowServer CPU is describing a mechanism that does not exist. It draws the screen. The only lever is giving it less to draw.
The short version
High WindowServer CPU is the cost of pixels. Check external displays and scaling first, then window count, then whichever app is redrawing constantly. It is a symptom with an ordinary cause, and it is never malware.
Keep reading
- What is kernel_task, and why is it using 400% CPU?: the other system process people find at the top of Activity Monitor.
- Why are my Mac fans so loud?: what sustained GPU work sounds like.