UnplugAll

Drive won't eject? See which app is using it.

UnplugAll names the app holding your drive, whenever macOS reports one, and tells you what to do next. Eject All, clear results and timers included.

$2.99 · one-time purchase · macOS 14+ · Apple silicon

USB sticks, external SSDs and hard drives

An app still has a file open on ‘Archive’

“QuickTime Player is using this drive. Close its windows with files on ‘Archive’ and try again.”

Why the eject fails

The message everyone knows

You try to eject a drive and your Mac answers with this:

The disk wasn’t ejected because one or more programs may be using it.

In this message macOS doesn’t say which program it is. UnplugAll asks the system and names it, whenever macOS reports one, even when the message does not. Two real examples, in everyday words:

An app still has a file open on ‘Archive’

“QuickTime Player is using this drive. Close its windows with files on ‘Archive’ and try again.”

A Terminal window is still in the drive’s folder

“A shell in Terminal has its working directory set to ‘Archive’. Type ‘cd ~’ in that window and try again.”

Built around one job

What you get

See which app is using your drive

When an eject fails, the menu names the app macOS reports, with a sentence on what to do next.

Eject all drives with one click

You get a clear result such as “3 of 4 ejected, 1 still in use”. The drive that failed stays in the menu with a retry button.

Unmount after a set time, if you want

Give a drive its own timer. When it runs out, UnplugAll unmounts it. Nothing happens until you switch it on.

Rules for each drive

Protect a drive from automation and Eject All, or give it a timer of its own.

Unmount before your Mac sleeps

For the drives you choose, UnplugAll unmounts them before sleep. Automatic actions only unmount, they never eject or force.

Careful by design

Force eject only after you confirm. It never quits other apps, stays out of your way, and needs no account and collects no data.

All details

Menu bar only

Lives exclusively in the menu bar — no Dock icon, on purpose. One click opens a panel: a large “Eject all drives” button on top, then one card per drive with its icon, a fill bar (orange from 90 %, labelled “almost full”) and its own eject button; Settings and Quit sit at the bottom. While the panel is open: ⌘E ejects all drives, ⌘1–⌘9 a single drive, ⌘, opens Settings, ⌘Q quits. On macOS 26 and later the panel uses Liquid Glass. Volumes on the same drive are ejected together, in the right order.

Honest results, not green checkmarks

Never says “done” when it isn't. Partial success is stated plainly — “3 of 4 ejected, 1 still in use” — and whatever didn't work stays visible in the panel with a reason and a retry button. A partial result is never reported as a success, not even in a notification.

A blocked drive, explained

When an eject is blocked, the drive's card names the app macOS reports (for example QuickTime Player) with its icon and says what to do next. Buttons: “Try again”, “Bring … to the front” and “Don't eject”. “Force eject …” comes last and only after a confirmation where Cancel is the default button.

Auto-unmount timer, per drive

Every drive can have its own time (Settings › Drives › “Time until unmount”); when it runs out, UnplugAll unmounts it. Opt-in per drive — nothing happens on its own. A global switch only allows the automation; you still turn it on per drive, with a one-time confirmation. The countdown shows in the panel (“Will be unmounted in 3:31 – then unplug.”) and as a bar under the menu bar icon (the icon indicator can be turned off) and can be cancelled at any time. You can count from the moment the drive connects — or, on APFS drives, from its last actual use (idle detection). exFAT and HFS+ don't give macOS any usage data, so those drives only get the time-based timer. Automation only ever unmounts, never ejects: the drive stays connected and powered, and to mount it again, unplug and reconnect it, or mount it in the Finder.

Unmount before sleep and on lid-close

On request, UnplugAll unmounts the drives you've individually enabled for this before the Mac sleeps — up to 10 seconds are available (measured, and the ceiling), and anything that doesn't make it is reported, not hidden. Lid-close (clamshell) is a separate toggle, on battery power only by default — on power a Mac doesn't necessarily sleep, and the drive would be gone for nothing. The app visibly warns when a setting currently has no effect (e.g. “this Mac isn't sleeping on lid-close right now”). After waking, the drives stay unmounted. Mount a drive again by unplugging and replugging it, or in the Finder.

Per-drive rules

Mark a drive as protected and neither automation nor “eject all” will ever touch it. Set your own timer per drive. Rules are attached to the drive's identifier, not its name — renaming or replugging changes nothing.

A menu bar icon that gets out of the way

On request, the icon only appears while external drives are connected (matters on a notched MacBook). It always stays visible when something needs attention — a blocked drive, a running countdown, a failed eject. Switch it on in Settings › Menu Bar; the line beneath it tells you how to get back. A colour dot shows what is going on: blue while ejecting or counting down, orange when a drive is in use, red when an eject failed, grey at rest.

