Security and architecture
Data flow
- The app is a static web page. Documents are opened with the browser's File API and checked by JavaScript in the tab, one at a time.
- No request ever carries a document, a file name or a result. Our server (a Cloudflare Worker) serves the page and answers three small endpoints for licensing: checkout configuration, licence issue (Paddle transaction ID and checkout email) and a health check.
- Reports and fixed copies are created in memory and saved by your browser to your computer. Closing the tab discards everything.
How to verify it yourself
- Open the app, let it load, switch off your network, run a folder and download the results: it still works.
- Open the browser's developer tools (Network tab) during a run: there are no requests.
- Read the code: the engine is plain, unminified JavaScript under /core/ (pdfcheck.js, triage.js, fix.js, reports.js) and /assets/app.js. PDF parsing uses pdf-lib 1.17.1 (MIT licence, licence text).
Engine checksums (release 1.0.0, 30 October 2026)
SHA-256 of the files that read and check your documents, as published on this site. Compare with certutil -hashfile file SHA256 or shasum -a 256. Licensed teams can ask for this exact build as a ZIP to host on their own network.
- /core/pdfcheck.js: 00f1bcffbd946d4b3960e37ae0372bb4a6a69964f6777be96617a3ab44af1271
- /core/triage.js: aa774f298cd85a4b04e345cf3a926a738aeec559cd84a7eff3db0cac08954d00
- /core/fix.js: cc94dff2c80f9ea8c21e18a634a862f6b7eac9a2dbc74b0b6ab097def6cc1644
- /core/reports.js: a37b825354fc2707d2f9edc6f55b4225d956b3c7d2241514d94a64cb9075ee50
- /vendor/pdf-lib.esm.min.js: 72c052d97b4d5d9fa6cdbdcb7ad709f03d4ddb1122390cb3afeba4d88651d969
- /assets/app.js: b1127343722e684a6c4554daa98ff6872adebbde509f5b4155cdfa22bf8c94eb
What the checks can and cannot show
- Read from the file: tags and structure tree, figures and their alternative text, tables and header cells, headings, form fields and their names, text layer per page, title, language, bookmarks, tab order, encryption.
- Not judged: the quality of alternative text, reading order, color contrast, link text and meaning. A person must check those; reports say so.
- Limits: 250 MB per PDF; text layer checked on the first 1,500 pages of a document; ZIP input up to about 900 MB (use a folder for more).
Browser hardening
- Content-Security-Policy: scripts only from this site and, when you buy, from cdn.paddle.com; connections only to this site and Paddle; framing blocked.
- No analytics, advertising or tracking cookies. Your licence key is kept in the browser's local storage and verified offline with an Ed25519 signature.
Sub-processors
- Cloudflare: hosting of the static site and licence endpoints (no documents).
- Paddle.com: merchant of record for payments, invoices, tax and refunds.
Contact
support@atesensoftware.com: questionnaires, vendor forms and quotes, answered within one business day.