English · Русский
Plots a real paint palette on a color wheel by hue and chroma. You can see at a glance which colors are complementary, which are close, and where the gaps are.
This is my personal palette, the watercolors I've put together for my own urban sketching. It's not a recommendation or a universal "best palette": the choices follow my taste and subjects. The tool itself works for any palette and medium. Swap in your own paints in
data.js.
Live: https://colors.galangal.ru · works offline too: just open index.html, no server needed.
- Everything I have and Travel palette: my paints by hue and chroma.
- Theoretical: a reference wheel of all hues in 12 sectors, with my paints on top. It shows which hues are covered and which aren't. Click a paint to highlight the complementary sector.
- Artists: palettes of Daniel Smith brand ambassadors, taken from their dot cards. They use the same coordinates as my wheel, so palettes compare directly. Turn on "my palette as background" to overlay my paints, and paints we share get a dashed ring.
- A mixing cheat sheet with complementary pairs and recipes.
Hue and chroma are measured, not eyeballed. The source is Daniel Smith's official
CIELab color map: its markup holds measured
L*, a*, b* for every paint.
scripts/ds_build.py converts Lab → OKLab directly. Skipping sRGB avoids clipping the
chroma of saturated paints at the gamut edge. It then maps hue onto an artist's wheel.
- Chroma is normalized to frozen references: the maximum chroma across the whole DS catalog in each zone of the wheel. Adding paints or sets never shifts existing ones.
- The map is measured from a normal wash, not masstone. One global
MASSTONEfactor deepens the colors so the wheel doesn't look washed out.
| Path | What |
|---|---|
index.html |
the page |
data.js |
hand-written part: my paints, travel palette, pairs, recipes, purchase candidates |
catalog.js |
generated: DS paint geometry, colors and properties, plus artist sets |
authors/<slug>/ |
per artist: dot card, example painting, palette.json |
scripts/ |
geometry calculation, catalog build, data checks, palette CLI |
STYLE.md, journal/ |
taste notes and consultation log for the AI assistant (in Russian) |
deploy.sh |
publish to the server |
Paints live in data.js: MY holds what I own, ACTIVE is the travel palette, and
CANDIDATES holds paints worth buying. A new paint needs only its DS SKU and a name.
Geometry and color come from the catalog. After editing:
python3 scripts/build_catalog.py && python3 scripts/check_data.py
Typos in names don't fail silently. The page shows a red warning listing them.
.claude/agents/palette.md is a Claude Code agent that consults on this palette.
It suggests mixes for a described color, checks a proposed mix and breaks down a photo's color
scheme. It computes instead of guessing:
python3 scripts/palette.py mix "#6F5A4B" which paints make this color
python3 scripts/palette.py check A B -w 3:1 analyse a mix
python3 scripts/palette.py gaps gaps on the wheel
The mixing model averages colors in OKLab and accounts for layer density. It catches hue shifts and chroma loss but knows nothing about pigment particles or layering order, so treat a recipe as a starting point for a swatch.
Dot cards and paintings belong to their authors, see Daniel Smith Brand Ambassadors. Each one is shown with attribution and a link.
See LICENSE.
