How to trim and reframe for youtube shorts in one pass
- Step 1Confirm the one-pass behaviour fits your clip — The single pass trims the first 60 seconds and crops the center to 9:16. If your highlight is centered and near the start, one pass is all you need. If not, pre-process (trim or crop) before this step.
- Step 2Pre-trim only if your moment isn't at the start — The pass keeps the opening minute. If your best segment is later, cut it to the front with lossless-trimmer first — that's still lossless, so the only re-encode is the formatter's single pass.
- Step 3Drop the clip onto the formatter — MP4, MOV, MKV, WebM, AVI, M4V, or TS. The file loads into the in-browser FFmpeg.wasm filesystem once — no upload, no per-step round-trip.
- Step 4Run the single pass — JAD probes the dimensions, builds the
crop=...,scale=1080:1920:flags=lanczosfilter graph, applies-t 60, and encodes H.264 CRF 20 + AAC 128 kbps — all in one FFmpeg invocation. - Step 5Download the finished Short — You get a single 1080×1920 MP4 with
+faststart. No intermediate files, no second tool — the trim and reframe are already done. - Step 6Add captions or branding as separate passes if needed — Captions (subtitle-burner) and watermarks (watermark-engine) are intentionally separate tools — they're a second pass on the finished Short, not part of the format pass.
The single filter graph, stage by stage
How the one pass chains operations. crop feeds scale in the same -vf graph; -t is applied at the input. One libx264 encode finalises everything.
| Order | Operation | Argument | In the same pass? |
|---|---|---|---|
| 1 | Trim to first 60s | -t 60 (input-level) | Yes |
| 2 | Center crop to 9:16 | crop=cropW:cropH:(in_w-cropW)/2:(in_h-cropH)/2 | Yes (chained -vf) |
| 3 | Scale to 1080×1920 | scale=1080:1920:flags=lanczos | Yes (chained -vf) |
| 4 | Encode video | -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p | Yes (single encode) |
| 5 | Encode audio | -c:a aac -b:a 128k | Yes |
| 6 | Finalise container | -movflags +faststart → MP4 | Yes |
One pass vs. chaining separate tools
Why fusing the operations matters, and when you still need a pre-step.
| Approach | Re-encodes | When to use |
|---|---|---|
| This tool (one pass) | 1 (crop+scale+trim together) | Centered subject, highlight near the start |
| Trim tool → this tool | 1 (trim is lossless -c copy) | Highlight is later in the clip |
| Crop tool → this tool | 2 (crop re-encodes, then format) | Subject is off-center |
| Auto-reframe → this tool | 2 | Subject moves across the frame |
| Format → subtitle-burner | 2 | You need burned-in captions |
Cookbook
How the single pass behaves on real clips, and the cases where you add exactly one pre-step to keep the chain efficient.
Centered clip, already ~60s → one pass, done
The ideal one-pass case: a centered subject in a sub-60-second clip. Crop, scale, and trim happen together in one encode.
Input: clip.mp4 1920×1080 55s (subject centered) One pass: -t 60 (55s, no-op) -vf crop=607:1080:656:0, scale=1080:1920:lanczos -c:v libx264 -crf 20 ... -c:a aac -b:a 128k Output: 1080×1920 MP4 — one generation of compression
Trim then one pass (highlight is later)
The lossless trim keeps the chain to a single re-encode — -c copy doesn't touch the pixels, so the formatter's pass is the only quality-affecting step.
clip.mp4 (5:00), highlight at 3:00: 1. lossless-trimmer 2:50–3:50 → cut.mp4 (-c copy, lossless) 2. shorts-formatter cut.mp4 → 1080×1920 (single encode) Total encodes affecting quality: 1
Why a separate crop costs a second encode
When the subject is off-center you must crop first, and that crop is itself a re-encode — so the total is two generations. Acceptable at CRF 20, but worth knowing.
Off-center subject: 1. video-cropper → vertical-ish region (encode #1) 2. shorts-formatter → 1080×1920 (encode #2) Use auto-reframe instead if the subject moves (still 2 encodes, but content-aware framing).
One pass on a 4K source
The single pass still applies to 4K — crop, downscale to 1080×1920, and trim in one encode. The decode is heavier but it's still a single generation.
Input: 4k.mov 3840×2160 40s One pass: -vf crop=1216:2160:1312:0, scale=1080:1920:lanczos one libx264 CRF20 encode Output: 1080×1920 MP4 (slower — 4K decode, still 1 encode)
Captions are a deliberate second pass
The formatter doesn't burn captions in its pass — that keeps the format pass fast and lets you iterate caption styling without re-cropping. Burn them after.
1. shorts-formatter → short.mp4 (1080×1920, trim+reframe) 2. subtitle-burner short.mp4 + subs.srt → captioned.mp4 Two passes by design: re-style captions without re-formatting.
Edge cases and what actually happens
You want a specific in/out range, not the first 60s
By designThe single pass always uses -t 60 from the start — there's no in/out picker in the format pass. Pre-trim with lossless-trimmer; since that's -c copy, the chain still has only one quality-affecting encode.
You want an off-center or custom crop region
By designThe crop in the pass is always centered. A custom region needs video-cropper first — but note that's a second re-encode, so the total is two generations of compression.
You want a resolution other than 1080×1920
By designThe scale is fixed to 1080×1920. For a smaller file, run web-optimizer on the result; for a different target shape entirely, use the matching formatter (instagram-feed-formatter, twitter-x-formatter).
You expected captions or watermark in the same pass
By designCaptions and watermarks are separate tools, applied as a second pass. This is intentional — it keeps the format pass fast and lets you re-style overlays without re-cropping. Use subtitle-burner and watermark-engine afterwards.
Clip is already 9:16 — does the pass still re-encode?
ExpectedYes. Even a 9:16 source goes through the same single pass (identity-scale to 1080×1920 + re-encode + -t 60). That normalises odd phone resolutions to the canonical Shorts size but does cost one re-encode.
Two re-encodes when chaining a crop tool
ExpectedIf your subject is off-center and you crop first, that crop re-encodes, then the format pass re-encodes again — two generations. At CRF 20 the visible loss is small, but stack as few passes as possible.
Variable-frame-rate source in one pass
SupportedThe single libx264 encode normalises a VFR phone capture to a constant timeline within the same pass, so playback is smooth. No -r is set, so the nominal frame rate is preserved.
Source can't be probed for dimensions
ErrorThe pass needs the source width/height to compute the crop. If the probe fails (corrupt or unusual container), it throws "Could not determine video dimensions." Remux or re-export to a clean MP4 and retry.
File over your tier's size limit
RejectedOne pass or not, the input must fit your tier (Free 1 GB, Pro 10 GB, Pro-media/Developer 100 GB). Pre-trimming with the lossless trimmer is the cheapest way to shrink the input before the pass.
You want to concatenate clips into one Short
Wrong toolThe single pass formats one input file — it doesn't join clips. Stitch first with video-merger, then run the merged file through the format pass.
Frequently asked questions
Does the formatter really trim and reframe in one step?
Yes. A single FFmpeg.wasm pass applies -t 60 (trim), a centered crop to 9:16, and a scale to 1080×1920 in one chained filter graph, finished with one H.264 CRF 20 + AAC encode. The file is decoded once and encoded once.
Why does one pass matter for quality?
Each re-encode loses a little quality (generation loss). Fusing crop, scale, and trim into one encode means a single generation instead of three. Adding a pre-trim doesn't add a generation because the trimmer uses lossless -c copy.
Can I set in and out points in the one pass?
No — the pass always trims the first 60 seconds. To choose a range, trim it to the front first with lossless-trimmer; that's lossless, so the chain still has just one quality-affecting encode.
Can I move the crop off-center in the same pass?
No — the crop is fixed to the center. For a custom region use video-cropper before the format pass (that adds a second re-encode), or auto-reframe for a moving subject.
Can I pick a different output resolution in the pass?
No — it's always 1080×1920. The scale is hard-coded to the Shorts-recommended size. If you need a lighter file, post-process with web-optimizer.
Are captions part of the one pass?
No, and that's deliberate. Captions are a separate pass via subtitle-burner so you can re-style them without re-running the crop/scale/trim. Burn them onto the finished 1080×1920 Short.
Is one pass faster than chaining tools?
Generally yes — the file is loaded into the WASM filesystem and decoded once, rather than written out and re-read between tools. The encode itself is the main cost; eliminating intermediate round-trips saves the rest.
Does a 9:16 source skip the pass?
No — it still runs the single pass (scale to 1080×1920 + re-encode + -t 60). That normalises non-standard phone resolutions to the canonical Shorts size, at the cost of one re-encode.
What if I need to combine two clips into one Short?
The format pass handles one file. Join them first with video-merger (concat for same-codec, transcode otherwise), then run the merged file through the formatter's single pass.
What exactly comes out of the pass?
A 1080×1920 MP4, H.264 CRF 20 + AAC 128 kbps, ≤60s, with +faststart and yuv420p. Source frame rate is preserved. No overlays, no branding — a clean Shorts-spec file.
Does everything happen locally?
Yes — the entire single pass runs in your browser on FFmpeg compiled to WebAssembly. No upload, and no intermediate files leave your machine even when you chain a pre-step.
How many generations of compression will my Short have?
One, if you only use this tool (or pair it with the lossless trimmer). Two, if you add a re-encoding pre-step like the cropper or auto-reframe. Keep the chain short and start from the highest-quality master to minimise loss.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.