PDF tags and their impact on accessibility

PDF documents are structured with tags that can make or break your document's accessibility and are completely invisible to the average user.

Overview

Not unlike HTML, PDF documents contain a series of tags that are assigned to blocks of content. These tags indicate the content type and reading order. For example, lists and list items, headings, paragraphs, tables, etc.

Assistive technologies uses these tags to interpret content. For example, a level 1 heading will be announced as such as enables navigation tools for skipping between headings. Without these tags, assistive technologies are unable to process a document and will simply interpret it as blank or on a best-effort basis.

Managing tags

Viewing tags requires either Acrobat Pro or a third-party tool. I'll be assuming you have access to Acrobat Pro as it is the industry standard suite.

To open the tags panel in Acrobat Pro, select View > Show/Hide > Navigation Panels > Tags.

Tags panel

Editing tags

If your content has been marked incorrectly, you can simply change the tag type. To do so, right-click on the erroneous tag, select Properties and select the correct tag from the pull-down menu. Alternatively, you can use the Touch Up Reading Order tool, found in the Accessibility panel, and highlight the content you want to re-tag.

Object Properties panel

Adding a tag

Tagging a new object is done through the Accessibility panel. Open the panel by heading to View > Tools > Accessibility and select the Touch Up Reading Order tool.

Drag around the object to create a selection. It is important that you select only the object you wish to modify as your change will be tagged as a single entity. Once your selection has been made, press the appropriate button in the Touch Up Reading Order panel. You can modify or fine-tune the tag from the Tags panel after.

Ordering

In Adobe Acrobat Pro, the only way to change a tag's order is to drag and drop tags to their appropriate location.

Note that adding a new tag will cause the panel to refresh, which can take a few minutes in long documents.

List of tags

Some tags are a little ambiguous so I've added notes.

Tag Description Note
<Art> Article To separate different articles found in the same document
<Annot> Annotation  
<BibEntry> Bibliography Entry A description of where some cited information may be found, which may contain a label element as a child element
<BlockQuote> Block Quote Inline elements should use the quote tag
<Caption> Caption Placed above a table, or under a figure
<Code> Code Computer code text.
<Div> Division
<Document> Document The root container
<Figure> Figure Images, charts, etc.
<Form> Form Form container
<Formula> Formula Mathematical formulas
<H> Heading Generic header, not normally used
<H1> Heading level 1 Only a single H1 should be available per document
<H2> Heading level 2  
<H3> Heading level 3  
<H4> Heading level 4  
<H5> Heading level 5  
<H6> Heading level 6  
<Index> Index  
<Lbl> Label  
<Link> Link  
<L> List Parent list container
<LI> List Item Child list container
<LBody> List Item Body Child list items
<Note> Note Explanatory note, such as footnote or endnote
<P> Paragraph  
<Part> Part Used to divide your document in logical parts
<Quote> Quote Inline quotations
<Reference> Reference A citation to text or data found elsewhere in the document
<Sect> Section Used to divide your document into logical sections
<Span> Span
<Table> Table Table parent container
<TD> Table Data Cell  
<TH> Table Header Cell  
<TOC> Table of Contents Table of contents parent container
<TCOI> Table of Content Item  
<TR> Table Row  

Resources