Testing

CSS Overflow: Browser Support, Values, Limitations

CSS overflow works in Chrome 4+, Edge 12+, Firefox 2+, Safari 3.1+, Opera 10+, Samsung Internet 4+, and IE 6+. Learn the values and the known issues.

Author

Prince Dewani

May 1, 2026

CSS overflow is a CSS 2.1 shorthand property that controls how a box handles content that extends past its padding edge. It works in Chrome 4+, Edge 12+, Firefox 2+, Safari 3.1+, Opera 10+, Samsung Internet 4+, and Internet Explorer 6+, while the newer overflow: clip value ships from Chrome 90, Firefox 81, and Safari 16.

This guide covers what CSS overflow is, the browsers that support it, the accepted values, overflow-x versus overflow-y, and the known issues.

What is CSS overflow?

CSS overflow is a shorthand property defined in the W3C CSS Overflow Module Level 3. It controls how content that runs past a box's padding edge is shown, clipped, or scrolled. It is shorthand for overflow-x and overflow-y, and accepts visible, hidden, clip, scroll, and auto.

Which browsers does CSS overflow support?

CSS overflow has near-universal browser support. Every shipping desktop and mobile browser supports the property with the visible, hidden, scroll, and auto values, and modern engines also support the newer clip value.

Loading browser compatibility data...

CSS overflow compatibility in Chrome

Chrome supports CSS overflow by default from Chrome 4 on Windows, macOS, Linux, ChromeOS, and Android. The visible, hidden, scroll, and auto values have shipped since the first Blink release. Chrome added overflow: clip from Chrome 90, and the clip value works on every Chromium-based browser that follows the same release line.

CSS overflow compatibility in Edge

Microsoft Edge supports CSS overflow by default from Edge 12 on Windows, macOS, and Linux. Legacy EdgeHTML 12 to 18 supported the visible, hidden, scroll, and auto values. Chromium-based Edge from Edge 79 added overflow: clip from Edge 90 and matches Chrome on every other value.

CSS overflow compatibility in Firefox

Firefox supports CSS overflow by default from Firefox 2 on Windows, macOS, Linux, and Android. The base values have shipped since the early Gecko releases. Firefox added overflow: clip from Firefox 81, and Firefox treats the legacy overflow: overlay value as overflow: auto rather than parsing it as a separate behavior.

CSS overflow compatibility in Safari

Safari supports CSS overflow by default from Safari 3.1 on macOS and from Safari 3.2 on iOS. The visible, hidden, scroll, and auto values have shipped on every WebKit version since. Safari added overflow: clip from Safari 16 on macOS Ventura and Safari 16 on iOS 16; older Safari builds fall back to overflow: hidden behavior when they encounter clip.

CSS overflow compatibility in Opera

Opera supports CSS overflow by default from Opera 10 on desktop. Opera Mobile 12 to 12.1 had a known regression that broke overflow on some sites, and from Opera Mobile 14 on the Blink engine the property works the same way it does on Chrome. Opera added overflow: clip from Opera 76 on the same Chromium 90 base.

CSS overflow compatibility in Samsung Internet

Samsung Internet supports CSS overflow by default from Samsung Internet 4 on Galaxy phones and tablets. The browser shares the underlying Chromium engine with Chrome on Android, so it picks up overflow: clip from Samsung Internet 15 once the device updates to a build based on Chromium 90 or later.

CSS overflow compatibility in Android Browser

Chrome for Android supports CSS overflow by default from Chrome 18, and the legacy Android Browser supports it from Android Browser 4.4 on KitKat. Android Browser 2.1 to 4.3 did not support CSS overflow on Gingerbread, Honeycomb, Ice Cream Sandwich, or Jelly Bean. Modern Android WebView inherits the Chromium engine, so embedded apps pick up overflow updates as the system WebView refreshes.

CSS overflow compatibility in Internet Explorer

Internet Explorer 6 through 11 support CSS overflow with the visible, hidden, scroll, and auto values. IE does not support overflow: clip or the legacy overflow: overlay alias. Microsoft has retired Internet Explorer, so users on Windows who need overflow: clip should switch to Microsoft Edge 90 or later.

Note

Note: CSS overflow behaves differently across Safari, iOS, and older Android Browser builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!

What values does CSS overflow accept?

CSS overflow accepts five keyword values. Each one changes whether the box clips its content, whether scrollbars appear, and whether the box becomes a scroll container.

  • visible: The default value. Content that runs past the padding edge is painted outside the box. The box does not become a scroll container, and no scrollbars appear. Setting overflow: visible on a sized box can cause overlapping layouts when text or images are larger than the box.
  • hidden: Clips the content at the padding edge and removes scrollbars. The box becomes a scroll container, so the area is still programmatically scrollable through scrollLeft, scrollTop, scrollTo, or scrollIntoView. Use hidden when a script needs to control scroll position without exposing a visible scrollbar.
  • clip: Clips the content at the overflow clip edge and blocks programmatic scrolling. The box does not become a scroll container, no scrollbars appear, and the scrolling APIs return without effect. Pair clip with overflow-clip-margin to extend the clip edge by a few pixels.
  • scroll: Clips the content and always shows scrollbars, even when the content fits. Use scroll only when you need a stable layout where the scrollbar gutter never collapses, since auto handles the on-demand case better.
  • auto: Clips the content and shows scrollbars only when the content overflows. The box becomes a scroll container. auto is the recommended value for most scrollable regions because the scrollbar appears on demand without forcing a permanent track.
  • overlay: A legacy WebKit alias for auto that draws scrollbars on top of the content. The CSS Overflow specification removed it; Safari and older Chromium versions still parse it as auto. Use scrollbar-gutter with overflow: auto instead.

