Safari is supposed to be one of the smoothest browsers on macOS. Apple spends considerable effort optimising it for their own hardware and their own display technology. When it stutters, something specific has gone wrong. The good news is that "something specific" usually falls into one of three categories, and each one is diagnosable in a few minutes.
The three causes of Safari scroll stutter
Most Safari scroll stutter traces back to one of these:
The page itself is doing too much. News sites, content aggregators, and ad-heavy pages load dozens of embedded scripts, autoplay videos, and third-party ad trackers simultaneously. Each of those can intercept scroll events, trigger repaints, or hog CPU time. The page renders fine at first, but as more scripts initialise in the background, scrolling slows or stutters.
An extension is interfering. Extensions run code on every page you visit. A single poorly written or outdated extension can add enough overhead to scroll handling that even light pages become jerky. This is easy to rule in or out, and we'll cover how below.
Memory pressure is dropping Safari's frame rate. This is the least obvious cause but often the most important one. When your Mac is running low on free memory, macOS reduces what it allocates to WindowServer, the system process responsible for drawing the screen. Less budget for WindowServer means it can't sustain the frame rate needed for fluid scrolling. See what memory pressure means on Mac for the full picture.
The page itself: ads, video, and JavaScript-heavy news sites
Open a page that stutters and check what it contains. A newspaper homepage with a hero video, three ad slots, a cookie consent script, a live feed ticker, and comment section widgets is a genuinely heavy page. Each of those elements competes for CPU and GPU time every frame you scroll.
The quickest test is Reader Mode. Click the Reader button on the left side of Safari's address bar (it looks like a paragraph of lines), or press Command-Shift-R. Reader strips the page down to text and images, removing almost all third-party scripts and ads. If scrolling becomes immediately smooth in Reader Mode, the page is the problem, not your Mac.
For sites you visit regularly, you can enable Reader Mode automatically. Go to Safari › Settings › Websites › Reader and set the domain to "On". Safari will load that site in Reader Mode every time.
If Reader Mode isn't available on a page (it doesn't work on web apps, dashboards, or heavily structured pages), try opening the same URL in a new Private window. Private windows block some trackers by default. If it's smoother there, you've confirmed the page content is the issue rather than an extension, since extensions are also disabled in Private mode. Apple's own Safari support page has more detail on using Reader and Private Browsing.
The extension that secretly broke
Extensions are a common culprit that people don't think to check because they installed them months ago and stopped thinking about them. An extension that worked fine on an older version of macOS or Safari can behave unexpectedly after an update, injecting scripts that block scroll events or triggering repaints on every pixel moved.
The cleanest way to test this is a Private Browsing window. Press Command-Shift-N. Safari disables extensions by default in Private mode (unless you've specifically granted them permission to run there). Navigate to the page that was stuttering. If it scrolls smoothly, an extension is your problem.
To find which one, go to Safari › Settings › Extensions. Disable every extension by unchecking them all, then re-enable them one at a time, reloading the problem page each time. When stutter returns, you've found the culprit. Check whether there's an update for it in the App Store, or remove it entirely if it's one you don't rely on.
Content blockers deserve a special mention here. Some ad blockers inject substantial amounts of CSS and JavaScript to hide ads. On particularly complex pages this can paradoxically make scrolling worse, even though their stated purpose is to speed things up. If your content blocker is the extension causing stutter, try pausing it on that specific site rather than removing it globally. For more on how Safari memory usage compounds these issues, see Safari memory leaks on Mac.
The memory pressure connection
This is the cause that surprises people most, because it means the problem isn't really Safari at all.
Everything you see on your Mac's screen is drawn by a system process called WindowServer. It composites app windows, renders animations, and handles scrolling at the display layer. WindowServer needs a consistent allocation of GPU memory and CPU time to maintain a smooth frame rate. When your Mac's overall memory pressure is high, macOS starts rationing resources. WindowServer is one of the processes that gets a smaller allocation.
The result is that scrolling in any app can become choppy, but it's most noticeable in Safari because browsers do the most on-screen compositing of anything you use daily. A page with sticky headers, parallax backgrounds, and animated elements requires WindowServer to composite multiple layers simultaneously. With reduced resources, it can't do that at full frame rate.
To check whether this is happening, open Activity Monitor (press Command-Space, type "Activity Monitor", press Return). Click the Memory tab. Look at the Memory Pressure graph at the bottom. Green means the system is comfortable. Yellow means it's starting to compress memory. Red means it's under serious pressure and is likely swapping to disk. If that graph is yellow or red when Safari is stuttering, memory pressure is contributing.
GPU contention plays a role too. On Macs with integrated graphics (which is most Macs), the GPU memory is shared between the system and every app. A background app doing GPU-accelerated work (a video editor, a game, even a browser tab with a WebGL app) can squeeze the allocation available to WindowServer enough to affect scrolling elsewhere.
The fixes in order
Work through these in sequence. Most people find their answer in the first two.
Try Reader Mode first. Press Command-Shift-R on the stuttering page. If scrolling becomes smooth, the page content is the cause. Use Reader Mode on that site going forward, or consider a content blocker that strips autoplay video and heavyweight ad scripts.
Test in a Private window next. Press Command-Shift-N and navigate to the same page. If it's smooth in Private but not in a regular window, an extension is interfering. Follow the disable-and-re-enable process in Safari Settings to identify which one.
Then check memory pressure. Open Activity Monitor and look at the Memory Pressure graph while Safari is open and scrolling. If it's yellow or red, quit apps you're not actively using. Right-click the app icon in the Dock and choose Quit rather than just closing windows. Closing a window doesn't free memory; quitting does. After quitting a few apps, wait 30 seconds and try scrolling again. macOS needs a moment to reclaim and redistribute freed memory.
Restart Safari. If none of the above resolves it immediately, quit Safari entirely and reopen it. Safari accumulates memory over long sessions, and a fresh start often resolves stutter that developed gradually. For more on that pattern, see Safari memory leaks on Mac.
Restart your Mac. A full restart is the nuclear option, but it clears everything: memory, swap files, GPU state, cached process state. If stutter has been building over days and is affecting multiple apps, a restart usually resolves it. A weekly restart is a good habit regardless.
If memory pressure is regularly in the yellow or red when you're just browsing, you may have more tabs open than your Mac's RAM can comfortably hold. Safari's tab management has improved, but each active tab still reserves memory. Closing tabs you haven't read in days is often the single highest-leverage action you can take. See what memory pressure means on Mac for detail on how to read those numbers and act on them.