How to smart-crop widescreen to a portrait 9:16 cut
- Step 1Open auto-reframe and drop the widescreen clip — Load the auto-reframe tool and add your file. Accepted inputs:
.mp4,.mov,.mkv,.webm,.avi,.m4v,.ts. A lightweight<video>probe reads dimensions and duration up front; the FFmpeg pipeline probes again to compute the crop. - Step 2Select 9:16 as the portrait target — Set the Ratio dropdown to
9:16for portrait. The other choices are1:1and4:5. The tool computes the largest 9:16 window that fits inside your source and centres it. - Step 3Understand the crop math — If the source is wider than 9:16 (any 16:9 clip is), the tool keeps full height and sets width =
round(height × 9/16), then trims that even. The crop offset is(in_w-cropW)/2— dead centre. If the source were narrower than 9:16, it would keep full width and crop top/bottom instead. - Step 4Confirm output sizing — Output width is
min(1080, cropW)and output height is derived from the ratio, both forced even. From 1920×1080 you get a 608×1080 portrait; from 3840×2160 you get 1080×1920. No upscaling beyond the 1080 cap. - Step 5Run and save the MP4 — The encode is libx264
-preset medium -crf 20, AAC 128k, output.mp4. Stream it to disk on supported browsers or download the blob. The metrics line reports input → output bytes and elapsed time. - Step 6Hand off to the right next tool — Need an exact off-centre crop? Use the video cropper. Building Shorts with a trim baked in? The youtube-shorts-formatter does 9:16 plus a length cap. Just resizing without cropping? The video resizer.
9:16 centre-crop math by source resolution
How the probe-driven crop computes width and output. Source is assumed 16:9; crop keeps full height, width = round(height × 9/16), forced even.
| Source | Centre crop (9:16) | Output (1080 cap) | Crop offset x |
|---|---|---|---|
| 1920×1080 | 608×1080 | 608×1080 | 656 |
| 2560×1440 | 810×1440 | 810×1440 | 875 |
| 3840×2160 | 1215×2160 | 1080×1920 | 1312 |
| 1280×720 | 404×720 (→ even 404) | 404×720 | 438 |
Why the output is codec-clean
The 'smart' part is determinism and compatibility, not AI. These guarantees come from the processor's fixed logic.
| Guarantee | How it's enforced | Failure it prevents |
|---|---|---|
| Even crop dimensions | cropW -= cropW % 2, cropH -= cropH % 2 | H.264 'width/height not divisible by 2' encode error |
| Even output dimensions | outH = round(outW/ar) - (… % 2) | Player/decoder rejecting odd-dimension streams |
| No upscaling | outW = min(1080, cropW) | Soft, blocky upscaled output |
| Centred, deterministic crop | offset (in_w-cropW)/2 | Unpredictable framing across a batch |
| Broadly-compatible codec | libx264 + AAC, MP4 container | Exotic codec/container playback failures |
Cookbook
Deterministic 9:16 crops across source resolutions, showing the exact kept window and output size.
1080p widescreen to portrait
The baseline case. Full height kept, sides trimmed to a 608-wide 9:16 strip centred on the frame.
Source: 1920x1080 (16:9) Ratio: 9:16 Crop: 608x1080 at x=656, y=0 Scale: lanczos (under 1080 cap, no resize) Output: 608x1080 .mp4 H.264 CRF 20 / AAC 128k
4K to a full 1080×1920 portrait
From 4K the centre strip is 1215×2160; the 1080 cap scales it to a clean 1080×1920 — a genuine full-res vertical.
Source: 3840x2160 Ratio: 9:16 Centre strip: 1215x2160 at x=1312 Width cap: 1080 -> output 1080x1920 Result: sharp full-res 9:16
1440p with odd intermediate width
2560×1440 yields a 810×1440 crop. The even-dimension enforcement guarantees both numbers are divisible by 2, so the encode never errors.
Source: 2560x1440 Ratio: 9:16 Width = round(1440 * 9/16) = 810 (even, OK) Crop: 810x1440 at x=875 Output: 810x1440 .mp4
Batch consistency across mixed clips
Because the crop is deterministic and centred, every clip in a set gets the same treatment — useful when you're cutting a series of widescreen segments into matching verticals.
Clips: ep1.mp4, ep2.mov, ep3.mkv (all 1920x1080) Ratio: 9:16 each Each -> 608x1080 centre strip, identical framing Result: visually consistent vertical series (Note: engine processes one file at a time)
Off-centre subject — choose the cropper instead
Smart-crop is deterministic, not adaptive. If the subject isn't centred, the centre strip misses them. The right tool is the manual cropper.
Source: 1920x1080, subject in RIGHT third
Ratio: 9:16 -> centre strip misses the subject
Better: video-cropper -> place a 9:16 box at x ~ 1200
(over the subject), exact pixel controlEdge cases and what actually happens
"Smart" doesn't mean subject tracking
By designThe crop is a deterministic centre crop, not AI saliency tracking. "Smart" refers to probe-driven sizing and even-dimension, codec-clean output. If you need a crop that follows a moving subject, this tool can't do it — split into segments and crop each with the video cropper.
Odd source dimensions
HandledIf the computed crop width or height is odd, the tool subtracts one to force it even before encoding. You may lose a single pixel row/column, but the encode never fails on the 'not divisible by 2' H.264 error that breaks hand-rolled FFmpeg crops.
Source narrower than 9:16
Top/bottom cropIf the source is taller than 9:16 (e.g. already-portrait footage), the tool keeps full width and crops top and bottom instead of the sides. The crop stays centred — here, vertically.
Free tier blocked
Upgrade requiredAuto-reframe is Pro tier minimum; Free tier has video streaming disabled. Pro: 10 GB / 5 files. Pro+Media: 100 GB / 50. Developer: 100 GB / unlimited batch. No minutes cap — file size and batch count only.
Dimensions can't be probed
ErrorIf the FFmpeg probe returns no width/height, the tool throws Could not determine video dimensions and stops. Corrupt headers or unusual containers are the usual cause — transcode first with the video transcoder.
Output capped at 1080 wide
ExpectedOutput width is min(1080, cropW), so the tool never upscales beyond 1080. A sub-1080 crop (e.g. 608 from 1080p) stays at its native width. For a true 1080×1920, feed a 1440p or 4K source.
Audio re-encoded to AAC
By designAudio is always re-encoded to AAC 128 kbps; there's no stream-copy or codec choice. The video stream is also always re-encoded — there is no lossless crop, since cropping changes geometry.
Batch of clips runs serially
ExpectedEven if your tier allows several files queued, the FFmpeg-MT video engine serialises encodes through a single WASM instance — they process one after another, not in parallel. The framing is still identical across the batch because the crop is deterministic.
Frequently asked questions
Does 'smart crop' mean it tracks my subject?
No. 'Smart' here means probe-driven sizing and codec-clean, even-dimension output — not AI tracking. The crop is a deterministic centre crop. For a crop that follows a moving subject, split the clip and crop each segment with the video cropper.
How does it decide the crop width for 9:16?
It keeps the full source height and sets crop width = round(height × 9/16), then forces that even. The crop is centred horizontally at (in_w-cropW)/2. From 1080p height that's a 608-wide strip; from 2160p it's 1215, scaled down to 1080.
Why does it force even dimensions?
H.264 requires width and height divisible by 2; odd dimensions cause an encode error. The tool subtracts one pixel where needed so the output always encodes cleanly. It's the single most common failure people hit with hand-written FFmpeg crops — this tool removes it.
What's the maximum output resolution?
Width is capped at 1080 (min(1080, cropW)), so the largest portrait is 1080×1920 from a source tall enough to produce it (1440p or 4K). The tool downscales to the cap but never upscales past it.
Is the crop lossless?
No — cropping changes pixel geometry, so the clip is always re-encoded (libx264 CRF 20, AAC 128k). It's near-lossless from a good source but not a stream-copy. For a true no-re-encode operation (trim, not crop), see the lossless trimmer.
What input formats are supported?
MP4, MOV, MKV, WEBM, AVI, M4V, TS, and anything reported as video/*. Output is always MP4 (H.264/AAC) regardless of input container.
Will the same settings give consistent results across a batch?
Yes — the crop is deterministic and centred, so every same-resolution clip gets identical framing. That's ideal for cutting a widescreen series into matching verticals. The engine processes the files one at a time, but the output framing is consistent.
What if my subject isn't centred?
The centre strip will miss them. Use the video cropper to place a 9:16 crop box over the subject wherever it sits — that's the manual, pixel-exact alternative to this deterministic centre crop.
Is my footage uploaded?
No. Processing runs in your browser via FFmpeg.wasm. The video never leaves your machine; only an anonymous usage counter is recorded, never content.
Is there a length limit?
No duration cap. Video tiers limit by file size and batch count: Pro 10 GB / 5 files, Pro+Media 100 GB / 50, Developer 100 GB / unlimited. Long clips just take longer to encode in the browser.
How is this different from the video cropper?
Auto-reframe is a one-control, deterministic centre crop to a fixed ratio (9:16, 1:1, 4:5). The video cropper gives you a positionable, pixel-exact crop rectangle anywhere in the frame. Use auto-reframe for fast centred conversions; use the cropper when placement matters.
Can I build a Short with a length cap in one step?
Auto-reframe only reframes — it doesn't trim. For 9:16 with a built-in length cap, the youtube-shorts-formatter does the aspect crop plus the duration limit in a single pass.
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.