Automatic brightness correction

Fix a dull, underexposed, or low-contrast photo in one click, thanks to automatic histogram stretching that uses the full available brightness range.

Example:
Drag and drop an image here, or click to browse (25 MB max).
A higher value prevents a small number of very bright or very dark pixels from skewing the stretch.

How it works

The tool first calculates the luminance of each pixel and builds a histogram (distribution of levels from 0 to 255). It then finds the low and high values that delimit the most important part of the image (ignoring a small percentage of extreme pixels), and "stretches" each red/green/blue channel linearly so that this range covers the full 0–255 gamut again, restoring contrast to an overly flat image.

Why ignore a percentage of extreme pixels?

A single very dark area (like a corner in shadow) or very bright area (a reflection, the sky) can prevent any stretching if you rely on the strict minimum and maximum of the image. By ignoring a small percentage of the most extreme pixels, the stretch is based on the range that is truly representative of the photo.

Does this correction work on a photo that is already well exposed?

On a photo that already uses the full brightness range, the effect will be minimal or even nonexistent, since there is almost nothing to stretch. This tool is mainly useful for dull, hazy, or initially low-contrast photos.

100% local processing: histogram calculation and contrast stretching happen entirely in your browser — your photo is never sent to a server.