Brightness & Contrast Editor
Adjust exposure, brightness, contrast, midtones and saturation with a live histogram and a count of the pixels you are clipping. Runs in your browser.
🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.
Result
Tone distribution
Luminance histogram of the result. Spikes at either end are clipping.
Multiplies the light, like a camera. One stop is a doubling.
Adds a flat offset. Blunter, and clips sooner.
−100 is greyscale by perceived luminance, not a channel average.
Lifts or drops the middle without touching black or white.
Clipping is permanent. Once a pixel reaches pure black or pure white it has no value left to recover, so pulling a slider back afterwards does not restore the detail — it only greys the flat area. Watch the clipping counts, and edit from the original rather than re-editing an exported file. Re-encoding a JPEG also loses quality each time. Everything happens in your browser; nothing is uploaded, and the image's metadata is dropped by the re-encode.
How to use it
- Drop in a photo — a drawn sample is loaded so the controls do something immediately.
- Start with exposure and midtones rather than brightness and contrast.
- Watch the clipping counts and the histogram as you go.
- Tick "show the original" to compare, then download.
Exposure and brightness are not the same slider
Almost every simple editor gives you one control called brightness that adds a constant. That is the cruder of the two operations, and the difference is visible on any image with real range:
exposure v × 2^stops multiplicative
a dark pixel moves a little,
a bright one moves a lot
brightness v + offset additive
everything moves equally,
so blacks go grey and whites clip
A photograph lifted with exposure keeps looking like a photograph. The same lift applied additively looks washed out, because the shadows have lost their blackness. Both are here, labelled for what they do.
Clipping is the only irreversible thing here
Every other adjustment is a curve you can walk back. Clipping is not: when a value hits 0 or 255 it is pinned there, and the information about how dark or bright it originally was no longer exists in the file. Reduce the exposure afterwards and the blown sky becomes a flat grey sky, not a detailed one.
That is why the clipped-pixel counts sit next to the image rather than being hidden, and why the histogram draws its first and last bars in a different colour — a spike at either end is detail being flattened. A little clipping is normal and often desirable; the counts turn "a bit" into a number you can judge.
Greyscale that matches what you see
channel average (r + g + b) / 3 wrong
luminance 0.2126r + 0.7152g + 0.0722b
Green contributes roughly ten times as much apparent brightness as blue. Average the channels and a saturated blue turns into a mid grey that looks far too light, while a yellow turns into one that looks too dark. Mixing towards true luminance instead means desaturation preserves the tonal structure of the image, which is what makes a black-and-white conversion look deliberate rather than drained.
How it stays fast
Exposure, brightness, contrast and gamma all depend only on a channel's own value, so they are precomputed into a 256-entry lookup table and then applied by index. A three-megapixel image is twelve million channel values; computing a power function for each of them on every slider movement would make the preview unusable, while eight thousand table lookups per frame is nothing. Saturation is the exception, since it needs all three channels at once, so it runs as a genuine per-pixel pass.
The histogram scales to the 99th percentile of its own bin heights rather than the tallest bin. Without that, a single large flat area — a white background, a clear sky — produces one enormous spike and squashes the rest of the distribution into invisibility, which is the most common way a histogram becomes useless.
FAQ
What is the difference between exposure and brightness?
Exposure multiplies every value, which is what changing a camera setting does — a bright pixel moves further than a dark one, so tonal relationships hold. Brightness adds a flat offset, which lifts everything equally and therefore turns blacks grey and pushes highlights into pure white sooner. Exposure is almost always the one you want; brightness is offered because sometimes a blunt lift is what a flat scan needs.
Why does the tool count clipped pixels?
Because clipping is the one thing you cannot undo. Once a pixel is at pure black or pure white its original value is gone, so pulling the slider back afterwards produces a flat grey area rather than recovered detail. The count tells you how much you have destroyed while you can still change your mind.
Why does desaturating not just average the channels?
Because the eye is far more sensitive to green than to blue. Averaging red, green and blue equally makes a pure blue and a pure yellow of very different apparent lightness come out as the same grey. This weights them 0.2126, 0.7152 and 0.0722 — the Rec. 709 luminance weights — so greyscale matches what a monochrome camera would record.
What does the midtones slider do that contrast does not?
Contrast pivots around the middle and pushes both ends outward, which clips. The midtones control is a gamma curve: it moves the middle of the range while leaving pure black at black and pure white at white, so it brightens a dim photograph without blowing the highlights. For an underexposed image it is usually the better first move.
How does auto levels decide?
It finds the values below which the darkest half-percent of pixels sit and above which the lightest half-percent sit, then stretches that range to fill black-to-white. Using percentiles rather than the true darkest and lightest pixels matters — one stuck sensor pixel or a single specular highlight would otherwise decide the whole adjustment.
Is my photo uploaded, and does it keep its metadata?
Nothing is uploaded — the pixels are read and written in the page. Metadata does not survive, because re-encoding through a canvas drops it: EXIF, GPS and colour profiles all go. That is a privacy gain if you are posting the photo and a loss if you need the camera data, so edit a copy.
How we compare
| Feature | Online Tool Store | Simple online editors | Lightroom or Darktable |
|---|---|---|---|
| Exposure and brightness as separate controls | ✓ | One "brightness" | ✓ |
| Live clipped-pixel counts | ✓ | ✗ | As a warning overlay |
| Luminance-weighted saturation | ✓ | Often a channel average | ✓ |
| Photo never leaves your device | ✓ | ✗ | ✓ |
| No account, instant, free | ✓ | Usually gated | ✗ |
| RAW files and non-destructive editing | ✗ | ✗ | ✓ |
| Local adjustments, masks, colour grading | ✗ | ✗ | ✓ |
Enough control to rescue a flat or dark photograph, with the two things simple editors leave out — a real exposure control and a live count of what you are destroying. It works on 8-bit pixels, not RAW, and every edit is baked in, so for serious photographic work a proper editor is still the right home.