Skip to content
Photo2Pattern

About Photo2Pattern

52 tools that turn a picture into something made by hand, one cell at a time. This page is the contract: how a color on a screen is matched to a thing you buy, whose data each palette is and how exact it is, which figures are counts and which are estimates, and the three charts this site will not produce.

What is here

52 pages in 11 sections, and every one of them is the same three steps: average the picture down onto a grid of cells, snap each cell to the nearest color in a fixed palette, and print the chart together with the key that makes it usable. What changes between pages is what a cell is — a stitch, a bead, a plate, a block, a drill, a character — and therefore which palette it snaps to, what the finished thing measures and which warnings the page owes you. The catalog on the front page lists all of them.

Why the matching runs in Oklab, and why that matters for thread

Every page on this site answers one question about every cell: of the colors available, which is nearest? The obvious way to answer it is to treat red, green and blue as three axes and measure the straight-line distance between two points. That is quick, it is what most converters do, and it is wrong in a way you can see — equal steps in the three channels are not equally visible to a person, and blue in particular is weighted far above what the eye gives it. The practical symptom is skin: a tan and a mid-gray sit close together in raw coordinates and look nothing alike, so an RGB match sends faces gray. Here the search runs in Oklab, a space built so that equal distances look like equal differences, and there is exactly one implementation of it for the whole site.

On a screen that choice is a nicety, because a screen color that comes out slightly off can be nudged. On thread it is not. A cross stitch chart names DMC 3722 and somebody buys DMC 3722, threads a needle with it and puts it into fabric several thousand times over the following month; there is no adjustment layer at the end. The same is true of a bead code, a brick and a block. That is why the decision that looks like an implementation detail is at the top of this page: a nearest-color search that is a little bit wrong produces a chart that is expensive and slow to be wrong with.

The second decision of the same kind is that cell averages are computed in linear light rather than on the stored bytes. An sRGB byte carries roughly a 2.2 gamma and is not proportional to light, so averaging the bytes under a cell containing equal black and white gives 128 — which displays much darker than the mid-gray your eye expects. Every cell here is decoded to linear, averaged and re-encoded. The visible consequence is that charts from this site are lighter along edges and in fine detail than charts from tools that skipped the step, and the invisible one is that any two pages given the same picture produce the same grid.

The palettes belong to somebody else, and they are not equally exact

A wrong DMC number looks exactly like a right one to the person reading it, and they will buy it. So every palette here is quoted rather than composed, carries the source it was taken from, and states how much confidence it deserves — which differs enormously between them.

DMC stranded cotton454 shades
Two of the three columns are quoted rather than derived: the number and the name belong to DMC and are exact. The third cannot be, because DMC publishes no screen values at all, so every table in circulation descends from somebody photographing a shade card. Two independently published sets were therefore diffed here, 454 codes against 454 codes — one identical row (310, black), 31 inside 8 of 255, a middle of 25 and a far end of 155 at 505 Jade Green, with 309 Rose Dark the only other row past 100. That per-shade gap is stored beside the color, which is what lets a page mark its own least trustworthy squares instead of printing one disclaimer over the whole range.
Anchor to DMC464 rows
The only conversion table on the site, and the only one whose right-hand column is an opinion. Nothing official links the two ranges; what circulates is a substitution guide. Two published versions of it were diffed row by row and match on 452 out of 464 — inheritance from a common ancestor rather than corroboration. Four properties were then measured on the merged table and are printed wherever it is used: the 464 Anchor numbers collapse onto 360 DMC codes; 104 fail to survive a round trip; 23 of the DMC codes named have no swatch to show, 22 of them variegated threads that no single square can stand for and the 23rd 5200, which is the shade card's B5200 under a different spelling; and 3869 is not a DMC number under any spelling, the range stopping at 3866 — it is 3689 with two digits transposed.
Fuse beads7 brands, 1,406 colors
The cleanest data on the site. A bead is injection-molded plastic in a cataloged color, so the palette is a genuinely finite set and the brand codes are exact. Brand matters more than it looks: the same photograph resolves very differently against a 117-color range and a 291-color one, so a page never silently mixes two brands' codes into one chart. The values are sourced under CC BY 4.0 and the file names where they came from.
LEGO50 colors in production
Filtered three ways from Rebrickable's catalog, and each filter exists because ignoring it produces a chart nobody can build: opaque only, appearing in sets through 2024, and more than 2,000 known parts molded in the color. 27 of them clear 20,000 parts and are what a first mosaic should be limited to. Unlike floss the hex values are close to authoritative — LEGO molds to a specification and the catalog tracks it — but rarity, not color, is what stops a build, so availability is part of the palette rather than a footnote to it.
Minecraft map colors61 base, 183 buildable
A filled map stores one byte per pixel: the base color of the topmost block, multiplied by a shade. There are four shades in the file format and only three a build can place — shorter than the block to the north, level with it, taller — because the fourth, in the wiki's own words, does not occur naturally and needs an external editor. So there are three counts and they are not interchangeable: 61 for a flat build, 183 for a staircased one, and 244 as the ceiling of the format rather than a palette anybody can lay out. Confusing a map color with the color of a block in the world is the commonest error in this niche and the pages here say which they are showing.
Console and display palettes6 sets
Split into two kinds that are never presented alike. 4 are specified as sRGB by their own documentation, so the numbers are the palette. 2 came off hardware that never emitted RGB at all — a reflective unlit LCD and an analogue composite signal — so every table for them is somebody's decode, and the site names whose. No NES palette is shipped for exactly that reason: the decodes disagree and none has enough standing to print under the machine's name.
Yarn weights8 categories
The Craft Yarn Council's Standard Yarn Weight System, checked against the council's own table. Wraps per inch lives in the same file and is deliberately kept separate from it, because it is not part of that standard: Wraps per inch is a handspinners' convention, not part of the Craft Yarn Council standard. Two people measuring the same yarn routinely differ by two wraps, so read a WPI figure as narrowing the answer to two neighboring categories rather than choosing one.

