Pushing saturation past 100% is what stops frosted glass looking washed out and gray.
A faint light border is what suggests the edge of a pane. Without it the panel tends to melt into the background.
Build a frosted glass panel and see it over a real background.
Pushing saturation past 100% is what stops frosted glass looking washed out and gray.
A faint light border is what suggests the edge of a pane. Without it the panel tends to melt into the background.
Glassmorphism is the frosted pane look, where a panel blurs whatever sits behind it while staying partly see-through. It went mainstream with macOS Big Sur and Windows 11, and it's held on because it does something useful. A blurred backdrop separates a panel from a busy background without hiding that background entirely, so the page keeps its depth.
The effect is four or five declarations working together, and it collapses if any one of them is wrong. You need backdrop-filter for the blur, a semi-transparent background so there's something to see through, and usually a faint light border to suggest the edge of the pane. Get the tint too opaque and it stops being glass. This tool shows the panel over a genuinely busy background, because that's the only way to judge it. A glass panel over a flat color looks fine no matter what you set.
Glass works when there's something worth seeing behind it, and it's wasted when there isn't.
Two more worth a look, the CSS Filter Generator covers the same blur applied to the element itself, and the CSS Box Shadow Generator handles the lift. Or browse all our free developer tools.
Nearly always because the background is fully opaque. backdrop-filter only affects what's visible behind the element, so if your background color has no alpha there's nothing showing through to blur. The second common cause is that there genuinely is nothing behind it, such as a panel sitting directly on a flat body color, in which case blurring a solid color produces the same solid color.
Yes, include it. Safari supported backdrop-filter for years only under -webkit-backdrop-filter, and plenty of installed browsers still need it. The prefixed line costs nothing and this tool emits both. Put the prefixed one first so the standard property wins wherever it's understood.
It can be, and this is the effect's real weakness. Text on glass sits over a background you don't control, so its contrast ratio changes as the page scrolls or the image changes. That makes it hard to guarantee the 4.5:1 that body text needs. The practical fix is to raise the tint opacity until the worst-case background is safe, or to keep the panel over a region you know is dark or light. Never assume the blur alone gives you enough contrast.
Blurring mixes neighboring pixels together, and mixing lots of colors pulls them toward gray. Adding saturate(140%) to the backdrop filter pushes that color back out, which is why real system UIs do it. Without it, frosted glass over a vivid photo looks strangely washed out, and most tutorials leave this step out.
It can, more than most CSS. The browser has to sample and blur a live region of the page on every frame it changes, so a large glass panel over animated or scrolling content is genuinely expensive, especially on low-end phones. Keep the blurred area as small as you can, avoid animating the blur radius, and be careful with a full-width sticky header on a long scrolling page.
The blur is skipped and you're left with just the semi-transparent background color, which usually looks thin and hard to read. If that matters, wrap the transparent background in an @supports (backdrop-filter: blur(1px)) block and give unsupporting browsers a more opaque fallback color instead.