SpriteForge.tech
Blog Pricing Open the studio

How to spot AI pixel art: 3 tells, side by side

← All posts · , updated · 7 min read · interactive
TL;DR
  • Three tells you can count: colours nobody chose, speckle instead of clusters, and an edge with no outline. Before those, one you can see: diffusion pixel art over-renders, with too much detail and too much dithering.
  • They all come from one place: the model predicts pixels instead of deciding them. Hand-made pixel art looks hand-made because every pixel is a decision.
  • Check any sprite in thirty seconds with the checklist at the end. Every number on this page is counted live from the pixels, by your browser.

Players can spot AI art at a glance now, and pixel art is where it's easiest: every single pixel is on show. But "it looks off" is hard to act on. This post names what your eye is picking up, so you can check a sprite, an asset pack or a tool's output yourself – first the quick look, then three tells you can count, with the same prompts from two generators side by side and the numbers your browser counts live.

The quick look: is it over-rendered?

Here is a king slime from a diffusion pixel-art generator next to a SpriteForge slime, pixel for pixel. Both sit on the grid. Both have an outline. Neither is blurry. You can still tell which one is AI in about a second.

A king slime from a diffusion pixel-art generator, magnified 3 times: a spiked golden crown with gems, a blue body covered in checkerboard dither and speckle, a grey bar and a brown disc in the jelly
Diffusion51×63 px · 29 colours
A SpriteForge slime, magnified 3 times: green, flat shading with one highlight and a clean dark outline
SpriteForge20×16 px · 7 colours
How this was made: a king slime from a diffusion pixel-art generator and a slime from SpriteForge, both shown pixel for pixel at 3×, nothing resampled. Dithered: pixels in a 2×2 checkerboard of two colours; the toggle marks every one.

Too much detail. Every surface on the king is rendered: spikes, facets, freckles in the jelly, and shapes that belong to nothing – a grey bar and a brown disc floating in the body. A pixel artist does the opposite. Flat areas are what let a silhouette and a face read at game size, so detail goes where the eye should go and nowhere else.

Too much dithering. Turn on the highlight: 12% of the king's pixels sit in a two-colour checkerboard, against 2% of the slime's. Dither is a real pixel-art technique, used sparingly to suggest a texture or a soft transition. Diffusion output uses it everywhere, because a checkerboard is how a model trained on pixel art renders the smooth shading it predicted.

Predicted, not placed. A diffusion model doesn't draw. It starts from noise and predicts all the pixels at once, nudging them towards what pixel art usually looks like. What comes out has the texture of pixel art without the decisions: 29 shades where a handful would do, highlights that disagree about where the light is, and a surface that reads as texture rather than shape. The slime on the right is 7 colours, one light source and flat clusters, and it reads at 1× because every pixel was put there on purpose.

Three tells you can count

The gut check works on an obvious case. At 16 px the tells get subtler, so here are the same three prompts from SpriteForge and Retro Diffusion, side by side, with three things you can count.

Zoom
Background
SpriteForge, 16×16, palette-locked
…
colours
…
stray pixels
…
edge outlined
Retro Diffusion, same prompts
Retro Diffusion 16 by 16 brass key for the same prompt: thin and speckled, no outline Retro Diffusion 16 by 16 red heart for the same prompt: many near-identical reds, no outline Retro Diffusion 16 by 16 treasure chest for the same prompt: a brown rectangle with texture on it
…
colours
…
stray pixels
…
edge outlined
How these were made: three 16×16 prompts (“a brass key”, “a red heart pickup”, “a wooden treasure chest”) from one SpriteForge project with its palette locked; Retro Diffusion's outputs for the same prompts, unedited (its 8× export sampled back to 16 px, one pixel per block). Every number in this section is counted live from these pixels.

Flip the zoom and the background before reading on. The left set holds up on any floor and at any size; the right set leans on whatever is behind it.

Tell 1: colours nobody chose

