Liquid Glass Surface
Dynamic. Adaptive. Material.

A new visual language that responds to the content behind it, ambient light, and user context — making interfaces feel physical without sacrificing clarity.

iOS 26 macOS Tahoe visionOS 3 watchOS 12

What is Liquid Glass?

Apple's defining visual material for the next era of software design — a physics-inspired surface treatment that bridges the digital and physical worlds.

Definition

Liquid Glass is a translucent material system where surfaces dynamically adapt their appearance based on what lies beneath them, the ambient environment, and real-time interaction state. It is not a static visual effect — it is a responsive material with behaviour rules.

Key distinction

Unlike generic glassmorphism (which is simply backdrop-filter: blur with a semi-transparent background), Liquid Glass incorporates specular highlights, refraction simulation, semantic depth, and system-level adaptivity that responds to wallpaper, accessibility settings, and Dark Mode.

The Evolution of Apple's Visual Language
🪵
Skeuomorphic
2007 – 2013
Textures, gradients, realistic materials
Flat Design
2013 – 2017
Solid color, minimal chrome, iOS 7
🫧
Translucency
2017 – 2024
Vibrancy, blur, depth layers
💎
Liquid Glass
2025 →
Dynamic material, specular, refraction

6 Visual Properties

Liquid Glass is defined by six distinct visual behaviours that, together, create the sensation of a real physical material rendered in software.

Specular Surface
01
Specular Highlights

A bright reflection along the top edge simulates a light source hitting the glass, giving the material weight and curvature.

box-shadow:
  /* specular highlight — top */
  inset 0 1px 0 rgba(255,255,255,0.6),
  /* inner shadow — bottom */
  inset 0 -1px 0 rgba(0,0,0,0.15),
  /* ambient drop shadow */
  0 4px 20px rgba(0,0,0,0.25);

border: 1px solid rgba(255,255,255,0.25);
Content behind the glass surface
02
Translucency

Content behind the surface remains visible and readable, reinforcing spatial hierarchy and helping users stay oriented.

Underlying content
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
background: rgba(255,255,255,0.18);

/* Dark mode variant */
background: rgba(28,28,30,0.75);
03
Refraction & Lensing

The material subtly shifts and saturates the colours behind it, like light bending through real glass — not just blurring, but optically distorting.

/* saturate() amplifies colour
   behind the surface, simulating
   the chromatic lens effect */
backdrop-filter:
  blur(20px)
  saturate(180%)
  brightness(1.05);

-webkit-backdrop-filter:
  blur(20px)
  saturate(180%)
  brightness(1.05);
04
Adaptive Colouring

The glass surface tints itself from the dominant colour of whatever lies beneath it — producing a contextually harmonious appearance without explicit colour specification.

/* The tint comes from backdrop-
   filter sampling the content
   below — no extra colour needed.
   Use low-opacity white fill: */

background: rgba(255,255,255,0.15);
backdrop-filter: blur(20px);

/* System handles the rest.
   The glass "inherits" colour
   from whatever is behind it. */
05
Dynamic Shadows

Layered shadow stacks simulate directional ambient occlusion — the shadow changes depth, direction and softness based on the material's elevation and context.

/* 3-layer shadow stack */
box-shadow:
  /* contact shadow */
  0 2px 4px rgba(0,0,0,0.06),
  /* ambient elevation */
  0 8px 24px rgba(0,0,0,0.1),
  /* wide atmospheric */
  0 20px 40px rgba(0,0,0,0.06);
Thin
Thick
06
Materiality (Thickness)

Glass comes in multiple thicknesses: thin (subtle, 8–12px blur) for tooltips and secondary chrome, and thick (prominent, 40px+ blur) for sheets and overlays.

THIN MATERIAL
THICK MATERIAL
/* Thin — tooltips, secondary */
.glass-thin {
  backdrop-filter: blur(8px);
  background: rgba(255,255,255,0.08);
}

/* Regular — toolbars, cards */
.glass-regular {
  backdrop-filter: blur(20px);
  background: rgba(255,255,255,0.18);
}

/* Thick — modals, sheets */
.glass-thick {
  backdrop-filter: blur(40px);
  background: rgba(255,255,255,0.25);
}

The 3-Layer System

Liquid Glass is always positioned at the boundary between two logical layers. Understanding the layer model is essential to applying it correctly.

3
Chrome Layer
Navigation bars, tab bars, toolbars, floating controls
Glass surface here
2
Content Layer
Scrollable content, cards, lists, media — the "substance" of your view
Your content
1
Background Layer
App background, wallpaper, hero imagery — the canvas that colours the glass
Colour source
The glass is always transparent downward
A Liquid Glass surface reads the layer(s) immediately below it. It never "sees through" itself to layers above. If you place glass above other glass, the lower glass surface becomes the colour source for the upper one.

Liquid Glass in Action

Four live demonstrations of how the material is applied in real interface contexts — each rendered entirely in CSS.

Navigation Bar
My App Edit
Floating Card
Floating Panel
Glass card floating over a gradient background
Bottom Sheet
app content below sheet
Share
Alert / Modal
Delete Item?
This cannot be undone. The item will be permanently removed.

Web Translation Rules

Six CSS patterns that faithfully translate each Liquid Glass property for use on the web. Copy these as your starting point.

