AVAILABLE NOW: Spring 2026 Release
Isaac Maw
Technical Content Creator
Published April 16, 2026
Updated April 16, 2026
6 min
Isaac Maw
Technical Content Creator

Summary: With the ADA Title II rule change deadline fast approaching, get familiar with popular programmatic PDF remediation tools, to get your documents compliant with WCAG 2.1 Level AA, including PDF/UA conversion and auto-tagging. Compare Apryse with other vendors.
ADA Title II requires WCAG 2.1 AA compliance by April 2026 for all US public entities (50K+ population). Are your documents compliant?

The updated regulations for Title II of the Americans with Disabilities Act (ADA) are designed to ensure that web content and mobile apps are accessible to people with disabilities. This applies to state and local governments, such as schools, courts, police and public health departments, libraries, and public transit agencies, and other government services. It requires that all new PDF documents published by these agencies must be WCAG 2.1 Level AA compliant, and that all existing documents (except purely archival documents) be remediated to meet WCAG 2.1 Level AA standards.
For PDF documents, WCAG 2.1 Level AA compliance requires:
So, with organizations sitting on thousands of non-compliant PDFs with accessibility issues, a scalable fix is needed to bring all this web content into compliance before the deadline. Apryse has a solution for PDF remediation, including OCR, auto-tagging, and PDF/UA validation.
Let’s explore the requirements, challenges and Apryse solutions.
PDF Remediation is the process of making inaccessible PDFs usable for assistive technology. This means adding and improving structure tagging, reading order, alt text, table headers, language tags and more to meet WCAG requirements.
PDF remediation is distinct from creating accessible PDFs from scratch. Remediation fixes what already exists.
To learn about dynamically generating new accessible documents, check out Apryse Extends Support for PDF/UA Document Generation
For small government organizations with a small number of PDF documents, it may be possible to remediate documents manually. In addition, the rule includes an extended deadline for state and local governments with fewer than 49,999 persons, as well as special district governments. However, for an organization with, for example, 10,000 PDFs, manual remediation at 30 minutes each = 5,000 hours of manual work.
Manual tools such as Adobe Acrobat work for single documents, but don’t scale to enterprise volume. API/SDK-based batch processing is the only realistic path.
To select the right API/SDK based batch processing solution for your organization, consider the following evaluation criteria:
Read Auto-tagging for PDF/UA – Improving Accessibility for all using the Apryse SDK to learn how to implement PDF remediation with Apryse
In addition to Apryse SDK, some other PDF Remediation tools include PDFix SDK and the Adobe Auto-tagging API.
In addition to an end-user desktop app, PDFix offers an SDK to automate high-volume PDF remediation, including PDF/UA validation and auto-tagging. While this SDK offers robust tools for structure detection and tagging, the scope of the SDK is limited to accessibility, and doesn’t provide a full document processing stack including OCR, PDF manipulation or document creation.
Using the Adobe PDF Accessibility Auto-Tag API gives developers access to automated auto-tagging and reading order identification. However, some organizations may struggle with the third-party cloud deployment, especially for regulated or offline environments. In addition, third party APIs are less flexible than SDKs for customization and integration into broader document workflows.
Capability | Apryse SDK | PDFix SDK | Adobe Auto-Tag API |
|---|---|---|---|
Deployment model | On prem and self hosted | On prem and self hosted | Third-party cloud only |
Scope of solution | Full document lifecycle SDK | Accessibility focused SDK | Single purpose cloud API |
Auto tagging quality | High quality, handles complex layouts | Strong semantic structure | Strong for common layouts |
Language support | Broadest, including non-Western languages | Limited compared to Apryse | Optimized for English, but works with other languages with reduced accuracy |
Accessibility remediation | Full remediation pipeline: OCR, auto-tagging, reading order, language metadata, table structure, alt-text support | Deep remediation pipeline: template engine, auto-tagging, language detection, reading order, some table detection | Tag insertion only, not full remediation |
Enterprise readiness | High control, private data, scalable workflows | Requires complementary tools | Limited customization, cloud dependent |
You can try the online demo of Auto-tagging with Apryse in our showcase.
With Apryse conversion to PDF/UA, AutoTagging automatically applies structure to meet accessibility guidelines.
To convert to PDF/UA with Apryse Server SDK:
PDF/A validation ensures you have PDF/UA documents that comply with the PDF/UA specification. As part of PDF/UA conversion in the snippet above, you can see that Apryse SDK performs a conformance test automatically. To perform additional validation programmatically, you can use an open-source tool like VeraPDF.
veraPDF is an open-source PDF/A validator supported by the PDF industry, led by the Open Preservation Foundation, and funded by the EU. Using a veraPDF-aligned validator ensures the highest probability of consistent validation results across other PDF/A tools and thus also the highest possibility of preservation for the long term.
Remediation is not a project, it is a process. New PDFs get created daily. Because Apryse SDK provides document processing capabilities to support the entire document lifecycle, from dynamic document generation, to accessibility compliance, to document security features such as digital signatures and redaction, PDF remediation with Apryse fits into a document workflow alongside OCR, redaction, and PDF/A archiving – all in one SDK.
To learn more, check out the documentation, demo and contact sales with any questions.
Q: What is ADA compliance for PDFs and why does it matter?
A: ADA compliance for PDFs means ensuring documents meet WCAG accessibility standards so they can be used with assistive technologies. The deadline for compliance with new ADA title II rules is April 2026. Check out the ADA.gov fact sheet for details. Apryse provides automated PDF remediation, tagging, and validation tools to help organizations meet these requirements at scale, while fitting into larger document processing workflows.
Q: How can I quickly scale remediation for thousands of documents?
A: High-volume PDF accessibility requires automation rather than manual fixes. Apryse SDK enables batch OCR, auto-tagging, and PDF/UA validation workflows that scale to enterprise and government document libraries.
Q: What is the best software or API for PDF remediation?
A: The best PDF remediation solutions combine accuracy, scalability, and flexible deployment. Apryse offers a full document processing SDK that supports accessibility remediation alongside OCR, conversion, validation, and secure on‑prem or self-hosted deployments.
PRODUCTS
Platform Integrations
End User Applications
Popular Content
RESOURCES
#---------------------------------------------------------------------------------------
# Copyright (c) 2001-2024 by Apryse Software Inc. All Rights Reserved.
# Consult LICENSE.txt regarding license information.
#---------------------------------------------------------------------------------------
import site
site.addsitedir("../../../PDFNetC/Lib")
import sys
from PDFNetPython import *
sys.path.append("../../LicenseKey/PYTHON")
from LicenseKey import *
#---------------------------------------------------------------------------------------
# The following sample illustrates how to make sure a file meets the PDF/UA standard, using the PDFUAConformance class object.
# Note: this feature is currently experimental and subject to change
#
# DataExtractionModule is required (Mac users can use StructuredOutputModule instead)
# https://docs.apryse.com/documentation/core/info/modules/#data-extraction-module
# https://docs.apryse.com/documentation/core/info/modules/#structured-output-module (Mac)
#---------------------------------------------------------------------------------------
# Relative path to the folder containing the test files.
input_path = "../../TestFiles/"
output_path = "../../TestFiles/Output/"
# DataExtraction library location, replace if desired, should point to a folder that includes the contents of <DataExtractionModuleRoot>/Lib.
# If using default, unzip the DataExtraction zip to the parent folder of Samples, and merge with existing "Lib" folder.
extraction_module_path = "../../../PDFNetC/Lib/"
def main():
input_file1 = input_path + "autotag_input.pdf"
input_file2 = input_path + "table.pdf"
output_file1 = output_path + "autotag_pdfua.pdf"
output_file2 = output_path + "table_pdfua_linearized.pdf"
PDFNet.Initialize(LicenseKey)
print("AutoConverting...")
PDFNet.AddResourceSearchPath(extraction_module_path)
if not DataExtractionModule.IsModuleAvailable(DataExtractionModule.e_DocStructure):
print("")
print("Unable to run Data Extraction: PDFTron SDK Structured Output module not available.")
print("-----------------------------------------------------------------------------")
print("The Data Extraction suite is an optional add-on, available for download")
print("at https://docs.apryse.com/documentation/core/info/modules/. If you have already")
print("downloaded this module, ensure that the SDK is able to find the required files")
print("using the PDFNet.AddResourceSearchPath() function.")
print("")
PDFNet.Terminate()
return
try:
pdf_ua = PDFUAConformance()
print("Simple Conversion...")
# Perform conversion using default options
pdf_ua.AutoConvert(input_file1, output_file1)
print("Converting With Options...")
pdf_ua_opts = PDFUAOptions()
pdf_ua_opts.SetSaveLinearized(True) # Linearize when saving output
# Note: if file is password protected, you can use pdf_ua_opts.SetPassword()
# Perform conversion using the options we specify
pdf_ua.AutoConvert(input_file2, output_file2, pdf_ua_opts)
except Exception as e:
print(str(e))
PDFNet.Terminate()
print("PDFUAConformance test completed.")
if __name__ == '__main__':
main()