Guide

How to make PDF links and annotations accessible

A link annotation is not a link. What has to exist in the structure tree, why bare URLs are hostile, and how to fix a document full of them.

About 10 minutes · moderate

The two objects

Every link in a PDF is potentially two separate things, and understanding the difference resolves most of the confusion in this area.

The annotation. A /Annot of subtype /Link: a rectangle on a page, with an action (usually a URI). This is what makes a click work. It lives in the page’s /Annots array and has no connection to the document’s structure.

The structure element. A /Link element in the tag tree, containing the marked content of the link text and an /OBJR reference pointing at the annotation. This is what makes the link exist for a screen reader.

A file can have either without the other:

  • Annotation, no structure element → clickable, invisible to assistive technology. Condition 28-005.
  • Structure element, no annotation → announced as a link, does nothing when activated.

Most producers create the first. That is the defect you will meet most often.

% The structure element
40 0 obj
<< /Type /StructElem /S /Link /P 39 0 R
   /K [ 12                       % the marked content: the link text
        << /Type /OBJR /Obj 41 0 R >> ]   % the annotation
>>
endobj

% The annotation
41 0 obj
<< /Type /Annot /Subtype /Link
   /Rect [ 72 640 260 656 ]
   /A << /S /URI /URI (https://example.org/report) >>
   /StructParent 7
   /F 4                          % Print flag set
>>
endobj

Three details that trip up hand-editing:

/StructParent on the annotation is what lets a reader find its way back to the structure element. Without it the two objects are linked in one direction only.

/F 4 sets the Print flag. An annotation without it is condition 28-008 — the Matterhorn Protocol requires annotations to be printable unless they are genuinely screen-only, because a link that vanishes on print is a link that vanishes from the document of record.

The /K order. The marked content comes first, the /OBJR after it. Reversed, some readers announce the link before the text it applies to.

Fixing it in Acrobat Pro

Acrobat has a specific command for exactly this, and it is not where you would look for it:

  1. Open the Tags panel.
  2. Select the text of the link in the page, not the tree.
  3. Tags panel menu (the ☰ at the top of the panel) → Find.
  4. Set Find: to Unmarked Links, then Find.
  5. For each one found, click Tag Element.

That creates the /Link structure element and wires it to the existing annotation. For a document with fifty auto-detected links this is the difference between ten minutes and an afternoon.

For a single link you are creating from scratch: select the text on the page with the Selection tool, then in the Tags panel menu choose Create Tag from Selection, and set its type to Link.

The structure being right does not make the link good. Three failures, in ascending order of how much they cost a reader:

“Click here” and “read more”. Screen-reader users routinely pull up a list of every link in a document and navigate from it. Out of context, twelve links called “read more” are twelve identical entries. The link text should make sense read on its own.

Bare URLs. https://www.example.gov.il/sites/default/files/2025-03/annual_report_final_v2.pdf is announced character by character. Roughly forty seconds. Use the document’s title as the link text and put the URL in the annotation where it belongs.

The same text pointing at different places. Two links both called “Annual Report” going to different years is worse than either being vague, because the reader has no way to tell them apart and no reason to suspect they differ.

Where a document is meant to be printed and the URL genuinely needs to be visible, put the readable text in the link and the URL beside it as ordinary text — not inside the link.

Other annotations

Links are the common case; the same structure rule applies to the rest.

Form fields are widgets, and each needs a /TU entry — the tooltip — which becomes its accessible name. A field with a /T (the internal name) and no /TU is announced as Text1. See the forms guide.

Comments and markup annotations need /Contents if they carry meaning. Most of the time they are review artefacts that should be flattened or removed before delivery — a document delivered with the reviewer’s sticky notes still in it is announcing them.

Stamps and signatures need /Contents describing what they are. “Approved — Planning Committee, 12 March 2025”, not an empty annotation over an image of a stamp.

Anything decorative should be an artifact, not an annotation with empty text.

Checking your document

The machine part: veraPDF and Taggart both report links with no structure element as 28-005, and it is a reliably decidable condition.

The human part takes two minutes and finds what the checkers cannot. Open the document, tab through it, and read only the link text as you go — never the surrounding sentence. That is what a screen-reader user’s link list contains. If you cannot tell where a link goes from its text alone, neither can they.

Frequently asked questions

My links work when clicked. Why are they failing the checker?

Because clicking and reading are separate mechanisms. A clickable link is a Link annotation — a rectangle on the page with an action. A readable link is a Link structure element in the tag tree containing the text. Producers create the annotation and skip the structure element constantly, so the link works with a mouse and does not exist to a screen reader.

Does every link need alt text?

No. A text link's accessible name comes from its content, which is usually right. Alt text via /Contents on the annotation is for links whose content does not describe them — an image used as a link, or an icon.

Are bare URLs a failure?

Not a machine-checkable one, and they are a real usability failure. A screen reader announces a URL character by character, so a 90-character tracking URL is roughly forty seconds of alphabet. Nothing in PDF/UA forbids it; WCAG 2.4.4 Link Purpose is the relevant criterion and it turns on whether the purpose is clear from the link text.

What about auto-detected links Acrobat adds?

Acrobat's Create Links from URLs adds annotations only — no structure elements. It makes a document more clickable and no more accessible. Useful as a step, not as the fix.

Related failure conditions

Check your own file. Taggart's validator is free and unlimited — no page cap, no watermark, and no account at all up to 60 pages.

Check a PDF free

Last updated .