If your Mac feels sluggish right after login, the culprit is almost always too many programs launching themselves in the background. Knowing how to remove startup programs on Mac — and understanding where they actually live — can shave seconds off your boot time, reduce idle RAM usage, and keep your menu bar from filling up with icons you never asked for. This guide covers every method: the official System Settings UI, hidden LaunchAgent plists, and a few edge cases that most guides miss entirely.
Why Startup Programs Slow Your Mac Down
Every program that launches at login competes for CPU, RAM, and disk I/O during the first 30–60 seconds of your session — exactly when you want the machine to be responsive. On Apple Silicon Macs the impact is smaller than it was on older Intel hardware, but even an M3 can feel laggy when a dozen agents are all indexing, syncing, or phoning home simultaneously.
Common offenders include cloud-sync clients (Dropbox, Google Drive, OneDrive), communication apps (Slack, Zoom, Teams), updater daemons installed by third-party software, and developer tools like Docker Desktop or JetBrains Toolbox. The tricky part is that not all of them appear in the obvious place.
Where macOS Stores Startup Programs: A Location Map
Before removing anything it helps to know where startup items actually live. There are four distinct locations macOS uses:
| Location | Path | Who controls it | Visible in System Settings? |
|---|---|---|---|
| Login Items (user) | System Settings → General → Login Items | You / apps you approve | Yes |
| User LaunchAgents | ~/Library/LaunchAgents/ |
Third-party installers | Partially (macOS 13+) |
| System-wide LaunchAgents | /Library/LaunchAgents/ |
Admin-installed software | Partially (macOS 13+) |
| System LaunchDaemons | /Library/LaunchDaemons/ |
System & privileged software | No |
The first two rows are the most common sources of nuisance startup programs. LaunchDaemons (the last row) run as root and are typically legitimate system services — edit those only if you know exactly what you're doing.
How to Remove Login Items via System Settings (Step-by-Step)
This is the safest, most accessible method and should be your first stop.
- Click the Apple menu () in the top-left corner and choose System Settings.
- Select General in the sidebar, then click Login Items & Extensions.
- Under the Open at Login section you'll see a list of apps. Click any item you want to remove, then click the − (minus) button below the list.
- Repeat for each item you want to disable. Changes take effect at the next login — you don't need to restart immediately.
You'll also see a second section called Allow in Background. These are apps that don't open a window but run silently. Toggle the switch off for anything you don't recognize or don't need. On macOS Sequoia (15) and the upcoming Tahoe release, Apple has expanded this panel to expose more background agents that were previously invisible.
Removing Hidden LaunchAgents from the Library Folder
Many third-party apps — especially developer tools, cloud utilities, and software updaters — install LaunchAgent plist files directly into your Library folder. These don't always appear in System Settings, especially on older macOS versions.
Check your user LaunchAgents
Open Terminal and run:
ls ~/Library/LaunchAgents/
You'll see files named like com.dropbox.DropboxUpdater.plist or com.adobe.AdobeCreativeCloud.plist. To temporarily disable one without deleting it:
launchctl unload ~/Library/LaunchAgents/com.example.agent.plist
To permanently remove it:
rm ~/Library/LaunchAgents/com.example.agent.plist
Check system-wide LaunchAgents
Files in /Library/LaunchAgents/ were installed by admin-level software and affect all users on the Mac. Use the same approach, but you'll need sudo to remove them:
sudo rm /Library/LaunchAgents/com.example.systemagent.plist
Before deleting any plist you don't recognize, open it in a text editor and read the ProgramArguments key — it tells you exactly what binary the agent is running. If the binary no longer exists on disk, the plist is safe to delete.
Handling Startup Items Left Behind by Uninstalled Apps
One of the most frustrating scenarios: you deleted an app months ago, but its LaunchAgent is still running (or failing to run and logging errors). Simply dragging an app to the Trash does not remove its LaunchAgents, login item registrations, or background helper processes.
After uninstalling an app manually, always check:
~/Library/LaunchAgents/— for per-user agents/Library/LaunchAgents/— for system-wide agents/Library/LaunchDaemons/— for privileged daemons~/Library/Application Support/— some apps register themselves here
A tool like Crumb can audit all of these locations at once and show what's orphaned before you delete anything, which is particularly useful if you've accumulated years of installed-and-removed software.
For a deeper look at removing all traces of an app — not just login items — see our guide on how to completely uninstall apps on Mac.
Developer-Specific Startup Items to Know About
If you use your Mac for development, you've likely accumulated several auto-starting services that aren't obvious:
- Docker Desktop — installs a privileged helper and registers itself as a login item. Disable it in Docker's own Preferences → General if you don't need it running all the time.
- Homebrew services — check what's running with
brew services list. Stop individual services withbrew services stop <name>. - JetBrains Toolbox — registers a login item that keeps all IDE updaters alive. Toggle it off in Toolbox → Settings → Launch at Login.
- Node version managers (nvm, fnm, volta) — add shell initialization hooks rather than LaunchAgents, so they won't appear in the Login Items list but do add overhead to every new terminal window.
These tools also tend to leave behind large caches in directories like ~/Library/Developer/Xcode/DerivedData and ~/.m2/repository. Those don't affect startup speed, but they do eat significant disk space — worth a separate cleanup pass.
How to Audit All Background Processes Right Now
If you want to see everything that's actively running — not just what's registered to run — Activity Monitor is your friend:
- Open Activity Monitor (Applications → Utilities → Activity Monitor, or press Command + Space and type it).
- Click the CPU tab and sort by % CPU. Any persistent background process using CPU at idle is a candidate for removal.
- Click the Memory tab and sort by Memory. Look for processes consuming 100 MB or more that you don't recognize.
- Double-click any suspicious process, then click Open Files and Ports to see which binary it's running — this helps you identify its plist.
You can also run this Terminal command to list every LaunchAgent and LaunchDaemon currently loaded into your session:
launchctl list | grep -v com.apple
The grep -v com.apple filters out Apple's own services, leaving only third-party agents for review.
Is It Safe to Remove Startup Programs?
For login items (apps in the Open at Login list), yes — removing them just prevents the app from launching automatically. The app itself stays installed and you can still open it manually.
For LaunchAgents, it depends on the agent. Most third-party agents are updaters, sync helpers, or crash reporters — all safe to remove. The risk is with agents tied to licensed software (some DRM systems use them) or VPN/security tools that need to start before you log in. When in doubt, use launchctl unload to disable rather than deleting the plist outright, and check whether anything breaks over the next few days.
For a broader look at what's consuming space alongside these background processes, the guide on what is taking up space on your Mac is a good companion read.
Quick Reference: Which Method to Use
To summarize the right tool for each situation:
- App opens at login and you can see it: System Settings → General → Login Items & Extensions, click minus.
- Menu bar icon you never enabled: Check
~/Library/LaunchAgents/for a plist from that app. - Leftover from an uninstalled app: Search both
~/Library/LaunchAgents/and/Library/LaunchAgents/for the app's bundle ID. - Homebrew service:
brew services stop <name>followed bybrew services remove <name>if you don't need it again. - Unknown background process at idle: Activity Monitor +
launchctl list | grep -v com.apple.
Working through each of these locations systematically — rather than just looking at System Settings — is how you actually get a clean, fast boot. The results are immediately measurable: less time staring at the login screen, a quieter fan in the first minutes of a session, and a menu bar that shows only what you chose to put there.