Guides · HandBrake delivery encode

HandBrake delivery-encode checklist: pick a size-cap or speed preset, encode, then verify with ffprobe

Published

By ToolBrivio Editorial

HandBrake Presets list with Very Fast 1080p30 and Social 25 MB visible — delivery encode checklist cover
Cover, October 16, 2026: HandBrake Presets picker showing Very Fast 1080p30 and Web → Social 25 MB 30 Seconds 1080p60 — the two named presets this checklist walks through. Distinct from the companion Reviews cover (Queue Summary / RF 24), not a second Presets crop.

Your cut interview is still too big for the portal or client. Before you upload, run a named HandBrake encode (size-cap or speed preset), then verify byte size, duration, and resolution with ffprobe. This Guide is that checklist — not a quality ranking and not another lossless trim.

This is the delivery-encode checklist. The same-day HandBrake delivery-encode review explains what HandBrake did on our Seattle fixture. Cut/audit first if you still have dead air in the keep merge: LosslessCut export duration audit. Do not treat those as the same article.

Test note: October 16, 2026, Asia/Shanghai, Debian GNU/Linux 13 (trixie). Tools: HandBrake / HandBrakeCLI 1.9.2 (handbrake / handbrake-cli 1.9.2+ds1-1); ffprobe 7.1.5-0+deb13u1. Software x264 only on this box (no NVENC/QSV). Fixture: media/seattle_interview_delivery_src.mp4 — 30.000 s, 1920×1080@30, 1,102,887,801 bytes (1051.80 MiB). Measured outputs under evidence/handbrake/out/.

Accept criteria before you upload

Persona: a creator who already cut the interview and needs a binary go / no-go on the delivery MP4. Minimum checks:

CheckPASSFAILHOLD
Byte size vs targetFile ≤ named portal/client cap (e.g. Social < 25 MB on our 30 s clip)Bytes over the hard capNo written size target
DurationVideo duration matches source class (ours: 30.000 s video; container ≈30.016 s OK)Multi-second shorten/lengthen you did not intendUnknown expected duration
ResolutionMatches intended delivery class (ours: stayed 1920×1080)Unexpected scale/crop—
Codecs / containerH.264 + AAC in MP4 (what we produced)Wrong container for the portalPortal codec rules not known
Preset documentedPreset name or full CLI recorded on the checklist—You cannot reproduce the encode

1. Write down the size (or speed) target

Record the portal/client limit in MiB or MB before you encode. Our Social path targeted a hard 25 MB label for a 30-second clip. If you only need “much smaller, fast,” a General speed preset may be enough — still write the goal so PASS/FAIL is not a guess.

Source we started from: 1051.80 MiB, 30.000 s, 1920×1080@30.

2. Choose the control: Very Fast vs Social vs explicit RF

HandBrake Presets window with Very Fast 1080p30 selected and Social 25 MB web presets visible
Presets picker, October 16, 2026: Very Fast 1080p30 under General; Web → Social includes Social 25 MB 30 Seconds 1080p60 — the size-cap preset in step 5.
  • Very Fast 1080p30 — speed-oriented General preset. On our fixture: 11.58 MiB in 13.672 s (x264 veryfast, RF 24, Main@L4.0).
  • Social 25 MB 30 Seconds 1080p60 — named size-cap Web preset. On our fixture: 21.91 MiB (< 25 MB) in 49.182 s (~6 Mbps 2-task path; output stayed 30 fps).
  • Explicit x264 RF — when the client wants a quality number in writing. Our RF 22 / medium / High@L4.0 run: 87.46 MiB in 51.236 s — larger than Very Fast on this noisy stand-in.

Teaching point from the same fixture: RF alone ≠ size rank. RF 22 medium produced a bigger file than Very Fast RF 24. Pick by goal (fast/small vs hard byte cap vs RF-in-writing), then verify bytes.

3. Encode with HandBrakeCLI (runnable examples)

Paths below match our evidence tree; swap in your cut file and output name.

# A) Speed preset
HandBrakeCLI -i seattle_interview_delivery_src.mp4 \
  -o seattle_vf1080p30.mp4 --preset "Very Fast 1080p30"

# B) Size-cap Social preset
HandBrakeCLI -i seattle_interview_delivery_src.mp4 \
  -o seattle_social25mb30s.mp4 \
  --preset "Social 25 MB 30 Seconds 1080p60"

# C) Explicit RF (reproducible controls)
HandBrakeCLI -i seattle_interview_delivery_src.mp4 \
  -o seattle_rf22_x264.mp4 \
  --encoder x264 --quality 22 --encoder-preset medium \
  --encoder-profile high --encoder-level 4.0 \
  -r 30 --pfr -w 1920 -l 1080 --crop 0:0:0:0 \
  -a 1 -E av_aac -B 160 -f av_mp4 --optimize

Write the exact preset string (or full command) on the checklist before you move on.

4. Verify with ffprobe before upload

# Size + container duration
ffprobe -hide_banner -show_entries format=size,duration \
  -of default=noprint_wrappers=1 delivery.mp4

