How FlossGrid matches colors and builds charts
Every equivalent on this site is computed, not copied: 2,020 thread and bead colors from open datasets are converted to the CIELAB color space and compared with the CIEDE2000 formula. The pattern maker runs the same code on your photo in your browser. Data last updated October 26, 2026.
From a screen color to CIELAB
Each palette lists a color as an sRGB hex value, the way a screen shows it. Distances between hex values do not match what the eye sees: a step in dark blues looks bigger than the same step in yellows. So every color is first converted to CIELAB. The sRGB values are linearized (the screen gamma is removed), turned into CIE XYZ with the D65 white point, then into L* (lightness, 0 to 100), a* (green to red) and b* (blue to yellow). In that space, equal distances are much closer to equal visible differences.
CIEDE2000 and the match bands
The distance between two Lab colors is measured with CIEDE2000 (ΔE₀₀), the color-difference formula published by the CIE in 2001. It adds corrections for lightness, chroma and hue, and for the blue region where the older formulas disagree with people. A ΔE₀₀ of about 1 is the smallest difference most people notice when two colors sit side by side. Every equivalent on the site carries its ΔE₀₀ and one of five plain-language bands:
| Band | ΔE₀₀ | What it means | DMC colors with an Anchor match in this band |
|---|---|---|---|
| identical | ΔE₀₀ below 1 | No visible difference on screen; in the data the two colors are effectively the same. | 11 (2.2 %) |
| very close | 1 to under 3 | A difference you only see side by side; safe to swap in most designs. | 170 (34.8 %) |
| close | 3 to under 6 | Visible next to each other, fine where the color is not next to the original. | 264 (54.0 %) |
| similar | 6 to under 10 | Same color family but clearly different; check before you swap a large area. | 43 (8.8 %) |
| loose | 10 or more | No good match in that brand; the nearest color is shown only as a pointer. | 1 (0.2 %) |
The last column is computed from the data on this site: for each of the 489 DMC colors, the nearest of the 445 Anchor colors. The mean distance of those best matches is ΔE₀₀ 3.69. The full table is on the DMC to Anchor conversion chart.
Worked example: DMC 321 Red
DMC 321 Red is listed as #c72b3b, which is L* 44.5, a* 60.5, b* 30.2 in CIELAB. The nearest Anchor color is Anchor 1098 Bright Red (#d41829, L* 45.4, a* 67.7, b* 42.3) at ΔE₀₀ 4.73, a close match. The plain straight-line distance in Lab (CIE76) would be 14.13; the runner-up is Anchor 29 Carnation Dark at ΔE₀₀ 5.28.
Why every screen color is an approximation
A hex value is a measurement of a color card or a product photo, taken by whoever compiled the dataset. Thread is dyed cotton with a sheen that changes with the light, beads are plastic that shifts color when it is ironed, and your screen has its own brightness and calibration. That is why the color pages note that RGB values are screen approximations, and why "identical" means identical in the data, not a promise about two skeins in your hand. For a commission or a large area, compare the real threads before you buy.
How the pattern maker turns a photo into a chart
- Resize. The photo is scaled to the grid you ask for, for example 80 stitches wide. Each cell averages the pixels it covers in linear light, so thin dark lines do not vanish and edges do not turn muddy. The height follows the photo's aspect ratio and the shape of the cell (knitting stitches are wider than tall).
- Choose the colors. The cell colors are grouped in CIELAB with k-means++ (seeded deterministically, so the same photo and settings always give the same chart). Each group center is snapped to the nearest real color of the chosen palette by CIEDE2000, and every cell is then assigned to the nearest of those chosen colors. Optional Floyd–Steinberg dithering spreads the rounding error to soften gradients.
- Clean up confetti. Single isolated stitches of a color are slow to stitch and rarely visible. The cleanup step replaces a cell that has no neighbor of its own color with the color most of its neighbors share; the strength setting decides how aggressive that is.
- Skip the background. Optionally, the area of one color that touches the border is flood-filled and left unstitched, which is how many portraits on Aida are worked. Transparent parts of a PNG are never stitched.
- Assign symbols and count. The most-used color gets the clearest symbol, then the next, so the chart stays readable. The key lists each color's code, name, stitch count and estimated skeins, drills or beads, and the finished size is computed from the fabric count or bead size.
All of this runs in your browser. The photo is never uploaded; the server only delivered the page and the palette files. The PDF chart is a vector PDF with real text symbols and a color key, so it prints sharply at any size.
How skeins are estimated
A full cross stitch is two diagonals across the cell on the front (2 × √2 × the cell width) plus about two cell widths of travel on the back, so one cross uses (2√2 + 2) ≈ 4.828 cell widths of thread for each strand. FlossGrid adds 15 % for starting, ending and traveling between areas, and counts a skein of six-strand cotton (DMC, Anchor, Madeira) as 8 m × 6 strands = 48 m of single strand.
Worked example: 1,000 stitches on 14-count Aida with 2 strands. The cell is 25.4 mm ÷ 14 = 1.814 mm wide. One cross uses 4.828 × 1.814 mm × 2 strands = 17.52 mm of single strand, so 1,000 stitches use 17.52 m. With the 15 % allowance that is 20.15 m, or 20.15 ÷ 48 = 0.42 of a skein. The color key rounds up, so you buy 1 skein.
| Fabric | Stitches per inch | Cell width | Usual strands | Stitches per skein | With 1 strand |
|---|---|---|---|---|---|
| 11-count Aida | 11 | 2.31 mm | 3 | 1,247 | 3,743 |
| 14-count Aida | 14 | 1.81 mm | 2 | 2,382 | 4,764 |
| 16-count Aida | 16 | 1.59 mm | 2 | 2,722 | 5,445 |
| 18-count Aida | 18 | 1.41 mm | 2 | 3,062 | 6,125 |
| 22-count Aida | 22 | 1.15 mm | 1 | 7,487 | 7,487 |
| 28-count evenweave, over two | 14 | 1.81 mm | 2 | 2,382 | 4,764 |
| 32-count evenweave, over two | 16 | 1.59 mm | 2 | 2,722 | 5,445 |
Real use varies with tension, how far you travel on the back and whether you work half stitches, so treat the estimate as a planning number and buy one spare skein of the main colors. Fuse beads are counted exactly, one per cell, so buy a few extra of each color for the ones that roll away. Diamond-painting drills are counted one per cell plus 10 % spare per color for drills that are lost or chipped, and use DMC color numbers. Per-count details are on the fabric count pages.
Data sources
The site holds 2,020 colors: 1,303 stranded-cotton thread colors and 717 fuse-bead colors, from the open datasets below. Brand names are trademarks of their owners and are used only to identify their products; FlossGrid is not affiliated with any of them.
| Palette | Colors | Source | License | Retrieved |
|---|---|---|---|---|
| DMC DMC Mouliné stranded cotton (art. 117) | 489 | sharlagelfand/dmc (data-raw/floss_adrianj.csv); codes 01-35 from KDE KXStitch dmc.xml | MIT (codes 01-35: GPL-2.0-or-later) | 2026-10-26 |
| Anchor Anchor stranded cotton | 445 | KDE KXStitch floss schemes | GPL-2.0-or-later | 2026-10-26 |
| Madeira Madeira stranded cotton (Mouliné) | 369 | KDE KXStitch floss schemes | GPL-2.0-or-later | 2026-10-26 |
| Perler Perler fuse beads (5 mm midi) | 103 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Perler Mini Perler Mini fuse beads (2.6 mm) | 41 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Hama Hama Midi fuse beads (5 mm) | 92 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Hama Mini Hama Mini fuse beads (2.5 mm) | 78 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Artkal S Artkal S-series fuse beads (5 mm, soft) | 199 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Artkal C Artkal C-series mini fuse beads (2.6 mm) | 174 | maxcleme/beadcolors | MIT | 2026-10-26 |
| Nabbi Nabbi fuse beads (5 mm) | 30 | maxcleme/beadcolors | MIT | 2026-10-26 |
Codes and names follow the datasets, and the retrieval date of each file is shown above. Found a wrong value? The contact page explains what to send, and the about page explains who runs the site and how it is funded.
Questions about the method
Why does the thread look different from the swatch on my screen?
Swatches are RGB approximations of dyed cotton or molded plastic. Screens differ in brightness and color calibration, and real thread has sheen and texture that no hex value captures. Use the equivalents as a computed guide and confirm important colors against a physical color card.
Is a ΔE of 0 a guarantee that two threads are the same?
No. It means the two datasets give the same screen color for both codes. Brands dye to their own standards, so even an "identical" pair can differ slightly in real life. Across all 489 DMC colors, 11 have an Anchor match below ΔE 1 in this data.
Why CIEDE2000 and not a simple RGB distance?
RGB distance treats every channel the same, but the eye is much more sensitive to some differences than others, for example small hue shifts in blues and grays. CIEDE2000 works in the CIELAB space and corrects for those effects, so its ranking of the nearest color is much closer to what a person would pick.