Empty link — no text or label

FAIL — axe-core: link-name (serious). Anchor with no text content and no aria-label.

Text before the link. Text after.

The empty box above is an anchor with no accessible name.

Generic ambiguous link text

FAIL — vesper-ambiguous-link (moderate). Accessible name matches a known non-descriptive phrase.

To learn about Vesper Inspect, click here.

For more details about Vesper Audit, read more.

See event schedule — details.

View latest news — more info.

Learn more about accessibility.

Annual report — download.

Raw URL as link text

FAIL — vesper-ambiguous-link (moderate). Screen readers announce raw URLs character by character.

For more information visit https://www.w3.org/WAI/.

Rule documentation is at www.dequeuniversity.com/rules/axe/.

Duplicate link text — different destinations

FAIL — vesper-duplicate-link-text (serious). Four links share the accessible name "Read more" but go to four different pages.

Recent updates:

Raw phone number — tel: link

FAIL — vesper-ambiguous-link (moderate). Accessible name consists only of phone characters with no descriptive label.

Main office: +1 (503) 555-0100

Support line: 1-800-555-0199

Raw email address — mailto: link

FAIL — vesper-ambiguous-link (moderate). Accessible name is a bare email address with no contextual label.

General enquiries: hello@example.com

Event bookings: events@example.com

Descriptive link text — correct

PASS — links clearly describe their destination without relying on surrounding visual context.

Disambiguated duplicate links — aria-label

PASS — visually identical "Read more" links are distinguished for screen reader users via aria-label.

Recent updates:

Properly labelled contact links — correct

PASS — tel: and mailto: links use aria-label to give context beyond the raw number or address.

Main office: +1 (503) 555-0100

Support line: 1-800-555-0199

General enquiries: hello@example.com

Event bookings: events@example.com

Intentionally broken external links

BROKEN — these URLs should be flagged by the link checker

Valid external links

PASS — these should resolve cleanly