About PDF object inspector
Everything in a PDF is an object. Eight types do all the work: booleans, numbers, strings, names, arrays, dictionaries, streams and null. Pages, fonts, images, annotations and form fields are not special file sections — they are dictionaries with particular keys, and the binary payloads among them are streams with a length and a filter chain describing how the bytes are encoded. Objects refer to each other indirectly, by object number and generation, which is what lets one font dictionary serve twenty pages and one image serve a repeated logo. This tool enumerates that population: how many objects there are, what they are, which ones are streams, what filters those streams use, and how the references between them fan out. It is the tool to reach for when you are writing code that produces or consumes PDFs and need to know what a reference implementation actually emitted.
How to PDF object inspector
- 01
Load the PDF
Drop the file in. Objects are enumerated from the cross-reference index and from any object streams.
- 02
Scan the type census
Objects are grouped by what they are — page, font, XObject, annotation, and so on — with counts.
- 03
Follow the references
Indirect references are resolved so you can see which objects are shared and which are orphaned.
- 04
Check the filter chains
Each stream reports its filter list, which tells you how the payload is compressed and whether it is decodable.
What this tool does
- Object census by dictionary type, with indirect object numbers listed
- Stream objects separated from plain dictionaries, with declared and actual lengths
- Filter chains per stream: FlateDecode, DCTDecode, JPXDecode, CCITTFaxDecode, LZWDecode, RunLengthDecode, ASCIIHexDecode, ASCII85Decode
- Indirect reference map showing shared resources and objects nothing points at
- Object stream contents unpacked, so packed objects are counted individually
- Generation numbers surfaced, which is where evidence of incremental editing shows up
Limitations worth knowing
Every PDF tool has constraints. Stating them plainly is more useful than discovering them halfway through your work.
- This lists and classifies objects; it is not an object editor and cannot modify the file.
- Stream payloads are described, not dumped. Decoded image and font bytes are summarised by the image and font inspectors instead.
- Orphaned objects are reported as unreferenced but not removed — use the compressor if the goal is to discard them.
- Encrypted files must be decrypted with their password first, since object payloads are encrypted individually.
How your file is handled
This tool runs entirely inside this browser tab. When you choose a file, your browser reads it from your own disk and hands the bytes to JavaScript running on this page — no network request carries your document anywhere. You can confirm that yourself: open your browser’s developer tools, switch to the Network panel, and run the tool. You will see no upload.
Nothing is stored after the fact. Closing or reloading this tab discards the file, the result and everything derived from them, because none of it ever left your machine. Read how local processing works.
Questions about PDF object inspector
What is an indirect reference and why does it matter?
It is a pointer of the form "12 0 R", meaning object 12, generation 0. It matters because it is how resources are shared: a font used on every page is stored once and referenced many times. When you are debugging a producer, a missing or dangling reference explains errors that otherwise look inexplicable, and a resource duplicated instead of referenced explains files that are larger than they should be.
What do the stream filters tell me?
They tell you how a payload is encoded, and by extension what kind of data it is. FlateDecode is general-purpose zlib compression used for content streams, fonts and many images. DCTDecode means the stream is a JPEG. JPXDecode is JPEG 2000. CCITTFaxDecode and JBIG2Decode indicate bilevel scanned pages. A filter chain of several entries is applied in order.
Why are there objects nothing references?
Usually because the file has been edited. Deleting a page or replacing an image can leave the old objects present in the bytes while nothing points at them any more, especially after an incremental save. They are dead weight, and rewriting the file discards them.
Can I see the decoded content stream for a page?
This tool reports the content stream objects, their filters and lengths rather than printing page operators. If your aim is the text those operators draw, the text extractor is the right tool; if your aim is the images they reference, use the image inspector.
Tools that pair with this one
- PDF Structure InspectorSee how the document is wired together, from trailer to page tree.
- PDF InspectorA complete technical report on any PDF, produced without uploading it.
- PDF Size AnalyzerA byte-level breakdown of where your PDF weight actually is.
- Extract Text from PDFLift the text layer out of a PDF and keep it in reading order.
- PDF Version CheckerCheck which PDF version a file claims, and what that version can and cannot do.
- PDF Font InspectorFind out which fonts travel with your PDF and which depend on the reader having them.