Brightness & Contrast

Lighten or darken a picture, set its contrast and open the shadows with gamma, without the file leaving this tab.

Runs on your deviceImagesWorkingNo account needed

What this tool does

Brightness & Contrast builds a 256-entry lookup table from the three sliders and pushes every pixel through it. Brightness adds a fixed amount to each channel, about 2.55 levels for every point of the slider, so a value of 100 becomes 151 at +20 per cent. Contrast then multiplies the distance from mid-grey, so with brightness left at zero the value 128 does not move at all while everything above it rises and everything below it falls. Gamma is applied last, as an exponent, so it moves the mid-tones and leaves pure black and pure white untouched. Red, green and blue share one table, so the tone shifts without the picture picking up a colour cast, and the pixel pass never reads or writes the alpha channel.

This is a global tonal adjustment rather than a levels or curves editor. There is no histogram, no black-point or white-point picker, no per-channel control and no way to confine the change to a selection or to one band of tones — every pixel in the frame meets the same rule. A photograph that needs the sky pulled down while the faces stay where they are wants an editor with masks, not this page.

Two things are genuinely lost along the way, and both are worth knowing before you commit to a big move. The arithmetic clamps at each end: a highlight pushed to 255 is simply 255, gamma is applied after that clamp, and dragging brightness back afterwards returns a flat white area rather than the detail that used to be in it. The second is banding. The work runs at eight bits per channel, so a steep contrast or gamma change spreads 256 input levels over a wider output range, and smooth gradients such as a sky or a studio backdrop can show the steps. Both are reasons to start again from the original file with a smaller setting rather than to correct an adjusted copy.

Everything runs in this browser tab: the file is decoded onto a canvas, adjusted and re-encoded here, so it is not sent anywhere and the page still works with the network off. There is no live before-and-after preview — you choose the three values, run the job and judge the file you get back, and Start over empties the queue, so a second attempt means adding the image again. Because the output is written fresh from the adjusted pixels, the EXIF block from the original camera file is not carried into it.

How to use it

  1. Add one or more images. JPG, PNG, WebP, GIF and BMP decode, and AVIF on recent browsers. Queue several and each is adjusted separately using the same three values.
  2. Set the brightness. Minus 100 to plus 100 per cent, added to every channel before the contrast factor is applied — which means raising contrast also amplifies the brightness shift you asked for.
  3. Set the contrast. Minus 100 to plus 100 per cent. On its own it pivots on mid-grey, so 128 does not move; negative values pull the picture in towards grey instead of pushing it apart.
  4. Use gamma for the shadows. 0.2 to 3, in steps of 0.05. Below 1 lifts the mid-tones and shadows without driving the highlights any further; above 1 deepens them. Black and white stay put either way.
  5. Choose the output format. Keep the input format, or write JPG, PNG, WebP or AVIF. The quality slider applies to JPG, WebP and AVIF only — PNG is lossless and ignores it. Those four are the only formats this page can write, so a GIF or a BMP left on “same as the input” comes back as a PNG, and AVIF stops with a message on a browser too old to encode it rather than quietly handing you a PNG.

Processing & privacy

Runs on your device. Your file is processed directly in this browser.

Common use cases

An exposure that came out too dark

Raise brightness a little and take gamma below 1, so the shadows open up while the brightest parts of the frame stay short of pure white.

A scan of a receipt or a printed page

Positive contrast with a small brightness rise pushes the paper towards white and the ink towards black, which makes a grey scan easier to read.

Making room for text over a photograph

Negative contrast with a brightness rise washes the picture back towards grey, giving an overlaid headline a quieter surface to sit on.

A set of photos shot in the same light

Queue the batch, set one combination of values and each file is written out separately with the same shift, instead of drifting image by image.

Questions

Is my image uploaded?
No. Decoding, the pixel pass and re-encoding all happen on a canvas in this browser tab. Nothing is transmitted, which is why the tool still runs with the network switched off.
Is there a live preview?
No. There is no slider that updates the picture as you drag it: you set the values, run the job and look at the result. Adjusting and running again is the way to converge on a setting, and Start over clears the queue first.
Can a blown-out highlight be recovered?
No. Values clamp at 0 and 255, and gamma is applied after the clamp, so an area already pushed to white holds nothing left to bring back. Return to the original file and use a smaller move.
It refused to run and produced nothing
With brightness at 0, contrast at 0 and gamma at 1 the output would be a re-encoded copy of the input, so the job is declined with a message asking you to move one of the three away from its default.
What happens to an animated GIF or a transparent PNG?
Only the first frame of a GIF is decoded, so the animation does not survive. Transparency is kept in PNG, WebP and AVIF output; JPG has no alpha channel, so transparent pixels are filled with white.
Why will it not open my HEIC or RAW file?
Browsers ship no decoder for HEIC, TIFF or camera RAW, so the file is refused with a message rather than half-processed. HEIC Converter handles iPhone photos on the server; export RAW as JPG or PNG first.
Should I use this or Hue & Saturation?
One curve is applied to all three channels, so this is a tonal control and nothing is tinted towards a particular hue. It is not colour-neutral, though: a steep contrast or gamma move changes how saturated the result looks, and can nudge the hue of a pixel whose channels are far apart. Reach for Hue & Saturation when colour itself is what you want to move, and Grayscale Image to take it out altogether.

Related tools