What is the difference between overflow-x and overflow-y?

overflow-x and overflow-y are the longhand properties that the overflow shorthand expands into. overflow-x controls horizontal overflow on the inline axis, and overflow-y controls vertical overflow on the block axis. Setting overflow with one value applies that value to both axes; setting it with two values applies the first to overflow-x and the second to overflow-y.

  • Mixing visible with a non-visible axis: If overflow-x is visible and overflow-y is auto, hidden, scroll, or clip, the spec computes the visible axis as auto. The same rule applies in the other direction. You cannot let one axis flow freely while the other scrolls.
  • Mixing clip with a non-clip axis: If overflow-x is clip and overflow-y is anything other than visible or clip, clip is computed as hidden on the non-matching axis. This is why a card with overflow-x: clip and overflow-y: auto becomes overflow-x: hidden in practice.
  • Single-axis scrollbars: Use overflow-x: auto on a wrapper around a wide table or a code block to let only the horizontal axis scroll while the page keeps scrolling vertically. This is the standard pattern for responsive tables.
  • Browser support parity: overflow-x and overflow-y ship in the same engines as the shorthand. Chrome 4+, Edge 12+, Firefox 3.5+, Safari 3+, Opera 9.5+, Samsung Internet 4+, and Internet Explorer 8+ all support the longhand properties.
...

What are the known issues with CSS overflow?

CSS overflow ships in every modern browser, but the way each engine paints scrollbars, handles momentum scrolling, and combines overflow with sticky or transformed children still trips up production sites.

  • iOS Safari momentum scroll on overflow: hidden: An element with overflow: hidden on iOS Safari can still respond to programmatic scrolling and to JavaScript scroll calls, even though no scrollbar is visible. Switching the value to overflow: clip blocks the scrolling APIs cleanly because clip removes the scroll-container status by spec.
  • Scrollbar gutter shifts the layout: overflow: scroll always reserves space for a scrollbar, and overflow: auto adds the gutter only when content overflows. The on-demand gutter can shift the page layout when content height crosses the threshold. Use scrollbar-gutter: stable on the scrolling element to keep the layout fixed.
  • position: sticky breaks under overflow: hidden: A sticky child stops sticking when any ancestor between it and the viewport sets overflow to hidden, scroll, auto, or clip. The sticky element is now positioned relative to that ancestor's scroll container, not the viewport. Audit the ancestor chain before debugging the sticky rule.
  • Legacy overflow: overlay is non-standard: overlay was never part of the standard CSS Overflow specification. Safari still parses it as auto, Chromium removed first-class support, and Firefox treats it as auto. Pages that depend on overlay for scrollbar styling should migrate to scrollbar-gutter and scrollbar-color.
  • Android Browser 2.1 to 4.3 ignores overflow on small boxes: The legacy Android Browser on Gingerbread through Jelly Bean has long-standing bugs where overflow: auto and overflow: scroll are ignored on inner divs that are smaller than the viewport. Android Browser 4.4 and Chrome for Android fix the behavior.

In my experience, the failure that bites teams the most is the overflow: hidden plus position: sticky combo, where a header that is sticky inside a scrollable card silently stops sticking because a wrapper four levels up has overflow: hidden for an unrelated reason. The fix is to move the sticky element out of the clipping wrapper, not to fight the sticky rule itself.

...

Citations

All CSS overflow version numbers and platform notes in this guide come from these primary sources:

Author

Prince Dewani is a Community Contributor at TestMu AI, where he manages content strategies around software testing, QA, and test automation. He is certified in Selenium, Cypress, Playwright, Appium, Automation Testing, and KaneAI. Prince has also presented academic research at the international conference PBCON-01. He further specializes in on-page SEO, bridging marketing with core testing technologies. On LinkedIn, he is followed by 4,300+ QA engineers, developers, DevOps experts, tech leaders, and AI-focused practitioners in the global testing community.

Open in ChatGPT Icon

Open in ChatGPT

Open in Claude Icon

Open in Claude

Open in Perplexity Icon

Open in Perplexity

Open in Grok Icon

Open in Grok

Open in Gemini AI Icon

Open in Gemini AI

Copied to Clipboard!
...

3000+ Browsers. One Platform.

See exactly how your site performs everywhere.

Try it free
...

Write Tests in Plain English with KaneAI

Create, debug, and evolve tests using natural language.

Try for free

Frequently asked questions

Did you find this page helpful?

More Related Hubs

TestMu AI forEnterprise

Get access to solutions built on Enterprise
grade security, privacy, & compliance

  • Advanced access controls
  • Advanced data retention rules
  • Advanced Local Testing
  • Premium Support options
  • Early access to beta features
  • Private Slack Channel
  • Unlimited Manual Accessibility DevTools Tests