WindowServer High CPU on a Mac: Causes and Fixes

Quick answer: WindowServer draws every window on your Mac, so its CPU use rises with more displays, higher resolutions, transparency and motion effects, and many open windows. Turn on Reduce transparency and Reduce motion in System Settings ▸ Accessibility ▸ Display, close extra windows and desktops, and restart.
A little WindowServer use is normal. It becomes a problem when it stays high, the Mac feels sluggish, and the fans run.
Why WindowServer gets busy
| Cause | Why it adds load |
|---|---|
| Several external displays | More pixels to draw every frame |
| High resolution or refresh rate | More drawing work |
| Transparency and motion effects | Extra compositing |
| Many windows and Spaces | More to keep on screen |
| Video, screen sharing, animations | Constant redraws |
Fixes
Reduce transparency and motion. Open System Settings ▸ Accessibility ▸ Display and turn on Reduce transparency and Reduce motion.
Close windows and extra desktops. Many windows and Spaces add drawing work.
Change the Mission Control setting. In System Settings ▸ Desktop & Dock ▸ Mission Control, toggle Displays have separate Spaces and log out and in.
Lower the display load. Use a lower scaled resolution or refresh rate on external monitors.
Quit apps that draw constantly, such as video, screen recording, animated wallpapers and browser tabs with animations.
Update and restart. macOS updates fix WindowServer bugs.
Check it in Activity Monitor
Sort the CPU tab by %CPU and watch WindowServer while you close apps one at a time. The app that makes it drop is the cause. See Activity Monitor on Mac: How to Check CPU Usage and Find What's Slowing You Down.
When heat is involved
High WindowServer plus a hot Mac can trigger kernel_task. See kernel_task High CPU on a Mac: Why It Happens and How to Fix It.
FAQs
Is WindowServer a virus?
No. It is a macOS process.
Why is WindowServer high with two monitors?
More pixels to draw. Lower the scaling or refresh rate.
Can I quit WindowServer?
No. Quitting it logs you out.