PicToBead

About PicToBead

PicToBead turns a photograph into a chart you can actually weave. It is not a pixelation filter with a craft label on it: every stage exists because the naive version of that stage produces a pattern that falls apart at the loom.

How a photo becomes a pattern

Your crop is reduced to exactly one cell per bead using an area-average filter computed in linear light. Averaging in gamma-encoded sRGB darkens midtones — half black and half white is bead colour 188, not 128 — and a pattern built that way comes out muddier than the photo it came from.

Colours are then reduced by weighted k-means clustering in CIELAB rather than by binning RGB values. A sixteen-colour portrait has to still read as a face, which means minimising perceived error rather than numerical error. The clustering is deterministically seeded, so the same photo and the same settings always give you the same chart.

Each colour in the reduced palette is then matched to the nearest bead by CIEDE2000. Two palette colours that resolve to the same bead are merged, because a legend that lists one product twice is a legend nobody can follow.

Stitches

A chart is always a rectangle of bead indices. What changes between stitches is where each bead physically sits. Peyote drops alternate columns half a bead; brick shifts alternate rows half a bead across; loom and square stitch share one plain grid, which is why they share one entry here. Switching stitch re-derives the pattern from your photo rather than nudging a square chart sideways, so each bead is sampled from where it actually sits.

Who it is for

Anyone working a loom, a needle and thread, or a peyote strip who would rather start from a photograph than from graph paper. It is free, it runs entirely in your browser, and it asks for nothing from you but a picture.

Last updated September 2026.