Title: A11y Buttons
Author: Mateus Machado Luna
Published: <strong>September 29, 2022</strong>
Last modified: August 27, 2025

---

Search plugins

![](https://ps.w.org/a11y-buttons/assets/banner-772x250.png?rev=2791879)

![](https://ps.w.org/a11y-buttons/assets/icon.svg?rev=2791870)

# A11y Buttons

 By [Mateus Machado Luna](https://profiles.wordpress.org/wetah/)

[Download](https://downloads.wordpress.org/plugin/a11y-buttons.0.4.0.zip)

 * [Details](https://lin.wordpress.org/plugins/a11y-buttons/#description)
 * [Reviews](https://lin.wordpress.org/plugins/a11y-buttons/#reviews)
 *  [Installation](https://lin.wordpress.org/plugins/a11y-buttons/#installation)
 * [Development](https://lin.wordpress.org/plugins/a11y-buttons/#developers)

 [Support](https://wordpress.org/support/plugin/a11y-buttons/)

## Description

This plugin enables an _A11Y Buttons_ block, which contains some common accessibility
buttons that you usually find in a website’s top header. The idea is to provide 
a simple way to have them inserted in any part of your theme, without adding overlays
and keep them fully customizable so they can match your design and still offer the
required features.

The buttons available are:

 * Skip-to-content button – Add a link to any anchored part of your website. You
   can create and set as many as you want;
 * Contrast mode toggle – Enable a stylesheet with extremely high contrast;
 * Readable font toggle – Forces usage of the [Atkinson Hyperlegible Font](https://brailleinstitute.org/freefont)
   for better readability;
 * Increase/decrease/restore font-size – Change your website’s root font size. Check
   the F.A.Q. section about its usage.

All of the buttons have the following features:

 * Order, alignment, spacing and overall layout are fully customizable;
 * Text formatting, font size, text and background color, borders – if the theme
   supports it;
 * Enabling or disabling the default icons, moving them to the left or right,

_We understand that accessibility is a huge topic and that no solution is perfect.
We also are by no means “experts” on the subject, so if you have any critics or 
suggestions, please make contact!_

**Want to contribute? Great! Feel free to [open an issue](https://github.com/mateuswetah/A11Y-Buttons/issues/new/choose)
or [make a pull request](https://github.com/mateuswetah/A11Y-Buttons/pulls).**

### Copyright

A11y Buttons plugin, Copyright 2022 wetah
 A11y Buttons plugin is distributed under
the terms of the GNU GPLv3 License details: https://github.com/mateuswetah/A11Y-
Buttons/blob/main/LICENSE

A11y Buttons plugin bundles the following third-party resource:

Atkinson Hyperlegible Font Copyright 2020 Braille Institute
 License details: http://
brailleinstitute.org/wp-content/uploads/2020/11/Atkinson-Hyperlegible-Font-License-
2020-1104.pdf Source: https://brailleinstitute.org/freefont

## Screenshots

 * [[
 * The A11Y Buttons parent block, which accepts different buttons inside it with
   layout settings and icon display options.
 * [[
 * A “Skip to content” button selected;
 * [[
 * The published page view, with the accessibility buttons on top;
 * [[
 * High contrast mode activated;
 * [[
 * Font size increased;
 * [[
 * Font size decreased;

## Blocks

This plugin provides 2 blocks.

 *   A11Y Buttons A list of accessibility buttons, such as font-size changing, contrast
   mode and skip links. Use them to help improve your website universal access.
 *   A11Y Button A basic accessibility button.

## Installation

This section describes how to install the plugin and get it working.

e.g.

 1. Upload the plugin files to the `/wp-content/plugins/a11y-buttons` directory, or
    install the plugin through the WordPress plugins screen directly.
 2. Activate the plugin through the ‘Plugins’ screen in WordPress

## FAQ

### Why aren’t the buttons working in the editor?

To avoid conflicts that could break the editor experience, we opted to make the 
buttons interactive only on the published page, that is, outside the editor. This
is valid for all the buttons, except for the Skip to link.

### Why aren’t all my fonts scaling with the Increase/Decrease buttons?

This plugin uses a strategy of updating the HTML root font-size only. This means
that your fonts will only respond to changes if they are set in CSS relative units,
such as `rem`. Other plugins achieve scaling by an “opinionated” strategy of setting
different font sizes to different elements in the inner HTML tags. While we would
recommend you to work with relative units, we also believe it is valid to discuss
that…

### Do I *really* need to offer font Increase/Decrease buttons to my users?

This is a valid discussion as nowadays, each Browser dedicated Zoom feature can 
handle scaling much better, no matter which CSS unit you are using. Often, if your
site has decent mobile responsiveness, its layout will be nice in a Browser-zoomed
scenario. However, one can argue that the fact that everything is scaled (including
images) pollutes much of the relevant, readable content. In the end, it is a topic
that we are not 100% sure about and would love to find more research related to 
it.

### How do I set my skip link to a specific part of my site?

Skip links should use HTML anchor navigation, which is done via IDs. If the ID is
not set in the code, you can configure it via a block. To set an anchor to a search
bar, for example, select its block in the site editor and scroll to the Advanced
section in the block settings tab. Most blocks have an area there to define an anchor.
You can then define it as `search-bar-area` and then type `#search-bar-area` as 
your link in the button block settings.

### Why is my Skip to Link button styled differently from the other buttons?

Internally, the Skip to link button is an anchor (`<a>`) tag, as its role is related
to navigation. The other ones are actual `<button>` tags as they perform actions
and not as linking. You may use the block formatting and settings to make them similar
to each other.

### How are my preferences stored?

The plugin keeps track of font-size and contrast toggle state preferences across
pages using [sessionStorage](https://developer.mozilla.org/pt-BR/docs/Web/API/Window/sessionStorage).
Make sure to warn your users if you feel that can be sensible.

### Can I have accesskey on each button?

Originally, we planned to have a simple feature to add `accesskey` to each button.
After reading [this](https://webaim.org/techniques/keyboard/accesskey#spec), we 
gave up.

### Can I invert the color of an image in High Contrast mode?

Yes! If you have an image like a monochromatic logo that would make sense to be 
inverted, add the class `a11y-invert-on-contrast-mode` to it so it can be inverted.

### Can you please explain me better the “Asset Loading Method” option in Admin  Settings  A11Y Buttons?

I know, it is a bit confusing and advanced topic. If you keep the default (“On-Demand
Loading”), a small JS script will always be loaded in your website. This script 
will be responsible for detecting the presence of A11Y Buttons, add interactivity
for them and, when needed, enqueue CSS assets like the ones used by High Contrast
and Readable Font buttons. The idea is that the style is only inserted in the HTML
header if the button is clicked. It also works if you used not the Gutenberg block
but a simple HTML markup to mimic the block. However, this has a performance issue:
the CSS are not cacheable. By using the second option (“Block Detection Loading”)
we leverage the entire assets enqueue job to WordPress. If it detects a buttons 
block in that page it will load both the JS script and the CSS files. This allow
them to be cacheable. The disadvantage is that all CSS will be loaded even if a 
certain button is not used… but keep in mind that they are really small. This also
won’t work for the rare scenarios where you are building your HTML markup by hand
instead of using blocks.

## Reviews

![](https://secure.gravatar.com/avatar/a2d84ce4ee20a27f5345ae264c98b9fb9e53ecbce0fd0bbd28c81a62bcfef1dd?
s=60&d=retro&r=g)

### 󠀁[Poderoso e eficiênte plugin.](https://wordpress.org/support/topic/poderoso-e-eficiente-plugin/)󠁿

 [Suelane Silva Ramos](https://profiles.wordpress.org/suelanesilva/) April 28, 2025

Muito útil para demandas de acessibilidade

 [ Read all 0 reviews ](https://wordpress.org/support/plugin/a11y-buttons/reviews/)

## Contributors & Developers

“A11y Buttons” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ Mateus Machado Luna ](https://profiles.wordpress.org/wetah/)

“A11y Buttons” has been translated into 1 locale. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/a11y-buttons/contributors)
for their contributions.

[Translate “A11y Buttons” into your language.](https://translate.wordpress.org/projects/wp-plugins/a11y-buttons)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/a11y-buttons/), check
out the [SVN repository](https://plugins.svn.wordpress.org/a11y-buttons/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/a11y-buttons/) by
[RSS](https://plugins.trac.wordpress.org/log/a11y-buttons/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.4.0

 * Creates option in the settings page to define custom CSS to be used in the High
   Contrast mode.

#### 0.3.0

 * Creates plugin settings page.
 * Adds option to tweak Loading Assets Strategy, allowing for a more cacheable solution.

#### 0.2.0

 * Adds “Readable font” button with [Atkinson Hyperlegible Font](https://brailleinstitute.org/freefont);
 * Adds class `a11y-invert-on-contrast-mode` to images and figures that you wish
   to have color inverted on contrast mode.

#### 0.1.2

 * Fixes contrast mode css path;
 * Proper cursor when hovering buttons;

#### 0.1.1

 * Better build workflow;
 * Constrast mode css only loaded when needed;

#### 0.1.0

 * Initial – quite experimental – release, featuring contrast toggle, font size 
   tweak and skip to link buttons.

## Meta

 *  Version **0.4.0**
 *  Last updated **8 months ago**
 *  Active installations **100+**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **6.8.5**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/a11y-buttons/) and [Portuguese (Brazil)](https://br.wordpress.org/plugins/a11y-buttons/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/a11y-buttons)
 * Tags
 * [a11y](https://lin.wordpress.org/plugins/tags/a11y/)[accessibility](https://lin.wordpress.org/plugins/tags/accessibility/)
   [block](https://lin.wordpress.org/plugins/tags/block/)
 *  [Advanced View](https://lin.wordpress.org/plugins/a11y-buttons/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/a11y-buttons/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/a11y-buttons/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/a11y-buttons/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/a11y-buttons/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/a11y-buttons/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/a11y-buttons/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/a11y-buttons/reviews/)

## Contributors

 *   [ Mateus Machado Luna ](https://profiles.wordpress.org/wetah/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/a11y-buttons/)