◐Umbra

Box Shadow Generator

Build depth layer by layer. Drag, glow, press in — then copy the CSS. No guessing, no stylesheet reloads.

✦ Unlimited Free Usage — No Signup

Presets

One click loads a full layer stack. Tweak anything after.

Shadow Layers

Preview shape & stage

◐
Umbra
live preview

Your CSS


    

    

The Complete Guide to CSS Box Shadows and the Umbra Shadow Lab

A shadow is the fastest way to tell a visitor what matters on a page. When a card lifts slightly off the background, the eye understands instantly that it is separate, important and probably clickable. When a button sinks inward, the eye reads it as pressed. All of that communication happens through a single CSS property, box-shadow, and yet it remains one of the most fiddly properties to write by hand. You type a string of pixel values, save, reload, squint, adjust by two pixels, reload again, and repeat until the depth finally feels right. Umbra exists to end that loop. It is a dedicated shadow lab where every value is a slider, every change is visible the moment you make it, and the finished CSS is one click away.

The box-shadow property has a simple grammar with surprisingly expressive power. Each shadow is described by a horizontal offset, a vertical offset, a blur radius, a spread radius, a colour and an optional inset keyword. The horizontal offset moves the shadow left or right, the vertical offset moves it up or down, and together they imply a light source. If your shadows fall down and to the right, your imaginary light sits up and to the left, and keeping that direction consistent across a whole interface is one of the quiet rules that separates a polished design from a muddled one. Umbra makes the light source tangible: drag the offsets and watch the shadow swing around the element as if you were moving a lamp across a desk.

Blur, spread and the feeling of distance

Blur is what makes a shadow feel soft or hard. A small blur creates a crisp edge and reads as an object sitting very close to the surface beneath it, lit by a sharp, direct light. A large blur diffuses the edge and reads as an object floating far above the surface, or lit on an overcast day when light arrives from every direction at once. Spread works in the opposite direction to intuition for many beginners: it grows or shrinks the shadow before blur is applied. A positive spread makes a bold, deliberate shadow that can hold its shape even with generous blur, which is exactly how glowing effects are built. A negative spread tucks the shadow in so it only peeks out on the sides where the offsets push it, producing the refined, expensive-looking shadows used by modern design systems where the top edge of a card stays almost clean while the bottom carries the depth.

Colour and opacity complete the illusion. A pure black shadow at full opacity almost never occurs in nature, because real shadows are softened by ambient light bouncing back into them. That is why most professional shadows sit between ten and thirty percent opacity, and why tinting a shadow with a hint of the background colour, a deep blue-grey on a cool interface or a warm brown on a cream page, makes it blend instead of looking like a grey sticker. In Umbra every layer carries its own colour picker and opacity slider, so you can test a neutral black shadow against a tinted one side by side simply by duplicating the layer, changing the colour and toggling between them in your head as you adjust. The neon family of effects pushes colour in the opposite direction, using a saturated cyan at high opacity so the shadow stops pretending to be a shadow at all and becomes light itself.

Why multiple layers always look more real

The single most important idea in shadow design is that one shadow is a compromise and two shadows are a simulation. In the physical world an object receives light from a key source and from the ambient environment at the same time. The key light casts a relatively tight, darker shadow close to the object, sometimes called the contact shadow, and it is what grounds the element and stops it looking like it floats in a void. The ambient light casts a much larger, fainter shadow that spreads in every direction and sells the height. When you combine a small, darker layer with a large, fainter layer in Umbra, cards suddenly acquire believable elevation. Add a third very subtle layer and you can fine-tune the transition for large elements such as modals and hero panels, where a single blur value would either look dirty at the corners or disappear at the edges. Umbra was designed around this principle, so adding, duplicating and deleting layers is the centre of the workflow rather than an advanced extra hidden in a menu.

Order matters when layers stack. CSS paints the first shadow in the list on top of the others, so your tightest, darkest contact shadow should usually come first and your broad ambient glow last. If a layered shadow looks muddy, the fix is rarely to delete a layer; it is to lower the opacity of the broad layer, increase its blur, or pull its offsets toward zero so it spreads evenly. Experimenting with order and opacity inside the lab takes seconds, and that speed changes how you design. Instead of accepting the first acceptable shadow, you explore, and exploration is where distinctive visual identities come from.

Inset shadows: depth that goes inward

Every layer in Umbra has an inset toggle, and it deserves more attention than it usually gets. An inset shadow is drawn inside the element, clipped by its border, so instead of lifting the element off the page it carves the element into the page. Inset shadows are the foundation of pressed buttons, sunken input fields, wells, tracks for sliders and toggles, and the soft inner glow that makes a panel feel moulded rather than flat. A classic technique combines both worlds in one declaration: a faint outset shadow below the element to separate it from the background, plus a white or light inset shadow along the top edge to simulate light catching a bevel. Because each Umbra layer chooses inset independently, you can build that combination visually, watching the inside and outside depth develop together, rather than memorising which numbers in a long comma-separated string belong to which effect.

Presets with a purpose: soft, material and neon

