Fixes WoW running at a third of its frame rate on Apple Silicon Macs: a tiny overlay that keeps macOS from parking the GPU at its minimum clock
Shell
7
2 commits
updated Sep 19, 2026
A tiny macOS helper that stops World of Warcraft from running at a third of its frame rate on Apple Silicon.
On an M3 Pro MacBook, the WoW Classic beta client (1.60.1) sat at about 35 fps with the game in front, on AC power, no thermal throttling, Low Power Mode off. Pressing a volume key made it jump to 85 fps for a few seconds, then it fell back.
An Instruments Metal System Trace showed why. With the game as the only thing on screen, macOS held the GPU in its Minimum performance state. The moment any other window was drawn above the game (the volume HUD, or a 32 pixel test window), the GPU went to Maximum and the frame rate more than doubled.
| condition | GPU performance state | fps |
|---|---|---|
| game frontmost, nothing above it | Minimum | 33 to 35 |
| small window drawn above the game | Maximum | 80 to 89 |
| window removed | decays back | toward 30 |
wowoverlay is a 32x32 pixel, 3% opacity, click-through, always-on-top window in the bottom right corner of the screen. That is all it does. While it is up, macOS composites the game with it and keeps the GPU clocked up. It exits by itself when WoW quits.
It does not read, inject into, or modify the game, its memory, its files or its network traffic. It is an ordinary window from a separate process, the same as a volume HUD or a notification.
xcode-select --installgit clone https://github.com/chrisdecember/wow-mac-boost.git
cd wow-mac-boost
./install.sh
This builds the overlay and puts wowboost, wowoverlay and wowdiag in ~/.local/bin. A stock Mac does not look in that folder for commands, so the installer adds it to your PATH in ~/.zshrc. Close the Terminal window and open a new one after installing, then wowboost will work.
Your Terminal has not picked up the new PATH yet. Either open a new Terminal window, or run it by its full path:
~/.local/bin/wowboost
If you installed before this fix was added, run this once, then open a new Terminal window:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
Start the game, then:
wowboost
Or launch the game and the overlay together:
wowboost play beta
play accepts beta, era, anniversary or retail. If WoW is not in /Applications/World of Warcraft, set WOWROOT to its folder first.
Stop it:
wowboost off
If the frame rate sags again while the overlay is on, switch to the animated variant, which redraws 30 times a second:
wowboost off
wowboost animate
Turn on the in-game frame rate counter (Ctrl+R by default) and toggle wowboost on and off to see whether your machine is affected. If nothing changes, you do not have this problem and do not need this tool.
wowdiag is the listener used to find the problem. It needs full Xcode for the trace command; everything else works with stock macOS.
wowdiag snapshot # arch, GPU utilisation, CPU, % of main thread waiting on the GPU, memory, thermals
wowdiag watch 5 60 # the same every 5 s for 60 s, logged to CSV in ~/wowdiag
wowdiag trace 10 mytag # 10 s Metal System Trace: GPU clock state, fps, GPU ms per frame, top encoders
wowdiag settings # GPU-relevant settings side by side for every installed client
wowdiag threads # busiest threads and main thread top frames
wowdiag hud on # Apple's Metal performance HUD (relaunch the game)
After a trace, python3 ~/.local/bin/persec.py <tables folder> prints fps and GPU performance state for each second.
giQuality with /console while in the world. On an M3 Pro it hung the GPU and froze the whole Mac twice, requiring a power button reset. giQuality 0 asserts in WorldGlobalIllumination.cpp:2094. giQuality 1 tints the world green. Leave it at 3.gx.log reports a garbage GPU memory budget (17179869182 GB) on unified memory Macs.isLowPower flag, not a power mode.MacBook Pro M3 Pro (18 core GPU), 18 GB, macOS 26.6.1, WoW Classic beta 1.60.1.69913. Reports from other machines and clients are welcome in the issues.
MIT
2 commits
Shell
72.4%
Python
20.5%
Swift
7.1%
Fixes WoW running at a third of its frame rate on Apple Silicon Macs: a tiny overlay that keeps macOS from parking the GPU at its minimum clock
Shell
7
2 commits
updated Sep 19, 2026
A tiny macOS helper that stops World of Warcraft from running at a third of its frame rate on Apple Silicon.
On an M3 Pro MacBook, the WoW Classic beta client (1.60.1) sat at about 35 fps with the game in front, on AC power, no thermal throttling, Low Power Mode off. Pressing a volume key made it jump to 85 fps for a few seconds, then it fell back.
An Instruments Metal System Trace showed why. With the game as the only thing on screen, macOS held the GPU in its Minimum performance state. The moment any other window was drawn above the game (the volume HUD, or a 32 pixel test window), the GPU went to Maximum and the frame rate more than doubled.
| condition | GPU performance state | fps |
|---|---|---|
| game frontmost, nothing above it | Minimum | 33 to 35 |
| small window drawn above the game | Maximum | 80 to 89 |
| window removed | decays back | toward 30 |
wowoverlay is a 32x32 pixel, 3% opacity, click-through, always-on-top window in the bottom right corner of the screen. That is all it does. While it is up, macOS composites the game with it and keeps the GPU clocked up. It exits by itself when WoW quits.
It does not read, inject into, or modify the game, its memory, its files or its network traffic. It is an ordinary window from a separate process, the same as a volume HUD or a notification.
xcode-select --installgit clone https://github.com/chrisdecember/wow-mac-boost.git
cd wow-mac-boost
./install.sh
This builds the overlay and puts wowboost, wowoverlay and wowdiag in ~/.local/bin. A stock Mac does not look in that folder for commands, so the installer adds it to your PATH in ~/.zshrc. Close the Terminal window and open a new one after installing, then wowboost will work.
Your Terminal has not picked up the new PATH yet. Either open a new Terminal window, or run it by its full path:
~/.local/bin/wowboost
If you installed before this fix was added, run this once, then open a new Terminal window:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
Start the game, then:
wowboost
Or launch the game and the overlay together:
wowboost play beta
play accepts beta, era, anniversary or retail. If WoW is not in /Applications/World of Warcraft, set WOWROOT to its folder first.
Stop it:
wowboost off
If the frame rate sags again while the overlay is on, switch to the animated variant, which redraws 30 times a second:
wowboost off
wowboost animate
Turn on the in-game frame rate counter (Ctrl+R by default) and toggle wowboost on and off to see whether your machine is affected. If nothing changes, you do not have this problem and do not need this tool.
wowdiag is the listener used to find the problem. It needs full Xcode for the trace command; everything else works with stock macOS.
wowdiag snapshot # arch, GPU utilisation, CPU, % of main thread waiting on the GPU, memory, thermals
wowdiag watch 5 60 # the same every 5 s for 60 s, logged to CSV in ~/wowdiag
wowdiag trace 10 mytag # 10 s Metal System Trace: GPU clock state, fps, GPU ms per frame, top encoders
wowdiag settings # GPU-relevant settings side by side for every installed client
wowdiag threads # busiest threads and main thread top frames
wowdiag hud on # Apple's Metal performance HUD (relaunch the game)
After a trace, python3 ~/.local/bin/persec.py <tables folder> prints fps and GPU performance state for each second.
giQuality with /console while in the world. On an M3 Pro it hung the GPU and froze the whole Mac twice, requiring a power button reset. giQuality 0 asserts in WorldGlobalIllumination.cpp:2094. giQuality 1 tints the world green. Leave it at 3.gx.log reports a garbage GPU memory budget (17179869182 GB) on unified memory Macs.isLowPower flag, not a power mode.MacBook Pro M3 Pro (18 core GPU), 18 GB, macOS 26.6.1, WoW Classic beta 1.60.1.69913. Reports from other machines and clients are welcome in the issues.
MIT
2 commits
Shell
72.4%
Python
20.5%
Swift
7.1%