WCAG contrast for burned-in type
Contrast is type on a moving plate, not a player setting. Outline or a backdrop. WCAG AA is for UI; burned-in still needs a ratio you can see.
Contrast for burned-in captions is a type problem on a moving plate, not a player setting the viewer can crank. Closed captions can be restyled. Pixels cannot. WCAG 2.2 AA is a claim about user-interface chrome. Burned-in type still needs a ratio you can see on a phone. Outline or a backdrop. Do not hope the generate stayed dark.
AA is for UI; the burn is pixels
WCAG 2.2 Level AA includes 1.4.3 Contrast (Minimum): 4.5:1 for normal text, 3:1 for large-scale text (18 point, or 14 point bold). 1.4.11 Non-text Contrast asks 3:1 for chrome needed to identify a control. Those criteria are written for content the page draws: text in HTML, buttons, focus rings.
A player that meets AA can still present a burned-in line that disappears into a window. The player did its job. The file did not. Closed captions have an escape hatch — the viewer, or the player skin, can change colour. Burned-in captions have none. Whatever ratio you composited is the only version the feed will ever show.
Do not quote AA as a caption-preset feature. BASIC and DYNAMIC do not “meet WCAG.” They draw glyphs. You still have to hold those glyphs against the worst frame behind them. Large type on a Reel may clear the 3:1 large-text floor on a paused kitchen shot and fail on the next cut when a sky fills the lower third. WCAG’s own understanding docs are blunt about rounding: 4.499:1 does not pass 4.5:1. Averaging the hold is the same kind of rounding.
The useful import from AA is the floor, not the certificate. If you cannot defend 4.5:1 (or 3:1 if the type is genuinely large-scale) against the pixels behind the letters, the line is decoration. On a mute feed, decoration that cannot be read is a missing soundtrack.
The plate moves; the ratio is local
Static brand type has one background. A caption track has a new one every few seconds. Generated plates make this worse on purpose: bokeh, neon, rain, specular streets. A ratio measured on a dark coat becomes a fail the moment a cyan reflection crosses the surname.
Measure local contrast, not the frame histogram. A plate can be dark overall and still put a bright streak through two letters. Colour-only type fails the same way. Brand-accent cyan on a neon generate is not a contrast strategy. White on a pale sky is not “clean.” It is invisible.
Shot changes are the audit, not the title card. Play the captioned cut and pause on the worst frame of each cue, at phone size. If you have to squint, the scroller will swipe. Desktop full-screen lies. Feeds are small, compressed, and often outdoors.
Safe area is a separate failure that looks like contrast. Type that sits under a username is not low-contrast; it is covered. Fix placement first, then measure what remains. A 7:1 line in the bottom 80 pixels of a TikTok is a line nobody saw.
Word-highlight (karaoke) does not get a pass. The live token may jump to a high-contrast accent while the rest of the line sits at a fail. The viewer still has to read the dim words. If only the pop is visible, you have a metronome, not a sentence.
Outline and backdrop, not a darker generate
Hoping the model will “keep the lower third dark” is not a caption strategy. The next take will not. The next b-roll cut will not. Treat the type as if the plate is hostile.
Two treatments that actually hold:
- Stroke / outline. White fill, dark outline (or the inverse on a bright plate) is the Classic reason that look survived. The outline manufactures an edge when the background will not. Too thin and compression eats it. Too thick and the word becomes a blob. Check at 1080×1920, not on a 4K timeline preview.
- Backdrop / scrim. A semi-opaque box or a local dim behind the cue. Paper and Ink in caption styles are this idea: a card the plate cannot argue with. VEED’s backdrop looks are the same family. You give up some of the picture. You keep the sentence.
A third treatment — picking a BASIC “plain” preset and calling it accessible — only works if that preset carries a stroke or a card and you still check the worst frame. Plain white with no outline is the most common miss on lifestyle footage.
Do not fix a fail by going all-caps or adding emoji. Caps are taller and slower. Emoji is another glyph that needs its own contrast. Split the cue if CPS is tight. Change the treatment if the ratio is the problem. Those are different knobs.
Generated UGC and talking-heads need the same pass. A kitchen wall is not a studio cyc. A window behind the creator will blow out the line every time they shift. If the talent must sit in front of that window, the caption needs a card, not optimism.
Check on a phone, then burn
Order:
- Lock the picture. Contrast QC on a cut you will trim is wasted.
- Transcribe and fix names and numbers.
- Pick a look that includes an edge: outline or backdrop. BASIC at 1× is enough for ads and courses. DYNAMIC at 2× still needs that edge.
- Preview on the first seconds of this clip, then watch the whole export on mute, on a phone.
- Pause on the worst frame of each cue. If the line goes, change treatment, not just colour.
The AI caption generator and add captions to a video will burn the preset you picked. They will not sample the plate for you. 165 language codes, 21 BASIC, 9 DYNAMIC — none of those is a contrast meter.
Closed-caption destinations still want a sidecar that a player can restyle. That does not excuse a burned Reel with white-on-white. Short-form is the burn. The burn has to hold.
AA remains the player conversation: keyboard, pause, caption toggle, chrome contrast. This page is the file conversation. Pixels on a moving plate. A ratio you can see. Outline or backdrop, checked at phone size, against the worst frame, not against the hope that Veo or Seedance left the bottom of the shot dark.
Hold the next burn against the plate in Versely.
FAQ
Does a WCAG 2.2 AA player make burned-in captions accessible?
No. AA is a claim about the page and the chrome. Burned-in type is pixels. If those pixels fail against the plate, the player cannot restyle them. Outline or a backdrop, checked on a phone.
Is 3:1 enough because Reel type is large?
Only if the type is actually large-scale under WCAG’s definition and 3:1 holds on the worst frame behind the glyphs. Many caption blocks are not that large once you measure. 4.5:1 is the safer floor. Averaging the hold does not pass.
Will a darker generate fix caption contrast?
No. The next shot will not stay dark. Put the edge on the type: stroke or a scrim. Do not prompt the model to protect a lower third the captioner does not control.