Check a PDF
PDF text-layer checker
Find out which PDF pages return text without uploading the file. Check each page, reveal a short preview if you want, and save a report with no extracted text. This is not OCR or an authenticity check.
By AnyStatement
Published , 4 min read
One PDF, up to 5 MB (5,000,000 bytes) and 100 pages. Choosing another file replaces this check. The PDF reader loads static files from this site; your PDF is not uploaded.
- PDF opened
- Choose a PDF or load the fictional example.
- Pages checked
- No pages checked.
- Text findings
- No text findings yet.
This checks returned text, not the document's truth. It does not perform OCR, validate table extraction, detect scan origin, test redaction safety, scan for malware or authenticate a document. Clear cancels the active check and removes its input and results.
Text found can mean just a footer
If you can read a statement but copying its rows gives you nothing, start here. The checker opens the PDF locally and asks PDF.js for each page's text. It does not turn images into words or decide whether the page was scanned. A page with any returned non-whitespace character gets “Text found”, even if that text is only a page number.
“No text returned” means this extraction returned zero non-whitespace characters. A blank page, an image, drawn letter shapes or text the reader cannot interpret can need different next steps; the zero alone does not distinguish them. “Page could not be checked” is separate from zero because a failed check tells you nothing about whether text is present.
Show a preview only when you are comfortable displaying part of the document on screen. It includes at most 240 Unicode code points and can have an unexpected reading order or incorrect characters. It is a small diagnostic, not a transaction table you can rely on for bookkeeping.
What the character count measures
Each string item returned by PDF.js contributes its non-whitespace Unicode code points. Spaces, tabs and other Unicode whitespace do not count. Non-whitespace control or formatting characters do count if PDF.js returns them, even when a preview looks empty. So “Text found” does not promise visible words. A letter and its combining accent can also be two code points. The checker does not examine whether text is hidden or correctly positioned over a scanned image.
Load example creates a fictional PDF in this tab, then runs the same reader used for your file. Its first page contains 1,250 non-whitespace characters of sample text; page 2 is blank; page 3 contains the 14-character footer “SampleFooter03”. The result is two pages with text, one with no text returned, and 1,264 code points in total. The footer illustrates why a positive count does not establish that a statement's transaction rows are extractable.
Physical PDF page numbers start at 1, whether or not a page has a printed number. The PDF opened, pages checked and text findings statuses describe different steps. Failed and not-yet-checked pages stay visible, and their missing counts are never replaced with zero. A partial check stays partial in the exported report too.
What this check leaves unanswered
The limits are one PDF, 5 MB (5,000,000 bytes) and 100 pages. Files over the page limit are rejected before page extraction begins. Pages are checked one at a time, so a complex PDF can take longer than the small example. You can cancel with Clear or replace the file while a check is running.
A password-protected PDF can ask for its password locally. A wrong password lets you try again, but unsupported encryption or damaged data may still prevent inspection. The checker has no server fallback and never tries to remove password protection from your original file.
This is not an OCR tool, readable-table guarantee, scan-origin detector, malware scanner or authenticity check. It does not check statement balances, verify a bank or approve evidence for a lender, landlord or visa application. It also does not establish that redaction is safe: text can be only one of the places sensitive information remains. Read the separate guide to redacting statements without leaving hidden data before sharing a redacted PDF.
Your file stays local; the report leaves out its text
Your file and the values you enter are processed in this browser tab. They are not uploaded or sent to analytics. We do not save them between visits. Downloads you choose to save remain on your device.
The page and PDF reader load ordinary website files, including same-origin PDF.js worker and font assets. That is different from uploading your document. No source filename, password or extracted text is included in those requests. The tool does not open links, execute document scripts or hand your PDF to the converter.
Clear cancels the active check and removes the tool's input, previews and results. Back navigation may restore uncleared state, so leaving is not a clearing action. Browser-managed memory is not a secure-erasure promise. CSV and JSON downloads are new files named generically; they contain only page numbers, statuses, counts, method and limits. They never contain the extracted text or original filename, even when a preview is open.
The method behind the check
The checker uses the installed PDF.js reader and its page text-content API. Local file selection follows the browser's File interface. We opened both primary references on October 17, 2026; neither retrieved page showed an editorial update date. The method counts returned text, not OCR accuracy or the truth of a document. The fictional example is not a benchmark for your bank's statement format.
If you need transaction rows next
Check your bank's native CSV export first; a text-layer diagnosis is unnecessary if that export already gives you the rows you need. If only PDF statements remain, you can review and enter the rows manually, use an extraction option you already have, or deliberately open AnyStatement's separate PDF conversion workflow for reviewable, source-linked transaction data. This free checker does not upload anything to that workflow, and its report is not a converted statement.