Before and after boxblur. Left is the sharp original; right has boxblur=12:2 applied and is heavily blurred

Left is the original, right is boxblur=12:2 — radius 12 applied twice, at full strength.

Source clip: Big Buck Bunny © Blender Foundation, CC BY 3.0

What You’ll Learn

  • How to apply a box blur with the boxblur filter
  • The meaning of radius (luma_radius) and iterations (luma_power)
  • How to control luma and chroma independently
  • How to blur the entire frame or a specific region (crop + overlay)

Verified: FFmpeg 8.1 on Windows — all 8 commands in this article were executed by the verification script and passed (2026-09-06). Platform: Windows / macOS / Linux


Basic Command

Light Blur

ffmpeg -i input.mp4 -vf "boxblur=2:1" output.mp4

Arguments are positional: luma_radius:luma_power. 2:1 gives a light blur.

Strong Blur

ffmpeg -i input.mp4 -vf "boxblur=10:3" output.mp4

Radius 10 and 3 iterations produces a strong blur. If you want the opposite effect — crisper edges — reach for sharpening with the unsharp filter instead.


Parameter Reference

boxblur=luma_radius:luma_power[:chroma_radius:chroma_power[:alpha_radius:alpha_power]]
Parameter Meaning Default
luma_radius Blur radius for the luma channel 2
luma_power Number of box blur passes 1
chroma_radius Blur radius for the chroma channels Same as luma_radius
chroma_power Chroma iteration count Same as luma_power
alpha_radius Blur radius for the alpha channel 0 (disabled)
alpha_power Alpha iteration count 0

Blur Luma Only While Preserving Color

ffmpeg -i input.mp4 -vf "boxblur=luma_radius=10:luma_power=3:chroma_radius=0:chroma_power=0" output.mp4

Setting chroma_radius=0 leaves the chroma channels untouched. Useful when you only want to remove fine luma detail.


Use Named Arguments

Positional shorthand is easy to get wrong, so named arguments are recommended.

ffmpeg -i input.mp4 \
  -vf "boxblur=luma_radius=5:luma_power=2" \
  output.mp4

Effect of the Iteration Count (power)

Running a box blur several times approximates a Gaussian blur.

luma_power Character
1 Plain box blur
2 Slightly smoother
3 Close to Gaussian
4+ Even smoother (but slower)

Blur the Entire Frame (Privacy / Background Blur)

ffmpeg -i input.mp4 -vf "boxblur=20:5" output.mp4

Useful for blurring a background before sharing to social media, for example.


Blur Only a Specific Region

Crop the target region, blur it, and overlay it back onto the original frame. To hide faces or license plates specifically, see the guide to blurring a region in video for tracking and mosaic options.

ffmpeg -i input.mp4 \
  -vf "split[a][b]; \
    [a]crop=200:100:50:50,boxblur=15:3[blurred]; \
    [b][blurred]overlay=50:50" \
  output.mp4
  • crop=W:H:X:Y — 200 wide, 100 tall, starting at (50, 50)
  • overlay=X:Y — Overlay at (50, 50) on the original frame

Apply to Still Images

ffmpeg -i input.jpg -vf "boxblur=5:2" output.jpg

Measured: time and size

This is the command that was benchmarked:

ffmpeg -i input.mp4 -vf boxblur=10:3 -c:v libx264 -crf 23 -preset medium -an output.mp4
Metric Measured
Wall time 59.37 s (2.02x realtime)
Output size 14.7 MB
Versus an unfiltered re-encode -83%

Rig: Intel Core i9-14900KF (32 threads), FFmpeg 8.1 (gyan.dev), Windows. Source: 1920x1080, 30 fps, 120 s, 351.4 MB H.264 (Big Buck Bunny, looped, CC BY 3.0). Run 2026-09-05, one command at a time. The numbers are published in the dataset.

Reading the numbers

The filter is a straight surcharge on the encode. Re-encoding the same source with the same settings and no filter took 27.97 s. Adding boxblur took it to 59.37 s; everything between the two is the blur. For scale, the same run clocked a 720p downscale at 18.43 s, curves at 42.01 s and colorbalance + eq at 53.29 s — boxblur sits at the expensive end, because a large radius means sweeping every pixel repeatedly.

And it still beats realtime. A 120-second clip finished in 59.37 s. The estimate this article used to carry — “roughly 1.2–2.5x real time” — was pessimistic by a wide margin: on 32 threads the job took less than half the clip’s own duration. Expect the ratio to tighten on a machine with fewer cores.

The -83% is blur eating the bitrate, not compression cleverness. CRF spends bits to hold visual quality steady, but blurring destroys the high-frequency detail those bits were paying for, so x264 has far less to encode. Hence 14.7 MB against an unfiltered re-encode’s 86.26 MB, or -83%. The old guess of “5–20%” was off by an order of magnitude — treating blur as a cosmetic tweak will badly mislead your size budget.

There is no -c copy escape hatch. In the same run, stream-copy operations — which only rewrite the container — finished in 0.41–1.03 s. Blur rewrites pixels, so decode, filter and re-encode are all mandatory and you never get back to that sub-second class. When you estimate a long job, the first question is always whether it needs a re-encode at all.


Comparison with gblur (Gaussian Blur)

Filter Character Speed
boxblur Uniform blur; approaches Gaussian with more iterations Fast
gblur Smooth blur based on a mathematical Gaussian distribution Slightly slower
unsharp Combines blur with sharpness control Moderate

Choose boxblur for simple, fast blurring; gblur when quality matters more.


Common Mistakes

NG: passing 0 as the radius (luma_radius=0 errors out)
ffmpeg -i input.mp4 -vf "boxblur=0:1" output.mp4

Passing 0 as luma_radius raises an error. The minimum value is 1.


  • gblur — Gaussian blur
  • unsharp — Unsharp mask (can also be used as a blur)
  • smartblur — Blur while preserving edges
  • pixelize — Pixelate / mosaic effect

Frequently Asked Questions

boxblur vs gblur — which should I use?

boxblur is much faster and good enough for thumbnail-style softening. gblur produces a smoother bokeh-like falloff at the cost of CPU. For privacy masking either works.

How do I blur only a region?

Crop the region into a separate stream, blur it, then overlay back at the same coordinates: [0]crop=W:H:X:Y,boxblur=10[b];[0][b]overlay=X:Y.

Why is my blur weaker than expected?

boxblur takes a radius, not strength. A radius of 2 only averages 5×5 pixels. Use 8–15 for visible blur on 1080p footage.

Can I apply multiple blur passes?

Yes — chain them: boxblur=10:1,boxblur=10:1. Two cheap passes look closer to a Gaussian than one strong pass.

Does it preserve the alpha channel?

Yes when the input is RGBA; FFmpeg processes alpha separately. For overlay use cases, ensure the source is RGBA before blurring.