Aspect Ratio Crop Calculator
Fit a clip into a target aspect ratio and see exactly what gets cropped or letterboxed — for both cover and contain — with the crop rectangle and the loss in pixels. Runs entirely in your browser.
About this tool
Every editor asks the same two questions when you drop a clip into a different shape: do you want the frame filled, or the whole picture kept? Cover fills the frame and throws away whatever falls outside; contain keeps every pixel and pays for it with black bars. The two are easy to confuse because both produce a correctly shaped video — the difference only shows up in what is missing from it.
This page answers both at once, with the geometry made explicit. The important number is not the output size, which is usually what you asked for, but the crop rectangle: the region of the source that survives. A 1920×1080 clip fitted to a 9:16 frame keeps a 607.5-wide strip out of 1920 — roughly a third of the picture. Knowing that a strip, not the frame, is the real subject is the difference between a usable crop and a ruined one.
The anchor decides which part survives. Because cover always leaves slack on one axis only, three positions are enough: centre, and the two ends. That covers the two habits that matter — hide the middle of a wide shot, or protect the top of a tall one — without the nine-cell grid that makes people pick the wrong corner.
The comparison block reports both modes for the same input, including the pixels lost or added. It is deliberately not the answer to "which is better": cover keeps the frame and loses content, contain keeps content and loses the frame. The tool makes the trade visible rather than making it for you.
Why the fitted numbers come out exact, not 0.9999
The geometry is computed from the ratio as a fraction rather than as a decimal like 16/9. Working with the two integers avoids the float error that turns a clean 607.5 into 607.4999999924.
A ratio such as 16:9 is not exactly representable as a decimal. If the code turned it into 1.7777… first and then divided, a 1080-tall frame would yield a width of 607.4999999924 — a number that looks right on screen but fails any exact comparison. The tool keeps the two sides separate and multiplies instead: height times the numerator, divided by the denominator.
The output height is handled the same way, for the same reason. It is recomputed from the ratio rather than by scaling the canvas height, because multiplying the canvas by the scale factor carries its own floating-point tail — one measured case produced 1920.000000024 instead of 1920.
The remaining noise, where it cannot be avoided at all, is trimmed at the exit: values are rounded to ten decimal places on the way out, so the question of whether the fitted rectangle exactly matches the target ratio can be answered with a tolerance instead of an equality that would always be false.
What the rectangle used means in each mode
Under cover it is the crop box — the slice of the source that survives. Under contain it is the entire source, because contain keeps every pixel and puts the cost into the bars instead.
The same output field reports a different thing depending on the mode, and that is deliberate. Cover throws pixels away, so the region actually used is smaller than the source; contain throws none away, so the region used is the full frame, and the surplus shows up as padding around it.
Getting this wrong is easy and visible: if contain reused the crop box from cover, the used region would come out taller than the source itself — an area of 1920 by 3413 taken from a 1920 by 1080 frame. The two are therefore computed separately, and the picture rectangle in the output is measured from the used region, not from the whole source.
Why the trim and pad percentages share no denominator
Trimming is reported as a share of the source pixels; padding as a share of the canvas pixels. Cover measures loss against what you started with, contain measures added bars against what you end up with.
The two percentages answer two different questions, so they are measured against two different wholes. A trim tells you how much of the original frame is gone — the removed pixels over the source pixels. Padding tells you how much of the finished frame is bars — the added pixels over the canvas pixels.
Sharing a single denominator would be tempting and wrong, because in cover the canvas is smaller than the source and in contain it is larger. Each percentage is measured against the frame that actually contains the change — the source for what was taken away, the canvas for what was added.
Why only one axis ever changes
Cropping 1920×1080 to 1:1 with cover moves width only: the result is 1080×1080, 420 pixels dropped from each side and no height cropped at all. With contain, height is the one that moves: the canvas becomes 1920×1920, 420 pixels added top and bottom. Both axes never change at once.
Cover means scaling until the frame covers the target ratio. When the source is wider than the target, height is the constraint and width is trimmed; when the source is taller, it reverses. Covering needs only one direction to be filled, so the other necessarily has surplus.
That fact is why the anchor needs only three values. With a single axis carrying the surplus, center, start and end describe where that surplus goes. If both axes could be trimmed, the anchor would need nine combinations.
Contain moves one axis too, in the opposite direction: padding 1920×1080 out to 1:1 fills height to 1920 and leaves width untouched. So cover and contain change the same number of pixels in opposite directions, which is exactly why both modes have to be offered.
Only when the source ratio equals the target ratio does neither axis move and the change come out as zero. Switching modes then shows no difference, and that is not a failure to compute: this input simply has nothing to trim or pad.
Frequently asked questions
What is the difference between cover and contain?
Cover scales the source until it fills the target frame, cropping whatever overflows. Contain scales it until the whole source fits inside the frame, adding bars on the leftover sides. Cover never shows black bars and always loses some content; contain never loses content and often shows bars. When the source and target already match, the two are identical and nothing is cropped or padded.
Which one should I use for a vertical short from a landscape clip?
Cover, if the subject is in one part of the frame — that is what the anchor is for. A 16:9 clip reframed to 9:16 keeps only about 31.6% of the width, so the question is whether what you are cutting away is the sides of the shot or the subject itself. Contain avoids that decision by keeping everything, at the cost of a small picture in a sea of bars.
Why is the crop rectangle reported in source pixels?
Because that is the coordinate system you would type into an editor. A crop of x=656, width=607.5 describes a region of the 1920-wide original, not of the 1080-wide output. Reporting it after scaling would produce numbers no crop tool accepts. The picture rectangle, by contrast, is given in output pixels, because that is where you would draw the overlay.
Does the output size change the crop?
No. The output width only sets the scale factor. The rectangle taken from the source is decided by the source resolution, the target ratio and the anchor, and is identical whether you export at 720p or 4K. Scaling changes how many pixels are in the result, not which part of the frame you kept.
Does this upload or store my video?
There is no video — the tool works from two numbers. No frame is read, no file is sent, and no figure leaves the page. It keeps working with the network disconnected, which is the easiest way to check.
Related tools
Estimate a video file size from duration and bitrate — video and audio tracks plus container overhead — and see how long a given card or upload limit will hold.
Convert between SMPTE timecode and frame numbers at any frame rate — including drop-frame, where 00:01:00;00 does not exist. Shows the exact duration too.
Work out the depth of field, near and far limits and the hyperfocal distance for any lens and aperture, with the circle of confusion matched to your sensor.
Build a linear, radial or conic gradient and see the colours in between — interpolated in sRGB, linear light or OKLab — then copy the CSS. Runs entirely in your browser.