Matterhorn 16-002 · PDF/UA-1 UA1:7.6-1

ListNumbering set to a bullet style on a numbered list

WarningCheckpoint 16: ListsWCAG 1.3.1 (A)

ListNumbering is present but carries a value outside the permitted set — often /None or /Disc on a genuinely ordered list.

The condition, as the protocol states it. “List is an ordered list, but the ListNumbering value is not one of the following: Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha.”

Matterhorn Protocol 1.1, checkpoint 16, index 16-002, section UA1:7.6-1. The protocol marks this as requiring human judgement.

What a screen reader actually does

The numbering scheme is not announced correctly.

The value, not the attribute

Condition 16-001 is about a numbered list that never says what it is. This one is about a list that says, and is wrong.

ListNumbering sits in an attribute object owned by List on the L element. ISO 32000-1 gives it nine possible values, in two families:

FamilyValuesMeaning
UnnumberedNone, Disc, Circle, SquareNo numbering; the item marker, if any
NumberedDecimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlphaThe numbering system the labels use

The condition, as the protocol phrases it, is an ordered list whose value is not one of the second row. So this is a mismatch between two parts of the same list: labels that count, and an attribute from the family that does not.

<< /Type /StructElem /S /L
   /A << /O /List /ListNumbering /Disc >>     % says: a bulleted list
   /K [ … ] >>
     LI → Lbl "1."   LBody "Submit the form."
     LI → Lbl "2."   LBody "Pay the fee."

What a reader loses

The same as with no attribute, and a little more. A screen reader that reads labels still reads “1.”, “2.”, because the digits are text. Anything that takes the list’s kind from its structure is told it is a bulleted list — and, with Disc, that its markers are solid circular bullets, which is a statement about the page that is visibly false.

A wrong value is also harder to notice than a missing one. Somebody who opens the attribute object in Acrobat sees ListNumbering present and moves on.

How it gets there

A list that changed after it was tagged. Bullets turned into numbers — in the PDF, or in a pipeline that carried the old structure forward — with the attribute left as it was.

A default. A tool that writes /Disc or /None on every list it creates, whatever the labels say, produces this on every numbered list in the file.

PDF 2.0 vocabulary in a PDF/UA-1 file. Ordered and Unordered are legitimate PDF 2.0 values. A PDF/UA-1 file is judged against PDF 1.7’s list, and Ordered is not on it.

Typing the value. decimal in lower case is a different name from Decimal. A value entered as text, (Decimal), is a string where the specification asks for a name, and is just as wrong.

How to check it free

Acrobat Pro’s Tags panel. Select the <L>, choose Properties from the Options menu, and on the Tag tab click Edit Attribute Objects. Expand the attribute object owned by List and read the ListNumbering entry. Then compare it with the labels on the page — the comparison is the check, and no Acrobat tool makes it: the Accessibility Checker’s list rules, List items and Lbl and LBody, are structural, per Adobe’s description of the checker.

veraPDF has no rule under clause 7.6 in its PDF/UA-1 rule set.

Reading the objects. qpdf --qdf --object-streams=disable in.pdf plain.pdf, then search the output for /ListNumbering. Every value in the file is listed, which is the quickest way to find a tool’s default applied everywhere.

How to fix it free, in Acrobat Pro

The attribute-object dialog is documented in Adobe’s Tags panel guide, with table cell spans as the example. Changing an existing entry uses the same dialog:

  1. Open the Tags panel (Show/Hide → Side Panels → Tags from the hamburger or View menu; Accessibility tags in the current interface).
  2. Select the <L>, choose Properties from the Options menu, and click Edit Attribute Objects on the Tag tab.
  3. Expand the attribute object, select the ListNumbering entry and click Change Item.
  4. Enter the value that matches the labels — Decimal, LowerAlpha, UpperAlpha, LowerRoman or UpperRoman, spelled exactly so.

Fix one list and look at the next: where a tool’s default caused this, every numbered list in the file has the same wrong value, and there is no batch command for it.

