Two design trends promise depth and dimension in flat interfaces. Both create tactile, almost physical UI elements. But they achieve it in opposite ways.
Glassmorphism uses transparency and blur to create frosted glass effects. Elements feel like they’re floating above colorful backgrounds. Think translucent panels with blurred backdrops.
Neumorphism (also called soft UI) uses subtle shadows to make elements appear molded from the background itself. Everything looks extruded or embossed into the surface. Think soft, pillow-like buttons.
Both trends emerged as reactions to years of flat design dominance. Both add visual interest without excessive decoration. But they serve different purposes and work in different contexts.
This guide compares both styles, shows you how to implement each, and helps you choose which fits your project.
TL;DR: Key Differences
Glassmorphism:
- Transparency and blur effects
- Works best on colorful or image backgrounds
- Better accessibility (higher contrast possible)
- More performant (backdrop-filter)
- Suitable for overlays, modals, cards
- Modern, lightweight aesthetic
Neumorphism:
- Soft shadows and highlights
- Works only on solid color backgrounds
- Accessibility challenges (low contrast)
- Can feel dated quickly
- Best for specific UI elements
- Tactile, physical aesthetic
Understanding Glassmorphism
Glassmorphism creates the illusion of frosted glass panels floating above backgrounds.
Core Characteristics
Semi-transparent backgrounds. Elements are partially transparent, revealing what’s behind them.
Backdrop blur. The background visible through transparent elements is blurred, creating frosted glass effect.
Subtle borders. Light, thin borders enhance the glass effect and define edges.
Vibrant backgrounds. Works best when there’s something colorful or interesting behind the glass to show through.
Layering and depth. Multiple glass panels can stack, creating sophisticated depth.
CSS Implementation
.glass-card {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 16px;
padding: 32px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
The backdrop-filter property creates the blur effect. Browser support is good in modern browsers.
Dark Glass Variant
.glass-dark {
background: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
color: white;
}
Dark glass works beautifully on light or colorful backgrounds.
Layered Glass
.glass-layer-1 {
background: rgba(255, 255, 255, 0.05);
backdrop-filter: blur(5px);
z-index: 1;
}
.glass-layer-2 {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
z-index: 2;
}
.glass-layer-3 {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(15px);
z-index: 3;
}
More blur and opacity for elements higher in the stack.
Glassmorphism Best Practices
Use on vibrant backgrounds. Glass needs something interesting behind it. Solid white or black backgrounds waste the effect.
Maintain readability. Ensure text has sufficient contrast against blurred backgrounds. Add semi-opaque backgrounds behind text if needed.
Don’t overuse. Too many glass elements create visual confusion. Use selectively for emphasis.
Check browser support. backdrop-filter works in Chrome, Edge, Safari, and Firefox. Provide fallbacks for older browsers.
Fallback for Unsupported Browsers
.glass-card {
background: rgba(255, 255, 255, 0.9); /* Fallback */
backdrop-filter: blur(10px);
}
@supports (backdrop-filter: blur(10px)) {
.glass-card {
background: rgba(255, 255, 255, 0.1); /* Transparent when supported */
}
}
Understanding Neumorphism
Neumorphism creates UI elements that appear molded from the background surface.
Core Characteristics
Soft shadows. Two shadows per element: one light, one dark. This creates the embossed or extruded effect.
Monochromatic color schemes. Works best with single background colors and minimal color variation.
Subtle depth. Elements appear to rise slightly from or sink slightly into the background.
Tactile feel. Everything looks soft, touchable, almost pillow-like.
Minimalist. Clean, simple designs without excessive decoration.
CSS Implementation
.neuro-button {
background: #e0e5ec;
border-radius: 16px;
padding: 20px 40px;
border: none;
box-shadow:
8px 8px 16px rgba(163, 177, 198, 0.6),
-8px -8px 16px rgba(255, 255, 255, 0.5);
}
Two shadows: dark on bottom-right, light on top-left. Creates raised effect.
Pressed/Inset State
.neuro-button:active {
box-shadow:
inset 6px 6px 12px rgba(163, 177, 198, 0.6),
inset -6px -6px 12px rgba(255, 255, 255, 0.5);
}
Inset shadows make element appear pressed into surface.
Input Fields
.neuro-input {
background: #e0e5ec;
border: none;
border-radius: 12px;
padding: 16px;
box-shadow:
inset 6px 6px 12px rgba(163, 177, 198, 0.5),
inset -6px -6px 12px rgba(255, 255, 255, 0.4);
}
.neuro-input:focus {
outline: none;
box-shadow:
inset 6px 6px 12px rgba(163, 177, 198, 0.7),
inset -6px -6px 12px rgba(255, 255, 255, 0.6);
}
Input fields appear recessed into the surface.
Cards with Neumorphism
.neuro-card {
background: #e0e5ec;
border-radius: 24px;
padding: 32px;
box-shadow:
12px 12px 24px rgba(163, 177, 198, 0.5),
-12px -12px 24px rgba(255, 255, 255, 0.6);
}
Larger shadows for bigger elements.
Neumorphism Challenges
Low contrast. The subtle shadows create inherently low contrast, making elements hard to distinguish.
Accessibility problems. Text on neumorphic backgrounds often fails WCAG contrast requirements.
Single color limitation. Only works well on solid, neutral backgrounds. Colorful or image backgrounds break the effect.
Dated quickly. The look can feel trendy rather than timeless, potentially dating your design.
Side-by-Side Comparison
Let’s compare the same elements in both styles.
Button Comparison
Glassmorphism:
.glass-button {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 12px;
padding: 16px 32px;
color: white;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.glass-button:hover {
background: rgba(255, 255, 255, 0.25);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}
Neumorphism:
.neuro-button {
background: #e0e5ec;
border: none;
border-radius: 12px;
padding: 16px 32px;
color: #5a6d87;
font-weight: 600;
cursor: pointer;
box-shadow:
6px 6px 12px rgba(163, 177, 198, 0.6),
-6px -6px 12px rgba(255, 255, 255, 0.5);
transition: all 0.3s ease;
}
.neuro-button:hover {
box-shadow:
8px 8px 16px rgba(163, 177, 198, 0.6),
-8px -8px 16px rgba(255, 255, 255, 0.5);
}
.neuro-button:active {
box-shadow:
inset 4px 4px 8px rgba(163, 177, 198, 0.6),
inset -4px -4px 8px rgba(255, 255, 255, 0.5);
}
Card Comparison
Glassmorphism:
.glass-card {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(15px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 20px;
padding: 40px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
Works beautifully over gradients, images, or colorful backgrounds.
Neumorphism:
.neuro-card {
background: #e0e5ec;
border-radius: 20px;
padding: 40px;
box-shadow:
12px 12px 24px rgba(163, 177, 198, 0.5),
-12px -12px 24px rgba(255, 255, 255, 0.6);
}
Requires solid neutral background to work.
Modal/Overlay Comparison
Glassmorphism excels here:
.glass-modal {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 24px;
padding: 48px;
max-width: 600px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.2);
}
The blur clearly separates modal from background content.
Neumorphism struggles:
Modals over complex backgrounds lose the subtle shadow effect. Neumorphism isn’t ideal for overlays.
When to Use Glassmorphism
Glassmorphism works best in specific contexts.
Ideal Use Cases
Overlays and modals. The blur clearly separates foreground from background while keeping context visible.
Navigation bars. Transparent headers that blur content beneath them create modern, clean navigation.
Cards on colorful backgrounds. Product showcases, portfolio items, or content cards benefit from glass effect.
Dashboard widgets. Glass panels over data visualizations or background images.
Mobile UI. iOS popularized this with their design language. Feels native on mobile.
Floating action buttons. Glass FABs stand out without being heavy.
Where Glassmorphism Works
Creative industries. Design agencies, portfolios, creative tools.
Modern apps. SaaS products, mobile apps, web applications.
Tech companies. Startups and tech brands wanting contemporary feel.
Media and entertainment. Music apps, video platforms, streaming services.
Background Requirements
Glassmorphism needs the right backdrop:
✅ Colorful gradients – Perfect ✅ Images – Excellent ✅ Patterns – Good ✅ Videos – Great ❌ Solid white – Wastes the effect ❌ Solid black – Minimal impact
When to Use Neumorphism
Neumorphism suits different contexts.
Ideal Use Cases
Minimal interfaces. Clean, focused designs benefit from subtle depth.
Single-purpose apps. Calculators, timers, simple tools where UI is minimal.
Specific UI elements. Toggles, knobs, sliders that benefit from tactile feel.
Portfolio pieces. Showcasing design skills with trendy aesthetics.
Experimental projects. Exploring new design directions.
Where Neumorphism Works
Design portfolios. Showing off technical skills and trend awareness.
Music and audio apps. Physical controls (knobs, sliders) benefit from tactile aesthetic.
Smart home interfaces. Control panels for lights, temperature, etc.
Minimalist products. Single-purpose tools with very simple UI.
Limitations to Consider
Accessibility is hard. Low contrast inherent to neumorphism makes WCAG compliance difficult.
Limited color range. Requires neutral, monochromatic backgrounds.
Trend risk. Might look dated quickly as trends evolve.
Visibility issues. Subtle shadows are hard to see in bright light or on low-quality displays.
Combining Both Styles
Some designs successfully blend glassmorphism and neumorphism.
Hybrid Approach
.hybrid-card {
/* Neumorphic base */
background: #e0e5ec;
box-shadow:
8px 8px 16px rgba(163, 177, 198, 0.5),
-8px -8px 16px rgba(255, 255, 255, 0.6);
border-radius: 20px;
padding: 32px;
}
.hybrid-card .glass-section {
/* Glass element within neuro card */
background: rgba(255, 255, 255, 0.5);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 12px;
padding: 16px;
margin-top: 16px;
}
Neumorphic structure with glass elements for emphasis.
When to Combine
Complex interfaces. Main structure neumorphic, highlighted elements glassmorphic.
Layered designs. Background elements neumorphic, foreground overlays glassmorphic.
Creative freedom. Experimental designs exploring both aesthetics.
Be careful not to overdo it. Too many effects create visual noise.
Accessibility Considerations
Both styles present accessibility challenges.
Glassmorphism Accessibility
Contrast issues: Text on transparent backgrounds may have insufficient contrast.
Solution:
.glass-card {
background: rgba(255, 255, 255, 0.2);
backdrop-filter: blur(10px);
}
.glass-card h2 {
background: rgba(0, 0, 0, 0.8); /* Solid background behind text */
padding: 8px 12px;
border-radius: 4px;
display: inline-block;
}
Add opaque backgrounds behind text when needed.
Neumorphism Accessibility
Low contrast is inherent: Subtle shadows create low contrast by design.
Solutions:
- Increase shadow intensity
- Add colored accents for active states
- Use icons alongside text
- Ensure interactive elements have clear affordances
.neuro-button {
/* Standard neumorphic shadows */
box-shadow:
6px 6px 12px rgba(163, 177, 198, 0.6),
-6px -6px 12px rgba(255, 255, 255, 0.5);
}
.neuro-button:focus {
/* Add color for keyboard users */
outline: 3px solid #007bff;
outline-offset: 2px;
}
Testing for Accessibility
Use contrast checkers. Both styles risk failing WCAG requirements. Test all text.
Test with screen readers. Ensure visual effects don’t interfere with screen reader functionality.
Keyboard navigation. Both styles must have clear focus indicators.
High contrast mode. Test how designs appear in Windows High Contrast Mode.
Performance Considerations
Both styles have performance implications.
Glassmorphism Performance
backdrop-filter is expensive. It requires the browser to blur everything behind the element. Multiple glass elements can slow rendering.
Optimization tips:
/* Reduce blur on mobile */
@media (max-width: 768px) {
.glass-card {
backdrop-filter: blur(5px); /* Less intensive */
}
}
/* Disable on low-end devices */
@media (prefers-reduced-motion: reduce) {
.glass-card {
backdrop-filter: none;
background: rgba(255, 255, 255, 0.9); /* Solid fallback */
}
}
Use will-change sparingly:
.glass-card {
will-change: backdrop-filter;
}
Only on elements that definitely need it. Overuse hurts performance.
Neumorphism Performance
Multiple shadows per element. Each element needs two box-shadows. This is less expensive than backdrop-filter but still adds up.
Generally more performant than glassmorphism. No blur calculations needed.
Optimization:
/* Simplify on mobile */
@media (max-width: 768px) {
.neuro-button {
box-shadow:
4px 4px 8px rgba(163, 177, 198, 0.5),
-4px -4px 8px rgba(255, 255, 255, 0.5);
/* Smaller shadows = less to render */
}
}
Browser Support
Know what works where.
Glassmorphism Support
backdrop-filter:
- Chrome/Edge: ✅ (76+)
- Firefox: ✅ (103+)
- Safari: ✅ (9+)
- Mobile browsers: ✅ Generally good
Fallbacks needed for:
- Internet Explorer: ❌
- Older Android browsers: ❌
Neumorphism Support
box-shadow:
- Universal support ✅
- Works everywhere modern CSS works
- No fallbacks needed
Neumorphism is safer from a compatibility perspective.
Trend Longevity
Which style will age better?
Glassmorphism Staying Power
Evidence for longevity:
- iOS and macOS use glass effects extensively
- Widely adopted in professional applications
- Works with various design styles
- Functional purpose (separating layers)
Likely to remain relevant as a tool for specific use cases.
Neumorphism Staying Power
Evidence against longevity:
- Peaked in 2020, already declining
- Accessibility issues limit adoption
- Limited use cases
- Looks distinctly “2020s”
Likely to fade except in niche applications. Might cycle back eventually.
Making Your Choice
Decision framework for choosing between styles.
Choose Glassmorphism If:
✅ You have colorful or image backgrounds ✅ Modern, lightweight aesthetic fits your brand ✅ Accessibility is a priority ✅ Building overlays, modals, or navigation ✅ Want a style that will age well ✅ Targeting modern browsers
Choose Neumorphism If:
✅ You want tactile, physical UI elements ✅ Working with solid neutral backgrounds ✅ Building single-purpose, minimal interfaces ✅ Creating portfolio pieces or experimental work ✅ Designing physical controls (knobs, sliders) ✅ Browser support is critical (it’s universal)
Choose Neither If:
Your design works fine without effects. Not every interface needs depth effects. Flat design remains valid.
Conclusion
Glassmorphism and neumorphism both add dimension to flat interfaces, but they’re suited to different contexts.
Key takeaways:
- Glassmorphism uses transparency and blur, works on colorful backgrounds
- Neumorphism uses soft shadows, requires solid neutral backgrounds
- Glassmorphism has better accessibility potential through higher contrast
- Neumorphism has better browser support but worse accessibility
- Glassmorphism is more performant-intensive but likely more enduring
- Neither should be overused; apply selectively for specific elements
- Test both styles for accessibility before committing
- Consider your background type when choosing
- Glassmorphism fits modern apps, neumorphism fits minimal interfaces
The action you should take today: Experiment with both styles on a test element. See which fits your brand personality and functional requirements.
Both styles are tools, not rules. Choose based on what serves your users and brand, not what’s trendy.
Ready to tackle ethical considerations in modern design? Check out our guide on Using AI Image Generators for Web Design: Ethics & Best Practices, where we explore the opportunities and challenges of AI-generated visual content.
Quick Reference: Implementation
Glassmorphism:
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.2);
Neumorphism:
background: #e0e5ec;
box-shadow:
8px 8px 16px rgba(163, 177, 198, 0.6),
-8px -8px 16px rgba(255, 255, 255, 0.5);
Neumorphism Pressed:
box-shadow:
inset 6px 6px 12px rgba(163, 177, 198, 0.6),
inset -6px -6px 12px rgba(255, 255, 255, 0.5);
Frequently Asked Questions
Can I use both styles in the same design? Yes, but carefully. Use glassmorphism for overlays and neumorphism for base UI. Too much mixing looks chaotic.
Which style is more accessible? Glassmorphism has better accessibility potential because you can achieve higher contrast. Neumorphism’s low contrast is inherent to the style.
Is glassmorphism still trendy in 2025? Yes, especially in app design. It’s evolved beyond a trend into a functional technique for layering.
Why did neumorphism fade? Accessibility issues and limited use cases. It looked great in demos but proved hard to implement practically.
Which has better browser support? Neumorphism (universal box-shadow support). Glassmorphism needs backdrop-filter, which isn’t supported in older browsers.
Can these styles work on mobile? Yes, both work on mobile. Glassmorphism is more common (iOS uses it extensively). Simplify effects on mobile for performance.
References & Further Reading
- Material Design Guidelines – Google
- Human Interface Guidelines – Apple
- “Glassmorphism in User Interfaces” – Michal Malewicz
- “Neumorphism: Why It’s All Style and No Substance”
- Web.dev: Performance Best Practices
- WCAG 2.2 Contrast Guidelines
- CSS-Tricks: Backdrop Filter Examples