How to crop a video to any custom region in your browser
- Step 1Drop your video onto the cropper — Accepted containers include
.mp4,.mov,.mkv,.webm,.avi,.m4vand.ts. The file is read locally with WebAssembly FFmpeg — nothing uploads. The Free tier accepts one file up to 1 GB; Pro lifts that to 10 GB and 5 files per batch. - Step 2Wait for the first frame to paint — The region picker seeks to frame 0 and draws it on a canvas. If you see
Loading frame…, the video's metadata or first keyframe is still decoding — large.mkv/.movfiles take a moment. A 60%-centred default rectangle appears so there is always something to drag. - Step 3Draw or type the crop rectangle — Drag on the frame to draw a fresh box; click-and-drag inside an existing box to reposition it; drag the bottom-right corner to resize it. The numbers update live. To set exact pixels, type into the X, Y, Width, Height fields — X/Y minimum is 0, Width/Height minimum is 2.
- Step 4Sanity-check the readout against your source resolution — The box label shows source-pixel coordinates. Make sure
X + Widthdoes not exceed the source width andY + Heightdoes not exceed the source height — a crop window that runs off the frame is the single most common cause of a failed run (see the edge cases below). - Step 5Run the crop — JAD applies
crop=W:H:X:Y(Width/Height rounded down to even) and re-encodes the video with libx264 at CRF 20, preset medium. Audio is copied. Progress is reported as the WASM encoder works through the clip; longer or higher-resolution sources take longer because every frame is re-encoded. - Step 6Download the MP4 — The output is an
.mp4containing only the cropped region. Play it back to confirm the framing, then re-run with adjusted coordinates if you over- or under-cropped — there is no quality penalty to iterating because the source is re-read fresh each time.
Every control the cropper exposes
These are the only options the tool accepts. Anything not in this table — aspect presets, auto-detect, a quality slider, output-format choice — does not exist in this tool. Defaults are what you get if you change nothing.
| Control | What it does | Min / range | Default |
|---|---|---|---|
| X (offset) | Left edge of the crop window, in source pixels from the left of the frame | 0 (no maximum enforced in the input) | 0 |
| Y (offset) | Top edge of the crop window, in source pixels from the top of the frame | 0 (no maximum enforced in the input) | 0 |
| Width | Width of the kept region; rounded down to the nearest even number before FFmpeg runs | 2 | 1280 |
| Height | Height of the kept region; rounded down to the nearest even number before FFmpeg runs | 2 | 720 |
| Visual region picker | Drag-to-draw / move / SE-corner-resize box on frame 0; outputs the same X/Y/W/H in source pixels | Appears once a file is loaded | 60%-centred box |
What the crop does and does not change
The exact FFmpeg pipeline is -vf crop=W:H:X:Y -c:v libx264 -preset medium -crf 20 -c:a copy out.mp4. This table maps that command to observable effects.
| Aspect | Behaviour | Why |
|---|---|---|
| Video codec | Re-encoded to H.264 (libx264) at CRF 20, preset medium | The crop filter changes pixels, so the stream must be re-encoded — there is no stream-copy crop |
| Audio | Stream-copied unchanged (-c:a copy) — bit-identical to source | Cropping is a video-only operation; the audio is never touched |
| Container | Always MP4, regardless of input container | Output filename is fixed to .mp4; there is no format selector |
| Dimensions | Width and Height snap to nearest lower even number; X and Y pass through as typed | H.264 4:2:0 chroma subsampling requires even width and height |
| File size | Usually smaller (fewer pixels per frame) but driven by CRF 20, not the source bitrate | A fixed-CRF encode targets quality, not size — a low-bitrate source can grow if it was already smaller than CRF 20 would produce |
| Aspect ratio | Becomes exactly Width:Height — there is no padding added | Crop discards the unwanted pixels; it does not pad to a target shape |
Cookbook
Real coordinate recipes. Each code block shows the source dimensions, the X/Y/W/H you enter, and the resulting crop filter so you can see exactly what the tool runs.
Centre crop a 1080p source to 1280×720
Keep a 1280×720 window centred in a 1920×1080 frame. Centring means equal margins: X = (1920−1280)/2 = 320, Y = (1080−720)/2 = 180.
Source: 1920 × 1080 Inputs: X=320 Y=180 Width=1280 Height=720 FFmpeg runs: crop=1280:720:320:180 Result: 1280×720 MP4, centred, sides and top/bottom trimmed equally.
Crop the top-left quadrant of a screen recording
Isolate one app window pinned to the top-left of a 2560×1440 capture. The crop window starts at the origin, so X and Y stay 0.
Source: 2560 × 1440 Inputs: X=0 Y=0 Width=1280 Height=720 FFmpeg runs: crop=1280:720:0:0 Result: 1280×720 MP4 of the upper-left quarter.
Odd width gets rounded down automatically
You drew a box that came out 1281 px wide. The tool rounds Width down to 1280 before FFmpeg sees it, so the encode never errors on an odd dimension.
You enter: Width=1281 Height=719
Tool applies: 1281 - (1281 % 2) = 1280
719 - (719 % 2) = 718
FFmpeg runs:
crop=1280:718:X:Y
Result: even-dimension MP4; the 1-pixel difference is invisible.Crop a bystander out of the right edge of a 4K clip
A 3840×2160 vlog has someone walking through the right third. Keep the left 2560 px and full height. X stays 0; Width is the kept span.
Source: 3840 × 2160 Inputs: X=0 Y=0 Width=2560 Height=2160 FFmpeg runs: crop=2560:2160:0:0 Result: 2560×2160 MP4 with the right third (and the bystander) removed.
Rough-draw then fine-tune the numbers
The visual picker and the number inputs are linked. Drag an approximate box, then type the exact figures to lock perfect alignment with a UI element.
1. Drag a box on the frame → picker reports ~ W 642 × H 358 @ (310, 196) 2. You know the real target is 640×360 at (312, 198): type those into the four inputs 3. FFmpeg runs: crop=640:360:312:198 Result: pixel-perfect 640×360 MP4 aligned to the element.
Edge cases and what actually happens
Crop window extends past the frame (X + Width > source width)
Crop failedFFmpeg's crop filter requires the window to fit inside the source. If X + Width exceeds the source width (or Y + Height exceeds the height), the run aborts with a Crop failed error. Check the picker's W × H @ (X,Y) readout against your source resolution before running — the picker clamps drawn boxes to the frame, but typed numbers are not bounds-checked at input time.
Odd Width or Height entered
By designAny odd Width/Height is silently rounded down to the nearest even number (1281 → 1280) before the filter runs, because H.264 4:2:0 needs even dimensions. You lose at most one pixel per axis — invisible in practice. X and Y are not rounded, so the box can still start on an odd offset.
Width or Height below 2
ClampedThe processor clamps Width and Height to a minimum of 2 (Math.max(2, …)) and the number inputs enforce min=2. A 1- or 0-pixel crop is impossible. If you typed a tiny value by mistake you will get a 2-pixel strip, not a crash.
Expecting a quality slider or bitrate control
Not availableThe encode is fixed at CRF 20, preset medium — there is no quality, bitrate, or preset control on this tool. If you need a specific output bitrate or file-size target after cropping, run the result through video-bitrate-set or one of the size-targeted compressors.
Expecting aspect-ratio presets (1:1, 9:16)
Not availableThis tool has no aspect presets and no auto-centring to a ratio — it crops exactly the rectangle you specify. For a smart, subject-tracking reframe to 9:16 or 1:1 use auto-reframe; for fixed platform sizes use the Instagram feed formatter or YouTube Shorts formatter.
Expecting automatic black-bar detection
Not availableThere is no auto-detect of letterbox or pillarbox edges in this tool — you set the crop manually. For the letterbox workflow with the exact offset math worked out, see the sibling solution page Remove black bars / letterbox from a video.
First frame is black or a fade-in, so the picker shows nothing useful
ExpectedThe picker paints frame 0. If your clip opens on black or a slow fade, you cannot see your subject to draw against. Type the coordinates manually instead, or trim the lead-in first with lossless-trimmer so frame 0 is a usable still.
Output MP4 is larger than the source
ExpectedCRF 20 targets a quality level, not a size. If the source was a heavily-compressed low-bitrate clip, re-encoding even a cropped (smaller-area) frame at CRF 20 can produce more bits. This is normal for fixed-quality encoding; compress afterwards if size matters.
Variable-frame-rate (VFR) phone footage
SupportedFFmpeg handles VFR sources; the crop applies per frame and the re-encode normalises timing. Audio is stream-copied so A/V sync is preserved. Extremely irregular VFR (some screen recorders) can occasionally drift — if you see sync issues, transcode to a constant frame rate first with video-transcoder.
Source has no audio track
Supported-c:a copy with no audio stream is a no-op — the output is a silent MP4 of the cropped video. No error, no placeholder track.
Frequently asked questions
Can I crop a video by dragging a box, or do I have to type coordinates?
Both. Once you drop a file, a visual region picker paints the first frame and lets you drag to draw a crop box, click-and-drag inside to move it, and drag the bottom-right corner to resize it. The live label shows W × H @ (X,Y) in true source pixels. If you prefer exact numbers, four inputs (X, Y, Width, Height) stay in sync with the box, so you can rough-draw then fine-tune the digits.
What quality is the output, and can I change it?
The crop re-encodes the video with libx264 at a fixed CRF 20, preset medium — visually near-lossless for most content. There is no quality, bitrate, or preset slider on this tool. If you need a specific bitrate or file size, crop here first then run the result through video-bitrate-set.
Does cropping re-encode the audio?
No. Audio is stream-copied with -c:a copy, so it is bit-identical to the source. Only the video stream is re-encoded, because changing the pixels requires a fresh video encode. If the source has no audio, you get a silent MP4.
What output format do I get?
Always MP4 (H.264 video, source audio copied), regardless of whether you fed it a .mov, .mkv, .webm, or .avi. There is no output-format selector. To convert the result to another container or codec afterwards, use video-transcoder.
Why did my width change from an odd number to an even one?
H.264 with 4:2:0 chroma requires even width and height. The tool rounds Width and Height down to the nearest even number before running (1281 → 1280), losing at most one pixel per axis. X and Y are not rounded, so the crop can still start at an odd offset.
Why does it fail when I enter large coordinates?
FFmpeg's crop window must fit inside the source frame. If X + Width is greater than the source width, or Y + Height is greater than the source height, the run aborts with Crop failed. The visual picker clamps drawn boxes to the frame, but typed numbers are not bounds-checked, so verify against your source resolution before running.
Is my video uploaded anywhere?
No. The crop runs entirely in your browser with WebAssembly FFmpeg. The file is read from disk locally and the output is generated locally — nothing is sent to a server. That is why the Free tier can process files up to 1 GB without any transfer time.
How big a file can I crop?
The Free tier accepts one file up to 1 GB. Pro raises that to 10 GB and 5 files per batch, Pro-media to 100 GB and 50 files, and Developer to 100 GB with unlimited batch count. There is no duration cap — limits are on file size and batch count only.
Can I crop to a 1:1 square or 9:16 vertical automatically?
Not automatically — this tool crops the exact rectangle you specify. To make a square you compute the side length yourself (see the widescreen-to-square solution). For a smart, subject-aware reframe use auto-reframe; for fixed platform shapes use the Instagram feed formatter.
Does cropping make the file smaller?
Usually, because fewer pixels per frame means fewer bits, but it is not guaranteed. The encode targets CRF 20 (a quality level), not a size, so a cropped low-bitrate source can occasionally come out larger. If you need a hard size target, follow up with a compressor or video-bitrate-set.
Can I crop a batch of clips with the same rectangle?
The cropper processes one file at a time. On Pro and above you can queue multiple files, but each crop rectangle is set per file via the picker or the inputs — there is no shared-rectangle batch mode here. For uniform output dimensions across many files, video-resizer offers a batch resize.
What input formats does the cropper accept?
Common containers are recognised: .mp4, .mov, .mkv, .webm, .avi, .m4v, and .ts. Files with an unrecognised extension are treated as MP4. If a container does not decode, transcode it first with video-transcoder, then crop.
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.