content-visibility works in Chrome 85+, Edge 85+, Firefox 125+, Safari 18+, Opera 71+, and Samsung Internet 14+. Learn the values, performance, and issues.

Prince Dewani
May 1, 2026
content-visibility is a W3C CSS Containment Module Level 2 property that lets browsers skip layout and paint work for off-screen content. It works in Chrome 85+, Edge 85+, Firefox 125+, Safari 18+, Opera 71+, and Samsung Internet 14+, while Internet Explorer never supported it and Firefox 109 to 124 kept it disabled by default.
This guide covers what content-visibility is, the browsers that support it, the accepted values, the performance benefits, the contain-intrinsic-size pairing, and the known issues.
content-visibility is a CSS property defined in the W3C CSS Containment Module Level 2. It lets browsers skip layout, style, and paint work for elements that are off-screen, which speeds up initial page load on long pages. It accepts three keyword values: visible, hidden, and auto.
content-visibility now works across all three major browser engines. Chrome and Edge picked it up first, Safari joined when WebKit shipped support in Safari 18, and Firefox flipped the flag on by default in Firefox 125.
Chrome supports content-visibility by default from Chrome 85 on Windows, macOS, Linux, ChromeOS, and Android. The visible, hidden, and auto values all ship in the same release, and the contentvisibilityautostatechange event also lands in Chrome 85. Chrome 4 to 84 did not support the property at all.
Microsoft Edge supports content-visibility by default from Edge 85 on Windows, macOS, and Linux. Chromium-based Edge inherits the property directly from the underlying Blink engine, so every Edge version from 85 onward matches Chrome on values and event support. Legacy EdgeHTML 12 to 18 did not support the property.
Firefox supports content-visibility by default from Firefox 125 on Windows, macOS, Linux, and Android. Firefox 109 to 124 kept the property disabled by default behind the layout.css.content-visibility.enabled flag in about:config. Firefox 2 to 108 did not support content-visibility at all and ignored the declaration.
Safari supports content-visibility by default from Safari 18 on macOS Sequoia and Safari 18 on iOS 18 and iPadOS 18. Earlier WebKit versions did not parse the property and rendered every section eagerly. Pages that need the rendering skip on older iOS users should gate the rule with an @supports block.
Opera supports content-visibility by default from Opera 71 on desktop, which tracks the Chromium 85 release line. Opera Mobile 60 on Android also supports the property by default since it shares the same Blink engine. Opera Mini does not support content-visibility because the Presto-based proxy renderer skips most modern CSS containment.
Samsung Internet supports content-visibility by default from Samsung Internet 14 on Galaxy phones and tablets. The browser shares the underlying Chromium engine with Chrome on Android, so it matches Chrome 85 on values and event support. Samsung Internet 4 to 13 did not support the property and silently ignored the rule.
Chrome for Android supports content-visibility by default from Chrome 85 on Android 7 and later. The legacy stock Android Browser on Gingerbread through KitKat does not support content-visibility because that engine predates the CSS Containment Module. Modern Android WebView inherits the Chromium engine, so embedded apps pick up the property as the system WebView refreshes past version 85.
Internet Explorer 6 through 11 do not support content-visibility. The property landed long after Microsoft retired the Trident engine in favor of Edge. Users on Windows who need the rendering skip should switch to Microsoft Edge 85 or later, where Chromium-based Edge supports the property by default.
Note: content-visibility behaves differently across Safari 18, Firefox 125, and older mobile WebViews. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
content-visibility accepts three keyword values. Each one changes whether the browser lays out and paints the element, whether the element keeps its rendered state, and whether the element stays reachable to find-in-page and screen readers.
content-visibility: auto removes the cost of laying out and painting off-screen sections on the first frame. The web.dev case study reports rendering time on a long travel article dropping from 232 ms to 30 ms, roughly a 7x speed-up on initial render.
// Feature-detect content-visibility before relying on it
if (CSS.supports('content-visibility', 'auto')) {
// Apply content-visibility: auto to every long article section
document.querySelectorAll('article > section').forEach((section) => {
section.style.contentVisibility = 'auto';
section.style.containIntrinsicSize = 'auto 600px';
});
console.log('content-visibility is on; offscreen sections will skip render work.');
} else {
console.log('content-visibility is not supported in this browser; sections render eagerly.');
}contain-intrinsic-size sets a placeholder size for an element that uses content-visibility: auto while the element is off-screen and not laid out. Without it the browser treats the box as zero-height and the scrollbar, scroll-into-view, and anchor links break.
content-visibility ships in every modern engine, but the way each browser handles anchor links, find-in-page, sticky headers, and printing inside an auto section still trips up production sites.
In my experience, the failure that bites teams the most is the missing contain-intrinsic-size, where a page that ships content-visibility: auto without the placeholder size loads fast on the first paint but then thrashes the scrollbar, breaks deep links from search engines, and makes Cmd+F land on the wrong section. Setting contain-intrinsic-size: auto 600px on the same selector fixes the whole class of bugs in one line.
All content-visibility version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance