Free posterize tool
Posterize an image online, in levels you can count
Flattens each color channel to a fixed number of levels between 2 and 16, which is what produces the hard-edged poster look rather than a scatter of mixed pixels. The exact byte value of every rung is printed, along with the share of your picture that landed on each one, so the bands are something you can locate instead of something you notice. Two ladders are offered — even steps ending at 255 and the bucket floor a bit-depth reduction gives. Free, no signup, and the flattening happens on your own processor.
- 100% free
- No signup
- 2 to 16 levels
- Every rung value shown
- Per-channel histogram
Press Ctrl+V anywhere on the page to drop in a photo copied from anywhere else on your machine — no need to click the field first.
Applied to red, green and blue separately, so the reachable set is 4 cubed = 64 colors whatever picture you drop in. Steps of 85 in a 0–255 channel.
This changes nothing about the operation. Posterizing reads one pixel at a time and never looks at a neighbor, so the ladder is identical at every width and the width only decides how finely the picture is sampled before it meets that ladder.
The ladder every channel is snapped to
4 levels · 64 reachable colors
Decided before your picture is looked at, which is the property that separates this from every palette on the rest of the site. Two different photographs at this setting draw from exactly the same 64.
| Level | Channel byte | As a neutral | Red | Green | Blue |
|---|---|---|---|---|---|
| 0 | 0 | #000000 | — | — | — |
| 1 | 85 | #555555 | — | — | — |
| 2 | 170 | #aaaaaa | — | — | — |
| 3 | 255 | #ffffff | — | — | — |
Drop a picture in and the last three columns fill with the share of cells whose red, green and blue landed on each rung. The three percentage columns are where the banding comes from: a rung holding a large share of one channel is a wide region of the picture that has been flattened to one value, and its edge is the line you can see.
How to posterize a picture and find where the bands came from
Three readings: the lattice, the ladder, and which rung is doing the damage.
Set the levels, and read what that makes reachable
The slider runs from 2 to 16 and applies to red, green and blue separately, so the set of colors your picture can end up in is that number cubed: 8 at 2 levels, 64 at 4, 216 at 6, 512 at 8, 4,096 at 16. Four is the classic poster setting and where most people start. The figure beside the slider is not an estimate — it is the whole lattice, decided before the file is even opened.
Choose which ladder the levels sit on
Even steps run 0 to 255 inclusive, so white stays white and black stays black; this is what a posterize adjustment in an image editor does. Bucket floor gives each level the bottom of its bucket instead, which puts the top rung at 192 rather than 255 when you have four levels, and is exactly what you get by masking off the low bits of a byte. Switching between the two on the same picture is the quickest demonstration of why a bit-depth reduction darkens an image and a posterize does not.
Read the three percentage columns to find your bands
The ladder table reports the share of cells whose red, green and blue each landed on every rung. A rung holding a large share of one channel is a wide area of the picture that has been collapsed onto a single value, and the boundary of that area is a band edge you can see. That is the measurement to work from: if one rung is holding 40% of the greens, adding a level will split it, and the stripe across the sky will move rather than disappear.
Technical specifications
| Levels per channel | 2 to 16, applied to red, green and blue independently. The reachable set is that count cubed: 8 colors at 2 levels, 64 at 4, 216 at 6, 512 at 8 and 4,096 at 16 |
|---|---|
| Distance between rungs | 255 divided by one less than the level count — 255 apart at 2 levels, 85 at 4, 51 at 6, 36.4 at 8 and 17 at 16. Below about 20 the steps stop being visible as bands on a normal display |
| The two ladders offered | Even steps run 0 to 255 inclusive and keep white at 255. Bucket floor gives each level the bottom of its bucket, so the top rung is 128 at 2 levels, 192 at 4 and 240 at 16 — which is what masking the low bits of a byte produces |
| What is read for each pixel | Its own three channel bytes and nothing else. No neighbor is consulted, no palette is searched and no color distance is computed, which is exactly why the output bands instead of speckling |
| The web-safe setting | 6 even levels puts the rungs at 0, 51, 102, 153, 204 and 255 — hex 00, 33, 66, 99, CC and FF — which is the 216-color web-safe palette exactly. Bucket floor at 6 does not reproduce it |
| Working width | 200 px upward, capped per file to the widest sampling whose exported PNG stays inside a 4-megapixel canvas. Width does not change the ladder — it only changes how finely the picture is sampled before meeting it |
| Reported after each run | Lattice points reached out of those available, the share of cells whose red, green and blue landed on each rung, and an exact cell count for every color in the result |
| Server involvement | None at any step. The flattening is arithmetic on a decoded bitmap held in this tab's memory |
Frequently asked questions
Why does the sky come out in stripes?
Because that is the operation, not a fault in it. A sky is a very slow change across a wide area, so it may cross from one level to the next only two or three times in a thousand pixels — and every pixel on one side of that crossing jumps to the same value while every pixel on the other side jumps to a different one. The result is a hard edge running through what was a smooth gradient. Anything with a fast transition, like a face against a busy background, crosses many levels within a few pixels and shows almost no banding at the same setting. If you want the tones cut without the stripes, that requires spreading the rounding error into neighboring pixels, which is a different operation entirely.
How many colors does posterizing actually leave me with?
Fewer than the lattice allows and usually far more than people expect. At four levels the lattice holds 64 combinations and a photograph typically reaches thirty to sixty of them, which is a genuinely small palette. At eight levels the lattice holds 512 and a photograph reaches several hundred, which is more than any clustering reduction would give you. This is the single most useful thing to know about the operation: it is a look, not a way to get a small palette. The count of lattice points your picture actually reached is printed above the result so the distinction is never theoretical.
Why does my picture come out darker in some tools when I posterize it?
Because those tools are doing a bit-depth reduction rather than a posterize, and this page offers both so you can see the difference. Reducing a byte to four levels by masking off its low six bits gives the values 0, 64, 128 and 192 — the bottom of each bucket — so the brightest thing in your picture becomes 192 out of 255 and everything shifts down with it. A posterize spaces the levels 0, 85, 170, 255, keeping both ends of the range. The bucket-floor option here reproduces the first behavior deliberately, and switching between them on one picture shows the whole effect in a single click.
Why do I get bands here and speckle from a dithering tool?
Because the two operations do opposite things with the rounding error. Posterizing discards it: each pixel is rounded on its own, nothing is remembered, and pixels that rounded the same way form solid regions with hard edges between them. Error diffusion keeps the error and pushes it into pixels that have not been decided yet, so neighbors are nudged across the threshold in a scattered pattern and the hard edge is traded for texture. Bands and speckle are the two ways of spending the same rounding error, and which one you want depends entirely on whether the flat area is the effect you were after.
What setting gives the old web-safe colors?
Six even levels per channel, exactly. The values fall on 0, 51, 102, 153, 204 and 255, which written in hex are 00, 33, 66, 99, CC and FF — the six-value ladder that produced the 216-color web-safe palette, and the page says so when you land on that setting. The palette itself has been irrelevant to browsers for twenty years, but the ladder still turns up in retro design work, in some print workflows and anywhere a color has to be nameable in a short hex code. Bucket floor at six levels does not reproduce it, because its top rung is 214 rather than 255.
Can I posterize a face or a number plate to hide it?
No, and this is the most important thing this page refuses to do. Posterizing removes tonal information and leaves spatial information completely intact: every edge, every outline, every letterform survives the flattening at full sharpness, because no pixel is ever mixed with the pixel beside it. A plate posterized to four levels is usually easier to read than the original, not harder, since the flattening raises the contrast between the characters and their background. Obscuring something means destroying the spatial detail, which is what blurring, pixelating and blacking out are for.
Why do two different photographs posterized at the same setting look like a set?
Because they are drawing from the same colors, which is the one thing posterizing gives you that deriving a palette cannot. The ladder is decided by the level count alone and never looks at your picture, so ten photographs at four levels all use colors from the same 64, and the tones fall in the same places relative to each other across all ten. That consistency is why the operation survives in poster and screen-print work, in editorial illustration and in any set of images that has to read as one series — and it is the reason to reach for it over a clustering reduction when the pictures are going to sit side by side.
About posterization, and the ladder a picture is snapped to
The name is literal. A printed poster was pulled from a small number of ink plates, so a photograph reproduced that way arrived as flat areas of solid color with visible boundaries where one plate stopped and the next began — and the operation that imitates it does something correspondingly plain. Each color channel is rounded to a fixed number of evenly spaced levels, on its own, with no reference to any other pixel. Four levels in a 0–255 channel puts the rungs at 0, 85, 170 and 255, and every byte in the picture takes whichever of those four it is closest to. That is the entire algorithm, and the hard edges follow directly from it: a gradient that changes by one unit every ten pixels will cross a threshold once, and at that one place the whole width of the picture jumps 85 units at a stroke.
What makes posterizing genuinely different from the other ways of cutting color is that the ladder is fixed before your file is opened. Four levels always means the same 64 colors, whether the picture is a beach or a boardroom, which is why a set of images posterized together reads as a series and why the operation survives in screen printing and editorial illustration. It also means the operation is a poor way to get a small palette, which surprises people: at eight levels the lattice holds 512 colors and a photograph will reach several hundred of them, far more than clustering the colors the picture actually contains would return at any setting. And the flat areas are not negotiable — if you want the tones cut without the stripes, the rounding error has to be pushed into the neighboring pixels instead of discarded, which is what error diffusion does and why its output is speckled where this one is banded.
One thing this page will not do, however it is asked: hide anything. Posterizing removes tonal information and leaves spatial information untouched — no pixel is ever averaged with the pixel beside it, so every edge, outline and letterform comes through at exactly the sharpness it went in at, and the raised contrast between a flattened subject and a flattened background frequently makes text easier to read rather than harder. A number plate posterized to four levels is still a number plate. If concealment is what you are after, the detail has to be destroyed rather than simplified, which means blurring the plate hard enough that it cannot be read back, covering a face or blacking the region out and flattening it into the exported file. Those pages say what a weak obscuring leaves recoverable; this one just says it is the wrong tool.
Where the flattening runs
Your picture is opened by JavaScript running in the tab you are reading this in. It is never uploaded, never sent to a server and never stored anywhere — there is no upload step to undo, because there is no upload. Close the tab and nothing of it remains.
Nothing about your file is retained between settings either. Moving the level slider re-flattens the same decoded bitmap already in memory, so no version of the picture at any earlier setting exists anywhere once you have moved on from it.