Methodology
How this archive is built.
Explicit answers to the questions that come up when you start using this dictionary on a real project: where the data comes from, what's editorial, what's verified, and how things like WCAG contrast are computed.
Source data
The 348 historical plates are derived from mattdesl/dictionary-of-colour-combinations, an MIT-licensed digitisation of all six volumes of Sanzo Wada's 1933 Dictionary of Color Combinations (色彩図鑑). Wada was a Japanese painter, costume designer, and color theorist (1883-1967); his original catalogue is reissued in modern reprint by Seigensha Art Publishing, 2010 — the recommended physical reference is on the about page.
The 30 editorial palettes are original compositions inspired by Wada's methodology — same era-tagging, same nameRomaji + nameJa + meaning structure for each color, same use of named pigments from the Japanese shikisai (色彩) tradition. They are not derived from the Wada source.
License + attribution
All site content (palette compositions, editorial descriptions, curation, layout) is released under CC-BY-4.0 with attribution to colorcombinations.org. The underlying Wada plates are public-domain by age; the digitisation layer carries the upstream MIT license. When citing or reusing, please attribute both: this site for the curation, mattdesl for the digitisation, and Sanzo Wada for the original work.
WCAG contrast calculation
Every palette page renders a contrast matrix between each pair of colors in the palette, and every named-color page renders the contrast against pure white (#FFFFFF) and pure black (#000000). The calculation follows the WCAG 2.1 Section 1.4.3 formula:
- Convert each hex to sRGB linear-light using the standard piecewise gamma function.
- Compute relative luminance:
L = 0.2126·R + 0.7152·G + 0.0722·B. - Contrast ratio = (Llighter + 0.05) / (Ldarker + 0.05).
- AA pass: ratio ≥ 4.5 (normal text), ≥ 3.0 (large text). AAA pass: ratio ≥ 7.0 (normal), ≥ 4.5 (large).
Source code for the calculation is in the open repo at
github.com/acevaultorg/colorcombinations
in src/lib/color.ts. The same code path powers the
public Contrast Checker
tool and the JSON API endpoints at
/api/colors/[slug].json.
Hue classification
Each color is assigned to one of nine hue families: red, orange, yellow, brown, pink, green, blue, purple, neutral. The classification is hex-derived (HSL bucketing on hue angle and saturation thresholds), not name-derived — so a color called "Sea Green" with a measurably blue hex (e.g. #00B49B) lands in the blue family rather than the green family. This is sometimes surprising on the /colors/blue/ hue-family page, but it's the consistent rule and it's documented here.
Moods and eras
Each palette is hand-tagged with one to three moods (serene, bold, earthy, refined, austere, warm, cool, playful, solemn) and one era (Heian, Kamakura, Muromachi, Edo, Meiji, Taisho, Showa). Mood tagging is editorial judgment; era tagging follows the period framing in the source dictionary plus our about page's historical research.
AI crawler policy
LLM crawlers (GPTBot, ClaudeBot, PerplexityBot, Googlebot-
Extended, Applebot-Extended, CCBot, Amazonbot, Bytespider,
Meta-ExternalAgent) are explicitly allow-listed in
/robots.txt. The
machine-readable site map is at
/llms.txt. Every detail
page advertises its JSON counterpart via
<link rel="alternate" type="application/json">
— bots can traverse the data graph without HTML scraping. Bulk
CSV downloads at /data/ are CORS-enabled
with Access-Control-Allow-Origin: *.
Updates
Every detail page emits dateModified in JSON-LD on
every deploy, so the freshness signal compounds without manual
intervention. The
RSS feed includes both editorial palette
additions and new long-form
/learn/ articles. Source-data updates
happen quarterly when new historical material surfaces (the
recent Sanzo Wada Vol. 2 reissue is on the
shop reading list).
Contact + correction policy
Found a factual error in a palette description, an incorrect
Japanese name, or a mis-cited source? Email
[email protected]
— corrections land in the next deploy and the article's
dateModified updates.