Explore drift
GLASS
No lessons match.
Lesson 1 of 16 Principles
FOUNDATIONS

Principles

Frosted glass is chrome, not content. It belongs on the surfaces that float over your interface: navigation, overlays, pickers, toasts. Used there it reads as hierarchy and lets the work show through. Used as a reading surface it just makes text harder to read. This page is the whole system: the recipe, the anatomy, the real components, a builder, and the motion rules that keep it cheap to animate.

Where glass belongs
Glass earns its place
surfaces that sit OVER content
  • Floating chrome that rides over scrolling content: the nav orb, a command bar.
  • Transient overlays and sheets: dialogs, mobile menus, toasts.
  • Pickers and menus that want to borrow the color beneath them.
  • Any surface where seeing through to the content is the point.
A solid panel wins
reading surfaces and dense data
  • Long-form reading and documentation, where legibility beats depth.
  • Dense data: tables, forms, dashboards that stay put all session.
  • Anything on screen the whole time, where a live blur just burns frames.
  • Low-end devices, where a full-page backdrop filter is the first thing to drop.
Legibility
  • The tint buys the contrast, not the blur. Body text on glass needs the darkened surface fill under it. Blur alone leaves text swimming.
  • Hold a real contrast floor. If the background can go light, the tint has to go darker. Judge glass over the brightest thing it can sit on.
  • The frosted layer never carries meaning. Glyphs, labels, and icons sit crisp on top of the glass, never blurred inside it. That is the icons lesson, learned the hard way here.
  • Accent is a fill, not a text color. Text is white or muted white. The blue only shows up as the selected state.
Layering
  • Two glass planes is the ceiling. A third reads as murk. The blurs compound and the whole stack turns to mud.
  • Put a scrim under a bloom. Give the glass something calm and consistent to frost, not whatever noise happens to be behind it.
  • Never stack glass straight on glass. Keep a solid or a scrim between two planes so each one has a clear job.
THE RECIPE
INGREDIENTVALUENOTE
Surface tintrgba(18,18,18,.55) to rgba(20,20,20,.6)the darkened fill that buys contrast
Backdrop filterblur(12px to 14px) saturate(1.2)always paired with the -webkit- prefix
Border1px solid rgba(255,255,255,.12 to .14)catches the light along the edge
Top highlightinset 0 1px 0 rgba(255,255,255,.10)a 1px specular line inside the top edge
Depth shadow0 12px 32px rgba(0,0,0,.5)lifts the plane off the content below
Radius13 to 16px cards and pills, 9999px orbspills and orbs read softer than sharp corners
Contentwhite or muted white, accent as selectionthe mark sits on the glass, never in it
TEARDOWN

Anatomy

Glass is six ingredients working together. Toggle each one off to see what it was doing. The card is judged over three backgrounds because glass that looks fine on one color can fall apart on another. Everything starts on.

JUDGE IT OVER
Aa
Text stays legible on the tinted plane. The blur alone would not hold it.
Selected
All six ingredients on.
MECHANICS

Liquid Glass explained

Apple's Liquid Glass is not a heavier blur. It is an optical material that bends light at its edges, generates its own color from what sits behind it, and only ever lives on the floating control layer. These demos pull the ideas apart one at a time, from the refraction that gives it its name to the touch illumination that makes it feel alive. Values here are our own dark-theme mappings, not Apple quotes.

Lensing, not blur
Classic glassmorphism scatters light with a gaussian blur. Real glass keeps its center optically clear and bends light at the edges. On the web the cheap tell is an edge treatment: a bright rim plus an inner specular that reads as a lens, even when the fill underneath is the same blur.
Blur only, flat
Edge lensing
The mechanics, one at a time
True refraction (SVG displacement)
refracting
checking support...
A displacement map warps the backdrop at the edges. Chromium only: Safari and Firefox drop url() in backdrop-filter, so this is feature-detected and the everywhere-supported frosted fallback shows when it is missing.
Morphing between shapes
FLIP interpolates transform and radius while the blur stays constant, so two glass rects merge and split fluidly without ever re-rasterizing the filter.
Materialization
Ready
Glass appears by ramping the blur from zero through a short sequence of pre-built steps, never a hard cut and never a continuous blur animation on a large surface.
Touch illumination
Move over me
Pointer position drives two CSS custom properties that place a radial highlight under the cursor. No layout, no repaint of the blur, just a moving gradient.
The rules the demos assume
TWO VARIANTSRegular is the adaptive default for toolbars and controls. Clear is high transparency and only works over bold media with a dimming layer beneath it.
ADAPTIVE TINTSmall elements flip light or dark by the luminance behind them. Large elements adapt but never flip, so a big surface stays stable.
CONTENT SHADOWThe shadow deepens over busy content and lightens over plain, a dynamic scrim that is the real legibility trick.
SCALE = PHYSICSBigger glass reads as thicker material: deeper shadow and stronger lensing, not just a larger box.
LAYER DISCIPLINEApple's loudest rule. Glass is only for the floating navigation and control layer. Never content, never full-screen, never glass on glass.
MATERIALS

