CSS Box-Shadow Generator
Generate multi-layer CSS box-shadow effects to add depth to your elements. Tweak color, blur and offset and copy the code instantly.
CSS
—
Multi-layer box-shadow: depth, neon and Material elevations
A single box-shadow rarely looks convincing. Real objects cast more than one shadow — an ambient soft halo plus a sharper, directional shadow under the light source. CSS lets you stack as many shadows as you want by separating them with commas. The syntax is box-shadow: x y blur spread color, x y blur spread color, ..., and the painting order is top to bottom: the first shadow in the list renders on top, the last underneath.
.card {
box-shadow:
0 1px 2px rgba(0,0,0,.08), /* ambient, tight */
0 4px 8px rgba(0,0,0,.06), /* mid distance */
0 16px 32px rgba(0,0,0,.04); /* far, very soft */
}
Material Design elevation
Google's Material Design system precomputes 24 elevation levels (0 to 24 dp), each defined by two stacked shadows — a key shadow (directional, simulates the light direction) and an ambient shadow (soft, omnidirectional). Apple's Human Interface Guidelines and IBM Carbon use similar two-layer stacks. The pattern is universal because it mirrors how real light works.
Smooth shadows and natural depth
Designer Tobias van Schneider popularised the "smooth shadow" technique — six or more shadows with low alpha each, stacked at increasing offsets, blending into a buttery falloff that single shadows can't reach. Tools like shadows.brumm.af generate these stacks. The trick is geometric progression: double the y-offset and blur on each layer while halving (or keeping equal) the alpha, so the cumulative shadow looks natural rather than banded.
Inset, neon and 3D buttons
- Inset — prefix any shadow with the
insetkeyword to paint it inside the box. Simulates pressed buttons, inner glow or sunken inputs. - Neon glow — stack 3-4 shadows of the same saturated colour with growing blur (5px, 10px, 20px, 40px) and zero offset for concentric halos.
- 3D button — combine a light shadow above-left with a dark shadow below-right to mimic raised plastic. Reverse on
:activefor a satisfying press. - Negative spread — shrinks the shadow inside the element's footprint, useful for sharp edge accents.
Performance and alternatives
Each shadow is an additional paint pass. Six layers on a static card are cheap; six layers on hundreds of list items will tank scroll FPS on mobile, especially with large blur radii (30px+). Two mitigations: promote the element to its own compositor layer with transform: translateZ(0) or will-change: transform, and prefer filter: drop-shadow() for SVG/PNG with transparency (it follows the alpha mask instead of the bounding box). Tailwind ships shadow-sm/md/lg/xl/2xl utilities for the common cases.
FAQ
Are many shadows slow? They are when blur is large and the element scrolls or animates. Profile with DevTools "Rendering > Paint flashing" — green flashes on scroll mean too much repaint.
Should I use box-shadow on SVG icons? No — use filter: drop-shadow() so the shadow follows the actual silhouette and not the rectangular bounding box.
How do I optimise shadow rendering? Force a composited layer (transform: translateZ(0)), reduce blur radius, or cache the shadow into a background-image PNG for static heroes.
Dark mode shadows? Reduce intensity — heavy black shadows on dark backgrounds become muddy. Some designers invert them into subtle white glows to imply elevation by light rather than depth.
Related Tools
CSS Glow Effect Generator
Generate CSS glow/neon effect with layered box-shadow / text-shadow.
CSS Text-Shadow Generator
Create stacked CSS text-shadow effects, from neon glow to 3D relief. Adjust the layers, preview the result and copy the ready-to-use code.
CSS Selection Color Generator
Generate the CSS for ::selection to customize the highlight color of selected text on your site. Pick background and text colors and copy the code.
CSS Mask Image Generator
Generate CSS mask-image with a linear gradient to create smooth fade-out effects on the edges of images and divs. Set the direction and copy the code.
CSS grid-template-areas Builder
Build CSS grid-template-areas visually with row/col counts and area names.
CSS Clip-Path Polygon Generator
Generate the CSS clip-path polygon() property by adjusting points visually. Clip images and divs into custom shapes and copy the ready-to-use code.