Presets in Umbra are not decoration; each one teaches a different shadow language. The Soft preset uses generous blur and low opacity for a calm, floating feeling that suits content cards, dropdowns and tooltips on light backgrounds. It is forgiving, works at almost any size, and is the safest starting point for a new project. The Material preset reflects elevation systems popularised by modern interface guidelines, pairing a tighter key shadow with a broader ambient shadow at carefully balanced opacities, so a raised card, a floating action button and a dialog can share one consistent scale of heights. The Neon preset abandons realism entirely: zero offsets, saturated cyan and several expanding blur layers create a halo that belongs on dark themes, gaming interfaces, call-to-action buttons and anywhere energy matters more than subtlety. Sharp, Float and Inset Glow presets round out the lab, covering hard offset shadows for neo-brutalist layouts, high elevation for hero elements and carved inner depth respectively. Applying a preset loads its full layer stack into the editor, and every slider remains live, so a preset is always a beginning rather than a cage.

Preview shapes and honest testing

A shadow that flatters a large rounded card can overwhelm a small circular avatar, and a glow that sings on a pill-shaped button can look lost on a sharp square. That is why Umbra lets you preview the same shadow stack on several shapes: a rounded box, a circle, a pill, a content card and a sharp square. Switching shapes is a genuine design test, not a gimmick. Circles expose whether offsets are balanced, because any directional bias is obvious on a round element. Pills reveal whether a shadow survives at small heights, which matters for buttons and badges. Cards show how the shadow behaves near text and at realistic component widths. The stage background can also switch between light, dark and a cyan tint, because a shadow is always a relationship between an element and what sits behind it. Testing on a dark stage is especially important for neon work and for any interface that offers a dark mode, where a shadow that looked elegant on white can vanish or turn muddy.

Copying CSS and fitting shadows into a real workflow

When the preview is right, Umbra gives you the code in the forms real projects actually use. Copy CSS produces a clean rule containing the box-shadow declaration, with optional vendor-prefixed lines for maximum compatibility with older browsers. Copy value only gives you the raw comma-separated shadow list for dropping into an existing class, a CSS variable or a design-token file. For utility-first workflows there is also a Tailwind arbitrary-value class, with spaces converted to underscores exactly as that syntax requires. Many teams go one step further and store their final stacks as named tokens, such as shadow-sm, shadow-md and shadow-lg equivalents built from Umbra stacks at three elevations, so every component in the product shares the same light source, the same tint and the same sense of height. Building those tokens visually, instead of typing numbers from memory, keeps the scale honest.

A few habits will make every shadow you ship better. Keep one light direction across the whole product and never let shadows fall upward unless an element is deliberately lit from below. Prefer opacity and blur changes over ever-larger offsets, because distance reads mainly through softness. Avoid pure black at high opacity on coloured backgrounds, and tint instead. Respect performance: enormous blur radii on huge, constantly animating elements can be expensive on low-powered devices, so animate transform and opacity where you can, and keep the heaviest shadows on static surfaces. Finally, check accessibility. A shadow alone should never be the only signal that something is interactive or elevated, because users with low vision or forced-colour settings may not perceive it. Pair depth with borders, contrast and clear focus states, and your interface stays usable for everyone while still looking beautifully layered.

Umbra is deliberately simple on the surface and complete underneath. Multiple layers for realism, an inset toggle on every layer for carved depth, several preview shapes and stage backgrounds for honest testing, soft, material and neon presets for a fast start, and one-click copying for CSS, raw values and utility classes. Open the lab, load a preset, break it, rebuild it, and leave with a shadow that is yours. That is the whole idea: depth you can see while you make it, and code you can trust when you paste it.

Frequently Asked Questions

What is the CSS box-shadow property and what does Umbra do?+

The CSS box-shadow property draws one or more shadows behind or inside an element, controlled by horizontal and vertical offsets, blur, spread, colour and opacity. Umbra is a visual lab for that property: you adjust sliders and colour controls, stack layers, preview the result on different shapes in real time, and copy production-ready CSS without guessing numbers in a stylesheet.

What does the inset toggle do in Umbra?+

Inset flips a shadow from outside the element to inside it. An outset shadow falls behind the box and suggests the element is raised above the page. An inset shadow is clipped inside the border and suggests the element is pressed in, carved or hollow. Each layer in Umbra has its own inset toggle, so you can combine a soft outer drop shadow with a subtle inner highlight or inner depth in a single declaration.

Can I stack multiple shadow layers, and why would I?+

Yes. Umbra is built around multiple layers because a single shadow rarely looks natural. Real light creates a tight contact shadow close to an object and a wider, softer ambient shadow further away. Stacking two or three layers with different blur and opacity values reproduces that effect. Layers are applied in order, with the first layer on top, and you can add, duplicate, reorder by removing, and delete layers until the depth feels right.

How do the Soft, Material and Neon presets in Umbra differ?+

Soft uses low opacity and generous blur for a gentle, floating feel that suits cards and modals. Material follows elevation principles with two coordinated layers, a tighter key shadow and a broader ambient shadow, for a grounded interface look. Neon uses coloured cyan shadows with zero offset and large blur radii to create a glowing halo around the element. Presets are starting points, every value stays editable after you apply one.

How do I copy the CSS from Umbra into my project?+

When the preview looks right, use the Copy CSS button in the code panel. Umbra copies a complete box-shadow declaration, including vendor-prefixed lines if you enable them, ready to paste into any class or component. You can also copy only the shadow value if you are working inside an existing rule, or copy the Tailwind arbitrary-value class. The copied code is exactly what the preview is rendering.

Is Umbra free and does it work without signing up?+

Yes. Umbra is completely free with unlimited usage, no account, no signup and no watermark. Everything runs locally in your browser, so your designs are never uploaded anywhere. You can open the page, build as many shadows as you like, test them on squares, circles, pills and cards, and copy the CSS as often as you need, on desktop or mobile.