WP Accessibility


This plug-in helps with a variety of common accessibility problems in WordPress themes. While most accessibility issues can’t be addressed without directly changing your theme, WP Accessibility adds a number of helpful accessibility features with a minimum amount of setup or expert knowledge.

All features can be disabled according to your theme’s needs. For advanced users, all of the functions based on modifying stylesheets can be customised using your own custom styles by placing the appropriate stylesheet in your theme directory.

Accessibility Features added by WP Accessibility:

  • Enable skip links with WebKit support by adding JavaScript support to move keyboard focus.
  • Add skip links with user-defined targets. (Customisable targets and appearance.)
  • Add language and text direction attributes to your HTML attribute
  • Add an outline to the keyboard focus state for focusable elements.
  • Add a toolbar toggling between high contrast, large print, and desaturated (grayscale) views of your theme.
  • Add a long description to images. Use the image’s “Description” field to add long descriptions.
  • Enforcement for alt attributes on images.

Accessibility Issues fixed by WP Accessibility:

  • Remove the target attribute from links.
  • Force a search page error when a search is made with an empty text string. (If your theme has a search.php template.)
  • Remove tabindex from elements that are focusable.
  • Strip title attributes from images inserted into content.
  • Remove redundant title attributes from page lists, category lists, and archive menus.
  • Add post titles to standard “read more” links.
  • Address some accessibility issues in the WordPress admin styles
  • Add labels to standard WordPress form fields if missing

Accessibility Tools built into WP Accessibility:

  • Show the colour contrast between two provided hexadecimal colour values.
  • Enable diagnostic CSS to show CSS-detectable problems in visual editor or on front-end of site.

Learn more! Read about the accessibility issues corrected by WP Accessibility!

The plug-in is intended to help with deficiencies commonly found in themes and to solve some issues in WordPress core. It can’t correct every problem (by a long shot), but provides tools to fix some issues, supplement the accessibility of your site, or identify problems.



  • Settings Page


  1. Download the plugin’s zip file, extract the contents, and upload them to your wp-content/plugins folder.
  2. Login to your WordPress dashboard, click “Plugins”, and activate WP Accessibility.
  3. Customise your settings on the Settings > WP Accessibility page.


WP Accessibility is inserting some information via javascript. Is this really accessible?

Yes. It does require that the user is operating a device that has javascript support, but that encompasses the vast majority of devices and browsers today, including screen readers.

I installed WP Accessibility and ran some tests, but I’m still getting errors WP Accessibility is supposed to correct.

Even if WP Accessibility is running correctly, not all accessibility testing tools will be aware of the fixes. Here’s a resource for more information: Mother Effing Tool Confuser.


May 29, 2019
Funciona bien, pero está falto de opciones. No entiendo porqué la opción de B&N sólo está para el administrador.
May 13, 2019
This plugin offers some quick fixes for quite a few different ADA checklist items. Some features work out of the box, while others require a bit of configuration or customization. Great plugin support as well!
September 6, 2018
WP Accessibility is a great plugin. It works perfectly and it is very easy to customize. When I activated it, I had a problem. It didn't depend on WP Accessibility (it was a plugin conflict) and it wasn't easy to find. I wrote to Joe Dolson asking for a support and in a few he answered me. After 1 hour he gave me the solution. My voluntary social commitment concerns on cultural accessibility so I have gained many experiences in this field and I can say that this plugin is really usefull. The best mix for a plugin is made by the value of it and the support efficacy. This plugin has the perfect mix!
Read all 54 reviews

Contributors & Developers

“WP Accessibility” is open source software. The following people have contributed to this plugin.


“WP Accessibility” has been translated into 11 locales. Thank you to the translators for their contributions.

Translate “WP Accessibility” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