The DMC row is the strongest single fact this site owns, and it is worth reading twice. Two people set out independently to write down what the same 454 threads look like, and they landed on the same answer once. Not approximately once — once. That does not make either of them careless: dyed cotton photographed under different light is a genuinely hard thing to reduce to three numbers. It does mean that any site showing you a floss swatch and saying nothing has told you something false, which is why the caveat is a shared component rendered on every page that draws one rather than a sentence each page writes for itself.

A count and an estimate are printed differently

A count is exact. Cells, stitches, beads, bricks, blocks and drills are countable objects, and the number of them in a chart is not an approximation of anything — it is the number. So counts are printed whole, never rounded for tidiness and never converted into a percentage that hides them. Where a package forces a round, the page says which way it rounded and why: eleven bags of a color that comes in thousand-bead bags means eleven bags, and the surplus is stated rather than absorbed.

An estimate names its assumption. Skeins, yardage, coverage and finished drape depend on tension, on brand, on how generously somebody cuts and on how often they rethread; published figures for the same fabric differ by a third. Those arrive as fields already filled in with a stated figure, with what moves them written beside them, and your own shop’s guidance beating ours the moment you type it. The two are never allowed to look alike, because an estimate dressed as a measurement is the single most expensive thing a page here could do — it is how somebody ends up eight meters short two thirds of the way through.

The same rule governs the reference data. Wraps per inch is the clearest case: it is a handspinners’ convention rather than part of the Craft Yarn Council standard it sits beside, two people measuring one yarn routinely differ by two wraps, and the pages that use it say so and narrow to two neighboring categories instead of naming one.

Three things this site will not do

  1. Invent a catalog number. No floss number, bead code, brick element or block name on this site was made up, interpolated or guessed, and no hex is shown for a color that could not be sourced. If a page needs a palette we do not hold, it says so and works with the ones we do. A fabricated DMC number is indistinguishable from a real one to a reader, and the cost of it lands entirely on them at a shop counter.
  2. Present a screen swatch as a thread color. Every swatch of a dyed or molded material here is an approximation of it, and every page that draws one says so. Use the charts to narrow a decision to two or three candidates and the physical shade card, bead or brick in your hand to settle it. A converter that returns one answer and no alternatives is claiming a precision the underlying data does not have.
  3. Return a chart from an input that cannot produce one. A blurred phone photograph at 300 cells square does not become a legible cross stitch however good the matching is, and a grid asked to be finer than its source is wide can only repeat what it already has. Where that happens the page refuses and says which of the two things is wrong, rather than handing back something plausible. The honest refusal is what separates this from the sites that return a chart regardless.

There are no prices anywhere on this site, no affiliate links, no “where to buy” and no cost estimates. Materials are priced differently in every country and stale within a season, and a figure like that would make a chart look more authoritative while making it less true. What the pages give you instead is the count, which is the part that does not change.

Trademarks: named, and nothing more

DMC, Anchor, Perler, Hama, Artkal, LEGO and Minecraft are other companies’ marks, and they appear throughout this site in headings, in running text and in the palettes themselves. They have to: a bead page that refuses to write “Perler” is a page nobody can find, and the codes on the bags are the whole reason the chart is useful. Naming a mark to say what a page is about is ordinary and lawful; implying a relationship is not, so nothing here uses a mark in a logo, imitates a brand’s styling, or describes itself as official, licensed or approved.

Product and company names shown here are the trademarks of their respective owners. Photo2Pattern is an independent tool and is not affiliated with, sponsored by or endorsed by any of them.

What happens to the picture you open

Your picture is opened by JavaScript running in the tab you are reading this in. It is never uploaded, never sent to a server and never stored anywhere — there is no upload step to undo, because there is no upload. Close the tab and nothing of it remains.

This matters more here than on a site full of numbers, because of what people bring: photographs of their children, of their dogs, of a person they are making a memorial piece for. It is also the whole product on the pages built for hiding something — a face, a number plate, a document — where sending the picture away to have it obscured would defeat the exercise entirely.

This describes what Photo2Pattern does. It says nothing about a browser extension, a corporate proxy or the machine in front of you, only that this site adds nothing to that list — and that once a page has loaded it keeps working with the connection switched off, which is the easiest way to check the claim for yourself.

Got a picture and something you want to make out of it?

The converter on the front page will put it on a grid with sensible defaults in one drop, and the catalog under it opens all 52.