Visionably Research · Open-source tool · 17 September 2026

outloud

What a PDF says out loud.

A PDF accessibility checker for the terminal. It tests PDF/UA-1 conformance the way veraPDF and PAC do, maps every rule to WCAG 2.2, and then asks the questions a validator cannot: do the tags match what the page paints, and are the words a screen reader is given the words a person would use.

Apache 2.0. Python 3.10 or later. macOS, Linux and Windows. No Java, no GUI, nothing leaves the machine.

The outloud app. On the left, a list of findings with errors and warnings. In the middle, the PDF page with each finding outlined in red or amber. On the right, the page as a screen reader would read it, with a skipped sentence shown as an artifact.
The app, opened with outloud --view: findings, the page with each one outlined, and the page as a screen reader reads it. The example file ships with the tool.

Install and run

pipx install outloud                # or: uv tool install outloud

outloud report.pdf                  # findings, exit 1 on any error
outloud report.pdf --criteria       # every Matterhorn checkpoint and WCAG 2.2 criterion
outloud --view                      # the app: drop or choose PDFs, findings outlined on each page
outloud *.pdf --json r.json --sarif r.sarif --html r.html

Verdicts are pass, review (warnings only), fail or unreadable. Every finding names its page, its evidence, the clause it rests on, the WCAG criteria it affects, and a one-line fix.

SARIF output plugs into GitHub code scanning and most CI systems. The HTML report is one self-contained file. The library call is outloud.check(path).

Why another checker

We built it because our own remediated files passed every validator and still read wrong. The example below is our own published report.

Validators test that the keys exist. veraPDF and PAC check that a figure has alternative text, that a table has header cells, that headings do not skip a level. They cannot check that the alternative text describes the picture, that the header cells say anything, or that the words on the page are the words in the tags. The Digital Banking Accessibility Report passes veraPDF; its appendix table has header cells with nothing in them, so a screen reader announces every value against silence. outloud reports it.

The Digital Banking Accessibility Report open in outloud at page 28, with one warning: six data cells are associated only with empty header cells. The cells are outlined on the page and the finding shows its fix.
Our own report, which veraPDF passes, open at page 28.

Two layers, kept apart. Conformance rules test a requirement of ISO 14289-1 and are calibrated to agree with veraPDF; on 58 one-defect fixtures and 102 real files they do. Semantic rules test what a conformant file can still get wrong, name their evidence, and can be wrong about what it means, so they say what they saw and let a person judge.

Pass and fail by criterion. Results roll up per Matterhorn Protocol checkpoint and per WCAG 2.2 success criterion, with five honest statuses: fail, warning, pass, not applicable to this file, and needs a person, with a note on what to look at. A file without forms is not "passing" the form criteria.

You can see where. Findings carry bounding boxes. outloud --view opens a local app: drop in PDFs, and each page is rendered with its findings outlined, next to the structure tree and the page read back in the order a screen reader would, with artifacts shown as what a reader skips.

Measured on 17 September 2026

90
rules, 88 implemented; 35 of them semantic checks no validator runs
160
files on which its conformance verdict agrees with veraPDF, out of 160
9 of 21
remediated files veraPDF calls compliant where the semantic layer still finds something
2–10×
faster than veraPDF per file; a compiled core is planned

The comparison scripts and the corpora descriptions are in the repository, with a rule-by-rule account of where outloud, veraPDF and speedata's pdfa11y disagree and who we think is right.

What it is not

An evaluation, not a certification, and not legal advice. A pass on a WCAG criterion means the automated rules mapped to it found nothing; the criteria that need a person say so. It does not measure colour contrast, tests PDF/UA-1 only, and its walker is Python, so long files written one text operator per glyph take a few seconds. All of that is in the README, next to what it does do.

Contribute

A rule is a catalogue entry, a function and a fixture. Disagreements with veraPDF are recorded in the catalogue with who we think is right. Issues and pull requests on GitHub.

Use it on your files

If it reports something on a file a validator passes, we would like to hear about it, and if it is wrong, that too. Write to yash@visionably.ai.