Suggest a change!
* Conflict with NextGen gallery to explore


  • Based on support for screen-reader-text class and current support for aria-current, shifting to aria only.


  • Different JS for aria-current; previous version could only work on a single element, not a collection.


  • Update to RegEx filtering title attributes to avoid data-title attributes. Thanks to @nextendweb
  • Update PHP test suite to eliminate PHP 5.3 tests.
  • Higher min/max sizes for toolbar buttons
  • Remove setting for aria-current; now always enabled.


  • Bug fix: error in generated CSS for skiplinks


  • Per request, remove font sizing declaration for skip links. Inherit from site.
  • Add default styles for visible skiplinks, rather than allowing to be unstyled.
  • Remove tabindex application on section element from toolbar JS. (Not sure why it was there anyway.)
  • Bug fix: automatic labeling injected double labels on fields with no ID and an implicit label.


  • Bug fix: Widget output should not be styled.
  • Bug fix: Remove duplicated (current) when both current-menu-item and -page-item present (props loopRW)


  • Bug fix: Do not render longdesc UI when no longdesc provided.


  • Bug fix: incorrect function name
  • Bug fix: don’t use POST data directly when value is known


  • Removed ‘ScrollTo’ JS.
  • Changed toolbar font size setting from em to px for predictability.
  • Updated ‘diagnostic.css’ to latest version.
  • Removed ‘create_function’ for PHP 7.2 compatibility.
  • Removed ‘extract’
  • Code updated to conform to WordPress PHP standards
  • Code restructuring.


  • Fixed changelog, which read 1.5.11 instead of 1.6.0
  • Fixed logic in widget version of toolbar so wouldn’t use buttons unless requested
  • Update ‘tested to’ version.


  • Bug fix: incorrect CSS style reference on longdesc template
  • Re-enable Toolbar on Edge (slightly different from other browsers, but functional.)
  • Hide grayscale from non-admins.
  • Add note reflecting above
  • Add feature: identify current menu item


  • Disable Toolbar on Edge due to page not found bug.
  • Modifications to toolbar JS
  • Remove title attribute settings remove attributes no longer being produced.
  • Some code clean up and restructuring.


  • Bug fix: another swapped options check, elsewhere. Sigh.


  • Bug fix: swapped options check for fontsize & contrast toggles
  • Compatibility checked with 4.7


  • Remove menu role from toolbar
  • Fixed toolbar button font size adjustment
  • Updated screen reader text class to include clip-path and whitespace
  • Minor toolbar design tweaks
  • Removed WordPress admin stylesheet (obsolete)
  • Misc display fixes in settings
  • Remove ‘Access Monitor’ admin notice
  • Bug fix: Missing space in featured img HTML
  • Bug fix: Switch main heading to H1


  • Feature: Add support for longdesc in featured images.
  • Feature: Option to enable only a single element in toolbar


  • Bug fix: use aria-pressed on toolbar buttons. Props Jose Manuel (https://github.com/joedolson/wp-accessibility/pull/7)
  • Bug fix: Don’t show logout link if user not logged in. Props @boonebgorges (https://github.com/joedolson/wp-accessibility/pull/9)
  • Bug fix: Don’t assume that images with long descriptions have classes
  • Text change to better describe content title attribute stripping.
  • Add aria-label to skip link navigation region.
  • Add role=menu to toolbar.
  • Update readme.txt


  • Bug fix: .fontsize default classes used immediate children selector, which was incompatible with the switch to using html as the parent selector.
  • Change: Added option to hide toolbar on small screens.
  • UI Change: Split Toolbar & Miscellaneous settings into separate sections.
  • Updated informational and contributing links
  • Re-ordered settings groups to better reflect need.
  • Split settings into separate plug-in file.


  • Bug fix: incorrect assignment of fontsize class on subsequent pages.
  • Removal of en_AU and nl_NL languages in favour of completed language packs


  • Bug fix: Add RTL version of editor styles
  • Bug fix: incorrect textdomain on donate request
  • Bug fix: Issue with :focus state on skiplinks when not always visible
  • Bug fix: Install with no default focus styles; add custom styles to end of default focus styles string
  • Bug fix: search filter could prevent display of nav menus (props @jdelia & @GaryJones)
  • Bug fix: extraneous anchor generated in longdesc format (https://github.com/joedolson/wp-accessibility/issues/4)
  • Add alternate font resizing stylesheet for improved use with rems
  • Add support for selective refresh in customiser


  • Add: :hover/:focus text describing toolbar buttons; replaces title attributes removed in 1.5.0
  • Missing: Add woff2 call
  • Bug fix: Re-order font format imports


  • Updated toolbar fonts
  • Updated toolbar to use button instead of a
  • Improved fontsize increase default CSS. Most themes will still benefit from custom styles.
  • Added option to place toolbar on right side of screen.
  • Update load method for text domain
  • WP A11y recent posts widget removed.


  • Bug fix: Don’t create a duplicate ID when multiple longdesc attributes used on one page


  • Add languages: Hungarian, English (Australian)
  • Bug fix: Retain intended image when adding alt attribute missing warning.


  • In WP 4.3, widgets with no settings are not saved. So…
  • Added Title setting to WP Accessibility toolbar widget.


  • Update widget constructors to use PHP5+ syntax.
  • Add filter to disable or replace the fontsize styles for toolbar. ‘wpa_fontsize_css’. Return false to disable; return stylesheet URL to replace.


  • Language update: Norwegian
  • New feature: Automatically add labels to WordPress standard search form & comment forms if missing.


  • Bug fix: warning thrown if current theme does not have any tags.
  • Change: Use image to show ‘needs alt’, for easier deletion.
  • Fix: text_direction deprecated in bloginfo
  • Language updates: Spanish, Polish


  • Added enforcement tools for alt attribute usage in images.
  • Media lists indicate whether an image is marked as decorative, has an alt attribute, or needs an alt attribute.
  • Media editor shows checkbox to mark as decorative when editing image media types.
  • If an image is inserted into a post without either being marked as decorative or having an alt attribute provided, HTML will also insert a notice indicating that the image needs an alt attribute.
  • If an image is inserted and is checked as decorative, the alt attribute will be set to an empty value.
  • Language update: Spanish


  • Bug fix: Longdesc styles not automatically enabled with longdesc options.
  • Added detection for whether current theme is accessibility-ready
  • Disabled some options if current theme is accessibility-ready.
  • Added notice to inform users about Access Monitor
  • Language add: Portuguese (Brazil)
  • Language update: German


  • Switch order in which skiplinks/accessibility toolbar are loaded into the DOM so skiplinks load last/appear first.
  • Hide fields for WordPress title attribute removal on versions where they don’t apply.
  • Language updates: Russian, Hebrew, Bulgarian


  • Bug fix: skiplinks JS targeting
  • Bug fix: incorrect textdomain in longdesc template
  • Update or add translations: Dutch, French, Finnish, Russian, Bulgarian


  • Feature: iconfont toolbar icons so icons can be resized Thanks Chris!
  • Feature: define size of toolbar icons
  • Feature: Assign tabindex=-1 to skiplink targets to ensure functionality of skiplinks.
  • Bug fix: Switch template_redirect to template_include filter
  • Redo file structure to move CSS into subdirectory.
  • Update translations: French, German, Hebrew
  • Add translations: Slovenian, Russian


  • Typo fixed.
  • Bug fix: If any skiplink field was filled in, skiplinks automatically displayed.


  • Bug fix: When disabled, lang toggle removed language from HTML element
  • Add RTL styles for a11y toolbar.


  • Bug fix: Toolbar shortcode didn’t toggle Grayscale or Fontsize
  • Documentation: Add documentation of shortcode/widget toolbar.


  • Bug fix: Only enqueue stylesheets when settings require them.
  • Bug fix: Search filter should only be applied on front-end
  • Add SVG filter to provide grayscaling in Firefox
  • Add Languages: Hebrew, Greek


  • Bug fix: a11y.css issue collapsing toolbar buttons in Firefox
  • Language: Update Italian.


  • Feature: Check for HTML5 structural elements and insert ARIA landmark roles.
  • Feature: Define ID of container to use for complementary role.
  • Feature: Add styles to make placeholder text high-contrast in high-contrast stylesheet.
  • Feature: Add option to force underlines on links
  • Bug fix: use reply-to header in email support requests
  • Bug fix: proper variable set up for high contrast stylesheet path
  • Language: Add Portuguese (Portugal)


  • Amended a JS comment that some plug-ins were treating as a node…
  • Updated .pot file with long description strings.
  • Bug fix: longdesc attribute added even if description field empty.


  • Add long description support. Requested by John Foliot; based on https://wordpress.org/plugins/long-description-for-image-attachments/


  • Bug fix: :focus states for skiplinks broken in 1.2.8.
  • Bug fix: WP Accessibility admin colour issue in WP 3.8+
  • Auto-hide grayscale in Firefox even if enabled. See: https://gist.github.com/amandavisconti/8455507
  • Made accessibility toolbar available via widget or shortcode [wpa_toolbar]
  • Add Language: Romanian, by Adrian Tamasan
  • Updated language: Dutch


  • Bug fix: support for languages with right-to-left reading order.


  • For 3.8, eliminate outdated title attribute filters. (nav menus, page lists, edit post links, edit comment links, category links)
  • Add Dutch translation by Rian Rietveld


  • Truly hides grayscale option, not dependent on CSS.
  • Eliminates in-page anchor focusing, due to conflicts with plug-ins that attach scripts to links with hashes.
  • Remove row action visibility from default admin stylesheet, due to 3.7 changes making those links keyboard accessible.
  • Added row actions always visible option.


  • Added Spanish translation.
  • Added incomplete Finnish translation.
  • Updated French translation.
  • Bug fix: WP Accessibility disabled ability to use theme styles in TinyMCE editor.

  • Minor settings bug.


  • Added diagnostic.css (beta) for admin users on front end and in post editor.
  • Bug fix in a11y.js; incorrect function call in scrollTo.
  • Bug fix in a11y.js; removed hook to # urls
  • Added visible logout link to admin to support users of voice activated controls.
  • Bug fix to built-in support request form.
  • Added filter wpa_move_toolbar to make it possible to attach a11y toolbar to something other than the body element.
  • Added French translation.


  • Updated jQuery ScrollTo to version 1.4.5 to resolve JS conflict.
  • Updated method of accessing $ in jQuery.
  • Added CDATA blocks so WP Accessibility doesn’t prevent validation as XML.
  • Added Italian translation, courtesy of Roberto Scano.


  • Bug fix: compatibility issue with PageLines framework.


  • Disabled grayscale toggle in Accessibility toolbar by default due to poor browser support and low functional value. (Can still be enabled by user.)
  • Removed php notice in title- recent posts widget
  • Updated German and added Polish translations


  • Added space between content output and continue reading text in excerpt context.
  • Added German translation
  • Added Accessibility Toolbar (Source)
  • Added WP admin stylesheet:
  • Some contrast improvements.
  • Placed post row action links (Edit, Quick Edit, Trash, View) into screen reader visible and keyboard usable position.
  • Added underlines to links on hover
  • Supports your own custom wp-admin stylesheet via your Theme directory.


  • Update support statement to WP 3.5.0
  • Add role=’navigation’ to skiplinks container.


  • Bug fix: extra template loaded when search template is inserted.
  • Bug fix: jQuery not always loaded when required.


  • Added ability to add focus outline in :focus pseudo class.
  • Added colour contrast tool.
  • Added settings link to plugins listing.
  • Added link to translations site for this plug-in.
  • Improved response for forcing search error on empty search submission.
  • Bug fix for adding custom skip link.


  • Initial release!