Document accessibility
82 checks the PDF accessibility checker runs against PDF files (PDF/UA — ISO 14289).
Document level
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-doc-title — The document needs a title | 2.4.2 (A) | Low | PDF/UA | WCAG A EN 301 549 |
| pdf-doc-tags — The document must be a tagged PDF | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-doc-lang — The document needs a primary language | 3.1.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-doc-pdf-standard — The file should declare PDF/UA conformance | — | Low | PDF/UA | |
| pdf-doc-bookmarks — Long documents need bookmarks | 2.4.5 (AA) | Low | PDF/UA | WCAG AA EN 301 549 |
| pdf-doc-accessibility-permissions — Security settings must not block assistive technology | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-doc-logical-order — Reading order must follow the visual order | 1.3.2 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-outline-action-entry — Bookmarks must actually go somewhere | 2.4.5 (AA) | Medium | PDF/UA | WCAG AA EN 301 549 |
| pdf-intra-doc-structure-dest — Internal links should target structure, not page numbers | — | Medium | PDF/UA |
Metadata
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-metadata-embedded-file-specs — Attachments need a Unicode filename | — | Low | PDF/UA | |
| pdf-metadata-display-title — Viewers should show the title, not the file name | 2.4.2 (A) | Low | PDF/UA | WCAG A EN 301 549 |
| pdf-xmp-text-pua — Metadata must not contain private-use characters | 2.4.2 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
Page content
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-content-is-tagged — All real content must be tagged, decoration marked as artifact | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-color-contrast — Text needs sufficient contrast against its background | 1.4.3 (AA) | High | PDF/UA | WCAG AA EN 301 549 |
Headings
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-h-tag-usage — Use numbered headings, not the generic H tag | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-header-nesting — Heading levels must not skip | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-first-header-level — The first heading should be an H1 | 1.3.1 (A) | Low | PDF/UA | WCAG A EN 301 549 |
| pdf-multiple-h-in-parent — Only one generic H per parent | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
Figures & images
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-figure-alt-text — Images need alternative text | 1.1.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-image-outside-figure — Images must be tagged as figures | 1.1.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-figure-alt-text-exposure — Ancestor alt text is shadowing a figure | 1.1.1 (A) | Low | PDF/UA | WCAG A EN 301 549 |
| pdf-figure-bbox — Figures need a bounding box | — | Medium | PDF/UA | |
| pdf-formula-alt-text — Formulas need alternative text | 1.1.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
Tables
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-table-headers-exist — Tables need header cells | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-table-header-scope — Header cells need a scope | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-table-data-association — Data cells need to be linked to their headers | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-table-legality — Tables need valid row and cell structure | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-table-regularity — Tables must have a consistent column count | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-table-header-structure — TH cells must sit directly inside a row | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-table-data-structure — TD cells must sit directly inside a row | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-table-row-structure — Rows must sit inside the table or a row group | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-table-summary — Complex tables benefit from a summary | — | Low | PDF/UA |
Lists
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-list-parent-element — List items must sit inside a list | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-list-body-element — List item content needs an LBody | 1.3.1 (A) | Low | PDF/UA | WCAG A EN 301 549 |
Links
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-link-description — Links need a meaningful description | 2.4.4 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-link-parent-link — Link annotations belong inside a Link element | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-link-alt-text-exposure — Nested link tags hide the link description | 2.4.4 (A) | Low | PDF/UA | WCAG A EN 301 549 |
Forms
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-form-field-description — Form fields need labels | 3.3.2 (A), 4.1.2 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-form-field-hidden — Form fields must not be hidden by ancestor alt text | 4.1.2 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-widget-parent-form — Form widgets belong inside a Form element | 4.1.2 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-form-lbl-structure — Visible form labels need an Lbl element | 1.3.1 (A), 3.3.2 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-choice-field-opt-text — Dropdown options need text | 4.1.2 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-radio-button-unique-names — Radio groups need distinct field names | 4.1.2 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-text-field-rv-requires-v — Rich-text fields need a plain-text value | 4.1.2 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-xfa-form-present — XFA forms are not allowed | 4.1.2 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
Annotations
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-annot-tagged — Annotations must appear in the tag tree | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-annot-tab-order — Pages with annotations need a tab order | 2.4.3 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-annot-deprecated-type — Remove deprecated annotation types | — | High | PDF/UA | |
| pdf-markup-annot-tagged — Markup annotations must be tagged | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-markup-annot-description — Markup annotations need a description | 1.1.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-markup-annot-parent-annot — Markup annotations belong inside an Annot element | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-annot-invalid-parent — Annotations must not hang off headings or the document root | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-popup-in-structure — Popup annotations must stay out of the tag tree | — | Medium | PDF/UA | |
| pdf-printermark-artifact — Printer marks must be artifacts | — | Medium | PDF/UA | |
| pdf-screen-annot-contents — Embedded media needs a text description | 1.1.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-multimedia-alt-description — 3D and rich media need alternative descriptions | 1.1.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-media-clip-alt — Media clips need an Alt entry | 1.2.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-media-clip-ct — Media clips need a content type | — | Medium | PDF/UA | |
| pdf-fileattachment-metadata — File attachments need a description and relationship | — | High | PDF/UA |
Fonts & text encoding
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-content-font-embedding — All fonts must be embedded | — | Critical | PDF/UA | |
| pdf-character-unicode — Every character must map to Unicode | 1.3.1 (A) | Critical | PDF/UA | WCAG A EN 301 549 |
| pdf-pua-character-usage — Avoid Private Use Area characters for real text | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-font-unicode-invalid-values — ToUnicode maps must not use reserved codepoints | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-font-cidsysteminfo-compat — CIDSystemInfo must agree between font and CMap | — | High | PDF/UA | |
| pdf-font-cidtogidmap — Embedded CIDFontType2 fonts need a CIDToGIDMap | — | High | PDF/UA | |
| pdf-font-cmap-embedded — Custom CMaps must be embedded | — | High | PDF/UA | |
| pdf-font-wmode-consistent — CMap writing mode must be consistent | — | Medium | PDF/UA | |
| pdf-font-charset-complete — Type 1 CharSet must list every embedded glyph | — | Medium | PDF/UA | |
| pdf-font-cidset-complete — CIDSet must list every embedded CID | — | Medium | PDF/UA | |
| pdf-font-glyph-width-consistent — Declared glyph widths must match the font program | — | Medium | PDF/UA | |
| pdf-font-truetype-nonsymbolic-encoding — Non-symbolic TrueType fonts need a valid encoding | — | High | PDF/UA | |
| pdf-font-truetype-symbolic-encoding — Symbolic TrueType fonts must not declare an encoding | — | Medium | PDF/UA |
Structure & other
| Rule | WCAG | Impact | Mode | Standards |
|---|---|---|---|---|
| pdf-custom-tag-mapping — Custom tags must be role-mapped | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-standard-type-remapped — Standard tags must not be re-mapped | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-note-tag-usage — Use FENote instead of Note | — | High | PDF/UA | |
| pdf-fenote-notetype — FENote elements should declare their note type | — | Medium | PDF/UA | |
| pdf-code-alt-text — Code blocks need alternative text | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-toci-ref-entry — Table-of-contents entries need a target | 1.3.1 (A) | Medium | PDF/UA | WCAG A EN 301 549 |
| pdf-reference-xobject — Reference XObjects are not allowed | — | High | PDF/UA | |
| pdf-form-xobject-mcid-multiref — Tagged Form XObjects must be referenced once | 1.3.1 (A) | High | PDF/UA | WCAG A EN 301 549 |
| pdf-occd-name — Layer configurations need a name | — | Medium | PDF/UA | |
| pdf-occd-as-key — Automatic layer state is not allowed | — | Medium | PDF/UA |