Image to pixel art
Turn a photo, pet, face or logo into pixel art on a grid, then save it as a crisp PNG or a printable bead, cross-stitch or diamond painting pattern with thread colour numbers and a count for every colour. The image never leaves this device.
Open an image to see it as pixel art.
Palette and counts tap a colour, then tap cells to paint them
Painted and erased cells stay when you change a setting, as long as the grid keeps its size and the colour is still in the palette; otherwise the page says how many were reset.
Saved on this device only: the picture, the settings and your painted cells, so they are back when you return.
Grid
Diamond painting
30 × 40 cm with 2.5 mm square drills is 120 × 160 drills. The design area is the drill grid; leave the canvas border bare.
Transparent background
A cell is empty when, on average, less than 50 % of the picture under it is opaque. Lower keeps soft edges; higher trims them. With a fill colour, transparent parts are laid on that colour instead, so no cell is empty.
Colours
Each colour becomes the nearest of 454 numbered thread colours (closest in OKLab, a colour space built to match how different colours look). Screen colours only approximate thread colours, so go by the numbers.
Threads I own (0 ticked)
Your ticked numbers are saved in this browser on this device only.
Download
1× is one pixel per cell, so a 32-wide grid is a 32 × 32 sprite; each step up copies every cell into a solid block (nearest neighbour), never blurred. Empty cells are transparent.
The GIF keeps every frame's delay and one shared palette, at the PNG scale above (x1 to x16). The PNG, SVG, CSV and pattern buttons save the frame shown.
The pattern prints a symbol in every cell, numbers every 5 rows and columns, and a legend of HEX codes and counts.
Privacy: your picture is turned into pixel art inside this browser and is never uploaded. A copy of the picture (in IndexedDB) and your settings and painted cells (in localStorage) stay in this browser on this device until you tap Forget them; the thread colour numbers you tick as owned are kept the same way (localStorage) until you tap Clear my list or Forget them. The page sends an anonymous page-view count and six fixed event names (open, download, pattern, thread, diamond, gif), never a colour, a thread number, a file name or a size.
How to turn an image into pixel art
- Open the picture. Tap Choose an image, drop the file on the box, or copy an image and press Ctrl+V (⌘V on a Mac). A close crop of one subject on a plain background works best.
- Pick the grid. Tap 16, 32, 48 or 64, or drag the slider anywhere from 8 to 128 cells wide. Square, crop to fit keeps the middle of the picture for a 32 × 32 icon or a square pegboard.
- Pick the colours. From the image finds 2 to 64 colours by median cut; 6 to 16 is the usual range for a recognisable face or pet. Or choose Thread colour numbers to stitch or drill it: the same number of colours, each the nearest numbered thread colour, optionally only the ones you have ticked as owned. Or use a fixed set: 1-bit, 4-shade green, or 4, 8 or 16 greys.
- Tune it. Dithering mixes two colours in a pattern to fake a third (good for skies and shading, busy for bead work). Outline draws a dark edge round the subject. Contrast and saturation are applied before the colours are chosen.
- Keep or fill the background. A PNG with a transparent background keeps it: cells that are mostly see-through become empty (shown as a checkerboard). Or fill them with white or a colour.
- Fix single cells. Tap a colour in Palette and counts, then tap cells on the picture to paint them, or tap Eraser to empty them; the counts update as you go, and your edits are kept on this device.
- Animate it. Open an animated GIF and every frame is read, with each frame's offset and disposal applied so it is the full picture as a browser shows it. One palette is chosen from all frames together, so a colour does not flicker; the preview plays at the GIF's own timing (a delay of 0 or 10 ms plays at 100 ms, as browsers do), and the slider steps through frames. Download an animated GIF (x1 to x16) or a sprite sheet PNG with a JSON frame list.
- Save it. A 1× sprite (one pixel per cell) or x2 to x20 with hard square pixels, an SVG of squares, a CSV of the colours and counts, or the pattern PDF on A4 or Letter for beads, cross-stitch or a diamond painting, where empty cells are left blank and not counted. With Diamond painting ticked the grid comes from the canvas size, and the PDF prints at true size with drill counts.
What it cannot do
- Thread colour numbers are matched by numbers, not by eye. Screen colours only approximate thread colours: each number's RGB value in the table is someone's best estimate of a real thread, and your screen and printer shift it again, so trust the numbers and symbols, not the colour you see. The table has 454 solid thread colours; it has no metallic, variegated or glow-in-the-dark threads, and a few drill makers use their own codes instead of these numbers.
- It does not match bead colours. For fuse beads the legend gives each colour as a HEX code and a count; you choose the nearest bead you own.
- A diamond painting plan is not a printed canvas. The true-size PDF is a chart to work from (print it at 100 %, check the 50 mm bar); it has no adhesive, and specialty drills (AB, fairy dust) are not in the table.
- Animations stop at 300 frames and 2 megapixels per frame. An animated GIF (or an animated WebP, in browsers with ImageDecoder such as Chrome and Edge; elsewhere a WebP opens as its first frame) opens up to its first 300 frames; a GIF whose frames are larger than 2 megapixels (for example 2000 × 1001) opens as a still picture of its first frame. Long animations are read from a smaller working copy, so a square 300-frame GIF is sampled at about 230 × 230 pixels per frame, which is still more than a 128-cell grid needs.
- Cell painting is off in animation mode. Tapping cells and the eraser work on one still picture; with an animation open they are switched off, and every frame comes straight from the settings. Open a still image to paint cells again.
- Floyd–Steinberg dithering shimmers in an animation. Its pattern depends on every cell before it, so a small change in one frame moves the dots across the rest of the frame. Ordered (Bayer) dithering, or none, keeps still areas still.
- It is a conversion, not hand-drawn pixel art. Small details such as eyes can vanish or merge at 16 or 32 cells; that is what tapping cells is for.
- A cell is either solid or empty. There are no half-transparent cells: a soft or anti-aliased edge goes one way or the other at the threshold you set, so the PNG has only alpha 0 or 255.
- It keeps one still picture. An animation is not saved on this device; after a reload, open the file again.
- It keeps one picture. Your painted cells survive a reload and most setting changes, but a new grid size resets them, and so does a colour that leaves the palette (the page says how many). Opening another image replaces the saved one.
- Nothing is uploaded, so there is no account and no cloud copy: the saved picture lives only in this browser on this device, and clearing site data or tapping Forget them removes it.
Grid size to real size
| Grid width | Fuse beads (5 mm pitch) | Mini beads (2.6 mm) | Cross-stitch, 14-count | Diamond, 2.5 mm square |
|---|---|---|---|---|
| 16 | 8 cm | 4.2 cm | 2.9 cm (1.1 in) | 4 cm |
| 29 | 14.5 cm (one small square board) | 7.5 cm | 5.3 cm (2.1 in) | 7.3 cm |
| 32 | 16 cm | 8.3 cm | 5.8 cm (2.3 in) | 8 cm |
| 64 | 32 cm | 16.6 cm | 11.6 cm (4.6 in) | 16 cm |
| 128 | 64 cm | 33.3 cm | 23.2 cm (9.1 in) | 32 cm |
Real size is cells × pitch: a 32-wide design in standard fuse beads is 32 × 5 mm = 16 cm. A 32 × 32 bead piece takes 1,024 beads, so the counts matter when you buy. A diamond painting works the other way round: you start from the canvas, so the page divides its size by the drill pitch. A 40 × 50 cm canvas is 160 × 200 square drills (32,000) or 143 × 179 round ones (25,597), and with 10 % spare rounded up per colour you buy a little over 10 % more.
Thread colour numbers, names and RGB values: the open embroidery floss colour dataset by Sharla Gelfand (MIT licence), 454 colours, copied into this page on 2026-10-20.
Questions
How do I make a diamond painting pattern from a photo?
Tick Diamond painting, choose square (2.5 mm) or round (2.8 mm) drills and type the canvas size: 30 × 40 cm with square drills is 300 / 2.5 = 120 by 400 / 2.5 = 160 drills, 19,200 in all. The palette switches to thread colour numbers, the numbers loose drills are commonly sold by, and the legend counts the drills for each colour plus 10 % spare (adjustable), rounded up per colour. The pattern PDF prints the chart at true size, one symbol per drill, tiled over A4 or Letter sheets that overlap by 3 rows and columns along dashed lines, with a 50 mm bar to check the print scale. No account, no app.
How do I make 32x32 pixel art from an image?
Tap the 32 preset and set Shape to Square, crop to fit, which keeps the middle of the picture. Faces and pets read best with 8 to 16 colours and a little extra contrast; turn on Outline if the subject melts into the background. Download the PNG at x10 for a 320 × 320 image with hard square pixels.
Can I make a bead pattern from a photo?
Yes. One cell is one bead, so a 29 × 29 grid fits one standard square pegboard. Keep the colours to what you own (often 6 to 12), download the pattern PDF and read the legend: every colour's symbol, HEX code and how many beads it takes. The colours are not matched to any brand's beads, so pick the closest bead you have for each HEX.
Does it make cross-stitch patterns?
Yes: one cell is one full stitch. A 64-wide grid on 14-count fabric is 64 / 14 = about 4.6 inches (11.6 cm) wide. Set Palette to Thread colour numbers and every colour becomes the nearest of 454 numbered thread colours; the legend, the PDF and the CSV give each one its number, name and stitch count. Tick the numbers you own and choose Only threads I own to stitch from your stash. The PDF prints a symbol in every square, a heavier line every 10 and numbers every 5, and splits big grids over several pages.
Can I turn an animated GIF into pixel art?
Yes. Open the GIF and every frame is converted onto the same grid with one shared palette, so a colour that is red in frame 1 is the same red in frame 30. Example: a 3-frame 16 × 16 GIF at grid 16 is 16 × 16 cells per frame; at x4 the animated GIF is 64 × 64 and each frame keeps its delay (100, 200 and 300 ms stay 100, 200 and 300 ms). Transparent parts follow the same rule as a still PNG: with Fill empty cells with on Nothing, a cell under the threshold is transparent in that frame. GIF delays are stored in hundredths of a second, so a delay is kept to the nearest 10 ms.
How do I make a sprite sheet from a GIF?
Open the GIF, set the grid (32 for a 32 × 32 sprite), choose Frames in one row or Frames in a grid, and tap Sprite sheet PNG, then Frame list JSON. At 1× a 3-frame 16 × 16 animation in one row is a 48 × 16 PNG. The JSON lists each frame's x, y, width, height and duration in ms in the TexturePacker JSON-array layout (a frames array of filename, frame and sourceSize), which game frameworks such as Phaser load as an atlas; the grid layout uses ⌈√frames⌉ columns, so 10 frames make 4 × 3 with two slots empty.
How do I make pixel art bigger without it going blurry?
Use the PNG scale slider (x1 to x20). It copies each cell into a solid block of the same colour (nearest neighbour), so a 32 × 32 result at x20 is a 640 × 640 PNG with no blended edge pixels. The SVG of squares can be scaled to any size.
Can I make a 32x32 sprite with a transparent background?
Yes. Open a PNG that already has a transparent background and leave Fill empty cells with on Nothing. A cell becomes empty when less than half of its area is opaque (the threshold is adjustable from 1 to 99 %), and empty cells are transparent in the PNG and the SVG. Tap 1× sprite for a file of exactly one pixel per cell: a 32-wide grid gives a 32 × 32 PNG, and 8× gives 256 × 256. A photo with a solid background has no transparency to keep; the Eraser empties cells by hand.