The material ladder

Apple ships one glass with many thicknesses, from ultraThin over media up to the opaque chrome that separates content from controls. These six swatches map that ladder onto our pure-black theme. Every value is a proposed dark-theme mapping, not an Apple quote. Switch the backdrop to judge each tier over color, and copy the exact rule block.

JUDGE THE LADDER OVER
TEXT ON GLASS

Vibrancy and text

Text on glass should not carry its own fixed color. Apple's materials use vibrancy tiers, semantic levels that pull from the content behind and stay legible as it shifts. The fix maps those tiers onto our tokens: primary is the foreground, secondary and tertiary step down through the muted greys. Toggle the card to hard-coded hex and watch it drown as the mesh drifts.

GOOD: tiers mapped to tokens
Portfolio
Balance moved with the market today. Secondary text still reads over every part of the drifting backdrop.
UPDATED 14:32 | TERTIARY TIER
Tier to token map
primary
--foreground #e5e5e5
secondary
--muted .55
tertiary
--muted-2 .35
separator
rgba .20
HIG rule: use the vibrancy tiers for text on materials, never a custom hex. Color belongs on fills, not on type.
SPATIAL

visionOS depth model

In visionOS almost everything is glass, and depth is spelled out through light. Controls attach to a window's edge and float partly outside it at a nearer depth. Darker material over lighter reads as recessed, lighter over darker signals something you can touch. Floating elements catch a specular highlight on their upper edge and cast a soft shadow below. This mock stitches those signatures together.

Now Playing

The window is lighter glass over a darker room. Its ornament rides above the top edge on its own nearer plane, with a stronger shadow selling the gap.

NESTED PANEL
Darker over lighter reads as depth
1Ornament overhang. The toolbar floats past the window edge at a nearer depth, its own glass with a deeper shadow.
2Darker-under nesting. The recessed panel is darker glass, so it sits behind the window surface.
3Upper-edge specular. A bright inset line on the top edge plus a soft drop shadow is the depth signature.
4Hover glow. The interactive chip lights on attention, confirming the target the way gaze does in the headset.
WEB CATALOG

Web techniques catalog

Seven ways to build glass on the web, from the frosted base you should reach for first to the true refraction you should reserve for one hero. Each card is a live demo with effort, performance, and support read in the same chip language used across this page. Adopt the cheap, well-supported ones as the baseline and progressive-enhance the rest.

RECIPE CARDS

Specular and rim recipes

Three copyable treatments that give flat glass its edge. The traveling highlight is the signature accent, a slow sheen that reads as light moving across the surface. The inset top light is the 1px specular that catches the rim. The noise overlay breaks up banding so the frost looks like real ground glass. Lift any of them straight into your own stylesheet.

COMPONENTS

Recipes

The site's real glass surfaces, rebuilt here as static replicas so you can lift the exact rule block. Each Copy CSS button carries the same values these components ship with. No two of them are quite the same, which is the point: the recipe flexes by role.

BUILDER

Playground

Dial the recipe and read the CSS back. The preview updates live over the same three backgrounds from Anatomy, and the generated block is the exact rule you would paste. Start from the site's defaults, then break them on purpose to feel the edges.

Aa
Live glass preview
GENERATED CSS
ANIMATION

Motion

Glass is expensive to repaint, so animate the cheap channels and leave the blur alone. Hover both chips below. One springs on transform and holds sixty frames. The other animates its blur radius and drags. Same chip, very different cost.

RIGHT · transform + opacity
Springs scale and x on hover. The glass never re-rasterizes, so it stays smooth.
WRONG · animating blur
The anti-pattern: a transition on backdrop-filter repaints the whole element every frame. Kept tiny here so it cannot wreck the page.
Materialization and morphing
The two glass-native motions from Apple's system, both built on the cheap channels. Materialization ramps the blur in on entrance through discrete pre-built steps. Morphing interpolates transform and radius while the blur holds constant, so two surfaces merge and split without a repaint.
MATERIALIZE · stepped blur
Ready
MORPH · FLIP, blur constant
Guidelines
  • Never animate the blur radius. Changing backdrop-filter forces a repaint storm. Animate transform and opacity only.
  • Springs the site uses: 480 stiffness, 30 damping for the bloom; 500 stiffness, 30 damping for hover lifts.
  • Enter and exit choreography: scale from .4 plus opacity, staggered 35 to 40ms between petals, so a set unfurls instead of appearing.
  • Under a 3D-rotated parent, give the glass translateZ(0) and will-change so it owns its layer, and clip on the rotating parent so the frosted edge does not get cropped.
  • Perspective lives on the parent only, never as perspective() inside a transform string, and never on a parent that also rotates a glass child.
  • Reduced motion: springs collapse to instant states, the blur never animates, and the orb's idle specular stops.
