check color
Links you can only tell apart by colour
The palette by role (surfaces, ink, marks, by painted area) and two WCAG rules. Here the links in the prose have no underline and are 2:1 against the text around them.
Open the page under test · fixtures/color/link-color-only-broken.html
Run it
vlmkit check color fixtures/color/link-color-only-broken.html
What to look at
check a11y contrast passes these links: they are readable against the background. This is the other criterion (WCAG 1.4.1), the link against the sentence it sits in.
The fix
Underline in-prose links, or reach 3:1 against the body ink.
What vlmkit printed
vlmkit check color fixtures/color/link-color-only-broken.html · exit 0
vlmkit check color
source: fixtures/color/link-color-only-broken.html
verdict: COLOR-DEPENDENT (1 finding(s))
exits 0 — 1 warn(s) did not fail this command. To gate on one: --rule color-only-link=suspect
measured: 1 control(s), 5 link(s) in a text flow — from 27 visible box(es)
Palette (by painted area; reported, never judged — see the rejected candidates in the module docs)
surfaces 2 distinct
#fbfcfd 85.0% 1 el
#ffffff 15.0% 3 el div.shell>div.card
ink 4 distinct
#16233a 71.6% 8 el div.shell>h1
#1145c4 13.5% 5 el div.shell>p>a
#5b6b85 13.3% 3 el div.shell>p.muted
#ffffff 1.5% 1 el div.shell>form>button
marks 2 distinct
#cdd6e4 53.6% 4 el div.shell>div.card
#6b7280 46.4% 4 el input#email
base #fbfcfd, body ink #16233a, link ink #1145c4 on 5 element(s)
Findings
! [color-only-link]: div.shell>p>a — #1145c4 link inside #16233a prose at 2:1, with no underline, weight step, border or fill to mark it — so colour is the only thing saying it is a link (2 element(s), e.g. in div.shell>p). WCAG 1.4.1 technique G183 asks for 3:1 against the surrounding text when colour is the only cue. This is disjoint from check a11y contrast, which measures the link against its BACKGROUND and passes.