PetGen

Pixel Character Design 101: Making Pets Resemble Their Owners

2026-09-14

Pixel character design is a design problem, not a filter. Learn concrete techniques to turn a photo into a 32px pet sprite that actually resembles its owner.

A photo is not a sprite

Upload a photo and shrink it to 32x32 and you get a blur, not a pet. Photos carry millions of colours and smooth gradients that simply vanish at low resolution. The eye sees a brown smear where a face should be. That is why the Codex Pet tool at / treats your upload as a reference, never as a source.

A sprite is built, not captured. Every pixel is a deliberate decision. Going from a 1000px photo to a 32px sprite throws away roughly 99 percent of the information, and the viewer fills in the rest from memory. If those memory cues are missing, the likeness collapses. Start from the shape you want, not the pixels you happen to have. The full pipeline is in /blog/how-to-create-a-codex-pet.

Silhouette first, details never

Before any colour goes down, draw the outline. A good pet sprite is recognizable at 16px as a solid black blob. If the silhouette is ambiguous, no amount of internal detail will rescue it. Cats, dogs, and people each carry a posture the eye locks onto within a fraction of a second.

Test this yourself: fill your sprite solid black and shrink it to icon size. Can you name the species? Can you tell it is your pet? If not, the silhouette is doing the work of three features you have not drawn yet. Build the body language first, then earn the right to add detail. Our /blog/rabbit-codex-pet post from Day 16 applies exactly this test to a real example.

Value contrast beats hue contrast

At 32px the eye reads light and dark long before it reads red versus blue. Two shapes separated by value, a light face against a dark background, a bright belly against a mid coat, stay readable. Hue alone, when the brightness is similar, merges into one flat region that the brain cannot parse.

This is the pixel character design tip most beginners miss. Spend your contrast budget on value steps, not on a rainbow. A three value ramp, shadow, base, highlight, per material reads cleaner than twelve similar hues. The /blog/what-is-pet-spritesheet guide shows how those ramps become the frames of an animation.

Eight to twelve colours, no more

Palette discipline is what separates a sprite from a screenshot. Cap the whole character at 8 to 12 colours. That forces real choices: which tone is the coat, which is the shadow, which is the eye. Constraints make the face legible because every colour now carries meaning instead of noise.

Dithering can fake a third tone between two colours with a checkerboard pattern, but it costs crispness. At 32px, dithering usually turns into visual noise. Use it sparingly, only across large calm areas like a sweater, and never on the eyes or the outline. A clean 10 colour sprite beats a dithered 30 colour one every single time.

Proportion and one anchor feature

People judge that is my dog from proportion before from colour. A chihuahua and a retriever at 32px differ mostly in head to body ratio and ear placement. Get the ratio wrong and the breed disappears. Get it right and even a monochrome sprite reads as the correct animal. The same holds for people: a round head on a small body, a long face on a tall one.

Then pick one anchor. Five approximate features make a generic face; one exaggerated anchor makes a person. The anchor is what friends notice first, a curly beard, round glasses, a specific hairline, a pink nose on a pet. Push that single feature past realism and the brain supplies the rest. One strong signal beats five weak ones, and it is faster to draw.

Traits of a readable 32px sprite

  • One clear silhouette that still reads at icon size
  • A three value ramp per material, built on value not hue
  • 8 to 12 colours total, with the outline in the darkest tone
  • A single exaggerated anchor feature carrying the identity
  • Verified on both a dark and a light background

Check your sprite on two backgrounds

  • On pure black, the outline must still separate from the body
  • On pure white, the highlight must not vanish
  • If either fails, shift the outline one value step darker or lighter
  • A sprite that works on only one background is not finished

Frequently asked questions

Why does my downscaled photo not look like my pet?

Direct downscaling keeps gradients and discards the edges that carry identity. The result is a smeared tone map, not a face. Build the sprite from the silhouette and proportions instead, using the photo only as a colour and shape reference.

How many colours should a 32px pet sprite use?

Aim for 8 to 12 colours across the whole character. This limit forces you to assign meaning to each tone and keeps the face readable. More than that at 32px usually reads as noise rather than detail.

What single feature matters most for likeness?

One anchor feature pushed slightly past realism, a beard, glasses, a nose patch. Five approximate traits produce a generic look; one strong signal lets the viewer's brain complete the rest of the pet.

How do I know a sprite is actually finished?

Place it on pure black and pure white. The outline should separate from the body on black, and the highlight should survive on white. If it only works on one background, adjust the outline by one value step and retest. When it passes both, publish it with the rest of the series on /blog.

Related posts

Share this article:

Try it yourself

Ready to turn your own photo into a pixel-art pet? Upload it on PetGen and get your spritesheet + pet.json in minutes.

Generate your pet now →