Settings like System Settings

A sidebar like macOS System Settings with six sections: General, Menu Bar, Automation, Drives, Notifications and About. Every switch has a tooltip.

A global keyboard shortcut

Freely assignable with its own recorder field, suggested default ⌃⌥⌘E. Choose what it does: eject all drives, or open settings. Works everywhere, including in full-screen apps — without the Accessibility permission (a Carbon hotkey, the same approach established Mac apps use). Warns you before registering it if macOS already owns that combination (for example ⌘Space) instead of silently doing nothing.

Manual eject, set precisely

Choose what “Eject” means from the menu: unmount and eject the device (then unplug and reconnect it), or unmount only, leaving it powered (you can then mount it again in the Finder). This applies to anything you trigger manually — automatic actions always only unmount. Forcing an unmount through a blockage is possible, but always behind a confirmation that clearly states running apps could crash.

Notifications — opt-in and quiet

UnplugAll only asks for permission once there's actually something to report — never on launch. Toggle separately: “when a drive can be safely removed” and “when a drive couldn't be ejected.” Partial results always go through the failure toggle, never as a success message.

Launch at login

An optional login item, off by default — the app only registers once you flip the switch. If macOS asks for your approval, the app says so and links to System Settings.

Onboarding

A short first-run walkthrough: where the app lives, how to quit and find it again, and your choice of a way back — shortcut or always-visible icon.

Bilingual

Fully in German and English, switchable inside the app (with a restart button).

Technical facts

Platform
macOS 14.0 or later, Apple Silicon
Distribution
Mac App Store exclusively
Languages
German, English
Drives
USB sticks, external SSDs and hard drives
Purchase
One-time, no subscription
Dependencies
None — zero-dependency project
What to expect

Honest limits

At most one app, sometimes none

macOS names at most one app and sometimes none. When it names nobody, UnplugAll says so and suggests what to try instead.

Cables, hubs and firmware

A loose cable, a hub or drive firmware can still cause “Disk Not Ejected Properly”. No app can prevent that.

After a timer or sleep

Drives stay unmounted. Mount one again by unplugging and replugging it, or in the Finder.

Trust & privacy

Private by design

The app collects no data. No account, no analytics, no network connection.

Sandboxed, one permission

No Full Disk Access, no admin rights, no background daemon, no Accessibility permission.

No data collection

No account, no analytics, no ads, no network connection at all — the app simply has no network access.

Never terminates other apps

An App Store app isn't allowed to, and UnplugAll doesn't pretend it can. Instead: it names the blocker, explains it — and can still unmount on request, behind an honest confirmation.

Questions

Before you ask.

Why does my Mac say “The disk wasn’t ejected because one or more programs may be using it”?

An app still has a file open on the drive, or a window or Terminal session is still pointing at it. Unless it is a regular app, macOS does not say which one. UnplugAll asks the system and names the app, whenever macOS reports one, with a sentence on what to do.

How do I find out which app is using my external drive?

macOS often does not tell you, especially for background processes or a Terminal window; the usual workarounds are Activity Monitor or a Terminal command. UnplugAll shows it in the menu when an eject fails, whenever macOS reports an app.

Does UnplugAll always name the app?

No. macOS reports at most one app and sometimes none. When it names nobody, UnplugAll says so and suggests what to try instead.

Will UnplugAll quit the app for me?

No. It never quits other apps. You close the window or the app yourself. If you insist, you can use Force Eject, but only after a confirmation that says plainly this can crash a running program or lose unsaved data.

A big app keeps my drive busy. Can UnplugAll help?

It shows which app macOS reports as holding the drive, so you know what to close or let finish. Whether macOS reports one depends on the situation.

How do I eject all external drives at once?

Choose “Eject All Drives” in the menu or use the keyboard shortcut you set. You get a clear result such as “3 of 4 ejected, 1 still in use”, and the one that failed stays in the menu with a retry button. Drives you marked as protected are left alone.

Can my Mac unmount drives before sleep or when I close the lid?

Yes, for the drives you switch on. Automatic actions only unmount, they never eject or force. For closing the lid this applies on battery power by default. After waking, the drives stay unmounted: unplug and replug them or mount them in the Finder.

What about “Disk Not Ejected Properly”?

macOS shows it when a drive disappears without being unmounted, for example after a pulled cable, a hub dropout or after sleep. Unmounting before you leave or before sleep helps. A loose cable or drive firmware can still cause it, and no app can prevent that.

Get it

Know why your drive won't eject.

UnplugAll is on the Mac App Store: a one-time purchase, no subscription, no in-app purchases.

Download on the Mac App Store

$2.99 · one-time purchase · macOS 14+ · Apple silicon