Add a Drop Shadow to an Image

Pick a transparent PNG and the shadow is cast from its own silhouette — offset, blur, color and opacity all adjustable, in your browser.

Try:
Image with a drop shadow

Add a drop shadow to a cutout, in your browser

Pick a transparent PNG and a shadow is cast from the image's own alpha channel — the silhouette of the subject, not a rectangle around it. That's the same model CSS filter: drop-shadow() uses, and it's what makes a product shot, a die-cut sticker or a logo look like it's sitting above the page instead of pasted onto it. Everything runs locally with ffmpeg; the file never leaves the browser.

The four knobs that matter are Horizontal offset and Vertical offset (where the light is coming from), Blur radius (how far the object is from the surface) and Shadow opacity (how strong the light is). By default the canvas grows just enough for the shadow to fit, so nothing gets cut off at the edges.

Worked example

Take a 200×120 PNG with an opaque subject in the middle and transparency around it, and leave every field at its default — offset 12/16, blur 24, color #000000, opacity 35, canvas margin 0 (auto):

Set Canvas background to #FFFFFF and the same run returns an opaque white plate instead: corners become solid white and the shadow band reads as light grey (about RGB 202) over it — a ready-to-use studio product shot.

Choosing settings

Use the preset buttons above the form to fill all of these in one click, then tweak from there.

Limits and edge cases

FAQ

Why is my shadow a rectangle instead of the shape of my object?

Because the image has no transparency. The shadow is cast from the alpha channel, so an opaque photo — any JPEG, or a PNG saved with a white background — has a silhouette that is the whole rectangle. Remove the background first (a cutout tool, or your editor's background eraser), save as PNG or WebP, and the shadow will follow the subject's outline.

Does the image get bigger?

Yes, by default. The canvas grows by a margin on every side so the blurred, offset shadow always fits — with the default blur 24 and offset 16 that's 52 px per side. Set Canvas margin to a specific number to control it, or tick Keep the original size to get back exactly the input's dimensions (the shadow is then clipped at the frame).

What blur value should I use?

The blur radius roughly says how far the object is from the surface behind it. 06 reads as a sticker lying flat, 1224 as a card lifted slightly off a page, 4080 as an object floating well above it. It uses the same units as CSS drop-shadow() — internally the Gaussian sigma is half the radius — so a value copied from a CSS box-shadow will look about the same here.

Can I make a colored glow instead of a shadow?

Yes. Set both offsets to 0, pick a bright shadow color, raise the opacity and use a large blur. With nothing offsetting it, the blurred silhouette spreads evenly in all directions, which is exactly what a glow is. #3366FF at opacity 70 with blur 80 is a good starting point — the "Colored glow" preset does it in one click.

Why does the shadow look weaker than the opacity I set?

Opacity sets the strength of the shadow before it is blurred. Blurring spreads that alpha out, so the visible edge of a soft shadow is always lighter than the number you typed, and only the fully-covered middle — usually hidden behind the subject — reaches it. Lower the blur or raise the opacity if you want more presence; opacity 100 with blur 0 gives the exact color at full strength.

Is anything uploaded?

No. The page loads an ffmpeg build compiled to WebAssembly and runs the whole filter chain on your machine, so the image is never sent anywhere. The same tool is available on the command line if you'd rather script it over a folder of assets — the CLI example above is generated from this page's settings.

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool image-drop-shadow 'url=https://example.com/input' 'offset_x=12' 'offset_y=16' 'blur=24' 'opacity=35' 'clip_to_original=true' 'format=png'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/image-drop-shadow/?url=https://example.com/input&offset_x=12&offset_y=16&blur=24&opacity=35&clip_to_original=true&format=png

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.