Walmart's 4.5:1 text contrast for video: set Sume caption colors

Walmart wants 4.5:1 contrast for normal text and 3:1 above 18 px. Sume caption design.colors sets text and card colors; ratios for four pairs inside.

5 min readSume
All posts

Set the caption text and card colors yourself so the pair clears Walmart's contrast levels. Walmart's accessibility checklist, in its Rich media: Technical requirements PDF (updated Sep 17, 2026, read 2026-10-08), asks for a contrast ratio of 4.5:1 for normal-sized text and 3:1 for text larger than 18 px, and logos need no minimum. In Sume you send design.colors on POST /v1/video-captions; white text on a black card is 21:1, well over both.

The rule

Walmart refers to level AA compliance, which asks for 4.5:1 on normal text and 3:1 on larger text, defined on the page as larger than 18 px. It also says text that overlaps an image or video must still be legible. Embedded text other than a brand logo is discouraged in images.

A caption sitting directly on moving footage has no fixed background, so its ratio changes every frame. A solid card behind the text gives you one known pair to calculate.

The Sume fields

The caption docs say a style is a set of design tokens and that design overrides them for one request, each field optional and merged over the style. The colors group has base, active, stroke, accent, accent_deep and card, where a null card shows no card. Typography has font_size_ratio and stroke_width_px, and placement has anchor_ratio.

If you send nothing, the style decides: slam for Latin text. A caption job costs a flat $0.20 for videos up to 60 seconds, and a restyle of a clip Sume already transcribed is still a render at the same price.

WCAG contrast ratio of candidate pairs, computed with the standard formula (Walmart rule read 2026-10-08)
TextBackgroundRatioMeets 4.5:1Meets 3:1
#FFFFFF#00000021.0:1YesYes
#FFE600#00000016.6:1YesYes
#22D3EE#00000011.6:1YesYes
#9CA3AF#FFFFFF2.5:1NoNo
curl -X POST https://api.sume.com/v1/video-captions \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: walmart-contrast-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/example/clean.mp4",
    "style": "black-outline",
    "design": {
      "colors": { "base": "#FFFFFF", "card": "#000000" }
    }
  }'

How to check the result

Contrast math tells you the pair is safe only if the pair is what renders. Pull one still from the captioned clip with POST /v1/video-frames at a time when a caption is on screen and look at it at phone size. If the text sits over bright footage with no card, the ratio you computed does not apply.

The ratios above come from the standard WCAG relative-luminance formula, not from Walmart's page; Walmart only states the 4.5:1 and 3:1 levels. Sume does not verify contrast for you.

If you caption a batch, fix the design object once and reuse it for every clip, then spot-check three or four captioned stills instead of all of them. Each caption job is a flat $0.20 for videos up to 60 seconds, so a 25-clip batch is $5.00 and a mistake caught on the first clip costs 20 cents, not five dollars.

  • Pick a card color that is a solid fill, not a translucent one, if you need a fixed pair.
  • Stroke color helps legibility but does not change the ratio of text to card.
  • Larger than 18 px is Walmart's wording; treat text as normal-sized when in doubt.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume