Accessibility fundamentals
Accessibility is a foundation of PatternFly, so if you contribute to PatternFly or use it for your products you should first familiarize yourself with our accessibility guidelines and recommendations.
No user should feel left behind when using your product. The goal of accessible design is to remove barriers and create inclusive product experiences that work for everyone, regardless of ability. This is best achieved when accessibility is considered early in the design and development process, but it's never too late to start prioritizing accessibility.
There’s always room to improve accessibility. That’s why our guidelines will continually evolve. Your feedback can help support PatternFly's accessibility, so we welcome you to contribute to our documentation or get involved in our GitHub discussions.
Assistive technologies
A core consideration for accessibility practices is the assistive technologies that people may use to access your product. While there are many kinds of assistive technologies, PatternFly focuses primarily on accommodating users of keyboards and screen readers.
Keyboard
Some users can’t use a mouse and rely on other methods of navigation instead, like a keyboard. A keyboard allows users to navigate through UI elements in the order that they appear on the page, typically using the Tab key. Keyboard users should be able to do anything that mouse users can, including viewing text that is shown upon hover or in popups.
Screen readers
When a user has impaired vision (temporary or permanent) that prevents them from viewing a screen, they can use a screen reader that reads visible and non-visible content aloud. Non-visible content includes hidden text, like tooltips, and alternative text (alt text) for icons, images, and links.
Understanding users’ needs
Great user experiences don’t just happen. They’re designed, tested, and refined with users in mind. To develop inclusive products, it’s important to understand the varying needs of all users and consider the assistive tools and methods that they use.
This section provides information to help you better understand and address some of the needs of users with diverse abilities. It is important to note that some users might fall into multiple groups, and some might use tools created for a different group.
Motor control
Users with reduced motor control often use a keyboard or computer mouse to access content. Some users may also have difficulty keeping a mouse steady when trying to interact with content.
To design for users with reduced motor control, remember that:
- Users who rely on a keyboard need elements that are keyboard accessible and highly visible when in focus.
- Users who rely on a mouse or touch need target areas that are large enough to be easily clicked and selected.
Vision
No vision
Users with no vision rely on screen readers to access web sites and applications. These users often navigate a page by observing specific elements, like headers, links, or form elements.
To design for users with no vision:
- Use semantic elements.
- Write labels that are meaningful when pulled out of context.
Low vision
Users with low vision can have different needs depending on the nature of their visual impairment, such as difficulty with color differentiation, blurriness, or lack of vision in central or peripheral areas.
To design for users with low vision:
- Interfaces should not rely on color alone to communicate information.
- Palettes must have sufficient contrast.
- Layouts should be responsive to font size increases.
Cognitive processing
Users who have difficulty processing information benefit from well-written content.
To design for users with cognitive processing issues:
- Write content that is clear, concise, and easy to scan.
- Consider visual hierarchy and chunk content into short, related sections.
- Avoid long paragraphs.
Accessibility spectrum
While there are a few main accessibility needs, it is not an exhaustive list. Often the “Persona Spectrum”, coined by Microsoft (Download the Inclusive Guidebook as a PDF), can be used to understand related mismatches and motivations across a spectrum of permanent, temporary, and situational scenarios.
While accessibility tends to focus on those with permanent disabilities, everyone benefits from accessible products:
- Accessible content supports better comprehension across language fluency and literacy levels.
- Alternative text (alt text) makes images accessible to users with low bandwidth connections or older technologies that can’t load the images.
- Closed captioning benefits those in crowded areas, those learning how to read, and those learning a new language.
Accessibility takes all users into account.

Experience parity
We believe that all abilities should be treated equally. There should be parity in the experience of all users—one user group shouldn't be prioritized over the other. To help you achieve this, consider these guidelines:
Content should be optimized for all input types: touch, mouse, and keyboard.
- Don’t optimize the experience for one input type at the expense of another.
- Contents that are mouse-accessible should also be accessible using touch or a keyboard.
- Don’t show interactive elements on hover.
- Interactive elements that display in a pop-up must also display on click, touch, or enter-key events.
Screen reader content should match visibly rendered content (refer to the first note for
aria-hiddenstate, but keep in mind this references an older version of WCAG guidelines).There should be parity between hover and focus events. Any information that’s available on hover for the mouse user should be available on keyboard focus.
- Make content that appears on hover available to a screen reader by using
aria-describedby(refer to Tooltips & Toggletips example from Inclusive Components).
- Make content that appears on hover available to a screen reader by using
When building accessible user experiences, solving for one can extend to many. Humans are diverse and unique, and designing for accessibility takes that into consideration to create truly inclusive products.
PatternFly component accessibility
We do our best to build accessibility into PatternFly's components to take some of the accessibility work off your hands.
As PatternFly is updated and enhanced, we check the accessibility of updates through a combination of automated and manual testing. We use aXe: The Accessibility Engine to ensure that all components pass an accessibility audit before they’re added to PatternFly.
We also regularly audit keyboard accessibility with both manual testing and integration tests. We aim to provide full support for VoiceOver as our main screen reader, but we still test our components through NVDA and JAWS. As part of our manual audit, every component is run through VoiceOver to make sure they’ll be as accessible as possible in your products.
Accessibility standards
We strive for compliance in accordance to level AA in the Web Content Accessibility Guidelines 2.2 across the core PatternFly HTML and React libraries, as well as our extensions and component groups. If you use or contribute to PatternFly, the following accessibility guidelines are some that you can expect PatternFly to adhere to (keep in mind this is not an exhaustive list):
Guideline | Link | Applies to | Tested |
|---|---|---|---|
Semantic HTML structures are used to accurately communicate the purpose and relationship of UI elements. | design html css | Automated testing with aXe and manual testing | |
Color is not the only method of communication. Providing meaning with color is supplementary to providing meaning with text. | design html css | Manual testing and aXe used | |
Colors used provide sufficient contrast | WCAG 1.4.3 and 1.4.11 | css | Automated testing with aXe |
Font sizes can scale up to 200% without loss of content or functionality, and up to 400% without needing to scroll in more than one direction. | WCAG 1.4.4 and 1.4.10 | css | Manual testing |
Styles that affect text spacing (line height, space between paragraphs, letter spacing, and word spacing) can be increased without loss of content or functionality. | css | Manual testing and aXe used | |
Contents that appear on hover and focus are dismissible, hoverable, and persistent. | html css js | Manual testing | |
All functionality is keyboard accessible. | WCAG 2.1.1 and 2.1.2 | html | Manual testing |
Elements in the HTML and in the layout follow a logical order. | WCAG 1.3.2 and 2.4.3 | design html css | Manual testing |
Flashing content does not flash more than three times in any one-second period, or the flash is below the general flash and red flash thresholds. | css | Manual testing | |
Elements with focus are clearly visible. | css | Manual testing | |
Elements that are focusable are not entirely obscured. | design | Manual testing | |
Functionality that uses complex gestures can also be operated with a single pointer without a path-based gesture. | design | Manual testing | |
Pointer events can be canceled. | js | Manual testing | |
Visible labels of UI components are either the same as the accessible name or used in the beginning of the accessible name. | html | Automated testing with aXe and manual testing | |
Any action that involves dragging has a pointer alternative. | js | Manual testing | |
The target area for clickable elements is at least 24 by 24 CSS pixels, with specific exceptions. | css | Manual testing | |
An accessible name, role, and value are provided for all user interface elements. | design html | Automated testing with aXe and manual testing with VoiceOver | |
Status messages can be programmatically determined through role or properties. | html | Manual testing |
