Are frames accessible?

Date Updated
04/13/18

HTML (HyperText Markup Language) includes elements called frames and inline frames (iframes), both of which can be used to add content to a web page from external sources. A common example is embedding a frame of audio or video content from another site. The strongest arguments against using frames have more to do with usability than accessibility. For example, frames reduce the amount of usable space on a page, they make it difficult or impossible for users to link directly to or bookmark a specific page within a frameset, they may make it difficult for users to copy and paste information, and they often prevent users' Back buttons from working as expected.

As for accessibility, frames are not in and of themselves inaccessible. Keyboard users and assistive technology users are able to navigate among the various frames that comprise a page containing frames. However, frames do present additional usability challenges that are unique to users with disabilities, particularly those who use screen readers.

Often, in a frames interface, a user's selection of a link in one frame changes the content in another frame. A sighted user might notice this change visually, whereas screen reader users receive no indication that a change has occurred. Therefore, screen reader users must be provided with clear instructions as to what to expect, including where to find the updated content. Screen reader users can easily navigate between frames, but they must know which frames to navigate to in order to find the content they're seeking.

To facilitate navigation for screen reader users, all frames should have a meaningful title that speaks to its function. In HTML, frames are titled using the title attribute. For example, a meaningful title for a frame that contains a video player might be "Video Player", and would be coded as title="Video Player" in the HTML. In contrast, frame titles like "FrameA" and "FrameB" or "Left Frame" and "Right Frame" should be avoided, because they do not communicate frame function and are of little or no use to screen reader users.

Early versions of HTML included a <noframes> element, which enabled developers to provide alternative content for users who browsers (or assistive technologies) did not support frames.  This element no longer exists as of HTML5.