Web · 2026
Pick a colour, then walk through the public-domain art that shares it: 70,722 works from the Met and the Cleveland Museum of Art.

Overview
Museum open-access APIs let you search by title, artist or department, but never by colour. Neither the Met nor the Cleveland Museum of Art stores a colour field, and the one museum API that does blocks its images from being embedded anywhere else.
An offline pipeline crawls both CC0 collections, measures the dominant and secondary colours of every thumbnail, and writes a static, paged colour index. The site reads only its own JSON, with no backend and no third-party API at runtime, while the images stream straight from the museums.
Features
Drag around the wheel and along the lightness axis; the gallery re-sorts by colour distance, and thin hues borrow from their neighbours so nothing looks empty.
On wide screens the landing page is the wheel itself: each work sits at its hue, and crowded hues spill inwards so density reads as depth.
Open any work full screen with deep zoom, its other colours as links, and its nearest-colour twin from the other museum.
A 20-step route from one hue to another, one work per step; gaps in the collection show as a lurch instead of being hidden.
Spot the darker work or guess the tone, plus a daily challenge seeded from the date, so every visitor plays the same rounds without a server.
Paint a 3×3 colour grid, look up the colours of a word, or drop in your own image, measured in the browser with the same algorithm as the index.
How it works
Pulls records and thumbnails from both museum APIs at a polite pace, resuming from a local cache after any interruption.
Keeps only works flagged public domain or CC0, with image hosts on an allowlist and every field length-capped.
Shrinks each thumbnail, drops canvas, varnish and frame pixels, and bins the rest into 24 saturation-weighted hues.
Writes 24 hue buckets in 600-work pages; the app fetches a page only when you scroll to it.
Highlights
The Met blocks after about 75 quick requests, so the crawler paces itself, backs off, time-boxes runs and reports whether it is running, stalled or silent.
128,799 index entries across 269 static files; each page is about 330 KB and is fetched at most once per visit.
Circular hue means and distances, with the same palette extraction running in Node and in the browser.
A tight Content Security Policy, self-hosted fonts, no analytics or cookies, and about 255 Vitest tests.
Under the hood
Day 4
Word colours, a hardened crawler and the final index of 70,722 works.
Day 3
Walks, games, the daily challenge, colour twins and per-hue share pages.
Day 2
Tone axis, favourites, paged buckets, a resumable crawl and colour from your own image.
Day 1
Colour index pipeline, hue wheel, masonry gallery and deep zoom.
Gallery



