What You’ll Learn

  • How to adjust brightness, contrast, saturation, and gamma with the eq filter
  • Fine-grained tone correction with the curves filter
  • Using the colorbalance filter to tint shadows, midtones, and highlights
  • How to pick the right filter for the job
  • Combining multiple filters for a practical color-correction pipeline

Tested with: FFmpeg 6.1 (ubuntu-latest / CI verified)
Platform: Windows / macOS / Linux


eq — Basic Brightness, Contrast, and Saturation Controls

The simplest color-adjustment filter.

ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.2:saturation=1.3:gamma=1.0" output.mp4
ParameterRangeDefaultDescription
brightness-1.0 to 1.00Brightness (0 = no change)
contrast-1000 to 10001Contrast (1 = no change)
saturation0 to 3.01Saturation (1 = no change, 0 = grayscale)
gamma0.1 to 101Gamma correction (1 = no change)

Common Adjustments

Brighten slightly and boost contrast:

ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.3" output.mp4

Convert to grayscale:

ffmpeg -i input.mp4 -vf "eq=saturation=0" output.mp4

curves — Fine-Grained Tone Curves

An S-curve for a contrast boost:

ffmpeg -i input.mp4 -vf "curves=all='0/0 0.25/0.15 0.5/0.5 0.75/0.85 1/1'" output.mp4

Specify control points as all='input/output ...' (normalized 0–1).

Per-Channel Adjustments

Lift the red channel for a warmer look:

ffmpeg -i input.mp4 -vf "curves=red='0/0 0.5/0.6 1/1'" output.mp4

Lower the blue channel to reduce cool tones:

ffmpeg -i input.mp4 -vf "curves=blue='0/0 0.5/0.4 1/0.9'" output.mp4

Using Presets

ffmpeg -i input.mp4 -vf "curves=preset=vintage" output.mp4

Available presets: none, color_negative, cross_process, darker, increase_contrast, lighter, linear_contrast, medium_contrast, negative, strong_contrast, vintage.


colorbalance — Tint Shadows / Midtones / Highlights

Shift the shadows cooler (more blue) and warm the highlights slightly:

ffmpeg -i input.mp4 -vf "colorbalance=bs=0.1:rs=-0.1:gh=0.1" output.mp4
ParameterDescription
rs/gs/bsR/G/B adjustment for shadows (-1 to 1)
rm/gm/bmR/G/B adjustment for midtones
rh/gh/bhR/G/B adjustment for highlights

Combining Filters

Full pipeline with eq and colorbalance:

ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.1,colorbalance=rs=-0.05:bs=0.05" output.mp4

Which Filter to Use

GoalRecommended filter
Quickly tune brightness, contrast, or saturationeq
Shape tone with curvescurves
Independently color shadows, midtones, and highlightscolorbalance
Apply a .cube LUTlut3d

Frequently Asked Questions

Should I use eq or curves for colour correction?

Use eq for global brightness/contrast/saturation tweaks and curves for shaping highlights/midtones/shadows independently. curves is closer to a real grading workflow.

What is the difference between gamma and brightness?

Brightness is a linear shift; gamma is a non-linear curve that brightens midtones without crushing highlights or blacks. Gamma usually looks more natural.

Why does the corrected video look greenish?

You probably touched the green curve or saturation aggressively. Reset that channel and apply changes uniformly first, then push individual channels last.

Can I apply a 3D LUT instead?

Yes — lut3d accepts .cube files: ffmpeg -i in.mp4 -vf lut3d=look.cube out.mp4. LUTs are the standard way to ship a graded look.

Does this preserve HDR colour?

No — most simple eq/curves pipelines clip HDR highlights. For HDR sources convert to linear with zscale, grade, then convert back.


  • 3D LUT Color Grading — Apply .cube Files to Video
  • Sharpening and Blurring — Adjust Clarity with the unsharp Filter

Tested with ffmpeg 6.1 / Ubuntu 24.04 (GitHub Actions runner) Primary sources: ffmpeg.org/ffmpeg-filters.html#curves / ffmpeg.org/ffmpeg-filters.html#eq / ffmpeg.org/ffmpeg-filters.html#colorbalance