FlipMyFormat

Deband: Fix the Stripes in Skies and Gradients

Smoothing that crosses the invisible steps of a gradient without crossing the real edges of the picture, because a band step is small by definition and an edge is not. Plus a trace of dither to hide whatever survives.

Edge-aware smoothingThreshold protects detailLive before and afterBatch + ZIP downloadNever uploaded

Drop images here

or click to browse · or paste with Ctrl+V

JPG · PNG · WebP · GIF · BMP · AVIF

10 px

How far to look for the true shape of the gradient. Wide bands need a wide reach.

6

How large a difference still counts as banding rather than as real detail. This is the control that protects your edges.

35%

A trace of noise below the visible threshold, which hides whatever steps survive. Fixed seed, so a batch stays consistent.

Raise the threshold until the bands go, then stop. Too high and it starts treating genuine detail as banding and smoothing it away.

Presets

92

Your photos are never uploaded. The smoothing and the export both run inside this browser tab.

People also use

Everything this tool does

Crosses bands, not edges

Sixteen neighbours are sampled and any differing by more than the threshold is discarded. On a test image with both, the largest step down a banded gradient fell from 3 levels to 1 while a 180 level edge came through at exactly 180.

The threshold is yours

A band step is one to three levels and a real edge is tens, so the separation is easy. Exposing the threshold lets you decide exactly where the line sits for your image.

Dither for what survives

Where a gradient is gentle enough that even smoothing lands on one integer for a long run, a trace of noise breaks it up, which is the same trick a well-made gradient uses.

Deterministic noise

The dither uses a fixed seed, so the same photo and settings always give the same result and a batch stays consistent.

Adjustable reach

Wide gentle bands need a wide reach to find the gradient's true shape. If bands persist at a high threshold, the reach is usually the problem.

Drag to compare

Before and after share one frame with a slider, which is essential for judging an effect this subtle.

Six purpose-built presets

Standard, gentle, wide bands, heavy banding, no dither and dither heavy.

Batch with one ZIP

Clean up a whole set with identical settings and take everything as a single archive built in your browser.

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

Two controls do the work and one hides the remainder. Reach decides how far to look for the gradient's true shape, and the threshold decides what counts as a band rather than as detail.

SettingWhat it doesTryWatch for
Reach 4-8narrow bandsthreshold 4-8Bands remain
Reach 12-24wide, gentle bandsthreshold 4-8Slower to render
Threshold 2-4very cautiousany reachBands remain
Threshold 6-10the usual working rangereach 8-16Nothing much
Threshold 16-24aggressivereach 8-12Real detail smoothed
Dither 20-40hides residual stepsalwaysNothing much
Dither 70-100visible grainheavy bandingLooks noisy

Edge

aware smoothing

16

samples per pixel

0

files uploaded

Fixed

dither seed

ZIP

batch download

Free

no account needed

FlipMyFormat vs other debanding tools

CapabilityFlipMyFormatTypical free tool
Files stay in your browser
Edge-aware, so detail is not smoothed away
Adjustable step threshold
Dithering to hide residual steps
Deterministic, so a batch matches
Batch ZIP download without paying
No watermark on the output

How to remove banding without softening the picture

Banding is the visible stripes you see in a clear sky, a studio backdrop or any long smooth gradient, and it exists because an eight bit image has only 256 levels per channel. Across a large area, the step from one level to the next is a visible edge even though the difference is a single unit, and your eye is unusually good at spotting exactly this kind of small step spread over a wide region. That tells you what the fix has to do: average across those steps so they blend, without averaging across the genuine edges in the picture, which would just be a blur. The threshold control is what separates the two, and it works because of a useful fact about the problem. A banding step is small by definition, usually one to three levels, while any real edge in a photograph is much larger. So sampling a ring of neighbours and keeping only the ones within a few levels of the centre gathers exactly the pixels on the same side of the gradient and rejects everything on the far side of an edge. Practically, raise the threshold until the bands disappear and then stop; carry on and you will start averaging real detail, which is the failure mode to watch for. Reach matters too: wide, gentle bands need a wide reach to find the gradient's true shape, and if bands persist with a high threshold it is usually the reach that is too small. Finally, add a little dither. A trace of noise below the visible threshold hides any steps that survive, which is the same trick a well-made gradient uses in the first place.

  1. 1

    Add a photo with visible banding

    Drag it in, click to browse, or paste with Ctrl+V. Skies, studio backdrops and anything with a long smooth gradient are the usual cases.

  2. 2

    Raise the threshold until the bands go

    Then stop. Too high and it starts treating genuine detail as banding and smoothing it away.

  3. 3

    Add a little dither and export

    A trace of noise hides whatever steps survive. Export PNG, since saving back to JPEG can reintroduce the problem.

Why eight bits is not enough for a sky

A single level, spread across a thousand pixels

An eight bit channel has 256 values, which is plenty for most of a photograph and not nearly enough for a large smooth gradient. Consider a sky that runs from one blue to a slightly different blue across two thousand pixels: if the total change is twenty levels, each level covers a hundred pixels, so the image contains a hundred pixel wide stripe of one exact value, then another. Individually the step is one unit and invisible; spread over that area it becomes a visible contour, because human vision is far more sensitive to a small difference across a boundary than to the same difference between two isolated patches. That is why banding appears in skies rather than in foliage, and why the fix is about restoring intermediate values rather than about removing noise.

