The overflow-anchor property controls scroll anchoring. When content above the visible area grows or shrinks, the browser can adjust the scroll offset so the text you were reading stays put instead of jumping.
The initial value is auto, and anchoring is on by default where supported. You usually set this property only to opt out with none on a document, a scroll container, or a specific element that should not be chosen as an anchor. It is not the same as overflow, which controls clipping and scrollbars.
Baseline · Newly available.
Not deprecated and not experimental. Standard-track CSS Scroll Anchoring. Widely supported in Chromium and Firefox; Safari support starts at Safari 27. Use a progressive approach if older Safari must keep reading without jumps.
Syntax
CSS Syntax
syntax.css
overflow-anchor:auto | none | initial | inherit;
Values
Property Values
Value
Description
Try it
auto
Default. The element may be used as a scroll anchor
Leave the feed on auto. Most content can still participate in anchoring.
Target the noisy element. The banner is the piece that grows or swaps often.
Set none on that element.overflow-anchor: none means the banner is not chosen as the anchor node.
Prefer local opt-outs. Excluding one element is usually safer than turning anchoring off for the whole page.
Edge Cases & Pitfalls
If scroll still jumps, or anchoring seems to do nothing, check these first.
default
You rarely need to set auto
Anchoring is already enabled where supported. Writing overflow-anchor: auto is mostly for teaching or resetting after none.
scope
Prefer element opt-outs over *
A global * { overflow-anchor: none; } turns the feature off everywhere. Exclude only the element that causes bad jumps when you can.
overflow
Not a replacement for overflow
overflow still decides clipping and scrollbars. Anchoring only adjusts scroll position after content above changes.
safari
Older Safari has no anchoring
Support lands in Safari 27. On older Safari, inserts above the fold can still jump. Design layouts so critical reading is not overly sensitive to late-loading banners.
scripts
Custom scroll code can fight anchoring
If your script constantly sets scrollTop, browser anchoring may feel unpredictable. Opt out with none on that container, or stop fighting the browser’s adjustments.
Compatibility
Browser Support
overflow-anchor is a browser CSS property for scroll anchoring. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Newly available
overflow-anchor
Chrome 56+, Firefox 66+, Edge 79+, Opera 43+, Safari 27+. Internet Explorer has no support. Enabled by default where implemented.
80%Global browser support
Google Chrome56+
Full support
Mozilla Firefox66+
Full support
Apple Safari27+
Full support
Microsoft Edge79+
Full support
Opera43+
Full support
Samsung Internet6.2+
Full support
Internet ExplorerNo support
No support
overflow-anchorNewly available
Bottom line: Safe as a progressive enhancement. Leave auto as the default; use none only to opt out. It is not a runtime API.
Remember
Key Takeaways
Role: opt in or out of scroll anchoring when content above the viewport changes.
Initial value:auto. Anchoring is on by default where supported.
Main knob: set none only when you need to exclude an element or container.
Not overflow: anchoring adjusts scroll position; overflow controls clip and scrollbars.
One line: leave auto alone unless jumps appear — then opt out with none on the noisy element.
Frequently Asked Questions
It controls scroll anchoring. With auto (the default), the browser may adjust scroll position when content above the visible area changes, so what you were reading stays in place. With none, that element is not used as an anchor.
The initial value is auto. Scroll anchoring is on by default in browsers that support it, so you usually only set this property to opt out with none.
Use none when scroll anchoring causes unwanted jumps or fights your own scroll logic, such as custom scroll containers, sticky toolbars that resize, or elements that change height often above the viewport.
No. overflow controls clipping and scrollbars. overflow-anchor only decides whether an element can be a scroll anchor when content shifts.
No. Where supported, it is enabled by default. Set overflow-anchor only when you need to turn it off for a document or a specific element.
It is Baseline Newly available: Chrome 56+, Firefox 66+, Edge 79+, Opera 43+, and Safari 27+. Internet Explorer does not support it. It is a browser CSS property, not a Node.js feature.