Pixel Paint — Paint by Numbers

Choose an original template or upload PNG, JPEG or WebP. Reduce its resolution and palette, preview the pixel art, then paint numbered cells and export your artwork.

Files are processed locally in your browser
Tool workspace

Paint by Numbers

0/256 cells completed0%
Processed preview: check the colors and detail, then start painting.
Selected number: 1
24 px

Numbers appear at ≥16 px per cell. Select a palette number, tap or drag to paint; two fingers pan/pinch on touchscreens. Arrow keys move the cursor, Enter paints. B/E/I/H select tools; Ctrl/⌘ Z undoes.

Export

Artwork PNG contains your painted cells; unpainted cells stay transparent. Reference PNG is the processed target. JSON preserves source samples, settings and progress.

Numbered templates use at least 24 px per cell so labels remain readable. PNG does not store editable progress; keep JSON as a backup.

How to use

  1. Choose a template or upload one static image. Set the target width, palette limit and detail; processing keeps the aspect ratio with whole-cell rounding.
  2. Inspect the processed preview and start painting. Select a numbered swatch and tap or drag across matching cells; correct-cell mode rejects other numbers.
  3. Use per-color progress, undo/redo and optional free painting. Export artwork, a numbered template, a palette sheet or versioned project JSON.

When it is useful

  • Turn a photo or simple illustration into a limited-color pixel puzzle.
  • Paint an original template on screen, or print its numbered PNG and palette sheet.

Formats and limitations

  • Static PNG/JPEG/WebP input: up to 12 MiB, 4096 pixels per side and 16 megapixels; decoding depends on the browser. Animated inputs are not supported.
  • The grid fits within 128×128 cells and uses at most 32 target colors. Transparent background cells are excluded; small details can disappear during sampling.
  • Artwork PNG exports the painted state with unpainted cells transparent. PNG does not preserve editable progress; keep JSON as a portable backup.

Examples

  • Keep a landscape’s shape

    An image measuring 1200×800 becomes a 32×21 grid at a target width of 32 instead of being stretched to a square. Select up to 12 colors, inspect the preview and begin painting.

How it works

A target and a painting

The processed palette and target remain separate from painted cells. Progress counts exact matches, so wrong colors in free-paint mode do not count as complete. Selecting a swatch highlights its unfinished cells.

Detail and local saving

Crisp sampling takes nearest pixels; balanced sampling averages areas with alpha. Optional cleanup removes only isolated low-contrast cells. Processing runs in a cancellable Worker. IndexedDB stores the sampled source, settings, target and painting locally; clearing browser data removes that draft.

Common mix-ups

  • Expecting a tiny grid to retain every feature; inspect the preview and raise the resolution before starting.
  • Exporting only PNG when you want to resume numbered painting later; save JSON too.

How data is processed

This tool performs supported operations in your browser. Files are not uploaded to a YourTool server. Third-party page services, such as ads, are kept outside the workspace.

Frequently asked questions

How is this different from Pixel Studio?

Pixel Paint turns a source image into a numbered painting task. Pixel Studio is for manual layered pixel art and frame animations.

Does the palette size mean exactly that many colors?

It is a maximum. A simple image may need fewer colors; unused colors are removed and the remaining colors receive stable numbers.

Why are numbers hidden when I zoom out?

Labels appear only when cells are at least 16 screen pixels wide. Zoom in to read them. Numbered PNG export enforces at least 24 pixels per cell.

Can I paint a cell with the wrong number?

Correct-cell mode prevents it. Turn that mode off for free painting; progress still counts only cells matching their target color.

Learn the concepts and techniques

Related tools

Confirm project change