Smoothing that stops at edges

The averaging has to cross band boundaries and not real ones, and the threshold is what makes that possible. Sixteen neighbours are sampled in two rings around each pixel, and any whose value differs from the centre by more than the threshold is discarded before averaging. Because a band step is one to three levels and a real edge is typically tens, the two are easy to separate. We measured it on a test image containing both a banded gradient and a hard edge. Down the gradient the largest step between neighbouring rows fell from 3 levels to 1, which is the difference between a visible contour and nothing at all, while the hard edge, 180 levels tall, came through at exactly 180. The threshold is genuinely the control that decides this: on a subtle 15 level edge, a threshold of 6 left all 15 levels intact while a threshold of 24, which is above the edge height, began smoothing it away. The remaining piece is the dither. Where a gradient is so gentle that even the smoothed result still lands on the same integer for a long run, a trace of noise breaks the run up, which works because your eye integrates the noise back into the intermediate value it represents.

What people use it for

Skies and sunsets

The classic case. A clear sky is a long gentle gradient, which is exactly where eight bits runs out of levels.

Studio backdrops

Seamless paper and gradient backdrops band badly, especially after any contrast adjustment.

After a strong curve or levels move

Steep adjustments stretch a few input values across many output values, which creates banding that was not visible before.

Screenshots and UI captures

Interface gradients and drop shadows band readily, particularly after being resized.

Video stills

Compressed video quantises smooth areas heavily, so extracted frames often show pronounced banding.

Preparing images for print

Print exaggerates banding in large flat areas, so cleaning it up beforehand is worth the step.

Generated and rendered images

3D renders and gradients made in design tools band for exactly the same eight bit reason.

Underwater and fog photos

Large areas of nearly uniform colour are the ideal conditions for visible contours.

Six tips worth knowing

Raise the threshold until the bands disappear, then stop. Past that point it starts treating real detail as banding.

If bands persist even at a high threshold, the reach is too small. Wide gentle gradients need a wide reach.

Always add a little dither. A trace of noise hides steps that smoothing alone cannot remove.

Deband after your tonal work, not before. A steep curve creates banding, so fixing it first achieves nothing.

Export PNG. Saving back to JPEG can reintroduce banding, because the compression quantises smooth areas.

Check at one hundred percent. Banding often looks worse in a zoomed-out preview than it is in the actual file.

Troubleshooting

The bands are still there

Either the threshold is below the step size or the reach is too small to find the gradient's shape. Raise the reach first, then the threshold.

The photo looks soft now

The threshold is too high, so real detail is being averaged along with the bands. Lower it until detail returns.

Banding came back after saving

You saved as JPEG, which quantises smooth areas and can recreate exactly the problem you just fixed. Export PNG.

It looks grainy

The dither is too high. Lower it; the idea is noise below the visible threshold, not visible grain.

Frequently asked questions

What causes colour banding?

An eight bit channel has only 256 levels. Across a large smooth gradient each level covers a wide strip of pixels, so the one unit step between them becomes a visible contour even though the difference is tiny.

Why does it show in skies and not in foliage?

Because human vision is far more sensitive to a small difference across a boundary than between isolated patches. A textured area hides the steps; a smooth one displays them.

How does the fix avoid blurring the photo?

Neighbours whose value differs from the centre by more than the threshold are discarded before averaging. A band step is one to three levels and a real edge is tens, so the two separate cleanly.

Can you show that it protects edges?

On a test image containing both, the largest step down the banded gradient fell from 3 levels to 1 while the hard edge, 180 levels tall, came through at exactly 180. The threshold is what decides it: on a subtle 15 level edge, a threshold of 6 kept all 15 while a threshold of 24 started smoothing it away.

What threshold should I use?

Raise it until the bands disappear and then stop, usually somewhere between six and ten. Past that it starts averaging genuine detail along with the bands.

The bands are still visible at a high threshold

Then the reach is too small to find the gradient's true shape. Wide gentle bands need a wide reach; raise that first.

Why add dither at all?

Where a gradient is so gentle that even the smoothed result lands on the same integer for a long run, only noise can break it up. Your eye integrates that noise back into the intermediate value it represents.

Does the dither change between runs?

No. It uses a fixed seed, so the same photo and settings always give the same result, which keeps a batch consistent.

Should I deband before or after other edits?

After. A steep curve or levels adjustment creates banding by stretching a few input values across many output ones, so debanding first achieves nothing.

Banding came back after I saved

You saved as JPEG, which quantises smooth areas and can recreate exactly the problem you just fixed. Export PNG for a debanded gradient.

Is this the same as noise reduction?

No, and in a sense it is the opposite. Noise reduction removes unwanted variation; debanding restores variation that the eight bit format could not represent, sometimes by adding a trace of noise.

Will it work on a video still?

Yes, and it is a good use. Compressed video quantises smooth areas heavily, so extracted frames often band worse than photographs.

Why does my photo look soft afterwards?

The threshold is too high, so real detail is being treated as banding. Lower it until the detail returns.

Are my photos uploaded to a server?

No. The smoothing and the export both run in your browser using the canvas API. Nothing is sent anywhere.

Which format should I export?

PNG. JPEG compression quantises smooth areas, which is the same mechanism that causes banding in the first place.

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 I process a batch?

Yes. Add as many photos as you like and the same reach, threshold and dither are applied to each.

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.