PDF Accessibility Fixer — Add Language, Title & Tags
Add the basic accessibility metadata an assistive-technology user needs from a PDF: document language, title, and the marked-content flag. Quick mechanical fix for common WCAG / Section 508 audit failures.
Drop your PDF file hereTap to select a file
Supports PDF, up to 100MB
What to do next
Related tools
PDF Metadata Editor
Edit PDF metadata fields including title, author, subject, keywords, creator, and producer.
pdfFlatten PDF
Flatten form fields, annotations, and layers in a PDF to make content non-editable and static.
pdfOCR PDF (Make Scanned PDF Searchable)
Make a scanned PDF searchable. Each page is recognised with Tesseract OCR (compiled to WebAssembly) and an invisible text layer is overlaid so every word is selectable, copyable, and findable in any PDF viewer.
pdfCompress PDF
Reduce PDF file size while maintaining quality.
pdfPDF Form Filler
Fill an interactive PDF form in your browser, then download the completed copy. Supports text, checkbox, radio and dropdown fields with an optional flatten step that locks every value into the page.
pdfPDF to Text Extractor
Extract all text content from a PDF and download it as a plain text file. Preserves reading order across all pages.
pdfAbout PDF Accessibility Fixer
Most PDFs in the wild fail their first accessibility audit — not because their authors are careless, but because PDF accessibility involves a long checklist of metadata, structural, and content-tagging requirements that no word processor sets correctly by default. The PDF Accessibility Fixer applies the mechanical fixes that every audit checklist starts with: document language attribute, document title metadata, marked-content flag, viewer-preference for displaying the title in the title bar, and an XMP packet that screen readers consult before the legacy /Info dictionary. Twenty seconds of automation closes the most common findings on a PAC 2024 / WCAG 2.1 / Section 508 audit.
What the tool changes is small in scope but disproportionately important. The /Lang attribute on the document catalog tells screen readers which pronunciation engine to use — without it, a screen reader for a French document reads it with its English voice, which mangles every word. /MarkInfo[/Marked] = true declares that the PDF carries marked-content tagging, a prerequisite for PDF/UA compliance. /ViewerPreferences[/DisplayDocTitle] = true instructs viewers to show the title metadata in the title bar instead of the raw filename, which is often a meaningless string of underscores or random IDs. The XMP packet duplicates the title and language properties using the dublin-core namespace that assistive technology prefers. Finally, the /Info dictionary gets the title, author, subject, and keywords filled in.
What the tool deliberately does not do is build a structure tree mapping every visual element to a logical role (heading, paragraph, list item, figure with alt text). That work cannot be done mechanically — distinguishing a heading from a body paragraph requires reading the document with the human meaning in mind — and pretending otherwise would produce a fake-tagged PDF that fails an accessibility audit even more visibly than the un-tagged original. Full PDF/UA compliance starts with this tool's fixes, then continues with a human pass in commercial PDF editors Pro's Reading Order tool to set the structure roles. We are clear about that scope so users do not deploy a partly-fixed PDF assuming it is fully compliant.
A practical workflow: when a procurement portal or a government PDF policy mandates accessibility metadata, run every outgoing PDF through this tool to set the language and title automatically. For documents that need full structure-tree work (court filings, public-sector communications, accessibility-certified marketing collateral), use this tool first to handle the metadata in a few seconds, then bring the result into a commercial PDF editor for the structure pass — the metadata fixes survive the structure work cleanly because they live on different objects in the PDF.
How it works
- 1Drop a PDF onto the upload area. Files up to 100 MB are accepted.
- 2Set the document language as a BCP 47 tag (en, en-US, fr, fr-CA, de, ja, zh-Hans, etc.). Defaults to en-US.
- 3Set the document title (defaults to the cleaned-up filename if you leave it blank). Optionally set author, subject, and comma-separated keywords.
- 4pdf-lib applies the fixes: catalog /Lang, /MarkInfo[/Marked]=true, /ViewerPreferences[/DisplayDocTitle]=true, /Info dictionary, and a fresh XMP packet.
- 5Save. The page content streams are untouched; only catalog and metadata objects are modified, so every viewer that opened the original still opens the result cleanly.
- 6Run the result through your accessibility checker (common PDF accessibility checkers) to see the metadata findings clear. For full PDF/UA, follow up with a manual structure-tree authoring pass in a PDF authoring tool to add the structure tree.
Common use cases
- Bring a marketing PDF up to the metadata baseline before publishing it on a government portal that mandates accessibility tags
- Set the document language correctly on a French-language report so screen readers do not mispronounce every word
- Add a meaningful title to a Word-exported PDF so the title bar shows "Q3 Earnings Report" instead of the raw filename
- Prepare a stack of legal filings for a Section 508-compliant submission by automating the metadata fixes
- Pre-process a PDF before a structure-tree pass in a manual structure-tree pass so the metadata is already correct when the human review starts
- Add language and title metadata to a third-party PDF you are re-publishing on a public website
FAQ
What does this tool actually fix?
It addresses three of the most common findings on a PAC 2024 / WCAG 2.1 audit: missing /Lang attribute on the document catalog, missing title metadata, and missing /MarkInfo[/Marked] = true flag. It also stamps a Title in the XMP packet that screen readers prefer over the legacy /Info dictionary.
Does this make my PDF fully WCAG compliant?
No. Full PDF/UA compliance requires a proper structure tree mapping every visual element to a logical role (heading, paragraph, list, figure with alt text, etc.) — that work needs human review and cannot be done mechanically. The tool fixes the easy half so you can focus your accessibility budget on the hard half.
How does it pick the document language?
You set it in the options (defaults to en-US). The /Lang attribute is a BCP 47 tag — en, fr, de, es, en-US, en-GB are all valid. Screen readers use it to pick a pronunciation engine for the document text.
Will it break the existing PDF?
No. The fixes operate on the document catalog and metadata streams; the page content streams are untouched. Every viewer that opened the PDF before will still open it cleanly afterwards.
Will my PDF upload anywhere?
No. pdf-lib runs in your browser; the metadata changes happen in memory and the patched PDF is offered as a download.
Does this make my PDF fully WCAG compliant?
No. WCAG and PDF/UA require a proper structure tree mapping every visual element to its logical role (heading, paragraph, list item, figure with alt text). That work cannot be done mechanically — it requires human review of what each element actually is. This tool fixes the easy half so you can focus your accessibility budget on the hard half. The metadata fixes survive a follow-up structure-tree pass in a manual structure-tree pass cleanly.
Why is the document language so important?
Screen readers use the /Lang attribute to choose a pronunciation engine. Without it, a French document is read with the screen reader’s default English voice, which produces gibberish on every other syllable. This single fix is the cheapest, highest-impact accessibility improvement most PDFs can receive.
Will this break my existing PDF?
No. The fixes operate only on the catalog and metadata objects. The page content streams, embedded fonts, form fields, signatures and bookmarks are untouched. Every viewer that opened the original opens the result cleanly.
What does /MarkInfo[/Marked]=true actually do?
It declares that the PDF carries marked-content tagging — a prerequisite for any PDF/UA-compliant document. Audit tools check this flag specifically before they will report higher-level structure findings. Without it, the audit fails at the metadata layer regardless of what is inside the document.
Will my PDF be uploaded?
No. pdf-lib runs entirely in your browser; the metadata changes happen in memory and the patched PDF is offered as a download.
How is this different from the Metadata Editor PDF tool?
Metadata Editor PDF lets you set arbitrary /Info dictionary fields. Accessibility Fixer is purpose-built around the specific fixes accessibility audits look for — language, title, marked-content flag, display-doc-title preference, XMP packet — and applies them in one operation with the right defaults. Use Metadata Editor for general edits; use this when accessibility is the goal.
What language tag should I use?
Use the standard BCP 47 tag for the dominant language of your document. Common values: en (English generic), en-US, en-GB, fr (French), fr-CA, de (German), es (Spanish), it (Italian), pt-BR (Brazilian Portuguese), ja (Japanese), ko (Korean), zh-Hans (Simplified Chinese), zh-Hant (Traditional Chinese), ar (Arabic), hi (Hindi), ru (Russian).