Vale CMS Need more than a rule playground? Explore
Package Explorer

A11y

Accessible writing: alt text, link text, heading structure, table headers, instructions that rely on color or position, a reading grade per paragraph, and an inclusive-language word list, from the parts of WCAG 2.2 that live in the text.

jdkato/a11y 0 stars 3 downloads v0.1.0 · Sep 24, 2026 latest release style Vale ≥ 3.23.0

Getting started

Add it to your .vale.ini, then run vale sync.

Packages = A11y

[*.md]
BasedOnStyles = Vale, A11y

The name installs the latest release each time vale sync runs. To stay on v0.1.0, the release this page describes, give its URL instead:

Packages = https://github.com/jdkato/a11y/releases/download/v0.1.0/A11y.zip

Rules 19

3 error5 warning11 suggestion
  • A11y.Ableist suggestion substitution

    Consider '%s' instead of '%s'.

  • A11y.AltEmpty warning existence scope: raw.md Style guide

    An image with no alt text. Describe what it shows, or, if it's decorative, write it as an HTML img with alt="".

  • A11y.AltFileName warning existence scope: alt Style guide

    Alt text '%s' is a file name. Describe the image.

  • A11y.AltLength suggestion metric scope: alt Style guide

    Alt text of %s characters. Keep it under 125, and put the detail in the body or a caption.

  • A11y.AltMissing error existence scope: raw Style guide

    An img without an alt attribute. Describe it, or mark it decorative with alt="".

  • A11y.AltPlaceholder warning existence scope: alt Style guide

    Alt text '%s' describes nothing. Say what the image shows.

  • A11y.AltRedundant suggestion existence scope: alt Style guide

    Alt text opens with '%s'. A screen reader already says it's an image; start with what it shows.

  • A11y.Gendered suggestion substitution

    Consider '%s' instead of '%s'.

  • A11y.Grade suggestion metric scope: paragraph Style guide

    This paragraph reads at grade %s. The reading-level target is about grade 9; shorter sentences and plainer words bring it down.

  • A11y.HeadingLength suggestion occurrence scope: heading Style guide

    %d words in a heading. Keep it short enough to skim.

  • A11y.HeadingMultiple suggestion metric Style guide

    %s top-level headings. A page has one; the rest are sections.

  • A11y.HeadingSkip error existence scope: doc(section:has(> h1) > section:has(> h3)), doc(section:has(> h1) > section:has(> h4)), doc(section:has(> h1) > section:has(> h5)), doc(section:has(> h1) > section:has(> h6)), doc(section:has(> h2) > section:has(> h4)), doc(section:has(> h2) > section:has(> h5)), doc(section:has(> h2) > section:has(> h6)), doc(section:has(> h3) > section:has(> h5)), doc(section:has(> h3) > section:has(> h6)), doc(section:has(> h4) > section:has(> h6)) Style guide

    This heading skips a level. Screen reader users navigate by heading level; use the next one down.

  • A11y.LinkGeneric warning existence scope: link Style guide

    '%s' says nothing about where the link goes. Name the page or the action.

  • A11y.LinkURL warning existence scope: raw Style guide

    A URL as link text. A screen reader spells it out; name the page instead.

  • A11y.Loaded suggestion substitution

    Consider '%s' instead of '%s'.

  • A11y.Sensory suggestion existence Style guide

    '%s' points by color, shape, or position. Name the control, or add a label.

  • A11y.Sentence suggestion occurrence scope: sentence Style guide

    %d words in one sentence. Split it.

  • A11y.Shouting suggestion existence

    '%s' is in all caps. Use emphasis markup, which a screen reader can announce.

  • A11y.TableHeader error existence scope: doc(table:not(:has(th))) Style guide

    A table without a header row. A screen reader announces the header with each cell; give the first row th cells.