About this tool
Pixel Art Sprite Studio is a grid-based pixel editor purpose-built for game sprites: a square canvas from 8x8 up to 64x64, five curated retro palettes (PICO-8, Game Boy, NES, C64, Endesga-32) with their canonical hex values, and a pencil/eraser/flood-fill/ordered-dither/eyedropper toolset with horizontal, vertical and quad symmetry for fast, mirrored character and tile work.
Each frame supports multiple layers with per-layer visibility and opacity, composited with standard Porter-Duff alpha blending, so you can sketch a silhouette on one layer and shade or add an outline on another without disturbing the base art.
The frame timeline turns a single sprite into an animation: add, duplicate and reorder frames, set a per-frame duration, and toggle onion skinning to see the previous frame ghosted behind the one you're editing.
Export covers both static and animated use: a single-frame PNG, a full animated PNG (APNG), an animated GIF, a horizontal sprite-sheet PNG with matching atlas JSON (Pixi/Phaser's native TexturePacker format, plus documented region lists for Godot and Unity import scripts), or a CSS steps() snippet for background-position sprite animation.
Projects can be saved and reloaded as JSON (run-length encoded per layer) so you can pick up an in-progress sprite later without re-drawing it.
How to use
Pick a size and palette
Choose a grid size (creates a fresh sprite) and a retro palette from the toolbar; click a swatch to set the primary color, right-click to set the secondary.
Draw
Select Pencil, Eraser, Fill, Dither or Eyedropper, optionally turn on symmetry, then click or drag on the canvas.
Dither a gradient
Pick the Dither tool, set primary/secondary colors and density, then click a region to flood-fill it with an ordered Bayer dither blend.
Layer your art
Add layers in the Layers panel, adjust each layer's opacity or visibility, and reorder them to control what's on top.
Animate
Add frames in the timeline, set each frame's duration, enable onion skinning to trace the previous frame, and press Play to preview.
Export
Download a PNG, APNG, GIF, sprite-sheet PNG, atlas JSON for your engine, or a CSS steps() snippet from the Export panel.
Use cases
Game jam sprites
Draw and animate character or item sprites in the browser, then export a sheet + atlas JSON straight into Pixi, Phaser, Godot or Unity.
Retro-style icons and avatars
Use a locked palette like PICO-8 or Game Boy to keep icon sets visually consistent with a project's retro art direction.
Sprite sheet prototyping
Block out an animation's frame count and timing quickly, preview it with Play, and iterate before committing to final art.
CSS sprite animations
Export the steps() snippet to drive a lightweight background-position animation for web UI without a GIF or video file.
Common mistakes
Mistake:Expecting the grid-size selector to resize the current sprite
Fix:Changing the size starts a brand-new blank sprite rather than scaling existing art — pick your size before you start drawing, or export/save first.
Mistake:Using Fill on a layer with semi-transparent pixels expecting it to blend
Fix:Flood fill and dither fill both match the exact source color at the clicked pixel (including null/transparent) and replace it outright — they don't blend into existing colors.
Mistake:Assuming Godot or Unity load the atlas JSON natively
Fix:Only the Pixi/Phaser export is a format either engine loads directly (TexturePacker JSON Hash); the Godot and Unity exports are documented region lists meant to drive a short import script.
Mistake:Forgetting a hidden layer still exists in Save/Load
Fix:Hidden layers are skipped when compositing exports (PNG/GIF/APNG/atlas) but are preserved in the saved project JSON, so toggling visibility back on later still works.
Frequently asked questions
Related guides
Your Font Has Axes: A Field Guide to Variable Fonts and OpenType Features
One font file, infinite weights. How the fvar and gvar tables actually work, why a font inspector can show you the axes but not animate between them, and the metric-override trick that kills fallback-font layout shift.
Symmetry, Dithering and the Sprite Sheet: A Pixel Artist's Toolkit
Why PICO-8 has exactly 16 colors, how a Bayer matrix fakes a gradient with none, and what actually happens when you export a walk cycle to Pixi, Phaser or Godot.
References & standards
Related tools
Aspect Ratio Calculator
Calculate dimensions and ratios for images and videos.
Border Radius Generator
Visually craft CSS border-radius values — including the advanced 8-value slash syntax for organic blob shapes — with a live preview and one-click copy.
Box Shadow Generator
Visual CSS box-shadow generator. Create beautiful shadows with live preview and copy the CSS code.
CSS Grid Generator
Visually build CSS Grid layouts — set columns, rows and gaps, see a live preview, and copy production-ready grid-template CSS.
Cubic Bezier / Easing Generator
Build a CSS cubic-bezier() timing function visually — drag control points, preview common presets, see the easing curve live, and copy the transition-timing-function CSS.
Dummy Avatar Generator
Generate unique SVG avatars for mockups and placeholders using various illustration styles