astro-a11y report

Target: /Users/stanbouchet/astro-a11y/examples/static-site/dist

Mode: learning · Generated: 2026-04-19T12:02:04.910Z

Summary

2
Pages scanned
2
Critical
5
Major
0
Minor
0
Info

Issues

MAJOR

Document has no title

Page: http://127.0.0.1:56615/contact/

Rule: document-title · RGAA: 8.5

Why: A meaningful page title helps users understand where they are.

Fix: Ensure each page has a descriptive title element.

Affected nodes

Target: html

Failure: Fix any of the following: Document does not have a non-empty <title> element

Rule documentation

MAJOR

HTML element has no lang attribute

Page: http://127.0.0.1:56615/contact/

Rule: html-has-lang · RGAA: 8.3

Why: Assistive technologies need the page language to pronounce content correctly.

Fix: Set the lang attribute on the root html element.

Affected nodes

Target: html

Failure: Fix any of the following: The <html> element does not have a lang attribute

Rule documentation

CRITICAL

Form control is missing a label

Page: http://127.0.0.1:56615/contact/

Rule: label · RGAA: 11.1

Why: Form fields without labels are difficult or impossible to understand with assistive technologies.

Fix: Associate a visible or programmatic label with each form control.

Affected nodes

Target: #email

Failure: Fix any of the following: Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element has no placeholder attribute Element's default semantics were not overridden with role="none" or role="presentation"

Rule documentation

CRITICAL

Button has no accessible name

Page: http://127.0.0.1:56615/

Rule: button-name · RGAA: 11.9

Why: Assistive technologies cannot announce the purpose of the button.

Fix: Add visible text, aria-label, or an accessible name linked to the button.

Affected nodes

Target: button

Failure: Fix any of the following: Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> Element's default semantics were not overridden with role="none" or role="presentation"

Rule documentation

MAJOR

Insufficient color contrast

Page: http://127.0.0.1:56615/

Rule: color-contrast · RGAA: 3.2

Why: Low contrast makes text difficult to read for many users, including people with low vision.

Fix: Increase the contrast ratio between foreground and background colors.

Affected nodes

Target: .muted

Failure: Fix any of the following: Element has insufficient color contrast of 1.24 (foreground color: #888888, background color: #999999, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1

Rule documentation

MAJOR

Iframe has no title

Page: http://127.0.0.1:56615/

Rule: frame-title · RGAA: 2.1

Why: Users need a clear title to understand embedded content.

Fix: Add a concise and meaningful title attribute to the iframe.

Affected nodes

Target: iframe

Failure: Fix any of the following: Element has no title attribute aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element's default semantics were not overridden with role="none" or role="presentation"

Rule documentation

MAJOR

Alternative text missing on image

Page: http://127.0.0.1:56615/

Rule: image-alt · RGAA: 1.1

Why: Screen reader users cannot understand the purpose of the image.

Fix: Add a meaningful alt attribute, or alt="" for decorative images.

Affected nodes

Target: img

Failure: Fix any of the following: Element does not have an alt attribute aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element's default semantics were not overridden with role="none" or role="presentation"

Rule documentation