Viewport units (vh, vw, vmin, vmax) work in Chrome 26+, Edge 12+, Firefox 19+, Safari 6.1+, and Opera 15+. Learn unit types, use cases, and quirks.

Prince Dewani
May 6, 2026
Viewport units are W3C CSS length units that size an element as a percentage of the browser viewport, including vh, vw, vmin, vmax, and the newer dvh, svh, and lvh variants. They work in Chrome 26+, Edge 12+, Firefox 19+, Safari 6.1+ on macOS and iOS, Opera 15+, and Samsung Internet 4+, with partial support in Internet Explorer 9 to 11.
This guide covers what viewport units are, the browsers that support them, the unit types, common use cases, and known issues.
Viewport units are CSS length units defined in the W3C CSS Values and Units Module that size an element relative to the browser viewport. The base set is vh, vw, vmin, and vmax. Each one equals 1% of the viewport height, width, smaller side, or larger side.
Viewport units work in every modern desktop and mobile browser. The classic vh, vw, vmin, and vmax shipped early across Chrome, Firefox, and Safari, while the dynamic svh, lvh, and dvh variants arrived more recently in Chrome 108+, Firefox 101+, and Safari 15.4+.
Chrome supports vh, vw, vmin, and vmax from Chrome 26 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 20 to 25 had partial support, and Chrome 4 to 19 did not support them. Chrome 108 added the dynamic units dvh, svh, lvh, and their width and logical-side counterparts.
Microsoft Edge supports the classic units from Edge 12 on Windows, macOS, Linux, Android, and iOS, with full vmax from Edge 16 on the EdgeHTML engine. Chromium Edge from Edge 79 onwards behaves the same as Chrome and added dvh, svh, and lvh from Edge 108.
Firefox supports vh, vw, vmin, and vmax from Firefox 19 on Windows, macOS, Linux, and Android. Firefox 1 to 18 did not support them. Firefox 101 added the dynamic units dvh, svh, lvh, and the matching width and logical-side variants.
Safari supports vh and vw from Safari 6.1 on macOS and Safari 8 on iOS. Safari 6 had partial support, and Safari 6 and 7 ignore viewport units inside calc(). vmax shipped in Safari 6.1 on macOS and Safari 8 on iOS. Safari 15.4 on macOS and iOS added dvh, svh, and lvh.
Opera supports vh, vw, vmin, and vmax from Opera 15 on desktop and from Opera Mobile 14 on Android. Opera 9 to 12.1 used the Presto engine and did not support viewport units. Opera 94 added the dynamic dvh, svh, and lvh units. Opera Mini, the proxy-rendered browser, still does not support any viewport unit.
Samsung Internet supports vh, vw, vmin, and vmax from Samsung Internet 4 on Galaxy phones and tablets. The browser is built on Chromium, so it follows the same rules as Chrome for Android. Samsung Internet 21 added dvh, svh, and lvh.
Chrome for Android supports the classic units from Chrome 25 on Android 4.0 and later. The legacy stock Android Browser added support in Android 4.4 KitKat WebView. Android 2.1 to 4.3 did not support viewport units at all. Use Chrome for Android, Firefox for Android, or Samsung Internet for full coverage.
Internet Explorer 9, 10, and 11 ship partial support for vh and vw, but vmax does not work at all and the units fail inside the font shorthand. IE 6 to 8 do not support viewport units. None of the dynamic units (dvh, svh, lvh) work in any IE version. Microsoft has retired Internet Explorer, so use Edge for any new work.
Note: Viewport units behave differently in IE 9 to 11, Safari 6 to 7, and mobile Safari before 15.4. Test them on real browsers and OS with TestMu AI. Try TestMu AI free!
CSS Values and Units Level 4 defines four families of viewport units. Each family has a height, width, smaller-side, and larger-side variant, plus inline and block logical-side variants. The four families differ in which viewport size they measure against on mobile.
/* Classic viewport units, supported almost everywhere */
.hero {
height: 100vh;
font-size: calc(1rem + 1vw);
}
/* Modern dynamic units, Chrome 108+, Firefox 101+, Safari 15.4+ */
.full-screen {
height: 100vh; /* fallback for older browsers */
height: 100dvh; /* tracks the visible viewport on mobile */
}
/* Smallest viewport, address bar shown */
.app-shell {
min-height: 100svh;
}Viewport units show up across almost every production web app where layout has to follow the screen instead of the parent. The most common patterns lock content to the viewport, scale type fluidly, and replace JavaScript-driven resize logic.
Viewport units are widely supported, but a handful of edge cases still bite in production. Most surprises come from mobile Safari, scrollbar measurement on desktop, and the IE 11 partial-support quirks.
In my experience, the bug that costs the most debugging time is the iOS Safari 100vh overflow. The hero looks correct in DevTools, the user opens the page on an iPhone, and the call-to-action sits hidden under the address bar. Switching to 100dvh on Safari 15.4+ fixes it in a single line.
All viewport unit 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