Engine notes
Three Motion v12 behaviors that cost real debugging time on this site.
KEYFRAMESA spring with three keyframes silently drops the middle one. Animate two keyframes, or drive the middle value yourself.
FINISHEDAn interrupted .finished promise never settles. Do not await it for cleanup that has to run every time.
RE-COMMITA finished spring re-commits its resolved transform over a manual clear. Clear after the frame, not before it.
TWO PHILOSOPHIES

Apple vs Google

Both platforms redesigned around depth in 2025, and they landed in opposite places. Apple made depth a physical material that bends and tints light. Google made depth a property of color, tonal elevation that mostly retired the shadow. One dazzles and gambles on legibility. The other stays calm and reliably accessible. Neither is wrong. They are different bets.

Apple, Liquid Glass

DEPTH AS OPTICAL MATERIAL

  • Glass is a real material that generates its own color from the environment behind it.
  • Refraction, specular highlights, and content-aware shadow sell physical realism.
  • Built for a spatial runway that runs from the phone through to visionOS.
  • The gamble: spectacle can undercut legibility, which is why the fallbacks matter.

Google, Material 3 Expressive

DEPTH AS TONAL ELEVATION

  • Elevation is a surface color plus a tint overlay, which largely replaced the drop shadow.
  • Blur is used only deliberately: Android 16 quick settings and the notification shade, extended in Android 17 betas and Wear OS 6.
  • Paired with an explicit Reduce Blur Effects toggle, so accessibility is a first-class switch.
  • The trade: restrained and less dazzling, but legible on a far wider range of hardware.

THE TRADE-OFF IN ONE LINE

Liquid Glass dazzles but risks legibility. M3 Expressive is restrained but reliably accessible. This page sides with legibility first: the headline recipe is the everywhere-supported frosted set with a scrim and a solid reduced-transparency fallback, and refraction is reserved for a single hero.

LEGIBILITY FIRST

Accessibility and legibility

Glass is the one material that can quietly fail a reader. The blur that makes it beautiful is the same blur that can bury text or trigger sensory discomfort. These are the hard rules, plus live simulations of the two media queries that matter. The toggles here simulate the OS settings on this page so you can see the effect without changing your system.

SIMULATED ON THIS PAGE, NOT YOUR OS
No scrim
Body text leaning on the tint alone. Flip the scrim on and feel the contrast floor rise.
With motion
A traveling specular sweeps this card. The reduced-motion simulation freezes it.
The ten rules
  • Hit WCAG against the worst case. 4.5:1 body and 3:1 large text, measured over the brightest backdrop the glass can ever sit on.
  • Always ship a text scrim. A wash of rgba(0,0,0,.20) to .30 under text on the dark theme.
  • Hold minimum opacity. Text-bearing glass over busy imagery needs about 55% effective surface opacity or more.
  • Keep blur in the sweet spot. 8 to 20px for card-sized surfaces. Past that it reads as fog, not frost.
  • Honor prefers-reduced-transparency. Drop to a solid --panel-2, not a lighter blur.
  • Honor prefers-reduced-motion. Freeze traveling speculars and morphs to a static state.
  • Flip text by luminance. Where feasible, switch text light or dark to match the backdrop under it.
  • Take discomfort seriously. Blur causes sensory discomfort for some users, so the reduced path has to be genuinely solid.
  • Never stack glass on glass. Two planes is the ceiling, and each needs something solid or a scrim between them.
  • Legibility beats spectacle. Ship the opaque fallback first, then layer the glass on top of a design that already works without it.
Case study: the iOS 26 walk-back

SHIP THE OPAQUE FALLBACK FIRST

In iOS 26 beta 1, Control Center leaned so far into clear glass that the controls were widely criticized as unreadable over bright wallpapers. By beta 2 Apple had walked it back: more opaque surfaces and additional accessibility toggles. The lesson is the one this whole section is built on. Even the company that invented the material shipped it too transparent at first. Legibility beats spectacle, and the opaque path is the one to get right before anything else.

GUARDRAILS

Do and don't

The whole system compressed into two columns. Everything on the left is a habit worth keeping. Everything on the right is a way glass goes wrong, usually because it wandered off the floating control layer or tried to carry a reading surface it had no business carrying.

Do
glass earns its keep
  • Keep it on the floating layer. Navigation, controls, overlays, toasts. The chrome that rides over content.
  • Let the tint buy the contrast. The darkened fill holds the text. The blur is only the look.
  • Ship the opaque fallback first. Solid --panel-2 for reduced transparency, then enhance up to glass.
  • Animate the cheap channels. Transform and opacity. Materialize with stepped blur, never a continuous one.
  • Reserve refraction for one hero. Progressive-enhance it, with a visible frosted fallback everywhere else.