Hand-made pixel art works from a small palette, and every colour in it has a job: outline, base, highlight, shadow. The three SpriteForge sprites use … colours between them, five to eight each. The three diffusion sprites use … for the same prompts.

Nobody picked those extra shades. They're what's left when a big, soft gradient gets squeezed into a handful of pixels: reds that are almost the same red, browns a few values apart. Your eye doesn't count them, but it notices the result – a sprite that looks sampled rather than drawn. They also make a consistent set impossible, because the next sprite brings its own new batch of shades.

Tell 2: speckle instead of clusters

Now look at how the pixels group. A pixel artist builds a sprite out of clusters: a run of outline, a plank of wood, a two-pixel shine. A pixel that touches nothing of its own colour, not even diagonally, is a stray, and artists clean strays up because they read as noise.

… of the SpriteForge pixels above are strays. In the diffusion sprites it's …. That speckle is what averaging produces: each output pixel is a blend of a different patch of the big image, so neighbours rarely land on exactly the same colour and almost nothing joins up into a clean shape.

Tell 3: an edge that melts

The third habit is decisiveness at the edge. Switch the background above to light or grass. Every SpriteForge sprite has a dark rim all the way round – … of its edge pixels – plus a lit side and a shadowed side, so it reads against anything you put it on. On the diffusion side … of the edge pixels are dark. The rest are mid-tones that borrow their contrast from whatever is behind them, so the sprite melts into a bright floor.

At bigger sizes the same indecision shows up as soft, anti-aliased halos around every shape: the glow a photo has and a pixel artist never leaves.

The same tells in a tile

Texture is where the gap is widest. Same prompt, “cobblestone road”, one 16 px tile from each tool, repeated three by three at 4×.

SpriteForge, one tile, 3×3
…
colours
…
stray pixels
Retro Diffusion, one tile, 3×3
…
colours
…
stray pixels
How these were made: the prompt “cobblestone road”, one 16×16 tile each. SpriteForge on its former Low quality tier with Wang autotile; Retro Diffusion's dedicated single-tile option, unedited. Strays are counted the way the tile repeats, wrapping at its edges.

SpriteForge drew stones: outlined, lit from one side, with mortar between them, in … colours. The diffusion tile is … colours of grey static, and … of its pixels are strays. There are no stones to see because at 16 px there was never room for a picture of stones – only for the average of one. It's also why that tile can't tile: why AI tilesets don't tile, or paint with ours.

Why AI pixel art has these tells

None of these tells is a style choice, and none of them can be prompted away. They're what happens when a generator never works in pixels. A general diffusion model paints a large, soft image, and a filter then shrinks it and snaps it to a palette; a pixel-trained one predicts the small image directly. Either way, nothing gets decided. Shrinking is averaging, prediction is a best guess at the texture, and neither can make the calls pixel art is made of: this pixel is the outline, this one is the shine, these four are one plank, and this area stays flat.

Pixel art looks hand-made because every pixel is a decision. An average can't decide, and neither can a prediction.

SpriteForge works the way the artist does instead of the way the filter does. Its AI places each pixel on the final grid, choosing from your project's palette, and can go back over its own work in refine passes. There's no big image, nothing gets shrunk, and no pixel is a guess at a texture. The cause traced tell by tell, mixels included, is in why AI pixel art looks bad.

Credit where it's due

The 30-second checklist, for any sprite or tool (ours included):

  1. Count the colours. Aseprite shows them in the palette panel; so does any palette extractor.
  2. Look for checkerboard dither covering whole areas, and detail everywhere instead of where the eye should go.
  3. Zoom to 800% and look for strays: pixels that touch nothing of their own colour.
  4. Drop the sprite on a bright background and look for the outline.
  5. Look at it at actual size, next to the rest of your game's art.

Thirty seconds per tool, and no marketing image can hide from it. If you'd like to run the test on your own prompt, new accounts get $1 of free credit – enough for several small sprites, in your palette.

Forge a sprite – start with $1 free

No card, no subscription. 8-64 px, sharpest at 16 and 32.

All posts · AI tileset generator · Home