Scale an image by percentage

A ratio in, a pixel count out, and the kernel doing the arithmetic named on the panel.

The resampler runs on your CPU, not on ours.
Drop a file here, or click to open the pickerThe ratio applies to both axes until the lock is cleared. Ctrl-V pastes from the clipboard.

Nothing to hand?

Ratio as the input

Scaling by proportion is a different question from scaling to a size, and it has a different failure mode. Nothing here has to be checked against a target, so the only judgement left is how the intermediate pixels are computed — which is precisely the decision most tools take away from you.

The presets cover the ratios that recur: a quarter and a half for bringing scans and screenshots down, three-quarters for a modest trim, and 150% and 200% for the cases where a larger grid is genuinely wanted and the interpolation is understood. Everything between is the slider, which previews at a low cost while it moves and runs the selected kernel once you let go.

Halving, doubling, and the awkward numbers

Integer ratios are the well-behaved cases. At exactly 50% every output pixel is the average of a clean two-by-two block, at 25% a four-by-four, and no kernel has to guess where a sample sits between two others. Ratios that are not integer reciprocals land output centres between input centres, which is where the choice of kernel starts to show.

A 4032 x 3024 phone photograph at the presets
RatioPixelsMegapixelsAt 300 dpi
25%1008 x 7560.768.53 x 6.40 cm
50%2016 x 15123.0517.07 x 12.80 cm
75%3024 x 22686.8625.60 x 19.20 cm
150%6048 x 453627.451.21 x 38.40 cm
200%8064 x 604848.868.28 x 51.21 cm

Two limits worth knowing before you drag:

  • Above 100% the kernel is interpolating: it computes plausible values between the samples that exist and adds no information. The 200% row above is a 48.8 megapixel file carrying 12.2 megapixels of recorded detail, and it will be judged as such by anyone looking closely.
  • The output is capped at 60 megapixels and 16384 pixels on an edge, because a browser canvas past that point fails in ways that are hard to detect — often a blank result rather than an error. The panel refuses in figures rather than producing an empty file.

Which kernel, and in which direction

Going down, sharpness is the scarce quantity and Lanczos preserves the most of it; its cost is a bright rim beside hard edges, which is visible on interface screenshots and invisible on foliage. Going up, ringing is the risk rather than softness, and bicubic passes through every original sample without overshooting, which is why the panel changes its own default at the 100% line until you choose for yourself.

Bilinear is not a compromise choice so much as a different one: it is what a browser or a GPU does when it scales an image, so picking it deliberately is the way to produce output that matches how the same image will look when a page scales it later.

Things people ask about percentages

Why work in percentages when the target is a pixel count?
Because a great many jobs have no target pixel count. Halving a batch of scans, taking a screenshot down to fit a column, bringing a set of photographs to a consistent relative size — in all of them the ratio is the requirement and the pixel count is whatever falls out. A ratio also carries across files of different sizes, which a pair of fixed numbers cannot.
Is 50% the same as scaling by a factor of 0.5?
The same arithmetic, different notation, and the panel shows both because different trades say it differently. Percentages read naturally below 100 and awkwardly above it; factors read naturally above 1 and awkwardly below. 50% and x0.500 are printed side by side so neither reader has to convert in their head.
Why does 33% of 1000 pixels come back as 330 and not 333?
It comes back as 330 because 33% is being read as exactly 33, not as a third. Type 33.333 and you get 333. Every pixel figure is rounded half away from zero from the exact product, and the panel reports the rounded value together with the print size that value actually achieves.
Does halving twice give the same result as going straight to 25%?
Close, but not identical, and going straight there is better. Each pass rounds to whole pixels and applies a filter with its own frequency response, so two passes accumulate two roundings and two lots of filtering. One pass from the original at 25% has one of each, and at half scale or under it also gets the area-average stage that keeps fine repeating detail from aliasing.
What does the panel do differently at 50% and under?
It runs an integer area-average pass before the kernel. A windowed kernel evaluated at unit support samples the source at the output's rate, and at half scale or under that rate is below Nyquist, so fine repeating structure folds into moire regardless of which kernel is chosen. Averaging whole blocks first removes the frequencies that would fold, and the kernel then handles the remainder.
Can width and height be scaled by different amounts?
Yes — clear the ratio lock and the height field becomes independent. It is worth saying that this distorts the picture, and that the only common legitimate use is correcting a file whose metadata declares non-square pixels. The panel reports a declared pixel aspect ratio when it finds one so that the decision is made on evidence.

Related routes here