Appearance
How I draw 32x32 character sprites in Aseprite
32×32 is a constraint with strong opinions. You have about 1,024 pixels to suggest a face, a posture, a job, and a mood. That sounds tight until you remember the original Final Fantasy field sprites were 16×24, at which point 32×32 starts to feel like a cathedral.
This is the routine I have settled into after about three years of drawing characters at this scale. Most of it happens inside Aseprite, none of it requires anything more exotic than a five-button mouse, and the whole sequence from blank canvas to finished four-frame walk cycle is usually under ninety minutes.
Step one: silhouette before features
The single most useful habit I picked up from Pedro Medeiros' Pixel Art Class was to draw the silhouette first — a solid black blob, no internal detail — and judge whether the character is readable from across the room. If your silhouette is interesting, your sprite is interesting. If your silhouette is a soggy potato, all the shading in the world will not save it.
I work in a 64×64 document for the first pass, even when the final target is 32×32. The extra room lets me explore proportions without committing to a 1-pixel decision early. Once the silhouette feels right, I scale it down with the Nearest algorithm (never bilinear — bilinear is the enemy here) and clean up the edges by hand.
The cleanup phase is where I actually start thinking like a pixel artist. Every edge becomes a decision: does this corner step horizontally or vertically? Is this curve a 1-2-1-2 pattern, or a 2-1-2-1? Aseprite's Shading Mode brush is invaluable here — it walks colours up or down a palette ramp on each click instead of replacing them outright, which keeps your decisions consistent across the sprite.
My four-layer setup
For every character I draw, I split the work across four layers. They are always in the same order, top to bottom:
┌─────────────────┐
│ HIGHLIGHTS │ ← 1-pixel sparkles, eye glints
│ DETAILS │ ← clothes, hair tufts, weapons
│ BASE COLOUR │ ← flat fill of each body part
│ SILHOUETTE │ ← always-black, never deleted
└─────────────────┘Keeping the silhouette as its own permanent layer means I can hide everything above it at any time to check whether the shape still reads. I assign it to the "Z" hotkey via Aseprite's shortcut editor so I can flick it on and off while drawing.
The base-colour layer uses Aseprite's colour-shifting tools to recolour the whole sprite in one click during palette experiments. The details and highlights layers stay locked to the same palette; if a highlight wants a colour the palette does not have, the answer is almost always "add it to the palette" rather than "shade locally".
Animating in four frames
A walk cycle does not need eight frames at 32×32. Four is the sweet spot — one frame of contact, one of passing, one of contact again with the other leg, one of passing back. Hold each frame for two ticks at 12 fps and the whole cycle takes two-thirds of a second.
The trick that makes a four-frame walk feel alive is to bob the entire torso up by one pixel on the passing frames. One pixel. That is the whole secret. Animators call this "weight shift" and Aseprite's Onion Skin mode makes it trivial: turn it on, advance one frame, and the previous frame ghosts behind your work so you can see exactly how much the silhouette has moved.
For idle animations I do something even simpler: a two-frame breath cycle that bobs the head up one pixel every twenty ticks. Players will swear the character feels alive but you have done almost nothing.
The pixel-decisions that actually matter
I keep a list of common 32×32 problems and the answer I have settled on for each:
- Eyes. One pixel, ever. Two pixels makes the character look surprised; three makes them look possessed. If you want emotion, change the eyebrow pixel (two pixels above and one to the side) rather than the eye itself.
- Hair. Use the secondary highlight colour, not white. White hair highlights at this scale look like dandruff. A pale yellow or cool grey gives you the same volume without the visual noise.
- Mouths. A single dark pixel is usually plenty. Two pixels reads as "shouting". An open mouth needs three pixels and a different tone underneath, which is almost never worth the budget.
- Hands. At 32×32 a hand is a 3×3 cluster at most. Resist the urge to render fingers. The brain fills them in.
- Shoes. One pixel of shadow under the foot does more for grounding than any amount of detail on the shoe itself.
The tooling I actually use
I have tried Pyxel Edit, GIMP with the pixel-art plugins, and LibreSprite (the FOSS Aseprite fork — I wrote about it recently). For now I stay on paid Aseprite because of one feature: the Animation Tags system, which lets me define named loops (walk-down, walk-up, idle, attack) inside a single sprite file and export each one as a separate sprite sheet. That alone is worth the licence.
For palettes I almost always start from Lospec — specifically the Pear36 and Endesga 32 palettes — and then prune down to whichever subset the character needs. A 32×32 sprite rarely needs more than nine colours, and most of mine ship with seven.
What I wish someone had told me earlier
For about a year I drew at 32×32 directly, dot by dot, in the final canvas. Switching to the 64×64-then-scale-down workflow improved my characters more than any single technique I learned in that whole year. Bigger thinking before smaller execution. It's true at every scale; pixel art is just where the constraint shouts loud enough that you can finally hear it.