macOS has one scroll-direction switch for everything you own: fix the mouse wheel and your trackpad breaks. MouseScroll flips the wheel alone and leaves the trackpad exactly as Apple built it.
MouseScroll never asks which mouse you own: every scroll event on macOS already says where it came from.
A wheel scrolls in discrete notches; a trackpad sends a continuous glide. macOS labels them differently before any app sees them.
MouseScroll reverses the discrete steps, both axes, so a tilt wheel behaves too. Everything continuous passes through untouched.
Your system settings stay untouched. Quit the app and your Mac is exactly as it was.
USB, Bluetooth, the cheap one from the drawer, nothing to pair, no device list. Any mouse scrolls correctly from the first notch.
Two-finger scrolling, momentum, rubber-banding, all untouched, because trackpad events are never modified.
Vertical and horizontal, a tilt wheel flips with the rest.
One switch in the menu bar. Flip it and scrolling returns to normal instantly, no restart.
Launch at login is a checkbox in the same menu, and it shows up properly in System Settings → Login Items.
Native Swift, zero dependencies, universal binary. It uses almost no memory and does nothing when you aren't scrolling.
Changing a scroll event means sitting in the stream of input events, and macOS guards that with the Accessibility permission, there is no smaller one that works. Decline the prompt and nothing breaks; the app just waits.
What it does with that permission is deliberately tiny: it checks whether a scroll was a notch or a glide, and flips the notch. It reads no keystrokes, stores nothing, and contains no networking code at all.
Signed with an Apple Developer ID and notarized by Apple, macOS opens it with a double-click, no warnings. Download, drag to Applications, done.
Because that switch is global: it fixes the wheel but reverses your trackpad too. macOS has no per-device setting, which is why this app exists.
Yes, modifying an input event on macOS requires it, full stop. The prompt appears on first launch; decline it and MouseScroll simply waits, with a link to the right settings page in its menu.
A Magic Mouse keeps its natural scrolling, on purpose: its touch surface sends the same continuous events a trackpad does. This app is for a mouse with a real wheel.
No. It changes events in flight, one at a time, quitting restores normal behaviour instantly. The only thing it ever registers is a Login Item, and only if you tick Launch at Login.
Turn it back on. MouseScroll starts from the macOS default, Natural Scrolling on, and if the global switch is also reversed, the two corrections cancel each other out. Let MouseScroll handle the wheel on its own.
No. The work per event is flipping a few numbers, on its own thread. Scrolling stays as smooth as it was.
Nothing, it's free. No licence, no trial, no account. If you'd like to support the work, Snipkin is the paid one.
macOS 14 Sonoma or newer, Apple silicon or Intel, a universal binary of about half a megabyte.