Which ffmpeg filters does Sume's video filter allow? All 66

Sume's video filter accepts a fixed allowlist of 66 pixel filters in five groups: tone, blur, geometry, time, compositing. The list, the caps, and a free check.

4 min readSume
All posts

Sume's video filter accepts 66 named ffmpeg filters, split into five groups: 26 tone and colour filters, 14 blur, sharpen and noise filters, 12 geometry filters, 6 time filters and 8 compositing filters. Anything not on that list is refused with invalid_filtergraph before an encoder starts, and the refusal message prints the allowlist. A graph may hold at most 32 filters and 2,048 characters, and the encode costs $0.02 flat for a source up to 300 seconds.

What is on the allowlist?

The allowlist is a list of pixel filters that take only inline options. None of them can read a file, a font, a model or a network address, which is why drawtext, subtitles, movie and lut3d are not on it. The table counts each group from the compiler source on main.

Allowlisted filters by group, from the Sume repo (read 2026-10-12)
GroupCountFilters
Tone and colour26eq, lutyuv, lutrgb, lut, hue, colorbalance, colorchannelmixer, colorlevels, colortemperature, colorcontrast, colorcorrect, colorize, colorhold, colorkey, chromakey, chromahold, negate, monochrome, exposure, normalize, histeq, vibrance, swapuv, shuffleplanes, despill, vignette
Blur, sharpen, noise14unsharp, boxblur, gblur, avgblur, smartblur, median, noise, deband, deflicker, dilation, erosion, sobel, edgedetect, cas
Geometry12crop, scale, pad, hflip, vflip, transpose, rotate, setsar, setdar, zoompan, lenscorrection, perspective
Time6fps, tpad, fade, framerate, tblend, tmix
Compositing8split, overlay, hstack, vstack, blend, drawbox, drawgrid, format

What is deliberately missing?

Cutting a range is not a filter here. trim and setpts left the list when the separate trim tool shipped, so there is one way to cut a clip and it is not a filtergraph string. Text is not a filter either: burned-in words go through captions or a composition, not drawtext.

The program also has two named ops, dim and crop, which run before the graph. dim takes an amount in (0, 1], and crop takes fractions of the frame so you never need to know the pixel size. Up to 8 ops are allowed.

How do I check a filter before paying?

The check endpoint runs the same contract test as the encode, returns diagnostics, creates no job and charges nothing. Write the graph with no input label, no output label and no spaces inside a filter; the server wraps it as [0:v] in and [vout] out.

Run the check first, then send the same body to POST /v1/video-filter with an Idempotency-Key header. The encode can still fail on the box with a structured job error, so keep the check result and simplify the expression if it does.

curl -s https://api.sume.com/v1/video-filter/check \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_EXAMPLE.mp4",
    "filtergraph": "eq=contrast=1.1,vignette"
  }'

What does the result tell me?

A finished encode returns a new video_url, duration_seconds, ops_applied, filtergraph, the list of filters actually used, and a warnings array. The output inherits the source geometry, frame rate and audio. If the source had no audio stream, the clip is silent and a soft filter_source_has_no_audio warning says so; it is not a failure.

If you want a specific effect and the filter is not in the table, the free check will tell you in one call, so there is no reason to guess. For the individual filters, see FFmpeg's own filter documentation for what each option does.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume