The fastest path from an image to pixel art grid frames an engine can read is two browser tools chained back to back. A sprite has to live inside a regular grid — fixed cell size, transparent background, frames laid out in row order — before Phaser or Three.js will play it as an animation. True Pixel at /pixel-art quantizes the source to a fixed palette at sprite resolution, and Slicer at /slicer cuts the result into individual frames on an explicit grid. No Aseprite license, no Photoshop, no command-line, no install. This guide walks the full pipeline against the live source code as of May 16, 2026 — every UI control, every palette preset, every export format verified — and finishes with the one-line Phaser 4 loader that consumes the output.
What "image to pixel art grid" actually means for a sprite sheet
An image to pixel art grid is not the same thing as a pixel art image. A pixel art image is a single rendered frame — a portrait, a tile, a key art piece — with a deliberately limited palette and a low resolution. A pixel art grid is a regular array of those frames laid out on a single canvas at a fixed cell size, where every cell is one frame of an animation or one tile in a tileset. Engines like Phaser 4, Three.js, Godot, and any custom WebGL renderer all read sprites as grids — the loader takes a frame width, a frame height, and a row/column count, then carves the image into addressable frames at runtime. The grid is the difference between a static portrait and a walk cycle. Get the grid wrong (drifting cell sizes, irregular margins, mixed transparency, frames in the wrong order) and the engine renders chopped-up sprites mid-stride. Get it right and the import is one line of code.
The constraints are non-negotiable. Every cell must share the same width and height in pixels. Every frame must sit on the same baseline pixel grid (no half-pixel drift between idle and walk). The background must be fully transparent (alpha 0, not "near white"). The cell order must match the engine's read order (left-to-right, top-to-bottom by default). And — the part most pure-prompt AI generators get wrong — the palette must be locked across every frame so the same character does not pick up extra greens or blues halfway through the cycle. The sprite-sheet format has not meaningfully changed since the 1980s arcade era; what changed is that the source images are now AI renders and the slicing is now browser-native.
Why the standard image to pixel art tool stops short
The standard pixel-art workflow online is "drop image, pick palette, click pixelate, download PNG." That gives you a single quantized image. It does not give you a grid. If the source was already laid out as a multi-frame sheet (eight frames of a walk cycle, for example, generated by an AI sprite tool), the pixelate step will quantize the entire sheet — but every cell will go through palette assignment independently. With a custom-fit palette extracted from the source, the colours can drift between cells: frame 3 picks up a slightly more orange skin tone than frame 4 because the dominant pixels in that cell happened to fall on a different cluster centroid. The result reads as a flickering character on engine playback. The same problem affects naive downscale-then-slice pipelines that downscale each cell separately after slicing.
The fix is to lock the palette once, run quantization at the source resolution before slicing, and only then carve the grid. That ordering — quantize first, slice second, with a shared palette across the whole sheet — is what produces a clean image to pixel art grid that engines render without flicker. It is also why chaining True Pixel into Slicer beats running any single-tool converter in isolation: True Pixel keeps the palette consistent across the whole canvas, Slicer cuts the canvas without any further resampling, and the output is a folder of frames that all share the same palette by construction.
The two-click pipeline — image to pixel art grid in under a minute
Here is the entire workflow, verified against the source on May 16, 2026.
Click one — quantize in True Pixel. Open /pixel-art, drop your source onto the canvas. The source can be anything: a render from AI Image Gen, a multi-frame sheet from Quick Sprites, a hand-drawn sheet from Canvas, a screenshot of an existing game, even a photograph. Pick a palette from the eight presets: PICO-8 (16 colors), SWEETIE-16, Endesga 32, Game Boy (4), CGA (16), NES (54), Grayscale (8), or 1-Bit. The exact RGB values for each preset are defined in src/app/pixel-art/page.tsx — PICO-8's 16 colors match the fantasy console's canonical palette exactly. Set the target resolution to whatever your engine grid will use (32 by 32 for retro, 64 by 64 for indie standard). Pick a dither mode if the source has gradients — Floyd-Steinberg for soft falloffs, ordered for hard tile-style art, none for clean cell-shaded renders. The quantizer runs k-means++ clustering on a perceptually-weighted RGB sample of the source, then snaps every pixel to the nearest quantized colour. Click Export and you have a packed PNG at the target resolution with the palette locked.
Click two — slice in Slicer. Open /slicer, drop the quantized PNG, and switch the selection mode from Square to Grid using the four-mode toggle bar (Square, Free, Polygon, Grid). The Grid sub-panel that appears has two place-line buttons: Horizontal and Vertical. Click to place a horizontal line at the row boundary, click again to add the next one. Switch to Vertical, place column boundaries. Each line snaps to the pixel grid using the Grid Snap value (preset values 1, 5, 10, 20, 50, plus a custom field) so frames stay on whole-pixel boundaries. The canvas shows a live preview of every cell the grid creates. Hit Save and Slicer exports each cell as a separate PNG plus a manifest mapping cell indices to coordinates. That is the entire image to pixel art grid pipeline — two browser tabs, two clicks each, no install.
Picking the grid: resolution, frame count, layout shape
The grid math comes down to three decisions. Cell resolution sets how detailed each frame is — 16 by 16 for NES-era mini sprites where readability comes from silhouette alone, 32 by 32 for Game Boy and SNES character size where you can suggest a face with a few pixels, 48 by 48 and 64 by 64 for modern indie pixel art where faces and armor details read clearly, and 128 by 128 for hero portraits and key art. The rule is to pick the size your engine will actually render the sprite at — there is no point quantizing to 32 by 32 then upscaling 4× at runtime because the eye reads the upscale artefacts more than the palette work. True Pixel's Output Scale slider does the upscale at export time using nearest-neighbour, which is the only correct algorithm for pixel art (bicubic or bilinear smoothing destroys the look).
Frame count drives the animation budget. A 4-frame walk cycle is the absolute minimum — two contact poses (when a foot hits the ground) and two passing poses (when the legs cross). 6 frames is the comfort zone for most indie titles. 8 frames buys smoother motion with a high arc in the step, which reads as a more athletic character. 12 frames is overkill for anything that is not a featured hero animation. Most idle loops want 4 frames, walks want 6 to 8, runs want 6, jumps want 4 to 6, attacks want 4 to 8 depending on weapon weight. Layout shape is the third decision: a 1-by-N strip (all frames in a single row) is easiest for Slicer's Grid mode because you only place vertical lines; an N-by-M packed sheet (frames wrapped onto multiple rows) packs denser for texture-atlas budgets but requires both horizontal and vertical lines. Strips win for clarity, packed sheets win for memory. Both produce a valid image to pixel art grid as long as the cell math is consistent.