Improving accessibility of image alternative text in 4.7
WordPress 4.7 includes a change to the way image
alt attribute values are generated. Formerly, any time WordPress created the markup for an image with an empty
alt value, it would attempt to use either the caption text or the image title—in that order—as a fallback value.
In 4.7, we have removed this fallback behavior.
To ensure your images having meaningful alternative text, you should make sure to set a value for alt text in your media library.
How removing fallbacks improves accessibility
The intent of the fallbacks were to ensure each image included alternative text. In practice however, this fallback behavior often resulted in poor user experiences for people using screen readers. As counterintuitive as that may seem, let’s take a look at some common examples.
Consider a situation where we’ve uploaded an image named “edbc4ef7.jpg” without changing any additional information. WordPress will generate the image title from the file name as shown in the following screenshot of the insert media modal.
Formerly, inserting this image in a post would result in HTML similar to this (simplified slightly for clarity):
<img src="https://example.wordpress.org/wp-content/uploads/2016/11/edbc4ef7-1024x683.jpg" alt="edbc4ef7" width="700" height="467" />
A person using a screenreader on this page would end up hearing the file name read to them, which is not the most helpful experience, and can be quite frustrating when the file name is lengthy.
For another example, setting a caption value but no alternative text would result in markup that looks something like this:
<figure id="attachment_1741" style="width: 660px" class="wp-caption alignright"> <img src="https://example.wordpress.org/wp-content/uploads/2016/11/edbc4ef7-1024x683.jpeg" alt="This is a caption." width="660" height="440"> <figcaption class="wp-caption-text">This is a caption.</figcaption> </figure>
Notice that the
alt value and the
figcaption text are redundant? WebAIM describes two ways of presenting alternative text:
- Within the
altattribute of the
- Within the context or surroundings of the image itself.
The same article goes on to explain that an
alt attribute value may be omitted when an identical
figcaption is present, to avoid redundancy; but best practice when using a
figcaption is to provide a separate and different
alt attribute to describe that image to users of screen readers.
In each case, omitting the
alt attribute entirely may result in screen readers reading the file name from the
src attribute, so WordPress includes an
alt attribute with an empty value, i.e.
alt="", whenever the alternative text hasn’t been explicitly set—a technique that is common when an image is decorative.
This change will not affect content already published, but will be the expected behavior for any new content published after upgrading to 4.7. For more background on this issue, see ticket #34635.