Don't
how glass goes wrong
  • Don't glass a reading surface. Long-form and dense data want a solid panel, not a live blur.
  • Don't stack glass on glass. A third plane turns the whole stack to murk. Two is the ceiling.
  • Don't drop opacity for looks. Below about 55% over busy imagery the text starts to swim.
  • Don't animate the blur radius. It repaints the element every frame. This is the most expensive thing you can do.
  • Don't color the type. Text is white or muted white. The accent is a fill and a selected state, never a text color.
HOW IT WAS MADE

Process

The honest version of how the glass systems on this site came together, and where they still want to go. Two of them are worth walking through: the icon slabs and the navigation bloom.

The icon glass system
Every icon is two things: a container and a glyph. The container is the frosted slab. The glyph is the mark that rides on it. The system picks an archetype by asking whether the shape encloses space. Marks that wrap a region become enclosed. Marks that read as a single stroke or a pointer peek out past the slab so the silhouette stays legible. Underneath both: the frosted layer never carries meaning, so the glyph is always crisp and on top.

Enclosed

The glyph wraps a region, so it rides fully inside the slab. A folder, a card, a message. The container holds it.

Peek-out

A single stroke or a pointer would get lost inside. So the tip breaks the slab edge and the silhouette survives. An arrow, a bolt.

The navigation bloom
The nav started as a single orb, a seed in the corner. Opening it is a reveal, not a menu drop. Each destination is a petal that springs out on the 480/30 bloom spring, staggered 35 to 40ms apart, so the set unfurls. Selection is its own small choreography: the active petal fills with accent while the rest settle. The 3D of the fan lives as perspective on the parent only, and every petal owns its own layer with translateZ(0) so the frosted edge never gets cropped by the browser.
Ideas backlog
PARALLAXGlass depth stacking that shifts each plane at a different rate as the content scrolls behind it.
STATE TINTTinted frost for status: a faint green cast for success, amber for warning, without breaking the neutral system.
OVER VIDEOGlass over moving video, the hardest legibility test there is, with the tint doing all the work.
LIGHT SOURCEHighlights that all agree on one light, so a whole screen of glass feels lit from a single place.
REFERENCE

Resources

Twenty sources behind this page, grouped roughly from Apple's own material through the web recipes and the accessibility critiques. Every link was verified live in July 2026. The Apple documentation is canonical, the LiquidGlassReference repo is the best behavioral reference, and the kube and LogRocket writeups carry the copy-ready refraction values.

01
developer.apple.com / liquid-glass
Canonical material overview. The starting point for what Liquid Glass is and is not.
02
developer.apple.com / adopting-liquid-glass
Adoption guidance, including when to reach for it and when to leave surfaces solid.
03
HIG / Materials
The materials ladder and the vibrancy tiers, straight from the Human Interface Guidelines.
04
HIG / Designing for visionOS
The spatial glass rules: ornaments, depth through light, and real-time vibrancy.
05
WWDC25 219, Meet Liquid Glass
The introduction session. The clearest single explanation of the material's intent.
06
WWDC25 356, Get to know the new design system
How the material fits the wider 2025 design system across platforms.
07
WWDC25 323, Build a SwiftUI app with the new design
The hands-on build, useful for seeing the material applied in practice.
08
apple.com newsroom, launch announcement
The launch post, for the framing and the official language around the redesign.
09
Wikipedia, Liquid Glass
A sourced overview with the reception and criticism gathered in one place.
10
github.com / LiquidGlassReference
The best behavioral reference. What the material actually does, catalogued.
11
pxlnv.com, HIG update notes
A close read of how the HIG changed to accommodate the material.
12
m3.material.io / Elevation
Google's tonal elevation model, the other side of the depth argument.
13
blog.google, M3 Expressive launch
The Material 3 Expressive announcement, including where blur does get used.
14
kube.io, Liquid Glass in CSS and SVG
The deepest refraction writeup: the squircle profile and why it is Chromium only.
15
blog.logrocket.com, Liquid Glass effects
Copy-ready displacement values: scale, channels, and the fixed-size gotcha.
16
MDN, backdrop-filter
The property reference, including the -webkit- prefix requirement.
17
caniuse.com, backdrop-filter
The support matrix. Check here before you rely on anything beyond the base blur.
18
MDN, prefers-reduced-transparency
The media feature that drives the solid fallback. Chrome 118+ and Safari 17+.
19
developer.chrome.com, reduced transparency
Chrome's rollout post with the recommended pattern for the fallback.
20
axesslab.com, glassmorphism and accessibility
The inclusive-glass critique. Read it before you ship anything frosted.