Color is not the only indicator in graphics
Generated infographics encode meaning in hue. Add patterns, labels, and shape so a color-blind viewer can read the chart, then check deuteranopia.
Ask an image model for a three-series bar chart and it will give you three hues. Red, green, blue. Maybe a legend in the same hues. The chart looks finished on a typical sRGB display to a viewer with typical color vision, and it is unreadable to anyone for whom red and green collapse. WCAG 2.2 Success Criterion 1.4.1 Use of Color is Level A: color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element. Hue as the only series key is a fail, even if every label is spelled right.
This is a different check from contrast. Type contrast asks whether text clears 4.5:1 (or 3:1 at large scale) against its background. 1.4.1 asks whether the meaning survives when hue is taken away. A chart can pass contrast and still encode "Plan A versus Plan B" only as two similar greens.
How generated infographics hide meaning in hue
Models learn "infographic" from a corpus of marketing charts that already treat color as the series. They reproduce that habit. Dense-layout models are better at putting the numbers in the right cells; they are not better at encoding those numbers in a second channel. Seedream 5.0 Pro's dense-infographic workflow is the right place to fight garbled digits and collapsed hierarchy. After the digits are right, you still have to ask whether the series can be told apart in grayscale.
Typical failures that come back in review:
- Two lines on a graph that differ only by hue, with identical stroke weight and no markers.
- A stacked bar whose segments are a rainbow and whose legend is a row of colored dots with no pattern.
- A choropleth or heat cell where "good" is green and "bad" is red, with no number in the cell.
- A traffic-light status (red / amber / green) on a dashboard still, with no icon and no label.
- A pie whose slices are unlabeled except in a color key.
WCAG's sufficient techniques for images are G111, color and pattern, and G14, the same information in text. You need at least one. Both is better, because a pattern without a label still makes the viewer hold a legend in working memory.
Deuteranopia (no functioning green cones) is the harsh red-green case. Deuteranomaly, a shifted green, is more common, and a deuteranopia simulation is the conservative check: if the chart still reads when green is gone, a milder shift will not be the thing that breaks it. Do not treat that simulation as a census of your audience. Treat it as a go/no-go on the encoding.
Prompt the second channel on purpose
Write the encoding into the prompt the way you would write it into a design spec. Color can stay. It cannot work alone.
For bars:
A vertical bar chart, three series. Series A: solid navy bars, labeled "A" on each bar. Series B: the same navy, hatched with white diagonal lines, labeled "B". Series C: outlined bars, no fill, labeled "C". White background. Direct labels on every bar with the value. Legend repeats the pattern, not only the hue.
For lines:
A line chart, two series. Series "Email": circular markers on every point, solid stroke. Series "Paid": square markers, dashed stroke. Both series labeled at the right end of the line. Do not rely on color alone to distinguish them.
For status:
Three status rows. Pass: a green circle containing a white check mark, plus the word "Pass". Fail: a red square containing a white cross, plus the word "Fail". Hold: an amber diamond, plus the word "Hold". Shape, icon, and text all present.
For maps and heat:
Each cell contains its number. Color is a background only. No cell is color without a value.
Bind brand hues if you must, but bind them to objects, not to meaning. Hex-locked color is how you hit a brand value when the model supports it. It will not stop you from using that brand red as the only "error" cue. Put the word "Error" next to it, and a shape that is not the "OK" shape.
If the first render ignores the hatching (many models will), do not keep rerolling forever. Generate the labeled, numbered chart, then edit the image with an instruction that names the series and the pattern. The text-to-image step is for structure. The edit step is for the channel the structure forgot.
A published starting palette, if you need hues that already separate under common color-vision deficiencies, is the Okabe-Ito set as presented in Bang Wong's 2011 Nature Methods column on color blindness: black #000000, orange #E69F00, sky blue #56B4E9, bluish green #009E73, yellow #F0E442, blue #0072B2, vermillion #D55E00, reddish purple #CC79A7. Use it as a default, then still add pattern and labels. Palette choice is not a substitute for 1.4.1.
The deuteranopia check before you lock
Do this on the rendered pixels, not on the prompt.
- Grayscale first. If two series become the same bar, hue was doing all the work and luminance was not. Fix that before anything fancier. Grayscale is not a deuteranopia test: two hues of similar lightness can still separate in gray and collapse for a red-green deficiency, or the reverse.
- Deuteranopia simulation. Chrome and Edge DevTools both expose vision-deficiency emulation (Edge documents this in Microsoft's color-blindness test notes, which WCAG 1.4.1 lists as a related resource). Turn on deuteranopia and read the chart as a stranger. If you have to use the legend's color dots to decode a bar, you have failed.
- Sample the series, not the brand deck. The in-browser palette extractor runs on the visitor's device and lists the colors actually in the image. If two series land three hex values apart in the same hue family, the model did not give you a second channel. Nothing is uploaded; it is a Canvas read.
- Recheck after type changes. Swapping a caption, a legend, or a burned-in value can hide a pattern. Lock the encoding first, then lock the words.
For video, run the same four steps on a still of every graphic that stays on screen long enough to be read. A chart that appears for two seconds in a sequence is still a 1.4.1 problem if color is the only key; nobody can use a legend they cannot decode. Pull the frame with the video frame extractor (also browser-side) and test that PNG.
Save the encoding in the brand kit as a rule, not only as hex values: "series never distinguished by hue alone; hatch, marker shape, or direct label required." A kit that only stores #FF5733 will keep generating beautiful charts that fail 1.4.1.
A lock checklist
Before the graphic ships, in an ad or in a frame:
- Every series has a non-color cue: pattern, marker shape, or direct text on the mark.
- Every status has an icon and a word, not only a light.
- Every cell that uses a color scale also contains its number, or an adjacent table does.
- Deuteranopia emulation still lets you name each series without the original hues.
- Contrast of the type was checked separately. Passing 1.4.1 does not pass 1.4.3.
If a series cannot take a pattern (a photographic overlay, a full-bleed brand field), put the value in text. Text is the encoding that survives every deficiency and every grayscale printout.
FAQ
Does using brand red and brand green fail 1.4.1 automatically?
No. Using those hues fails only if they are the only way to tell two states apart. A red "Fail" label next to a green "Pass" label, each with a distinct icon, uses color and does not rely on it. A red bar next to a green bar with an unlabeled legend of dots does rely on it.
Is a legend of colored squares enough?
Not by itself. If the squares differ only in hue, the legend has the same problem as the chart. Add the series name in text, and give the swatch a pattern or a shape that matches the marks.
Will a deuteranopia filter over-reject charts?
It is a harsh check, which is the point. A chart that survives deuteranopia will almost always survive deuteranomaly. If a brand pair collapses and you cannot change the hues, add labels and pattern until the filter is irrelevant.
Do decorative brand fields need this treatment?
No. 1.4.1 applies where color conveys information, indicates an action, prompts a response, or distinguishes a visual element. A background wash that carries no data is not an indicator. A wash that is the only thing telling you which product is "new" is.