FlipMyFormat

Levels: Set the Black Point, White Point and Midtones

Auto mode picks its points from percentiles rather than the single darkest and brightest pixels, so one hot pixel cannot decide your whole correction. The curve being applied is drawn on screen while you drag.

Percentile-based autoLive curve displayLive before and afterBatch + ZIP downloadNever uploaded

Drop images here

or click to browse · or paste with Ctrl+V

JPG · PNG · WebP · GIF · BMP · AVIF

Mode

0
255
1.00
DarkerBrighter

The curve being applied

This is the actual lookup table applied to every channel.

Presets

92

Your photos are never uploaded. The histogram, the lookup table and the export all run inside this browser tab.

People also use

Everything this tool does

Auto that actually works

Points come from percentiles rather than the darkest and brightest pixels. On a flat test image with four outlier pixels, min and max stretched it by 1.02, doing nothing; percentiles at 0.5 percent stretched it by 3.19.

You choose the clipping tolerance

How much of the extremes auto may sacrifice is a slider, not a hidden constant. Zero uses the true extremes, which is exactly the fragile behaviour most tools ship with.

A guaranteed monotonic curve

The mapping is built as a clamped linear remap followed by a power function, both non-decreasing. Checked across every setting the sliders allow, no lookup table decreases at any step.

The curve is drawn while you drag

The graph under the sliders is the real 256 entry table, not an illustration, with the identity line behind it so you can see exactly what is being changed.

Per-channel auto for casts

Stretching each channel independently fixes contrast and a colour cast in one pass, which is the right tool for scanned prints and old photos.

Drag to compare

Before and after share one frame with a slider, which is how you catch shadow detail you have just crushed.

Six purpose-built presets

Auto contrast, auto with cast removal, add punch, brighten midtones, deepen midtones and a faded look.

Batch with one ZIP

Auto adapts to each image individually, while manual settings apply identically, so you can pick per-image or consistent as the job needs.

Transparency preserved

The alpha channel is untouched for PNG and WebP output.

Nothing is uploaded

No server, no queue, nothing to delete afterwards. Close the tab and every trace of the image goes with it.

What each control does

Levels is three decisions: where black starts, where white starts, and how the tones in between are distributed. Everything else on this page is a way of making those three decisions faster.

ControlWhat it doesTryWatch for
Black pointeverything below becomes pure black5-25 on flat photosCrushed shadow detail
White pointeverything above becomes pure white230-250 on flat photosBlown highlights
Midtones above 1brightens without moving the ends1.1-1.6Washed out look
Midtones below 1darkens without moving the ends0.6-0.9Blocked shadows
Auto contraststretches tones, keeps the colourclip 0.3-1Nothing much
Auto per channelalso removes a colour castclip 0.3-1Can shift colours
Allowed clipping 0uses the true darkest and brightestalmost neverOne pixel sets everything

256

entry lookup table

3

modes

0

files uploaded

Live

curve display

ZIP

batch download

Free

no account needed

FlipMyFormat vs other levels tools

CapabilityFlipMyFormatTypical free tool
Files stay in your browser
Auto points from percentiles, not extremes
Adjustable clipping tolerance
Live display of the actual curve
Per-channel auto for colour casts
Batch ZIP download without paying
No watermark on the output

How to use levels without destroying the photo

Levels is the most useful correction tool there is and also the easiest one to overdo, because the two most satisfying moves are both destructive. Pulling the black point up makes a photo look instantly punchier, and every pixel below that point is now identical pure black, which means any detail that lived in the shadows has been permanently discarded. Pulling the white point down does the same at the other end. Both are legitimate when a photo genuinely has empty range at the ends, which is what a flat or hazy image looks like, and both are damaging when applied out of habit to a photo that was already using its full range. The safe way to work is to move each end point inward until it just touches where the picture's tones actually begin, and then stop. The midtone control is the one to be generous with instead, because it redistributes brightness without discarding anything: nothing becomes pure black or pure white that was not already, so a midtone adjustment is very nearly reversible while an end point adjustment is not. As for the auto modes, use auto contrast as a starting point rather than an answer. It will get most photos most of the way there in one click, and then a small midtone nudge afterwards usually finishes the job. Auto per channel is a different tool wearing the same coat: it stretches each colour independently, which fixes a colour cast at the same time, but on a photo that is legitimately dominated by one colour it will drain that colour just as grey world white balance does.

  1. 1

    Add your photos

    Drag them in, click to browse, or paste with Ctrl+V. Flat, hazy or underexposed photos benefit most.

  2. 2

    Try auto contrast first

    It stretches the tones your photo actually uses across the full range. Switch to per channel if there is also a colour cast.

  3. 3

    Fine tune the midtones and export

    The black and white points set the ends; midtones decide everything between. Save individually or take the batch as one ZIP.

Why auto levels sometimes does nothing

One pixel should not decide the correction

The obvious way to write auto levels is to find the darkest and brightest pixels in the photo and stretch that range to fill zero to 255. It fails constantly, and always for the same reason: almost every photograph contains at least one pixel that is already very close to black and one that is already very close to white, from sensor noise, a specular glint, a dust spot or a dead pixel. Those two pixels then tell the algorithm the range is already full, and auto levels does nothing at all on an image that visibly needs help. Using percentiles instead asks where the bulk of the picture starts and ends, ignoring a small fraction at each extreme. We tested both on a deliberately flat image whose tones ran from 90 to 170, with four outlier pixels added at 2 and 253: the minimum and maximum approach stretched it by a factor of 1.02, effectively doing nothing, while the percentile approach at 0.5 percent stretched it by 3.19 and restored the full range.

