Pixel Art Cleanup

Find stray pixels, tiny clusters, single-pixel holes and anti-alias leftovers, then clear them.

Cleaning pixel art means removing what does not belong in a hard-edged, limited-palette sprite: anti-aliased in-between colours along edges, stray single pixels, tiny clusters, one-pixel holes and gaps in the outline. Nerulio’s Pixel Lab lists every candidate first — highlighted and counted — and changes only what you tick. Its anti-alias remover snaps each in-between pixel to one of the two palette colours it sits between, so the silhouette does not move. Input: 1× PNG frames; output: cleaned PNG frames and one shared palette.

Drop image files hereProcess many files at once
No upload · processed on this device

What counts as dirt, and how each kind is fixed

Anti-aliasing helps an illustration and hurts a sprite: an edge pixel mixed from the outline and the fill is a new colour that is neither, and the test frames — meant for a 16-colour palette — carried 271 colours. Snapping such a pixel to the nearest palette colour is not enough: a colour half-way between dark outline and orange fill can be nearest to some unrelated brown. The Lab snaps it to the nearer end of the neighbour pair whose Oklab segment it lies on, and uses the globally nearest palette colour only when there is no such pair.

Strays, clusters and holes come from one scan of connected regions of the same palette index (4-connected). A stray is a region of one pixel, a tiny cluster is smaller than the size you set, a hole is a transparent region that never reaches the image edge and is ringed by opaque pixels. Each is filled with the colour around it; because one scan produces all three lists, the counts agree with each other.

Outline checks look only at straight edges, where exactly one of the four neighbours is outside the silhouette; corners are skipped because thickness there is ambiguous. The automatic fix closes gaps and never thins a doubled outline, since removing a pixel would move the silhouette.

Anti-alias pixel
An edge pixel whose colour lies between two palette colours that meet there.
Stray (orphan) pixel
A one-pixel region: none of its four neighbours has its colour.
Oklab
A perceptual colour space; distances in it follow what the eye sees more closely than RGB.

Example: eight anti-aliased 48 × 48 frames

A bobbing ball drawn with smoothing, then cleaned with one palette for all frames:

input            8 frames, 271 distinct colours (edges anti-aliased)
palette          16 colours, extracted from all 8 frames together

anti-alias remover, threshold 0.08 (Oklab distance)
  colours        271 → 16, every exported colour inside the palette
  alpha pixels   0 changed — the silhouette did not move

edge pixel half-way between outline and fill → the nearer of those two, never a third colour

The decisions are read from the original pixels, not from pixels already rewritten, so the result does not depend on the order in which the image is scanned.

Check the result

  • Read the counts before ticking anything: stray, cluster, hole and anti-alias candidates are listed separately and highlighted on the image.
  • After export, check the colours: every colour of the frames should be in the palette.
  • Compare the silhouette before and after (Check stage): the shape should be identical.

Troubleshooting

SymptomLikely causeHow to checkFix
A dithered area is reported as hundreds of straysDithering is made of single pixels on purposeIs a dither mode on in Convert?Set dithering to None before cleaning, or leave strays unticked
An eye or a one-pixel highlight disappearedIt was a stray candidate and strays were tickedLook at the highlighted candidates before applyingUntick strays, or undo (Ctrl+Z) and fix those pixels by hand
Edge pixels went to the wrong sideThe threshold is wide enough to catch colours that belong to neither pairLower the anti-alias threshold (default 0.08)Lower it, or touch up in the pixel editor
The outline is still doubled after the fixThe fix only closes gaps; thinning would move the silhouetteThe outline report counts doubled runsThin it by hand where you want it
An upscaled or generated picture is far too noisy to cleanThe image is not at 1× yetThe checker reports an integer scale or a resizeBring it to 1× first with the downscaler, then clean

Other ways to do it

OptionWhen it is the better choice
The Cleanup panel of the Studio’s Pixel workspace (for upscaled or generated art)The picture is not at 1×: it re-grids and removes fringes in one pass and makes a new sprite you can keep editing.
Any pixel editor by handA few frames where you want to decide every pixel; there are no automatic candidates to review.
Palette extractorYou only need one shared palette for many frames, without changing any shapes.

What this page does not cover

  • Outline gaps are the only outline problem fixed automatically; doubled pixels are reported, not removed.
  • Counts above 4 megapixels of total frame area cover the visible frame only.

Versions and sources

Numbers from the Pixel Lab browser tests in Chromium (Firefox and WebKit not run), measured by re-opening the exported files outside the page.

Pixel Art Cleanup

Find stray pixels, tiny clusters, single-pixel holes and anti-alias leftovers, then clear them.

How it works

  1. Add images
  2. Adjust settings and review the result
  3. Download a new file

Supported formats

PNG / JPG / WebP / AVIF / HEIC → PNG + JSON (ZIP) — Input decoding depends on browser support and optional engines.

What this tool does

Find and clear stray pixels, tiny clusters, single-pixel holes and anti-alias leftovers.

Implementation and verified quality

advanced · connected components on palette indices / Oklab segment anti-alias snap / outline run measurement. Quality qualification is in progress. Pro/Flagship quality has not been established.

Before you export

Candidates are shown first and fixes stay conservative: a doubled outline is never thinned automatically.

Frequently asked questions

What are this tool’s limitations?

Candidates are shown first and fixes stay conservative: a doubled outline is never thinned automatically.

Are my files uploaded?

This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.

Will my work be saved automatically?

No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.