PDF Analyzer
Inspect a PDF in your browser — version, structure, fonts, images, links, metadata, encryption, JavaScript, and attachments.
Updated
What is the PDF Analyzer?
The PDF Analyzer opens up any PDF and shows you what is actually inside it — without installing software or uploading the file anywhere. Point it at a document and it reads the raw file structure to report the PDF version, how many objects and pages it contains, which fonts and images it uses, every external link, the document metadata, and whether the file is encrypted, digitally signed, contains interactive forms, embedded JavaScript, or file attachments.
This is useful whether you are a developer debugging a generated PDF, a designer checking that fonts are embedded before sending a file to print, a security-conscious reader who wants to know if an attachment carries a script before opening it, or simply someone curious about who created a document and when.
Private by design: every check runs locally in your browser. Your file never leaves your device — nothing is uploaded to a server.
How it works
A PDF is not a plain text document — it is a small structured database of objects (dictionaries, streams, references) wrapped in a defined file format. The PDF Analyzer reads those raw bytes directly and reconstructs what the file declares about itself, using only built-in browser APIs. No third-party PDF library and no server are involved.
What happens when you drop in a file
- Read the bytes. The file is loaded into memory as raw bytes and decoded so the analyzer can scan the file's structure.
- Validate the header. It confirms the
%PDF-1.xsignature and records the version declared in both the header and the document catalog. - Inflate compressed streams. Modern PDFs (1.5 and newer) pack most objects inside compressed object streams. The analyzer decompresses
FlateDecodestreams with the browser's nativeDecompressionStream, so fonts, scripts, and images hidden inside them are still visible. - Index the objects. Every
N G obj … endobjblock is catalogued, along with the cross-reference style (classic table vs. cross-reference stream) and the largest objects in the file. - Extract the details. It reads the trailer and Info dictionary for metadata, walks the corpus for
/Type /Font,/Subtype /Image,/URI,/AcroForm,/Encrypt,/JS,/EmbeddedFile,/ByteRange, and more. - Summarise. Findings are rolled up into a statistics dashboard and a set of at-a-glance security flags.
What it can and cannot see
Because it works purely from structure, the analyzer is fast and completely private, but it does not render the page or run any content. A few notes:
- Encrypted files: structure is still reported, but text values such as the title and author are ciphertext and are shown as unavailable — reading them would require the password.
- Detection, not execution: JavaScript and launch actions are flagged, never run. The tool is a safe way to triage a suspicious file.
- Counts are best-effort: page, font, and image counts are derived from the declared structure and are accurate for the vast majority of files, but unusual or malformed PDFs may report approximate figures.
Examples
Check a document before opening it
Drop an untrusted PDF in to see whether it carries embedded JavaScript, launch actions, or file attachments before you open it in a reader.
Audit fonts and images for print
List every font and whether it is embedded or subset, plus how images are compressed, to catch print-production problems.
Read document metadata
Reveal the Title, Author, Producer, and creation/modification dates stored in the PDF Info dictionary.
Frequently asked questions
Is my PDF uploaded anywhere?
Is my PDF uploaded anywhere?
No. The PDF Analyzer runs entirely in your browser using local JavaScript and built-in web APIs. Your file is read into memory on your own device, analyzed there, and never transmitted to any server. You can even disconnect from the internet after the page loads and it will still work.
Can it detect malicious PDFs?
Can it detect malicious PDFs?
It can surface the things that make a PDF risky: embedded JavaScript, automatic launch actions (OpenAction), embedded files and attachments, and external links. These are the mechanisms most commonly abused in malicious documents, so seeing them flagged is a strong signal to be cautious. However, the analyzer only detects and reports — it never executes any script or opens any attachment, and it is not a substitute for a full antivirus engine. Treat it as a triage tool for deciding whether a file is safe to open.
Why does it say my document's metadata is unavailable?
Why does it say my document's metadata is unavailable?
That happens when the PDF is encrypted. In an encrypted PDF the string values in the document information dictionary — title, author, subject, and so on — are stored as ciphertext. Reading them would require the document's password, which the tool never asks for. The structural information (version, object counts, encryption method, permissions) is still reported because that part of the file is not encrypted.
How can it read fonts and images inside a modern compressed PDF without a library?
How can it read fonts and images inside a modern compressed PDF without a library?
PDF version 1.5 and later store most objects inside compressed object streams using the FlateDecode (zlib/deflate) filter. Modern browsers ship a native DecompressionStream API that can inflate deflate data with no external dependency. The analyzer uses it to decompress those streams, then scans the decompressed content for fonts, images, scripts, and links — so it can see just as deeply into a compressed PDF as into an old-style uncompressed one.
What does "embedded" vs "subset" mean for a font?
What does "embedded" vs "subset" mean for a font?
Embedded means the actual font program is stored inside the PDF, so the document displays identically on any device — important for print and archival. If a font is not embedded, the reader substitutes a similar installed font, which can shift the layout. Subset means only the specific characters used in the document were embedded (the font name is prefixed with a tag like ABCDEF+), which keeps the file smaller while still guaranteeing correct rendering.
Does it work with password-protected or corrupted files?
Does it work with password-protected or corrupted files?
Password-protected (encrypted) files are analyzed for everything except their encrypted string values, as described above. Truncated or slightly malformed files usually still yield partial results — the analyzer reads whatever structure it can find. A file that is not a PDF at all (no %PDF- header) is rejected with a clear message.
Is the page count always exact?
Is the page count always exact?
For the overwhelming majority of PDFs, yes. The page count is derived from the page objects declared in the file structure, cross-checked against the /Count value on the page tree. Deliberately obfuscated or badly broken files can occasionally report an approximate number, which is why the count is presented alongside the rest of the structural evidence rather than in isolation.
Related tools
More utilities you might find handy.
.env File Generator
Quickly generate clean, properly-quoted .env files from key-value pairs — no more quoting errors or broken deployments.
.htaccess Redirect Builder
Generate error-free Apache .htaccess code for 301 redirects, HTTPS enforcement, and canonical URL routing.
ASCII Converter – Text to ASCII, Hex, Binary & Back
Convert text to ASCII codes and decode back in decimal, hex, binary, or octal — live, private, and 100% browser-based.