01 Base Glass Surface
/* Base Liquid Glass surface — use on positioned elements over a rich background */
.glass-surface {
  /* Core blur — the foundation */
  backdrop-filter: blur(20px) saturate(160%) brightness(1.02);
  -webkit-backdrop-filter: blur(20px) saturate(160%) brightness(1.02);

  /* Fill — transparent white (light mode) */
  background: rgba(255, 255, 255, 0.18);

  /* Specular highlight on top edge */
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.55),
    inset 0 -1px 0 rgba(0, 0, 0, 0.08),
    0 4px 24px rgba(0, 0, 0, 0.12);

  /* Hairline border — reads as "edge of glass" */
  border: 1px solid rgba(255, 255, 255, 0.35);
}
02 Dark Mode Variant
/* Dark mode glass — denser, less white fill */
@media (prefers-color-scheme: dark) {
  .glass-surface {
    background: rgba(28, 28, 30, 0.78);
    border-color: rgba(255, 255, 255, 0.1);
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.12),
      0 4px 24px rgba(0, 0, 0, 0.4);
  }
}

/* Or use the data-theme attribute */
[data-theme="dark"] .glass-surface {
  background: rgba(28, 28, 30, 0.78);
  border-color: rgba(255, 255, 255, 0.1);
}
03 Navigation Bar
/* Sticky navigation bar with glass treatment */
.glass-navbar {
  position: sticky;
  top: 0;
  z-index: 100;

  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);

  background: rgba(255, 255, 255, 0.72);

  /* Bottom border instead of box-shadow for nav bars */
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);

  /* Specular only on bottom when scrolled over content */
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.6);

  padding: 0 24px;
  height: 56px;
  display: flex;
  align-items: center;
}
04 Bottom Sheet / Drawer
/* Glass bottom sheet */
.glass-sheet {
  backdrop-filter: blur(40px) saturate(150%);
  -webkit-backdrop-filter: blur(40px) saturate(150%);

  background: rgba(255, 255, 255, 0.82);

  /* Rounded top corners only */
  border-radius: 20px 20px 0 0;

  /* Specular on top edge — simulates light from above */
  border-top: 1px solid rgba(255, 255, 255, 0.6);
  border-left: 1px solid rgba(255, 255, 255, 0.35);
  border-right: 1px solid rgba(255, 255, 255, 0.35);

  box-shadow: 0 -8px 40px rgba(0, 0, 0, 0.15);
}
05 Modal / Alert
/* Glass modal */
.glass-modal {
  backdrop-filter: blur(60px) saturate(180%);
  -webkit-backdrop-filter: blur(60px) saturate(180%);

  background: rgba(255, 255, 255, 0.85);
  border-radius: 20px;

  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.7),
    0 20px 60px rgba(0, 0, 0, 0.25),
    0 4px 16px rgba(0, 0, 0, 0.1);
}

/* Scrim behind modal */
.glass-scrim {
  background: rgba(0, 0, 0, 0.35);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
06 Reduced Motion & Fallback
/* Always provide a fallback for
   browsers without backdrop-filter support */
@supports not (backdrop-filter: blur(1px)) {
  .glass-surface {
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(0, 0, 0, 0.1);
  }
}

/* Respect Increase Contrast accessibility setting */
@media (prefers-contrast: more) {
  .glass-surface {
    background: rgba(255, 255, 255, 0.95);
    border: 1px solid rgba(0, 0, 0, 0.3);
    backdrop-filter: none;
  }
}

When to Use / When to Avoid

Liquid Glass is a purposeful material, not a universal coat of paint. Understanding when to apply it — and when not to — is as important as knowing how to implement it.

Use Liquid Glass for…
  • Navigation bars, tab bars, and toolbars that float above scrolling content
  • Temporary surfaces: modals, alerts, popovers, tooltips, and bottom sheets
  • Floating action controls positioned over dynamic, image-rich backgrounds
  • Sidebar panels and detail views in split-pane layouts
  • System-level chrome elements that must appear consistent across diverse content
  • Overlays that need to preserve spatial context while drawing attention
Avoid Liquid Glass for…
  • Primary content cards or list rows — glass competes with the content itself
  • Large sections with solid colour backgrounds where blur has nothing to act on
  • Text-heavy reading surfaces — the visual noise reduces legibility
  • Decorative use with no functional purpose or depth relationship
  • Stacking multiple glass layers directly on top of each other without separation
  • Form fields, inputs, or editable areas where contrast is critical for accessibility

Liquid Glass vs. Generic Glassmorphism

Not all blur effects are equal. Here's how Apple's Liquid Glass material differs from the trend-driven "glassmorphism" commonly found across the web.

Property Liquid Glass (Apple HIG) Generic Glassmorphism
Specular highlights Mandatory — inset box-shadow simulates edge lighting from an ambient source Rarely implemented; surfaces appear flat and unconvincing
Blur quality 20–80px Gaussian + saturation + brightness adjustment for refraction Simple blur only; no colour amplification or brightness correction
Dark mode behaviour Different fill, border opacity, and blur intensity per colour scheme Often not adapted — same white fill in both modes
Semantic depth Always implies a specific z-position in the layer model; carries meaning Applied decoratively without layer logic or hierarchy purpose
Accessibility Fallbacks for Increase Contrast, Reduce Transparency, and older browsers No fallback strategy; often fails WCAG contrast requirements
Colour sampling Adapts tint from underlying content colour automatically Fixed white fill regardless of what lies beneath
Motion integration Blur radius and opacity transition with spring physics during interactions Static; no transition on appearance or dismissal
Platform parity Consistent across iOS, macOS, visionOS, and watchOS via system APIs Web-only workaround; no native system equivalent