Meet Sa11y, the accessibility quality assurance assistant. Sa11y is a customizable, framework-agnostic JavaScript plugin. Sa11y works as a simple in-page checker that visually highlights common accessibility and usability issues. Geared towards content authors, Sa11y straightforwardly identifies errors or warnings at the source with a simple tooltip on how to fix them. Sa11y is not a comprehensive code analysis tool; it exclusively highlights content issues.
- Project website 🌐
- Developer documentation 📓
- Demo 🚀
- Report an issue 🐜
- Install the WordPress plugin 💻
- WordPress plugin development repo 🛠
- Acknowledgements 👤
- Over 50 checks that encourage quality accessibility.
- Checks for issues regarding images, headings, links, form labels, and more.
- Toggleable/optional checks: readability analysis, contrast checking, and colour filters.
- Automatic: checks content on page load.
- Customizable: JSON-like props to fine tune the experience for content authors.
- Focus on the issues: Turn off or hide irrelevant checks.
- Scalable: Check every page for accessibility.
- Support for checking items within web components/shadow DOM and headless checks.
- Fully encapsulated user interface with dark mode.
- Offered in various languages.
Want to help translate or improve Sa11y? Consider contributing! Translations may either be contributed back to the repository with a pull request, or translated files can be returned to: adam.chaboryk@torontomu.ca
Have a question or any feedback? Email: adam.chaboryk@torontomu.ca
Sa11y is a framework-agnostic JavaScript plugin. It's made with vanilla JavaScript and CSS, and its only dependency is Tippy.js - a highly customizable tooltip library that features a positioning system.
To install on your website, insert Sa11y right before the closing </body>
tag. Sa11y consists of three files:
- sa11y.css - The main stylesheet. Should be included in the
<head>
of the document (if possible). - lang/en.js - All text strings and tooltip messages. View supported languages.
- sa11y.js - Contains all logic.
npm i sa11y
<!-- Stylesheet -->
<link rel="stylesheet" href="css/sa11y.min.css"/>
<!-- JavaScript -->
<script type="module">
import { Sa11y, Lang } from '../assets/js/sa11y.esm.js';
import Sa11yLangEn from '../assets/js/lang/en.js';
// Set translations
Lang.addI18n(Sa11yLangEn.strings);
// Instantiate
const sa11y = new Sa11y({
checkRoot: "body",
// Customize with props.
});
</script>
<!-- Stylesheet -->
<link rel="stylesheet" href="css/sa11y.min.css"/>
<!-- JavaScript -->
<script src="/dist/js/sa11y.umd.min.js"></script>
<script src="/dist/js/lang/en.umd.js"></script>
<!-- Instantiate -->
<script>
Sa11y.Lang.addI18n(Sa11yLangEn.strings);
const sa11y = new Sa11y.Sa11y({
checkRoot: "body",
// Customize with props.
});
</script>
Please visit developer documentation for CDN installation instructions.
A light server for development is included. Any change inside /src
folder files will trigger the build process for the files and will reload the page with the new changes. To use this environment:
- Clone this repo.
- Be sure you have node installed and up to date.
- Execute
npm install
- In a terminal execute:
npm run serve
. Then openhttp://localhost:8080/docs/demo/en/
in your browser.