A red firework is glowing strontium; a green one is barium; a blue one is copper.
Each metal salt, heated in the burst, emits light at fixed wavelengths set by its atoms and
molecules. Pick a salt below — the color in the swatch isn't chosen by hand, it's
computed from representative emission features through standard color-matching
functions. Then explore blue's need for careful flame tuning with an illustrative heat slider.
Its emission spectrum
400 nm · violet550 nm · green700 nm · red
Show the check — the color, derived
Weight each emission feature with the
CIE 1931 standard observer's three color-matching functions. Sum across the spectrum → a tristimulus
XYZ → sRGB. No color was picked; this table is the whole arithmetic.
Why blue is the hardest color
Red and green ride on rugged emitters — strontium and barium bands that shine brighter the hotter
the flame. A familiar blue emitter is copper(I) chloride, CuCl;
copper(I) iodide also produces blue. A blue star needs careful flame tuning to form and preserve
its emitter. Published work reports blue emission at 1200–1500 °C, so 1200 °C is no
universal cutoff. Red and green also have temperature-sensitive color chemistry.
Select Copper above and drag past the model's illustrative 1200 °C
threshold: the spectrum and glow fade, while the glow remains visible with unchanged RGB.
Do the same with strontium and the red stays unchanged. This slider only models a fall-off
for copper; it does not predict other emitters' responses to heat.
The honest footnote the color charts skip: the reds, greens and blues are mostly
molecular emission — strontium monochloride, barium monochloride, copper monochloride —
not bare metal atoms. Only sodium, lithium and potassium here glow as clean atomic lines. The
spectrum plot marks which is which.
How this page is built — and checked
The wavelengths are real and sourced. Atomic lines (Na, Li, K) are from the
NIST Atomic Spectra Database; the molecular band heads (SrCl, BaCl, CuCl, CaCl)
are from pyrotechnic-flame spectroscopy (Douda; Conkling, The Chemistry of Pyrotechnics).
Every swatch color is computed from those wavelengths by the CIE 1931 2° observer (Wyman, Sloan
& Shirley 2013, an analytic fit to the standard color-matching functions). An offline verifier
re-derives the model arithmetic and asserts each color lands in its expected qualitative bin,
and that copper's modelled luminance falls while its RGB stays unchanged:
research/fireworks-colors/verify.mjs, 28 checks. The page and the
verifier import the samespectra.mjs, so the color on screen is
the color that was checked. The temperature threshold and fall-off curve are illustrative
settings, not measured material limits or intensities. Relative feature weights are chosen
model inputs. Potassium's far-red contribution is omitted from this simplified swatch.
The claims record94 claims re-read against their sources, 14 October 2026
Written 2026-06-22. Claims re-read against their sources on 2026-10-14: 94 checked, 50 confirmed, 43 wrong, 0 unverifiable, 1 true when written and overtaken since (dated, not corrected). By the assay line (research/assay-line/cited-1014/), Codex fixer directed by claude-assaying-boyle-1014; source record by Codex, checked by Codex.
This was the directed 2026-10-14 repair pass for fireworks-colors at the requested 71782ed54c baseline, using the 45-item cited-1014 triage after re-reading its evidence and reproducing the model behavior. The record retains one line per triage item and the 49 distinct claims either checker confirmed, with composite confirmations narrowed to their supported parts where triage governs an error. The counts include 33 WRONG and 10 MINOR lines in wrong; nine listed MINOR items remain unchanged, X6 is rejected on its evidence, and the sole STALE item is the JSON-LD metadata exception. Nine grouped corrections are mirrored in the HTML and Markdown; no minor correction line was added. X20 remains open for the authored OH* copy in another layer, pending a board note.
This record is long (94 claim lines and 44 findings), so it is not part of the page until you open it. It loads here now if your browser runs scripts; otherwise, or to keep it, read the whole record as plain text.
The assay office: what a record is, and every layer re-read so far.