Skip to main content
Hero Background Image

Blog Post

Accessible Names - Label All the Things! (Part 1)

by Mediacurrent Team
August 18, 2015

The more we label things when building a website, the easier it is for a person who is blind and uses a screen reader to use our sites. These labels are known as the “accessible name properties” and they are baked into HTML.  

Native HTML5 Accessible Name Properties

Image alt attribute

<img src=”rainstorm.jpg” alt=”Heavy rain in the woods”>

The alt attribute of the image tag serves as replacement text for the image. When the screen reader comes to the image, the alt text is read. And when an image can’t be displayed, the alt text is displayed instead. See the blog post on Image descriptions.

<title> tag

The title tag provides a name for the web page. It should generally be given in the reverse order that breadcrumbs are given - [page name] - [category name] - [site name] - so that unique information is read to the user first. This creates less repetition for the user.

<label> tag

The label tag is used to “name” input elements.  

<label for="firstname">First name</label>
<input id="firstname" name="firstname" type="text">

The “for” attribute corresponds to the id of the input element. When the input receives focus, the label is read to the user as the name for the input element.

<legend> tag

The legend tag provides a name for <fieldset> elements. For example, a set of checkboxes can be  grouped and labeled like so:

  <legend>Favorite food</legend>
  <input type="radio" name="favorite" id="pizza">
  <label for="pizza">Pizza</label>
  <input type="radio" name="favorite" id="apple">
  <label for="apple">Apple</label>
  <input type="radio" name="favorite" id="liver">
  <label for="liver">Liver</label>

When a radio receives focus, the screen reader either reads both the legend text for each input, e.g. “Favorite food radio button Pizza, Favorite food radio button Apple, Favorite food radio button Liver,” or just once, “Favorite food radio button Pizza, radio button Apple, radio button Live,” depending on what mode the user is browsing in.

<th> tag

The <th> tag along with the scope attribute provides labels for a table’s header rows and columns.

      <th scope="col">Name</th>
      <th scope="col">Species</th>
      <th scope="col">Age</th>
      <th scope="row">Cassie</th>
      <th scope="row">Cooper</th>

In this example, a screen reader on row 2, column 2 would read: “Cassie species canine” which has much more meaning with the added context than just "canine."

<iframe> tag’s title attribute

Iframes are named via their title attribute. If you’re embedding a Google map, be sure to add the title attribute. Google does not include it in the embed code by default. You need to copy their embed code and add it.

<iframe src="!1m18!1m12!1m3!1d3305.6147554158183!2d-84.280146!3d34.053751999999996!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x88f57565534a5389%3A0x8862226a3f7a7225!2sMediacurrent+Interactive+Solutions%2C+LLC!5e0!3m2!1sen!2sus!4v1435428044073" width="300" height="225" frameborder="0" title=”Google map of Mediacurrent headquarters” style="border:0" allowfullscreen></iframe>


The text between the opening and closing button tags names the button:

<button name="button">Click me</button>

For submit buttons, the value attribute acts as the name of the button:

<input type="submit" value="Submit">


Being vigilant about naming things on your site will help make the site tremendously more accessible to screen reader users and there’s a good chance it will also help search engines. Use these native HTML5 accessible name properties when available and possible. And when not available or possible, see our blog post on a few WAI-ARIA attributes that fill in the gaps in part 2.