# Resolution + video duration + fps
ffprobe -hide_banner -select_streams v:0 \
  -show_entries stream=width,height,duration,r_frame_rate,codec_name \
  -of default=noprint_wrappers=1 delivery.mp4

# Audio codec (expect aac on our MP4s)
ffprobe -hide_banner -select_streams a:0 \
  -show_entries stream=codec_name,duration \
  -of default=noprint_wrappers=1 delivery.mp4

On our Social output we measured size=22974094 (21.91 MiB), format duration=30.016000, video width=1920 height=1080 duration=30.000000 r_frame_rate=30/1, codec_name=h264 + AAC. Same duration/resolution class on Very Fast and RF 22.

Optional frame spot-check (readable titles on our fixture; not a perceptual metric):

ffmpeg -ss 5 -i delivery.mp4 -frames:v 1 check_t5s.jpg

5. Worked example: Social 25 MB (measured)

Goal: stay under 25 MB for a 30-second 1080p clip. Command: preset Social 25 MB 30 Seconds 1080p60.

MetricMeasured
Output bytes22,974,094 (21.91 MiB) — under 25 MB
Wall time49.182 s (2-task job in the encode log)
Video duration30.000 s (container ≈30.016 s)
Resolution / fps1920×1080 @ 30 fps (source was 30; preset name says 1080p60)
Video bitrate (ffprobe)~5,957,161 bps
Social 25 MB output frame at about 5 seconds: KEEP A text still readable
Social 25 MB output at t≈5 s. KEEP A title still readable after the size-cap encode — spot-check only, not VMAF.

Verdict on this fixture: PASS for a 25 MB hard cap (21.91 MiB), duration/resolution match, H.264+AAC MP4. Document that fps stayed 30 despite the preset name.

6. Compare the three paths (pick by goal)

PathBytesMiBWallControlPick when…
Very Fast 1080p3012,144,42211.5813.672 sx264 veryfast RF 24 Main@L4.0You want fast + small, no hard MB label
x264 RF 22 medium91,704,82087.4651.236 sRF 22 High@L4.0Client asks for RF-in-writing (expect larger than Very Fast here)
Social 25 MB 30 Seconds 1080p6022,974,09421.91 (<25 MB)49.182 s~6 Mbps 2-task; stayed 30 fpsYou need a named hard byte cap

All three: video duration 30.000 s, container ≈30.016 s, 1920×1080. Source was 1051.80 MiB.

Download the checklist

Download the HandBrake delivery-encode checklist (Markdown). Fill target MiB/MB and preset name before you encode, paste ffprobe size/duration/resolution on rejects, and keep the cut master untouched when you upload the encode copy.

FAQ

Which HandBrake preset should I pick for a hard byte cap?

On our October 16, 2026 fixture (HandBrakeCLI 1.9.2 / ffprobe 7.1.5), Social 25 MB 30 Seconds 1080p60 wrote 22,974,094 bytes (21.91 MiB) — under the 25 MB label — in 49.182 s. Very Fast 1080p30 was smaller and faster (11.58 MiB / 13.672 s) but is a speed/RF preset, not a named size cap.

Does a lower RF always mean a smaller file?

Not on this source. Custom x264 RF 22 / medium landed at 91,704,820 bytes (87.46 MiB), larger than Very Fast 1080p30 at RF 24 / veryfast (12,144,422 bytes / 11.58 MiB). RF alone is not a size ranking; preset speed, RF, and content matter.

The Social preset name says 1080p60 — will my 30 fps interview become 60 fps?

Not in our test. The source was 1920×1080@30; the Social output stayed 30 fps (r_frame_rate=30/1) with video duration 30.000 s. Document the measured fps; do not assume the preset name forces 60.

What do I verify with ffprobe before upload?

We checked format size and duration, video stream width/height/duration, and codecs (H.264 + AAC in MP4). All three of our outputs kept 1920×1080 and video duration 30.000 s (container ≈30.016 s). FAIL if bytes exceed your target or duration/resolution diverge from the source you intended to deliver.

Honest limits

  • Synthetic Seattle interview stand-in (color + noise panels) — not a real client face shoot; no VMAF / perceptual ranking.
  • Software x264 only on this box — NVENC / QSV / SVT-AV1 / HEVC not tested.
  • Windows and macOS HandBrake builds not tested.
  • Hour-long / multi-GB camera files not tested (30 s fixture only).
  • Creator 1080p60 / HQ Surround and other listed presets not run in this batch.
  • Subtitle pass-through / burn-in not tested.
  • HandBrake re-encodes — wrong tool for “just cut dead air” (use LosslessCut, then this checklist).

When size fails the cap, pick another named preset or lower the bitrate path and re-probe — do not upload on hope. When it passes, upload the encode copy and keep the cut master bit-identical for disputes.

Test basis: CLI sizes, wall times, and ffprobe dumps on October 16, 2026 under evidence/handbrake/. Companion review: HandBrake delivery-encode review. Related cut QA: LosslessCut export duration audit.

The ToolBrivio digest

Better software choices, in your inbox.

A weekly selection of software reviews and practical guides. Launching soon — leave your email to join the waitlist.