Multiple Box Shadow Generator

Stack, reorder and tune layered CSS box-shadows with a live preview.

Ad placeholder (leaderboard)
Enjoying the tools? Go Pro for £4.99 (one-time) and remove all ads — forever, on this device. Remove ads — £4.99

A multiple box-shadow generator for building realistic depth in CSS. Where a single shadow can only ever look flat, stacking several box-shadow layers lets you compose the tight contact shadow, the mid ambient shadow and the soft far shadow that real elevation is made of — the same technique behind Material Design elevation, neumorphism, glow rings and recessed input wells. You get a live preview, per-layer sliders, reordering, presets and one-click copy, all running locally in your browser.

How it works

CSS lets you assign any number of comma-separated shadows to a single box-shadow property. Each layer has the same anatomy: an optional inset keyword, an offset-x and offset-y, a blur radius, a spread radius and a colour (here expressed as rgba() so you can control opacity independently of the hex value). This tool keeps every layer as its own editable row.

You can add, duplicate, hide, remove and reorder layers. Ordering matters: shadows paint in list order and earlier ones are drawn on top, so the first layer sits in front. Toggle a layer’s Visible checkbox to compare with and without it, or flip inset to turn an outer shadow into an inner one. The preview surface itself is adjustable — change the shape colour, the backdrop, the corner radius and the box size so the shadow is judged against the background it will actually live on. The combined value is assembled live and offered as a one-line value, a full CSS rule, or a downloadable .css file. Your stack is saved in local storage, so it survives a refresh.

Example

A clean “floating card” shadow is usually two layers: a small, fairly dark, low-opacity shadow for contact, plus a larger, very soft shadow for ambient depth.

.card {
  box-shadow:
    0px 1px 2px 0px rgba(15, 23, 42, 0.08),
    0px 8px 24px -4px rgba(15, 23, 42, 0.16);
}

A neumorphic button instead uses a light highlight and a dark shadow on opposite corners:

.neu {
  box-shadow:
    10px 10px 22px 0px rgba(163, 177, 198, 0.55),
    -10px -10px 22px 0px rgba(255, 255, 255, 0.85);
}
LookLayersKey trait
Soft elevation2tight contact + soft ambient
Material 6dp3umbra, penumbra, ambient
Neumorphic2opposite light + dark offsets
Inset well2both layers inset
Glow ring2zero offset, coloured spread + blur

Every figure is composed in your browser — nothing is uploaded or stored on a server.

Ad placeholder (rectangle)