Swatchsmith

Batch palette swaps for pixel art · v1.1.0 · works offline: your files never leave this computer DEMO: 3 sprites, 1 variant Get the full version

1 Add your sprites

Drop PNG files or a folder here
or

2 Choose new colours

Add sprites to see their colours.

SelectOriginalUsedLockNew colourWhere

3 Preview

Original

Variant

Region (optional: recolour only part of a sprite)

4 Export


Projects store your colour swaps, not your images.

Map selected colours to a palette

Paste hex codes (one per line or comma-separated), or load a .hex / .gpl / JASC .pal / paint.net .txt palette, or a PNG image (its colours become the palette, in reading order). Lospec palette downloads work.

Matching

Shift the selected colours

Shifts start from each colour’s current new colour (or the original if you haven’t changed it), so they add to your earlier edits. Changes are made in a perceptual colour space (OKLCh), so shading stays even.

0°
100%
0

How to use Swatchsmith

  1. Add sprites: PNG files or a whole folder (sub-folders are kept in the export).
  2. Choose new colours for the current variant. Click a swatch, type a hex code, or select several colours and use Map selected to a palette to swap a whole colour ramp at once.
  3. Lock colours that must never change (eyes, outlines, UI). Locked colours are skipped by every tool.
  4. Add more variants (red team, blue team, poisoned, night…). Each one exports to its own folder.
  5. Regions (optional): when two parts of a sprite share a colour, paint a region in step 3 (or load mask images: white or any colour on transparent or black, named like the sprite with “_mask” added, for example knight_mask.png). Then set a colour’s Where to “inside” or “outside” the region. Regions are saved in project files.
  6. Export ZIP: every sprite in every variant, plus palettes, a lookup texture with ready-made Godot 4 / GLSL shaders, and a project file.

Notes: colours match exactly (pixel-perfect, no smoothing). Transparency is kept, and only the colour changes. Fully transparent pixels are never changed. Maximum 4096 × 4096 pixels and 65,536 colours per image; 64 megapixels and 262,144 colours per session (for example 256 sheets of 512 × 512), so your browser doesn’t run out of memory. Works best with pixel art. The colour table shows the 512 most-used colours, but exports always include every colour. Controls are locked while sprites are loading and while an export runs (you can cancel an export). Every exported file gets a name that unzips safely on macOS, Windows and Linux; anything renamed is listed in the ZIP’s README.txt.