Where Taggart differs

Taggart decides a list is ordered from its labels — the text each Lbl paints on the page, or its /ActualText — when at least 60% of them, and at least two, look like 1., b), iv. It then compares the value exactly against the five names:

This list has numbered item labels but /ListNumbering is /Disc, which is not one of /Decimal, /LowerAlpha, /LowerRoman, /UpperAlpha, /UpperRoman.

Anything outside those five is reported, including an explicit /None, a lower-case /decimal and PDF 2.0’s /Ordered. A value written as a string is reported too, shown in brackets so the difference is visible — “/ListNumbering is /(Decimal)” — because the string (Decimal) is not the name /Decimal, however alike they read.

The repair is list-numbering, in “Fix All Safe”. It overwrites the value with a name inferred from the labels and logs each change:

page 1 StructTreeRoot[0]/Document[0]/L[1]: set /ListNumbering /Decimal

Digits give Decimal. A first label of i or I, or roman numerals longer than one letter, give LowerRoman or UpperRoman; any other single letter gives LowerAlpha or UpperAlpha. A string value is replaced by the name, so that case is settled by the same pass. Read the change log for lists numbered in an unusual way — the repair settles the value from the labels, and if the labels themselves are wrong, that is a decision for the document’s owner rather than for a batch.

How Taggart handles it

The protocol marks this condition as needing human judgement, so no validator can decide it outright. Taggart applies a heuristic to find the likely cases and reports each one as warning for you to settle in the review queue. A heuristic finds what it was built to find and can miss the rest; what this one looks for is described above.

The fix is Set ListNumbering. It is mechanical, so “Fix All Safe” applies it along with the others in one pass and lists what it changed. Your original file is never modified.

Whatever Taggart changes, the page still looks identical. Fixes edit the PDF object model, not the content streams, and every remediation is re-rendered and compared against the original at structural similarity ≥ 0.999 before you get the file back. A tool that quietly reflows your document is worse than no tool.

Frequently asked questions

Which values are permitted on a numbered list?

Decimal, UpperRoman, LowerRoman, UpperAlpha and LowerAlpha. ISO 32000-1 also defines None, Disc, Circle and Square, and those are correct on a bulleted list. They are wrong only on a list whose items are numbered.

PDF 2.0 has Ordered. Why is that reported?

PDF 2.0 added Ordered and Unordered for lists whose scheme is not one of the named ones. PDF/UA-1 is built on PDF 1.7, and the Matterhorn condition names exactly five values, so a PDF/UA-1 checker reports Ordered. If the labels are 1, 2, 3, Decimal says more anyway.

Is the value case-sensitive?

Yes. A PDF name is compared byte for byte, so /decimal is not /Decimal. Taggart reports the lower-case form as a value outside the five.

How is this different from 16-001?

16-001 is a numbered list with no ListNumbering at all, which falls back to the default, None. This condition is a list that states a value and states the wrong one. The fix is the same dialog in Acrobat: here you change an entry rather than add one.

Where this sits in the standards

Standards this condition maps to
StandardReference
Matterhorn Protocol 1.1Checkpoint 16 (Lists), index 16-002
PDF/UA-1 (ISO 14289-1)Clause 7.6-1
WCAG 2.11.3.1 Info and Relationships — Level A
EN 301 549 / Section 508 / ADA Title IIAll three point at WCAG 2.1 Level AA for non-web documents, so a Level A or AA criterion here is in scope for each of them.

Other conditions in checkpoint 16

Checkpoint 16 covers lists. These are its other failure conditions; the ones without a link are in the rule set but do not have a written page yet.

Check your own file. Taggart’s validator is free and unlimited — 75 of the 87 Matterhorn conditions software can decide, with the other 12 listed for you to confirm; no watermark, no expiry, and no account needed up to 60 pages.

Check a PDF free

Checked with Taggart on a generated file that fails this condition on . The Acrobat steps follow Adobe’s documentation and were not walked through by hand. Last updated .