<object> elements must have alternate text

Rule ID: object-alt
User Impact: Serious
WCAG: 1.1.1

Compliance Data & Impact

User Impact

Disabilities Affected

  • Blind
  • Deafblind


  • Section 508: MUST

WCAG Success Criteria

  • 1.1.1 Non-text Content

Section 508 Guidelines

  • 1194.22 (a) Text equivalent for non-text elements

Rule Description

All embedded objects must have text alternatives to be read out to screen reader users.

Why it Matters

Screen readers have no way of translating non-text content into text announced to users. Instead, they read out alternative text. For screen reader users to obtain the information contained in embedded object elements which must contain short, descriptive alternative text.

The object element defines an embedded object within a document. It is used to embed multimedia (audio, video, applets, etcetera.) or another web page into the document. The object element needs a text alternative so that users of screen readers know the contents of the object.

When writing a text alternative, keep in mind that the purpose of the alternative text is to relay information to blind users about the image’s contents and purpose – blind users should be able to get as much information from alternative text as a sighted user gets from the image. Alternative text should give the intent, purpose, and meaning of the image.

When writing alternative text, it’s helpful to keep the following questions in mind:

  • Why is the non-text content here?
  • What information is it presenting?
  • What purpose does it fulfill?
  • If I could not use the non-text content, what words would I use to convey the same information or function?

Be sure that all text contained in this attribute is useful. Words like “chart”, “image”, “diagram”, or image file names tend not to be very useful.

How to Fix the Problem

Add alternative text to all embedded <object> elements using either inner text, title attributes, aria-label or aria-labelledby.

The object-alt rule has six examples that pass analysis:

<object id="pass1">This object has text.</object>
<object id="pass2" title="This object has text"></object>
<object id="pass3" aria-label="this object has text"></object>
<span id="label1">this object has text</span>
<object id="pass4" aria-labelledby="label1"></object>
<object id="pass5" role='presentation'></object>
<object id="pass6" role='none'></object>

The object-alt rule has three examples that fail analysis:

<object id="violation1"></object>
<object id="violation2"><div> </div></object>
<object id="violation3"><p style="display: none;">This object has no text.</p></object>

The Algorithm (in simple terms)

Ensures that every object element has a text alternative.