Active content was removed from the copy shown here: . Your file is not changed; what leaves this page is rewritten from the file you gave it.
Before, and after
nothing loaded
As it came
After
On a chequerboard, because an SVG can be transparent and a flat panel behind it hides that. The right-hand copy is the file that will be exported, rewritten from the original every time — not the left-hand copy edited again.
One row per distinct colour, however it was written. The last column is how many places were actually written, which is the column the rebuild exists for. A row greyed out is a value that has no colour to change: none, currentColor, or a reference to a gradient.
Occurrences and colours are different questions and the old badge answered neither: it counted a colour ×2 as a plain attribute and ×4 as a gradient stop, so the same single use ranked differently depending on how the file was authored. Mapping shows the measurement.
What will be written, and where
Every occurrence in the file, in document order: the element it sits on, the attribute or the declaration it was written in, the value that was there, and the value that will replace it. A row marked skipped is a value the tool cannot resolve to a colour, and it says which kind rather than pretending it was black.
Two colours trading places
The plan is computed from the original file and then applied, so no write can be read by another write. Run against the shipped engine and against this one, on the same artwork:
What the count used to mean
One use of one colour, written six different ways. The number the old tool printed beside each is the measurement, not an estimate — the shipped function was run on each of these files:
What can be read on it
WCAG 2.2 is a ratio and APCA is a lightness contrast — different quantities on different scales, so a row can pass one and fail the other. Neither is a verdict on the artwork; both are a statement about text laid on that colour.
The Lc that was always zero
The clip was applied to the wrong quantity: by that line the value had already been scaled and could never reach the threshold it was tested against. Swept over every grey-on-grey pair at a step of three:
The two colours hardest to tell apart
Every pair of colours in the file, under normal vision and under each of the three dichromacies, measured in CIEDE2000. The closest pair is the one a reader is most likely to confuse; the row is marked, not hidden.
The artwork under three dichromacies
The same file, simulated in linear light, with the closest pair under each one printed beneath it.
Where each number comes from
What was corrected, and what it printed
Six things this page did that it was not reporting. Nothing was removed — the harmony palettes, the simulation and the grouping all stayed. Each carries the reading it used to give, because a claim that a tool was wrong is worth nothing without the reading.
What was already true Carried across
Most of the arithmetic here checked out before anything was touched, and it was checked by measurement rather than by reading: the shipped functions were lifted out of their closure and run against published data. CIEDE2000 against the pairs from Sharma, Wu & Dalal (2005); OKLab against Ottosson’s own reference values; the sRGB round trip exact; WCAG 2 exact. The colour walk found every occurrence it claimed to find. What was wrong was what happened to those occurrences afterwards.
What leaves this page
The exported file is your file with the colour values replaced. Structure, ids, gradients, filters and any markup this page does not understand are carried across untouched; nothing is re-serialised from a model of the drawing.
The palette as custom properties
The colours the file ends up with, named by what they replaced, so a stylesheet and the artwork can be kept in step:
The report that goes with it
Saved beside the file if you want it: every mapping, how many places each one was written, and what was skipped and why.
The written count in this report is the same number the mapping table shows and the same number the export carries, because all three read one list. That was the whole point: the old tool reported a change it had not made.
Sources
What each figure on this page rests on, and which part of the code uses it.
How it works
The order matters more than any single step: the reading finishes before the writing starts.