Design complex box shadows with multi-layer support, inset shadows, visibility toggle, layer reordering, opacity control, and 12 professional presets
Designing box shadows in raw CSS is a guessing game of offsets and blur values. This visual editor lets you drag, layer, and tweak shadows until they look right, then copies the finished CSS for you.
Initializing in your browser…
Design custom CSS buttons with text, background (solid/gradient), border, shadow, and hover effects controls. 12 presets including 3D, Neon, Ghost, and Pill styles
Create stunning CSS gradients with linear/radial/conic types, angle control, position control, multiple color stops, 11 presets, and reverse/randomize features
Create custom border radius with individual corner control, linked/unlinked mode, px/% units, interactive corner sliders on preview, and 12 shape presets
You want a soft, modern "lifted card" shadow that looks subtle on white but is still visible, without trial-and-error in DevTools.
Shadow controls
X 0 · Y 10 · Blur 25 · Spread -5 · Color rgba(0,0,0,0.25) · Inset off
Generated declaration
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.25);
The negative spread (-5) shrinks the shadow so it stays tucked under the element instead of leaking out the sides, while the 25px blur with low-alpha black reads as a soft ambient lift rather than a hard drop. The live preview shows the result on the actual background colour you choose, so you tune perception, not numbers in isolation.
Designing box shadows in raw CSS is a guessing game of offsets and blur values. This visual editor lets you drag, layer, and tweak shadows until they look right, then copies the finished CSS for you.
The generator builds a CSS box-shadow from independent layers, each with its own offset-X, offset-Y, blur, spread, color, opacity and inset flag. Each parameter has its own slider with fixed ranges: offset-X and offset-Y run from -100px to +100px, blur from 0 to 100px, spread from -50 to +50px, and opacity from 0 to 100%. The box you preview against has its own background color (default #3b82f6) and a border-radius slider that runs 0 to 50px. Color is picked as a hex value but emitted through an internal hexToRgba conversion, so the output never contains a bare hex shadow color: it is always rgba(r, g, b, opacity/100), letting opacity ride alongside the color instead of forcing an 8-digit hex.
Multiple layers are the point of the tool, and the order of the layers is load-bearing. Visible layers are concatenated with a comma in array order into a single box-shadow declaration, and in CSS the first shadow in the list paints on top of later ones. The UI exposes MoveUp/MoveDown buttons to reorder layers, a per-layer eye toggle that excludes a layer from the output without deleting it (only layers with visible:true are included), an inset toggle that prepends the inset keyword, and add/delete controls. This makes the layered-realism technique explicit: instead of one shadow, you stack several with growing offset-Y and blur and low per-layer opacity. The bundled Layered preset does exactly that with five black shadows at offsetY/blur of 1, 2, 4, 8 and 16px, each at only 5% opacity, which reads as smoother, more natural depth than a single hard shadow.
Twelve presets seed common looks and double as documentation of the values: Subtle, Medium, Large, Soft, Hard, Glow, Neon, Inset, Pressed, 3D Button, Layered and Floating. Several use negative spread (Medium and Large pair shadows at spread -1/-2 and -3/-4) so the shadow is pulled in tighter than its blur, the trick for a tight elevation shadow that does not bleed sideways. Neon stacks three zero-offset #22c55e glows at blur 10, 30 and 60px with falling opacity (80/50/30%); Pressed combines a dark inset top shadow with a faint white inset highlight. The generated box-shadow declaration is shown in a copy-to-clipboard code block, and the full configuration (shadow layers, box color, border radius) is serialized into the URL query as s/c/r params on a 500ms debounce, so a given shadow has a shareable link and reloads exactly as configured.
Apply the Medium preset: two layers, 0 4px 6px -1px and 0 2px 4px -2px in rgba black at 10% each. The negative spread keeps the shadow from bleeding sideways, giving a clean Material-style card lift.
Apply the Neon preset to stack three zero-offset #22c55e shadows at blur 10/30/60px and opacity 80/50/30%, producing a layered green glow that a single shadow can't replicate.
Create subtle depth for card components using layered shadows that mimic material design.
Design shadow transitions for interactive button effects.
Build prominent shadows that lift modals and dialogs off the page background.
Yes. Layering multiple shadows with different offsets and blurs creates more realistic depth effects.
An inset shadow appears inside the element rather than outside, creating a pressed-in or recessed look.
No. Shadows are purely visual and don't change the element's size or position in the layout.
This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.