PDF accessibility checker
- 47 tools
- No watermark
- No daily limit
A PDF is a description of marks on paper. A screen reader needs a description of a document, and that second description is optional, which is why most PDFs in the world are, to a blind reader, a blank page. This checks the faults a machine can settle: whether the file is tagged at all, whether it declares a language and a title, whether its pictures carry descriptions, whether its pages are photographs of text rather than text, and whether its fonts can be turned back into characters. It runs entirely in this tab, so you can check a contract or a medical report without it leaving the machine.
Drop in a PDF. It is read here in this tab and never sent anywhere, which is the only way checking a confidential document is possible at all.
That is not the same as accessible. Whether the reading order makes sense, and whether the alt text describes anything useful, are human judgements that no checker can make. What this says is that the mechanical faults are absent.
Frequently asked questions
Is my document uploaded?
No. It is read in this tab by code that came with the page, and the file never leaves the machine. The site’s security policy sets connect-src ‘none’, so the browser blocks network requests from these pages, so nothing could be sent even if the code tried. That is the whole reason this tool can exist: the documents most worth checking are contracts, medical letters and government forms, and those are exactly the ones nobody should be dropping on a website.
What is a tagged PDF?
A second, invisible description of the document, sitting alongside the marks on the page. It says this run of text is a level-two heading, this is a table with these column headers, this is a photograph and here is what it shows. A screen reader reads that description, not the page. Without it there is only a stream of glyphs in whatever order the producer happened to write them, which is often not the order a person reads in: two-column layouts commonly come out with the whole left column followed by the whole right.
Does passing every check mean the PDF is accessible?
No, and the page says so on a clean result. Everything here is mechanical: a tag is present or absent, a language is declared or not. Whether the reading order makes sense, whether the alt text describes anything useful, whether the headings reflect the real structure, are all human judgements. A document can pass every check here and still be badly wrong. What a clean result means is that the automatic faults are gone and what is left needs a person.
Why does it care whether the fonts have a ToUnicode map?
Because without one, the text is not text. A font maps a code to a shape; the ToUnicode map is what says which letter that shape is. A document missing it looks perfect, prints perfectly, and gives nonsense to anything that reads it: copy a paragraph and you get gibberish, search it and you find nothing, and a screen reader speaks noise. It is the hardest fault to notice by eye and one of the easier ones to fix.
What does it check on a scanned document?
Whether each page draws an image and no text, which is what a scan is. There is nothing on such a page for a screen reader to say. The fix is OCR, but OCR is not the end of it: it makes far more mistakes on Thai and on handwriting than on English print, and text that is confidently wrong is its own accessibility problem. Read what the OCR produced before shipping it.
Which standard is this checking against?
The mechanical parts of PDF/UA and the PDF techniques for WCAG 2.1 at level AA. It is not a full PDF/UA conformance test, which has dozens of checks and still ends with a human review. What is here is the subset a machine can settle honestly, which in practice is where almost every real document fails first.
Why is there a size limit?
Because a PDF keeps its index at the end of the file, so it cannot be read a piece at a time: the whole thing has to be in memory before the first page can be found. That is a property of the format rather than a shortcut here. The limit is 100 MB, which is stated rather than discovered when a tab dies.