We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shawnmcb/a11y-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
wcag-criteria.json•41.4 KiB
{
"metadata": {
"version": "WCAG 2.2",
"lastUpdated": "2026-01-16",
"source": "W3C WCAG 2.2 Quick Reference"
},
"principles": [
{
"id": "1",
"name": "Perceivable",
"description": "Information and user interface components must be presentable to users in ways they can perceive."
},
{
"id": "2",
"name": "Operable",
"description": "User interface components and navigation must be operable."
},
{
"id": "3",
"name": "Understandable",
"description": "Information and the operation of user interface must be understandable."
},
{
"id": "4",
"name": "Robust",
"description": "Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies."
}
],
"criteria": [
{
"id": "1.1.1",
"name": "Non-text Content",
"level": "A",
"principle": "Perceivable",
"guideline": "1.1 Text Alternatives",
"description": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for specific situations.",
"techniques": ["G94", "G95", "H37", "H36", "H67", "ARIA6", "ARIA10"],
"failures": ["F3", "F13", "F20", "F30", "F38", "F39", "F65", "F67", "F71", "F72"],
"tests": ["Images have alt text", "Decorative images have empty alt or role=presentation", "Complex images have long descriptions"]
},
{
"id": "1.2.1",
"name": "Audio-only and Video-only (Prerecorded)",
"level": "A",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "For prerecorded audio-only and prerecorded video-only media, provide an alternative.",
"techniques": ["G158", "G159", "G166"],
"failures": ["F30", "F67"],
"tests": ["Audio has transcript", "Video has text description or audio track"]
},
{
"id": "1.2.2",
"name": "Captions (Prerecorded)",
"level": "A",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "Captions are provided for all prerecorded audio content in synchronized media.",
"techniques": ["G87", "G93", "H95"],
"failures": ["F8", "F75", "F74"],
"tests": ["Video has synchronized captions", "Captions are accurate and complete"]
},
{
"id": "1.2.3",
"name": "Audio Description or Media Alternative (Prerecorded)",
"level": "A",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "An alternative for time-based media or audio description is provided for prerecorded video content.",
"techniques": ["G69", "G58", "G78", "G173", "G8"],
"failures": ["F67"],
"tests": ["Video has audio description or text alternative"]
},
{
"id": "1.2.4",
"name": "Captions (Live)",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "Captions are provided for all live audio content in synchronized media.",
"techniques": ["G9", "G87", "G93"],
"failures": ["F8", "F74", "F75"],
"tests": ["Live video has real-time captions"]
},
{
"id": "1.2.5",
"name": "Audio Description (Prerecorded)",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "Audio description is provided for all prerecorded video content.",
"techniques": ["G78", "G173", "G8"],
"failures": ["F67"],
"tests": ["Video includes audio description track"]
},
{
"id": "1.2.6",
"name": "Sign Language (Prerecorded)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "Sign language interpretation is provided for all prerecorded audio content.",
"techniques": ["G54", "G81"],
"failures": [],
"tests": ["Video includes sign language interpretation"]
},
{
"id": "1.2.7",
"name": "Extended Audio Description (Prerecorded)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "Extended audio description is provided for all prerecorded video content where pauses are insufficient.",
"techniques": ["G8"],
"failures": [],
"tests": ["Video pauses for extended audio description when needed"]
},
{
"id": "1.2.8",
"name": "Media Alternative (Prerecorded)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "An alternative for time-based media is provided for all prerecorded synchronized media and video-only media.",
"techniques": ["G69", "G58", "H53"],
"failures": [],
"tests": ["Full text alternative provided for video"]
},
{
"id": "1.2.9",
"name": "Audio-only (Live)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.2 Time-based Media",
"description": "An alternative for time-based media is provided for all live audio-only content.",
"techniques": ["G151", "G150", "G157"],
"failures": [],
"tests": ["Live audio has real-time text alternative"]
},
{
"id": "1.3.1",
"name": "Info and Relationships",
"level": "A",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
"techniques": ["G115", "G117", "G140", "H42", "H48", "H49", "H51", "H63", "H65", "H71", "H73", "H85", "H97", "ARIA11", "ARIA12", "ARIA13", "ARIA16", "ARIA17", "ARIA20"],
"failures": ["F2", "F33", "F34", "F42", "F43", "F46", "F48", "F68", "F87", "F90", "F91", "F92"],
"tests": ["Headings use heading elements", "Lists use list markup", "Tables have headers", "Form fields have labels", "Landmarks used appropriately"]
},
{
"id": "1.3.2",
"name": "Meaningful Sequence",
"level": "A",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined.",
"techniques": ["G57", "H34", "C6", "C8", "C27"],
"failures": ["F1", "F32", "F33", "F34", "F49"],
"tests": ["DOM order matches visual order", "CSS positioning doesn't break reading order"]
},
{
"id": "1.3.3",
"name": "Sensory Characteristics",
"level": "A",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "Instructions do not rely solely on sensory characteristics such as shape, color, size, visual location, orientation, or sound.",
"techniques": ["G96"],
"failures": ["F14", "F26"],
"tests": ["Instructions don't rely only on color", "Instructions don't rely only on shape or location"]
},
{
"id": "1.3.4",
"name": "Orientation",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "Content does not restrict its view and operation to a single display orientation unless essential.",
"techniques": ["G214"],
"failures": ["F97", "F98"],
"tests": ["Content works in portrait and landscape", "No orientation lock unless essential"]
},
{
"id": "1.3.5",
"name": "Identify Input Purpose",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "The purpose of each input field collecting information about the user can be programmatically determined.",
"techniques": ["H98"],
"failures": [],
"tests": ["Input fields use autocomplete attribute", "Personal data fields have appropriate autocomplete values"]
},
{
"id": "1.3.6",
"name": "Identify Purpose",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.3 Adaptable",
"description": "The purpose of user interface components, icons, and regions can be programmatically determined.",
"techniques": ["ARIA11"],
"failures": [],
"tests": ["Icons have accessible names", "Regions have appropriate roles"]
},
{
"id": "1.4.1",
"name": "Use of Color",
"level": "A",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.",
"techniques": ["G14", "G111", "G182", "G183"],
"failures": ["F13", "F73", "F81"],
"tests": ["Links distinguishable without color", "Form errors not indicated by color alone", "Charts use patterns in addition to color"]
},
{
"id": "1.4.2",
"name": "Audio Control",
"level": "A",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "If any audio on a Web page plays automatically for more than 3 seconds, a mechanism is available to pause/stop or control volume.",
"techniques": ["G60", "G170", "G171"],
"failures": ["F23", "F93"],
"tests": ["Auto-playing audio can be paused", "Audio has volume control"]
},
{
"id": "1.4.3",
"name": "Contrast (Minimum)",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Text and images of text have a contrast ratio of at least 4.5:1, except for large text (3:1), incidental text, and logotypes.",
"techniques": ["G18", "G145", "G174"],
"failures": ["F24", "F83"],
"tests": ["Normal text has 4.5:1 contrast", "Large text (18pt or 14pt bold) has 3:1 contrast"]
},
{
"id": "1.4.4",
"name": "Resize Text",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Text can be resized without assistive technology up to 200 percent without loss of content or functionality.",
"techniques": ["G142", "G146", "G178", "G179", "C12", "C13", "C14", "C28"],
"failures": ["F69", "F80", "F94"],
"tests": ["Text resizes to 200%", "No horizontal scrolling at 200% zoom"]
},
{
"id": "1.4.5",
"name": "Images of Text",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "If the technologies being used can achieve the visual presentation, text is used rather than images of text.",
"techniques": ["C22", "C30", "G140"],
"failures": [],
"tests": ["Text used instead of images of text", "Logos excepted"]
},
{
"id": "1.4.6",
"name": "Contrast (Enhanced)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Text and images of text have a contrast ratio of at least 7:1, except for large text (4.5:1), incidental text, and logotypes.",
"techniques": ["G17", "G148", "G174"],
"failures": ["F24", "F83"],
"tests": ["Normal text has 7:1 contrast", "Large text has 4.5:1 contrast"]
},
{
"id": "1.4.7",
"name": "Low or No Background Audio",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "For prerecorded audio-only content with primarily speech, background sounds are at least 20 dB lower than foreground speech.",
"techniques": ["G56"],
"failures": [],
"tests": ["Speech is 20dB louder than background"]
},
{
"id": "1.4.8",
"name": "Visual Presentation",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "For visual presentation of blocks of text, a mechanism is available to select foreground/background colors, width, line spacing, and text alignment.",
"techniques": ["C19", "C20", "C21", "G146", "G148", "G156", "G169", "G175"],
"failures": ["F24", "F88"],
"tests": ["User can adjust colors", "Line height at least 1.5", "Paragraph spacing at least 2x line spacing", "Text not justified"]
},
{
"id": "1.4.9",
"name": "Images of Text (No Exception)",
"level": "AAA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Images of text are only used for pure decoration or where a particular presentation is essential.",
"techniques": ["C22", "C30", "G140"],
"failures": [],
"tests": ["No images of text except decoration"]
},
{
"id": "1.4.10",
"name": "Reflow",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Content can be presented without loss of information or functionality, and without requiring scrolling in two dimensions at 320 CSS pixels wide or 256 CSS pixels tall.",
"techniques": ["C31", "C32", "C33", "C38", "C34"],
"failures": ["F102"],
"tests": ["No horizontal scroll at 320px width", "No vertical scroll at 256px height for horizontal content"]
},
{
"id": "1.4.11",
"name": "Non-text Contrast",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Visual information required to identify UI components and graphical objects has a contrast ratio of at least 3:1.",
"techniques": ["G195", "G207", "G209"],
"failures": ["F78"],
"tests": ["UI component boundaries have 3:1 contrast", "Focus indicators have 3:1 contrast", "Icons have 3:1 contrast"]
},
{
"id": "1.4.12",
"name": "Text Spacing",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "No loss of content or functionality when adjusting line height to 1.5x, paragraph spacing to 2x, letter spacing to 0.12x, and word spacing to 0.16x font size.",
"techniques": ["C35", "C36", "C8", "C21"],
"failures": ["F104"],
"tests": ["Content readable with increased text spacing", "No content clipped or overlapping"]
},
{
"id": "1.4.13",
"name": "Content on Hover or Focus",
"level": "AA",
"principle": "Perceivable",
"guideline": "1.4 Distinguishable",
"description": "Where hover or focus triggers additional content to appear, the additional content is dismissible, hoverable, and persistent.",
"techniques": ["ARIA21"],
"failures": ["F95"],
"tests": ["Hover content dismissible with Escape", "Pointer can move to hover content", "Content persists until dismissed"]
},
{
"id": "2.1.1",
"name": "Keyboard",
"level": "A",
"principle": "Operable",
"guideline": "2.1 Keyboard Accessible",
"description": "All functionality is operable through a keyboard interface without requiring specific timings for individual keystrokes.",
"techniques": ["G202", "H91", "SCR2", "SCR20", "SCR35"],
"failures": ["F42", "F54", "F55"],
"tests": ["All interactive elements focusable", "All actions triggerable by keyboard", "No mouse-only interactions"]
},
{
"id": "2.1.2",
"name": "No Keyboard Trap",
"level": "A",
"principle": "Operable",
"guideline": "2.1 Keyboard Accessible",
"description": "If keyboard focus can be moved to a component, focus can be moved away using only a keyboard.",
"techniques": ["G21", "FLASH17"],
"failures": ["F10"],
"tests": ["Can Tab out of all components", "Modal dialogs trap focus appropriately but allow escape"]
},
{
"id": "2.1.3",
"name": "Keyboard (No Exception)",
"level": "AAA",
"principle": "Operable",
"guideline": "2.1 Keyboard Accessible",
"description": "All functionality is operable through a keyboard interface without exception.",
"techniques": ["G202"],
"failures": [],
"tests": ["All functionality keyboard accessible including path-dependent input"]
},
{
"id": "2.1.4",
"name": "Character Key Shortcuts",
"level": "A",
"principle": "Operable",
"guideline": "2.1 Keyboard Accessible",
"description": "If a keyboard shortcut uses only letter, punctuation, number, or symbol characters, it can be turned off, remapped, or is only active on focus.",
"techniques": [],
"failures": ["F99"],
"tests": ["Single-character shortcuts can be disabled", "Shortcuts can be remapped", "Shortcuts only active when component focused"]
},
{
"id": "2.2.1",
"name": "Timing Adjustable",
"level": "A",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "For each time limit, at least one of the following is true: turn off, adjust, extend, or the time limit is essential/real-time/20+ hours.",
"techniques": ["G4", "G133", "G180", "G198", "SCR1", "SCR16", "SCR33", "SCR36"],
"failures": ["F40", "F41", "F58"],
"tests": ["Time limits can be extended", "User warned before timeout", "Session data preserved after timeout"]
},
{
"id": "2.2.2",
"name": "Pause, Stop, Hide",
"level": "A",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "For moving, blinking, scrolling, or auto-updating information, there is a mechanism to pause, stop, or hide.",
"techniques": ["G4", "G11", "G152", "G186", "G187", "G191", "SCR22", "SCR33"],
"failures": ["F4", "F7", "F16", "F47", "F50"],
"tests": ["Carousels have pause button", "Animations can be stopped", "Auto-updating content can be paused"]
},
{
"id": "2.2.3",
"name": "No Timing",
"level": "AAA",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "Timing is not an essential part of the event or activity, except for non-interactive synchronized media and real-time events.",
"techniques": ["G5"],
"failures": [],
"tests": ["No time limits"]
},
{
"id": "2.2.4",
"name": "Interruptions",
"level": "AAA",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "Interruptions can be postponed or suppressed by the user, except for emergencies.",
"techniques": ["G75", "G76", "SCR14"],
"failures": ["F40", "F41"],
"tests": ["User can disable non-emergency interruptions"]
},
{
"id": "2.2.5",
"name": "Re-authenticating",
"level": "AAA",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "When an authenticated session expires, the user can continue without loss of data after re-authenticating.",
"techniques": ["G105", "G181"],
"failures": ["F12"],
"tests": ["Data preserved after re-authentication"]
},
{
"id": "2.2.6",
"name": "Timeouts",
"level": "AAA",
"principle": "Operable",
"guideline": "2.2 Enough Time",
"description": "Users are warned of the duration of any user inactivity that could cause data loss, unless data is preserved for more than 20 hours.",
"techniques": ["G180", "G198"],
"failures": [],
"tests": ["Timeout warning provided", "Data preserved 20+ hours"]
},
{
"id": "2.3.1",
"name": "Three Flashes or Below Threshold",
"level": "A",
"principle": "Operable",
"guideline": "2.3 Seizures and Physical Reactions",
"description": "Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below general and red flash thresholds.",
"techniques": ["G15", "G19", "G176"],
"failures": ["F23", "F24"],
"tests": ["No content flashes more than 3 times per second", "Flashing area is small enough"]
},
{
"id": "2.3.2",
"name": "Three Flashes",
"level": "AAA",
"principle": "Operable",
"guideline": "2.3 Seizures and Physical Reactions",
"description": "Web pages do not contain anything that flashes more than three times in any one second period.",
"techniques": ["G19"],
"failures": [],
"tests": ["No content flashes more than 3 times per second"]
},
{
"id": "2.3.3",
"name": "Animation from Interactions",
"level": "AAA",
"principle": "Operable",
"guideline": "2.3 Seizures and Physical Reactions",
"description": "Motion animation triggered by interaction can be disabled, unless essential.",
"techniques": ["C39"],
"failures": [],
"tests": ["Animation can be disabled", "Respects prefers-reduced-motion"]
},
{
"id": "2.4.1",
"name": "Bypass Blocks",
"level": "A",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.",
"techniques": ["G1", "G123", "G124", "H64", "H69", "H70", "H77", "H78", "H79", "H80", "H81", "SCR28", "ARIA11"],
"failures": [],
"tests": ["Skip link to main content", "Proper heading structure", "Landmark regions used"]
},
{
"id": "2.4.2",
"name": "Page Titled",
"level": "A",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "Web pages have titles that describe topic or purpose.",
"techniques": ["G88", "G127", "H25"],
"failures": ["F25"],
"tests": ["Page has descriptive title", "Title unique within site"]
},
{
"id": "2.4.3",
"name": "Focus Order",
"level": "A",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "If a Web page can be navigated sequentially and navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability.",
"techniques": ["G59", "H4", "C27", "SCR26", "SCR27", "SCR37"],
"failures": ["F44", "F85"],
"tests": ["Focus order is logical", "Tabindex doesn't create illogical order"]
},
{
"id": "2.4.4",
"name": "Link Purpose (In Context)",
"level": "A",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined context.",
"techniques": ["G53", "G91", "H24", "H30", "H33", "H77", "H78", "H79", "H80", "H81", "SCR30", "ARIA7", "ARIA8"],
"failures": ["F63", "F89"],
"tests": ["Link text describes destination", "Links with same text go to same destination"]
},
{
"id": "2.4.5",
"name": "Multiple Ways",
"level": "AA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "More than one way is available to locate a Web page within a set of Web pages, except where the page is a result of or step in a process.",
"techniques": ["G63", "G64", "G125", "G126", "G161", "G185"],
"failures": [],
"tests": ["Site has search", "Site has sitemap", "Multiple navigation mechanisms"]
},
{
"id": "2.4.6",
"name": "Headings and Labels",
"level": "AA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "Headings and labels describe topic or purpose.",
"techniques": ["G130", "G131"],
"failures": [],
"tests": ["Headings are descriptive", "Labels are descriptive"]
},
{
"id": "2.4.7",
"name": "Focus Visible",
"level": "AA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible.",
"techniques": ["G149", "G165", "G195", "C15", "C40", "SCR31"],
"failures": ["F55", "F78"],
"tests": ["Focus indicator visible", "Focus indicator has sufficient contrast"]
},
{
"id": "2.4.8",
"name": "Location",
"level": "AAA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "Information about the user's location within a set of Web pages is available.",
"techniques": ["G63", "G65", "G127", "G128"],
"failures": [],
"tests": ["Breadcrumb navigation", "Current page indicated in navigation"]
},
{
"id": "2.4.9",
"name": "Link Purpose (Link Only)",
"level": "AAA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "A mechanism is available to allow the purpose of each link to be identified from link text alone.",
"techniques": ["G91", "H24", "H30", "ARIA8"],
"failures": ["F84", "F89"],
"tests": ["All link text is self-descriptive"]
},
{
"id": "2.4.10",
"name": "Section Headings",
"level": "AAA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "Section headings are used to organize the content.",
"techniques": ["G141", "H69"],
"failures": [],
"tests": ["Content organized with section headings"]
},
{
"id": "2.4.11",
"name": "Focus Not Obscured (Minimum)",
"level": "AA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "When a user interface component receives keyboard focus, the component is not entirely hidden by author-created content.",
"techniques": ["C43"],
"failures": ["F110"],
"tests": ["Focused element at least partially visible", "Sticky headers don't hide focus"]
},
{
"id": "2.4.12",
"name": "Focus Not Obscured (Enhanced)",
"level": "AAA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "When a user interface component receives keyboard focus, no part of the component is hidden by author-created content.",
"techniques": ["C43"],
"failures": [],
"tests": ["Focused element fully visible"]
},
{
"id": "2.4.13",
"name": "Focus Appearance",
"level": "AA",
"principle": "Operable",
"guideline": "2.4 Navigable",
"description": "When keyboard focus indicator is visible, the focus indicator area is at least as large as a 2 CSS pixel thick perimeter and has 3:1 contrast against unfocused state.",
"techniques": ["C40", "C41"],
"failures": [],
"tests": ["Focus indicator at least 2px thick perimeter", "Focus indicator has 3:1 contrast change"]
},
{
"id": "2.5.1",
"name": "Pointer Gestures",
"level": "A",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "All functionality that uses multipoint or path-based gestures can be operated with a single pointer without a path-based gesture.",
"techniques": ["G215", "G216"],
"failures": ["F105"],
"tests": ["Pinch/zoom has alternatives", "Path-based gestures have alternatives"]
},
{
"id": "2.5.2",
"name": "Pointer Cancellation",
"level": "A",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "For single pointer functionality, at least one of the following is true: no down-event, abort/undo, up reversal, or essential.",
"techniques": ["G210", "G211", "G212"],
"failures": ["F101"],
"tests": ["Actions trigger on up-event", "Actions can be aborted"]
},
{
"id": "2.5.3",
"name": "Label in Name",
"level": "A",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "For UI components with labels that include text or images of text, the accessible name contains the text that is presented visually.",
"techniques": ["G208", "G211"],
"failures": ["F96"],
"tests": ["Accessible name includes visible text", "Button text matches accessible name"]
},
{
"id": "2.5.4",
"name": "Motion Actuation",
"level": "A",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "Functionality operated by device motion or user motion can also be operated by UI components and response to motion can be disabled.",
"techniques": ["G213", "ARIA19"],
"failures": ["F106"],
"tests": ["Shake/tilt has UI alternative", "Motion can be disabled"]
},
{
"id": "2.5.5",
"name": "Target Size (Enhanced)",
"level": "AAA",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "The size of the target for pointer inputs is at least 44 by 44 CSS pixels.",
"techniques": [],
"failures": [],
"tests": ["Touch targets at least 44x44 CSS pixels"]
},
{
"id": "2.5.6",
"name": "Concurrent Input Mechanisms",
"level": "AAA",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "Web content does not restrict use of input modalities available on a platform except where the restriction is essential or required for security.",
"techniques": ["G217"],
"failures": ["F98"],
"tests": ["Can use keyboard, mouse, touch interchangeably"]
},
{
"id": "2.5.7",
"name": "Dragging Movements",
"level": "AA",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "All functionality that uses a dragging movement can be achieved by a single pointer without dragging, unless dragging is essential.",
"techniques": ["G219"],
"failures": ["F108"],
"tests": ["Drag-and-drop has single-click alternative"]
},
{
"id": "2.5.8",
"name": "Target Size (Minimum)",
"level": "AA",
"principle": "Operable",
"guideline": "2.5 Input Modalities",
"description": "The size of the target for pointer inputs is at least 24 by 24 CSS pixels, with exceptions for inline targets, user agent control, essential sizing, and spacing.",
"techniques": ["C42"],
"failures": ["F109"],
"tests": ["Touch targets at least 24x24 CSS pixels or have sufficient spacing"]
},
{
"id": "3.1.1",
"name": "Language of Page",
"level": "A",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "The default human language of each Web page can be programmatically determined.",
"techniques": ["H57", "ARIA20"],
"failures": ["F41"],
"tests": ["HTML has lang attribute", "lang attribute has valid value"]
},
{
"id": "3.1.2",
"name": "Language of Parts",
"level": "AA",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "The human language of each passage or phrase in the content can be programmatically determined except for proper names, technical terms, words of indeterminate language, and words that have become part of the vernacular.",
"techniques": ["H58"],
"failures": [],
"tests": ["Foreign phrases marked with lang attribute"]
},
{
"id": "3.1.3",
"name": "Unusual Words",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "A mechanism is available for identifying specific definitions of words or phrases used in an unusual or restricted way.",
"techniques": ["G55", "G62", "G70", "G101", "G102", "H40", "H60", "H54"],
"failures": [],
"tests": ["Jargon is defined", "Glossary available"]
},
{
"id": "3.1.4",
"name": "Abbreviations",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "A mechanism for identifying the expanded form or meaning of abbreviations is available.",
"techniques": ["G55", "G62", "G70", "G97", "G102", "H28", "H60", "H54"],
"failures": [],
"tests": ["Abbreviations expanded on first use", "Abbreviations defined"]
},
{
"id": "3.1.5",
"name": "Reading Level",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "When text requires reading ability more advanced than lower secondary education level, supplemental content or a version at that level is available.",
"techniques": ["G79", "G86", "G103", "G153", "G160"],
"failures": [],
"tests": ["Content readable at lower secondary level", "Simplified version available"]
},
{
"id": "3.1.6",
"name": "Pronunciation",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.1 Readable",
"description": "A mechanism is available for identifying specific pronunciation of words where meaning is ambiguous without knowing pronunciation.",
"techniques": ["G62", "G120", "G121", "G163", "H62"],
"failures": [],
"tests": ["Pronunciation indicated for ambiguous words"]
},
{
"id": "3.2.1",
"name": "On Focus",
"level": "A",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "When any user interface component receives focus, it does not initiate a change of context.",
"techniques": ["G107"],
"failures": ["F52", "F55"],
"tests": ["No context change on focus", "No auto-submit on focus"]
},
{
"id": "3.2.2",
"name": "On Input",
"level": "A",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised beforehand.",
"techniques": ["G80", "G13", "SCR19", "H32", "H84", "G201"],
"failures": ["F36", "F37"],
"tests": ["No auto-redirect on select change", "User warned of context changes"]
},
{
"id": "3.2.3",
"name": "Consistent Navigation",
"level": "AA",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "Navigational mechanisms that are repeated on multiple Web pages within a set occur in the same relative order each time.",
"techniques": ["G61"],
"failures": ["F66"],
"tests": ["Navigation order consistent across pages"]
},
{
"id": "3.2.4",
"name": "Consistent Identification",
"level": "AA",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "Components that have the same functionality within a set of Web pages are identified consistently.",
"techniques": ["G197"],
"failures": ["F31"],
"tests": ["Same function has same label across site"]
},
{
"id": "3.2.5",
"name": "Change on Request",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "Changes of context are initiated only by user request or a mechanism is available to turn off such changes.",
"techniques": ["G76", "G110", "H32", "H84", "G13", "SCR24"],
"failures": ["F22", "F52", "F60", "F61"],
"tests": ["No unexpected page changes", "User controls context changes"]
},
{
"id": "3.2.6",
"name": "Consistent Help",
"level": "A",
"principle": "Understandable",
"guideline": "3.2 Predictable",
"description": "If a Web page contains help mechanisms they occur in the same relative order on each page.",
"techniques": ["G220"],
"failures": [],
"tests": ["Help link in consistent location"]
},
{
"id": "3.3.1",
"name": "Error Identification",
"level": "A",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text.",
"techniques": ["G83", "G84", "G85", "SCR18", "SCR32", "ARIA18", "ARIA19", "ARIA21"],
"failures": [],
"tests": ["Error messages describe the error", "Error field identified", "Error not indicated by color alone"]
},
{
"id": "3.3.2",
"name": "Labels or Instructions",
"level": "A",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "Labels or instructions are provided when content requires user input.",
"techniques": ["G13", "G89", "G131", "G162", "G184", "G167", "H44", "H65", "H71", "H90", "ARIA1", "ARIA9", "ARIA17"],
"failures": ["F82"],
"tests": ["Form fields have labels", "Required fields marked", "Format instructions provided"]
},
{
"id": "3.3.3",
"name": "Error Suggestion",
"level": "AA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "If an input error is detected and suggestions for correction are known, they are provided to the user unless it would jeopardize security or purpose.",
"techniques": ["G83", "G84", "G85", "G177", "SCR18", "SCR32", "ARIA2", "ARIA18"],
"failures": [],
"tests": ["Error messages suggest corrections", "Valid format examples shown"]
},
{
"id": "3.3.4",
"name": "Error Prevention (Legal, Financial, Data)",
"level": "AA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "For legal commitments, financial transactions, or user-controllable data: submissions are reversible, data is checked with opportunity to correct, or a confirmation mechanism is provided.",
"techniques": ["G98", "G99", "G155", "G164", "G168", "SCR18"],
"failures": [],
"tests": ["Confirmation before submission", "Data can be reviewed before submit", "Submissions are reversible"]
},
{
"id": "3.3.5",
"name": "Help",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "Context-sensitive help is available.",
"techniques": ["G71", "G89", "G184", "G193", "G194"],
"failures": [],
"tests": ["Help text available for complex forms", "Context-sensitive help provided"]
},
{
"id": "3.3.6",
"name": "Error Prevention (All)",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "For all forms that require user submission: submissions are reversible, data is checked with opportunity to correct, or confirmation is provided.",
"techniques": ["G98", "G99", "G155", "G164", "G168"],
"failures": [],
"tests": ["All forms have confirmation or undo"]
},
{
"id": "3.3.7",
"name": "Redundant Entry",
"level": "A",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "Information previously entered or provided that is required to be entered again in the same process is either auto-populated or available for selection.",
"techniques": ["G221", "H100"],
"failures": [],
"tests": ["Previously entered data auto-filled", "Address selection from previous entry"]
},
{
"id": "3.3.8",
"name": "Accessible Authentication (Minimum)",
"level": "AA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "A cognitive function test is not required for any step in an authentication process unless an alternative, mechanism, or object recognition is provided.",
"techniques": ["G218", "H100"],
"failures": [],
"tests": ["No cognitive tests for login", "Password managers supported", "Object recognition allowed"]
},
{
"id": "3.3.9",
"name": "Accessible Authentication (Enhanced)",
"level": "AAA",
"principle": "Understandable",
"guideline": "3.3 Input Assistance",
"description": "A cognitive function test is not required for any step in an authentication process.",
"techniques": ["G218"],
"failures": [],
"tests": ["No cognitive tests for authentication at all"]
},
{
"id": "4.1.1",
"name": "Parsing",
"level": "A",
"principle": "Robust",
"guideline": "4.1 Compatible",
"description": "In content implemented using markup languages, elements have complete start and end tags, are nested according to specifications, do not contain duplicate attributes, and IDs are unique.",
"techniques": ["G134", "G192", "H74", "H75", "H88", "H93", "H94"],
"failures": ["F70", "F77"],
"tests": ["Valid HTML", "No duplicate IDs", "Proper nesting"]
},
{
"id": "4.1.2",
"name": "Name, Role, Value",
"level": "A",
"principle": "Robust",
"guideline": "4.1 Compatible",
"description": "For all user interface components, the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes is available to user agents.",
"techniques": ["G10", "G108", "G135", "H64", "H65", "H88", "H91", "ARIA4", "ARIA5", "ARIA14", "ARIA16", "ARIA18"],
"failures": ["F15", "F20", "F59", "F68", "F79", "F86", "F89"],
"tests": ["Custom controls have accessible names", "Roles match functionality", "State changes announced"]
},
{
"id": "4.1.3",
"name": "Status Messages",
"level": "AA",
"principle": "Robust",
"guideline": "4.1 Compatible",
"description": "In content implemented using markup languages, status messages can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.",
"techniques": ["ARIA19", "ARIA22", "ARIA23", "G199"],
"failures": ["F103"],
"tests": ["Status messages use live regions", "Appropriate role for status type"]
}
]
}