Set Custom App Priority Nice Values in macOS 13
You can set custom application priority nice values in macOS 13
(Ventura) using native Terminal utilities such as nice and
renice, as well as Apple’s dedicated
taskpolicy command. While modern macOS relies heavily on
Mach kernel Quality of Service (QoS) classes to manage hardware
scheduling and energy efficiency, standard UNIX process niceness is
still supported and functional.
How Process Priority Works in macOS 13
macOS uses a traditional UNIX nice scale ranging from
-20 (highest priority) to 20 (lowest
priority), with 0 being the default for standard processes.
Decreasing a nice value to give an application higher CPU priority
requires administrator (sudo) privileges, whereas
increasing a nice value to lower an application's priority can be done
by standard users.
In macOS 13, the kernel balances these nice values alongside QoS classifications, which categorize threads into tiers like User Interactive, User Initiated, Utility, and Background.
Launching an Application with a Custom Nice Value
To launch an application with a predetermined priority, use the
nice command followed by the direct path to the executable
inside the .app bundle:
nice -n 10 /Applications/TextEdit.app/Contents/MacOS/TextEditTo launch an application with higher priority (negative nice value),
prepend sudo:
sudo nice -n -10 /Applications/TextEdit.app/Contents/MacOS/TextEditChanging the Priority of a Running Application
If the application is already running, you can alter its priority
using renice:
Find the Process ID (PID) of the application using Activity Monitor or Terminal:
pgrep -i "AppName"Apply the new nice value:
sudo renice -n 5 -p <PID>
Using
taskpolicy for Better macOS Integration
Because macOS 13 heavily prioritizes energy management and QoS over
strict POSIX niceness, using the taskpolicy command is
often more effective for managing background or high-load processes.
Demote an app to background execution (efficiency cores/low priority):
taskpolicy -b -p <PID>Run a command clamped to background QoS:
taskpolicy -b /Applications/AppName.app/Contents/MacOS/AppName
Limitations to Consider
Modern macOS applications often spawn multiple independent helper
processes (common in web browsers and Electron-based apps). Modifying
the PID of the main parent application using renice does
not automatically propagate to all child worker threads, requiring you
to target specific sub-processes individually if they are responsible
for the primary CPU load.