SpriteForge.tech
Blog Pricing Open the studio

AI pixel art that doesn't look AI-made

← All posts · · 7 min read · interactive
TL;DR
  • The AI look has two kinds of tell. Diffusion pixel art over-renders: too much detail, too much dithering. Shrunk-down images add colours nobody chose, stray pixels and edges with no outline.
  • Both 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.
  • SpriteForge works like the artist, not the filter: every pixel placed on the grid, from your palette. Every number below is counted live from the pixels.

Players can spot AI art at a glance now, and pixel art is where it's easiest to spot: every single pixel is on show. This post takes the AI look apart – first the gut check, then the same prompts from two generators, with the numbers your browser counts live.

The gut check

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.

Now make it countable

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.

1. Colours someone 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.

2. Clusters, not speckle

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.

3. An outline that holds

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.

Same story 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 one looks hand-made and the other can't

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

Check any tool yourself (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 $0.25 of free credit – enough for a couple of small sprites, in your palette.

Forge a sprite – start with $0.25 free

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

All posts · AI tileset generator · Home