How Stitchpaper works
What happens between uploading an image and printing a chart, written so you can judge the output rather than trust it.
Everything runs on your device
Stitchpaper is a static website. There is no server that receives images or patterns. When you upload a photo, the browser reads the file, hands it to a web worker on your machine, and the worker returns a grid of stitches. Projects are saved in your browser's local storage and can be downloaded as a JSON file. This is why there is no account and why the site works offline once loaded.
Image to stitches
- Resample. The image is scaled so its width equals the stitch width you chose (up to 300). Each resulting pixel is a candidate stitch. In pixel-art mode, resampling uses nearest-neighbor so hard edges stay hard.
- Optional background removal. If enabled, pixels connected to the border that share a near-uniform color are marked as "no stitch". Transparent pixels are always left unstitched.
- Cluster colors in Lab. Pixel colors are converted to CIELAB, a color space where distance roughly matches how different two colors look to a person, and clustered into the number of colors you chose. Clustering is deterministic: the same image and settings give the same chart every time. Pixels are weighted so that small but distinct regions (an eye, a highlight) are less likely to be absorbed by a large neighbor.
- Match each cluster to floss. Each cluster center is matched to the nearest DMC color by Euclidean distance in Lab. (CIEDE2000 is on the roadmap; on this dataset the two agree in most cases.)
- No dithering. Dithering makes a screen preview look more photographic but scatters single stitches across the fabric. Stitchpaper does not dither. It may be offered later as an explicit option.
Cleanup
Clean isolated stitches removes stitches whose color is used by none of their neighbors and replaces them with the neighbor color that appears most. It is intentionally conservative: it does not try to recognize an eye or a letter, so check fine details after running it. Every cleanup is one undo step.
Floss estimates
Estimate per color = stitches × thread per stitch × 1.2, expressed in 8-meter skeins of two strands pulled from six-strand floss.
Thread per stitch is modeled as two diagonal front legs plus two straight back legs for the fabric count you set. The 20% allowance covers starts, ends, tails and waste. Real usage varies with tension, routing and how often you finish off, so buy one skein more of any color near a whole-skein boundary. The CSV export shows the assumption next to every number.
Thread data
The palette has 454 DMC six-strand colors with number, name and an RGB value. It is normalized from the CSV in PaulMakesStuff/Python_Cross_Stitch (MIT license; retrieved 5 September 2026; the file's SHA-256 is recorded in the source). The upstream CSV does not document how its RGB values were measured, so they are treated as community approximations. Nothing has been calibrated against physical floss, some current DMC colors are missing, and discontinued codes have not been reconciled. Before Stitchpaper claims a complete or accurate catalog, it will need controlled comparison against real skeins. The DMC color chart carries the same caveat.
Charts and PDFs
The PDF is drawn as vectors: a grid with bold lines every ten stitches, one symbol per color chosen from a tested set for contrast, a thread key with DMC number, name, symbol and stitch count, and page tiles with coordinates. The stitched preview on the first page is rasterized from the same renderer the studio uses on screen.
Crochet, knitting, filet and bead patterns
The crochet, filet crochet, knitting and fuse bead modes use the same conversion, with four differences.
- Where colors come from. Crochet and knitting keep the cluster colors themselves, labelled A, B, C, because no yarn company publishes color values for its shades; you name each one after your yarn. Bead patterns match each cluster to the nearest opaque solid color of the chosen brand. Filet has only filled and open squares, so the photo is split by brightness at a threshold found with Otsu's method (the split that best separates dark from light), which you can move.
- The shape of a stitch. Each cell is drawn at your gauge: its height is its width times stitches per 4 in divided by rows per 4 in. The photo is resampled to the matching number of rows, so a chart worked at your gauge keeps the photo's proportions. C2C tiles and beads are square.
- How rows are read. Row 1 is the bottom row. Flat work reads odd rows right to left and even rows left to right; right-side-only and round work read every row right to left. C2C rows are diagonals from the start corner: a chart W tiles wide and H tall has W + H − 1 rows, and row k has min(k, W, H, W + H − k) tiles. The written instructions list every row in working order.
- Counts. Stitch, tile and bead counts are exact. Yarn yardage is shown only when you enter the yarn used per 100 stitches from your own swatch, because no yarn maker publishes yarn length per stitch.
The filet foundation chain is 3 × squares + 4 when the bottom-right square is filled and 3 × squares + 6 when it is open, following Doris Chan's construction in Interweave (open: dc, ch 2, dc; filled: dc, 2 dc, dc). The knitting float check measures, for every row and every color in it, the stitches between one stitch of that color and the next, and flags gaps over your limit.
Bead codes and names are each maker's own, from perler.com, hama.dk and Artkal's color chart (retrieved 10 October 2026). None of the three publishes color values. Perler and Hama colors come from maxcleme/beadcolors (MIT license), which does not document how they were measured; Artkal colors were sampled from Artkal's own chart image. Colors with no value are left out of matching. Treat all bead colors on screen as approximations.
What it cannot do yet
- Backstitch, fractional stitches, French knots or blended threads.
- Patterns larger than 300 × 300 stitches or with more than 48 colors.
- OXS or XSD import/export, or verified Pattern Keeper compatibility.
- Text and alphabet tools.
- Crochet stitches other than single crochet graphs and C2C tiles, filet lacets and bars, knitting lace or cable symbols, and garment shaping.
- Mini (2.6 mm) and maxi (10 mm) beads, and shaped pegboards.
- Cloud sync. Your browser's storage is the only copy unless you download the project file.
These are listed in the project roadmap and will be removed from this list as they ship. If something here is wrong, use the contact page.