| Contents |

12 Accessibility Best Practices for Your Project

Accessibility (often shortened to a11y) means people can use your project regardless of disability, assistive technology, environment, or device. It includes - but isn’t limited to - support for screen readers, keyboard-only navigation, captions/transcripts, sufficient color contrast, and clear content structure.

Partner with people with disabilities

“Nothing about us without us” - The most important thing you can do for accessibility is to center the people it serves. Users, contributors, and testers with disabilities understand barriers in ways that guidelines and automated tools cannot. Seek out their lived experience early and often.

Put it into practice

Decisions made without the people affected by them tend to miss the mark. Building with people with disabilities, rather than for them, leads to better software for everyone.

Here are a few ways to center lived experience:

Accessibility benefits everyone

Start with an accessibility statement

Before diving into code, take a moment to document your project’s accessibility commitment. An accessibility statement signals to users and contributors that accessibility is a priority, not an afterthought. For guidance, refer to the W3C’s Developing an Accessibility Statement.

Add a clear statement that sets expectations and makes it easy for users to report issues. You can either add an accessibility section directly in your README, or create a dedicated ACCESSIBILITY.md file and link to it from your README for visibility. Refer to this ACCESSIBILITY.md example.

Goals

Contributor requirements

Establish clear guardrails so contributors know what’s expected:

Supported environments

Reporting accessibility bugs

Why separate accessibility from your general issue process?

Users have come to expect a dedicated accessibility statement and reporting path - it’s a well-established convention in the private sector and across government sites, and many users look for it first when they hit a barrier. Keeping accessibility distinct from your general issue flow matters because:

Make docs accessible by default

Documentation is often the first “UI” users touch. Make sure everyone can read it.

Structure and semantics

Images, diagrams and videos

Tables

Code blocks

Design accessible interfaces

If your project has a web UI, these high-impact defaults will help all users.

Keyboard support

Semantics first

Names, labels, instructions

Color and contrast

Motion and animation

Dynamic content

When content updates without a page load, ensure assistive tech users are informed:

Dependencies and patterns

Mobile considerations

Make tools accessible

Command line tools and dashboards can be highly accessible when designed thoughtfully.

CLI Tools

Command line apps can be highly accessible when they’re predictable and scriptable.

Terminals, logs, and dashboards

Build accessibility into contribution workflows

Accessibility is easier to maintain when it’s part of your regular process.

Add issue labels and template

Refer to this accessibility issue template example.

Add an accessibility checklist to pull requests (PRs)

For projects with UI changes, include questions such as:

Refer to this PR template example.

Define “done”

Add accessibility acceptance criteria for features and bug fixes, so it’s not optional or last-minute.

Leverage GitHub Copilot

Handle accessibility reported issues respectfully and effectively

Accessibility issues are often hard to describe, hard to reproduce, and time-sensitive for the reporter’s ability to use your project. When handling reports:

Test accessibility continuously

Automated tools catch regressions, but manual testing builds real confidence.

Automated checks (good at catching regressions)

Manual testing (required for real confidence)

Tip: Add a lightweight “Accessibility smoke test” section to your release checklist.

Start with small wins this week

You don’t have to do everything at once, start with a few quick improvements.

Pick a few:

Suggested file additions to help formalize your accessibility commitment.

Consider adding these to your repo:

Refer to this project for additional examples.

Conclusion: A few steps for you, a huge improvement for your users

These steps might seem basic, but they go a long way to make your project more accessible. Every fix you make, whether it’s a missing label, a keyboard trap, or a caption on a video, opens the door for someone who couldn’t use your project before.

Accessibility isn’t a one-time fix, it’s an ongoing practice, and you don’t have to do it all at once. Start with keyboard navigation and semantics, keep changes small, and ask for review early.

The work you put in today means more people can learn from, contribute to, and rely on what you build. That’s a win worth celebrating.

Contributors

Many thanks to all the maintainers who shared their experiences and tips with us for this guide!

This guide was written by @mlama007 with contributions from: @ericwbailey, @andyfeller, @mgifford, @smockle, and @weboverhauls


| Contents |