A lookup table, and why monotonic matters

Every setting here is turned into a single 256 entry table before any pixel is touched. That is partly speed, since the curve is evaluated 256 times rather than once per pixel, but the more useful consequence is a guarantee. The table is built from a clamped linear remap followed by a power function, both of which are non-decreasing, so the whole mapping is non-decreasing: if one pixel was darker than another before, it cannot come out brighter afterwards. That sounds obvious until you have seen a levels implementation that inverts a narrow band of tones because of a sign error in its gamma handling. We check the property directly across every combination of black point, white point and midtone setting the sliders allow, and no table anywhere in that space decreases at any step.

What people use it for

Flat, hazy photos

The classic case. Auto contrast finds the narrow range the picture actually uses and stretches it across the full scale.

Scanned prints and negatives

Old prints lose contrast and gain a cast. Per-channel auto fixes both at once.

Underexposed photos

A midtone lift brightens without clipping anything, which is safer than raising exposure globally.

Documents and whiteboards

Pulling the white point down makes paper properly white and text properly readable.

Product photography

Consistent manual settings across a set keep every product photo matching, which auto per image would not.

Preparing images for print

Print loses shadow detail, so a small midtone lift before printing often keeps more of it than the untouched file would.

Faded film looks

Pulling the white point down deliberately, or raising the output black, is the basis of a faded print aesthetic.

Fixing screenshots

Screenshots of washed out displays clean up in one auto pass.

Six tips worth knowing

Move each end point inward only until it touches where the picture's tones actually begin, then stop. Beyond that you are deleting detail.

Midtones are the safe control. They redistribute brightness without making anything pure black or pure white that was not already.

Use auto contrast as a starting point, not an answer. A small midtone nudge afterwards usually finishes the job.

Per-channel auto fixes a colour cast too, but it will drain the colour from a photo that is legitimately dominated by one hue.

Leave allowed clipping around 0.3 to 1 percent. Zero makes auto fragile, because a single noisy pixel then defines the whole range.

For a matching set, use manual settings on a batch. Auto adapts to each photo separately, so frames end up slightly different.

Troubleshooting

Auto did nothing to my photo

With clipping at zero, one very dark and one very bright pixel tell auto the range is already full. Raise the allowed clipping to around 0.5 percent.

My shadows went solid black

The black point is too high, and everything below it is now identical. Bring it down until you can see detail returning.

The photo looks washed out

The midtone slider is probably above 1 while the white point is also pulled down. Pick one; doing both flattens the picture.

Auto per channel changed my colours

That is what it does. It stretches each channel separately, which removes a cast but also drains a legitimately dominant colour. Use auto contrast instead.

Frequently asked questions

What does a levels adjustment do?

It decides where black starts, where white starts, and how brightness is distributed between them. Tones below the black point become pure black, tones above the white point become pure white, and the midtone control redistributes everything in between.

Why does auto levels do nothing on some photos?

Because it is using the darkest and brightest pixels. Almost every photo has one pixel near black and one near white from noise or a glint, which tells the algorithm the range is already full.

How does this tool avoid that?

Auto uses percentiles instead. On a flat test image running from 90 to 170 with four outlier pixels added, min and max stretched it by 1.02, doing nothing, while percentiles at 0.5 percent stretched it by 3.19.

What should the allowed clipping be?

Around 0.3 to 1 percent for most photos. Zero uses the true extremes and is fragile; above about 2 percent you start visibly sacrificing real shadow and highlight detail.

What is the difference between the two auto modes?

Auto contrast measures brightness and applies one stretch to all three channels, so colours are unchanged. Auto per channel stretches each channel separately, which fixes a colour cast at the same time.

Which adjustments are destructive?

Moving the black or white point inward is, because everything beyond becomes a single value and that detail is gone. The midtone control is not, since it redistributes brightness without flattening either end.

What does the midtone number mean?

It is a gamma value. Above 1 brightens the middle of the range while leaving pure black and pure white where they are; below 1 darkens it the same way.

What is the graph under the sliders?

The actual 256 entry lookup table being applied, redrawn as you drag, with a dashed identity line behind it. Where the curve sits above the dashed line, those tones are being brightened.

Can levels invert part of my image?

Not here. The table is built from two non-decreasing operations, so the whole mapping is non-decreasing. Checked across every setting the sliders allow, no table decreases at any step.

Should I use levels before or after other edits?

Early. Getting the tonal range right first means every later adjustment is working on a sensible starting point rather than fighting a flat image.

Why did my shadows go solid black?

The black point is above where your shadow detail lives, so all of it collapsed to a single value. Lower the black point until detail returns.

Can I use this on a batch?

Yes. Auto adapts to each image separately, which suits a mixed folder. Manual settings apply identically, which is what you want for a matching set.

Is this the same as brightness and contrast?

Related but more precise. Brightness and contrast apply one broad curve; levels lets you set both ends and the middle independently, which is why it can rescue photos that brightness and contrast cannot.

Are my photos uploaded to a server?

No. The histogram, the lookup table and the export all run in your browser using the canvas API. Nothing is sent anywhere.

Which format should I export?

Keep the original format for photographs. Stretching tones exaggerates existing JPEG artefacts, so re-export at quality 90 or above if the source was a JPEG.

Is transparency preserved?

Yes for PNG and WebP output. The alpha channel is untouched. JPG has no alpha, so transparent areas are filled with the background colour first.

Can the adjustment be undone?

Midtone changes are very nearly reversible. End point changes are not, because everything beyond them was collapsed to one value. Keep your original either way.

Does it add a watermark or need an account?

No to both. No sign-up, no email wall, no daily limit and no watermark on the output.