CSS Zoom supports Chrome 4+, Edge 12+, Firefox 126+, Safari 4+, Opera 15+, Samsung Internet 4+, and IE 5.5 to 11. See full browser support details.

Prince Dewani
May 2, 2026
CSS Zoom is a CSS property that scales an element and its child elements while affecting page layout, defined by Microsoft for Internet Explorer and now drafted by the W3C. It works in Chrome 4+, Edge 12+, Firefox 126+, Safari 4+, Opera 15+, Samsung Internet 4+, and IE 5.5 to 11; older Firefox before 126 ignored it.
This guide covers what CSS Zoom is, browser support, accepted values, the difference from transform: scale, a hover-zoom recipe, and known issues.
CSS Zoom is a CSS property that scales the rendered size of an element and every descendant. Unlike transform: scale, it changes the layout box, so siblings reflow around the new size. The W3C CSS Working Group is standardizing the property in the CSS Viewport Editor's Draft.
CSS Zoom now ships in every major engine. The Web Platform Baseline marks the property as newly available across Chromium, WebKit, and Gecko engines after Firefox finally added it.
Chrome supports CSS Zoom from Chrome 4 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 126 shipped the standardized layout-affecting behavior aligned with the W3C draft, while older Chrome builds used the original Microsoft semantics that did not always trigger reflow on dynamic value changes.
Microsoft Edge supports CSS Zoom from Edge 12 on Windows and macOS through the same Chromium pipeline as Chrome. Internet Explorer mode inside Edge also keeps the legacy IE 11 zoom behavior alive for older intranet apps that still depend on the hasLayout fix.
Firefox supports CSS Zoom from Firefox 126 on Windows, macOS, Linux, and Android by default. Firefox 2 to 125 parsed and discarded the property, so any pre-126 fallback needs transform: scale() instead of zoom.
Safari supports CSS Zoom from Safari 4 on macOS, iOS, iPadOS, and visionOS. Safari 3.1 and 3.2 did not parse the property at all. Safari also accepts the non-standard zoom: reset keyword, which prevents user pinch-zoom from scaling the element further on the original WebKit path.
Opera supports CSS Zoom from Opera 15 on Windows, macOS, and Linux through the Blink engine. Opera 9 to 12.1 on the older Presto engine did not support the property, and Opera Mobile picked up support from Opera Mobile 80 on Android.
Samsung Internet supports CSS Zoom from Samsung Internet 4 on Galaxy phones and tablets through its Chromium base. Every modern Samsung Internet release parses both the number and percentage forms of the value without a flag.
The legacy stock Android Browser supports CSS Zoom from Android 2.1 through Android 4.4.4. On modern Android phones, use Chrome for Android or Samsung Internet, both of which inherit the full Chromium support, so the legacy browser's quirks are no longer a concern.
Internet Explorer 5.5 through Internet Explorer 11 fully support CSS Zoom; the property started life as a Microsoft extension in IE 5.5 and powered the famous hasLayout layout fix. Microsoft has retired Internet Explorer, so move new work to Edge or Edge IE Mode for any legacy intranet pages.
Note: CSS Zoom behaves differently across Firefox before 126, modern Chromium, and WebKit builds. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
CSS Zoom accepts numbers, percentages, and a couple of non-standard keywords, all clamped to zero or higher. The W3C draft formalizes the number and percentage paths, while the keywords stay browser-specific.
Both properties scale the visible size of an element, but they take different rendering paths. The choice changes how the page reflows, how scrollbars react, and how surrounding content moves on every frame.
| Dimension | CSS Zoom | transform: scale() |
|---|---|---|
| Layout impact | Affects layout; surrounding content reflows around the new size | No layout impact; siblings keep their original positions |
| Scrollbars | The scaled element pushes scrollbars when it grows past its container | Scrollbars stay tied to the original box; scaled overflow is ignored |
| Performance | Triggers reflow and repaint on the main thread | Hardware-accelerated; repaints on the GPU compositor layer |
| Animatability | Not animatable; transitions and keyframes cannot interpolate zoom | Fully animatable through transition: transform and CSS keyframes |
| Click and hit-testing | Click coordinates work against the new layout box | Click targets stay on the unscaled box, which can confuse pointer events |
| Browser support floor | Chrome 4+, Edge 12+, Firefox 126+, Safari 4+, IE 5.5+ | Universal in every modern browser since the CSS3 transforms era |
| Best for | Print previews, embedded preview panes, IE intranet apps | Hover effects, modal pop-ins, animations, GPU-friendly motion |
A common production use is enlarging an image when the user hovers it. The recipe uses CSS Zoom on hover plus a clipping container so the zoomed image stays inside its slot.
.zoom-on-hover {
overflow: hidden;
cursor: zoom-in;
}
.zoom-on-hover img {
width: 100%;
display: block;
}
.zoom-on-hover img:hover {
zoom: 1.2;
}If a smooth animation matters more than layout reflow, swap zoom: 1.2 for transform: scale(1.2) and add transition: transform 0.3s ease. CSS Zoom is not animatable, so the change always snaps instantly on hover.
CSS Zoom carries the bruises of its non-standard origin, and even after the W3C draft formalized the behavior, several rough edges remain in production code.
In my experience, the most common CSS Zoom bug in cross-browser QA is shipping a zoom: 0.95 down-scale on a desktop dashboard and watching Firefox 125 users report that nothing scales at all; always pair the property with a transform: scale() fallback inside @supports not (zoom: 1).
All CSS Zoom 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