The whole object tree
Catalog, page tree, resources and every indirect object, grouped by type — with free, unused and superseded entries called out rather than hidden.
Loading the PDF Object Explorer…
A PDF is a graph of numbered objects — pages, fonts, images, streams, annotations — tied together by references and indexed by a cross-reference table. This explorer parses that graph read-only and puts it beside the rendered page, so you can click a thing you can see and find the object that drew it. Nothing is edited, repaired or written back.
Eight views onto the same document, each linked to the others by object number.
Catalog, page tree, resources and every indirect object, grouped by type — with free, unused and superseded entries called out rather than hidden.
Filters are unwrapped and the stream is shown as readable operators, with total counts, text-operation counts and the operators used most on each page.
Text, images, paths, shadings, form XObjects, annotations and widgets are mapped to page regions — so selection works in both directions.
Subtype, family, subset flag, embedding, encoding, ToUnicode presence, the pages each font is used on, and which objects reference it.
Dimensions, colour space, bit depth, filters, soft masks and stored bytes — plus content digests that expose the same image embedded several times and the bytes it wastes.
Annotation subtypes and appearance streams, AcroForm fields with flags and widgets, outlines, embedded files, and the Info dictionary beside the raw XMP packet.
Every cross-reference entry with its offset or containing object stream, which revision wrote it, and whether a later incremental update superseded it.
Which objects point at which, traced both ways, so you can follow a page to its resources or an orphan back to whatever still references it.
Four parts, in file order, and one idea that explains the rest.
A PDF file has a header naming the version, a body of numbered objects, a cross-reference table mapping each object number to its byte offset, and a trailer pointing at the catalog and the xref. A reader starts at the end, not the beginning: it reads the trailer, finds the xref, and jumps directly to whichever objects it needs.Why a corrupt trailer breaks a file that is otherwise completely intact.
Everything else follows from that. The catalog names a page tree; each page names a resource dictionary and one or more content streams; the content stream says /F1 12 Tf and the resource dictionary resolves /F1 to a real font object somewhere else in the body. Nothing is stored where it is used — it is stored once and referenced. That indirection is what makes PDFs compact and shareable, and it is exactly what makes them hard to debug by eye.
| Direct object | Indirect object | |
|---|---|---|
| Where it lives | Written inline, inside whatever contains it | Stored on its own, with an object number and generation |
| How it is referenced | It is not — it has no identity of its own | By reference, written as 24 0 R |
| Can be shared | No. Reusing it means writing it again | Yes — one image object can serve every page |
| Appears in the xref | No | Yes, with its byte offset or its containing object stream |
| Typical examples | A number, a name like /Type, a small dictionary | Pages, fonts, images, content streams, annotations |
Deeper explanations of the format live in the PDF internals guide, including how content streams work.
Four steps, read-only throughout. There is no modified file to download because nothing is modified.
Choose a PDF from your device — up to 10MB and 100 pages. Password-protected files will ask for the document password, which is used only to open the file and is not stored.
The cross-reference table, indirect objects, page tree, resources and content streams are parsed without writing to the document.
Browse the rendered page, object list, resources and references. Click anything on the page to find the object behind it, or search by object number, font name, resource name or page text.
Download the full analysis as JSON, or the object list and diagnostics as CSV. The original PDF remains unchanged.
Jump back to the uploader when you are ready.
Most people do not arrive looking for an object explorer. They arrive holding a file that is doing something inexplicable.
Sort objects by stored bytes and the answer is usually immediate: an oversized image, the same logo embedded forty times, an unsubsetted font, or revisions from repeated incremental saves. Duplicate digests report the wasted bytes directly.
Renderers disagree where files are ambiguous. Missing appearance streams, non-embedded fonts, unusual filters and transparency groups are the usual causes, and each is a specific object you can open.
Text drawn from a subset font with no ToUnicode map, content flattened into images, or an object graph that never names the thing you are looking for. The report tells you which.
A damaged xref, offsets that point at the wrong bytes, a truncated final revision. The cross-reference view shows what the index claims and the health check shows where it disagrees with reality.
Six jobs where “open it and look” is not enough, because the thing you need to see is never on the page.
Check what your generator actually emitted before shipping it: object counts, stream filters, resource reuse, whether the xref you wrote is the xref you meant.
A file that renders in one library and not another almost always differs in one object. Find that object instead of guessing from screenshots.
Audit page boxes, colour spaces, patterns and shadings, transparency, layers and image resolution before the file reaches a RIP.
Confirm whether a document declares tagging and MarkInfo at all, and inspect the annotations, form fields and metadata that a remediation pass has to get right.
See embedded files, launch actions, JavaScript and rich media listed as structures — reported, never executed — alongside revision history from incremental saves.
Record what a file contains before archiving it: metadata, attachments, fonts, revisions and a structural health check, exported as JSON for the record.
Twelve terms that every PDF error message assumes you already know.
The command-line tools are more powerful and the desktop debuggers are more complete. Neither renders the page next to the object, and both assume you already know what you are looking at.
| Capability | This explorer | Text editor | CLI tools | Desktop debuggers |
|---|---|---|---|---|
| Browser-based, nothing to install | Yes | No | No | No |
| Rendered page beside the objects | Yes | No | Usually no | Yes |
| Object list and tree | Yes | No | Text output | Yes |
| Click the page to find the object | Yes | No | No | Limited |
| Decoded stream view | Yes | No | Yes | Yes |
| Reads objects inside object streams | Yes | No | Yes | Yes |
| Reference tracing in both directions | Yes | No | Usually no | Limited |
| Plain-language explanation per object | Yes | No | No | No |
| Read-only by default | Yes | Depends | Depends | Depends |
| Structured export | JSON, CSV | Manual | Yes | Depends |
A text editor is genuinely useless on most modern files: once objects are packed into compressed object streams there is nothing readable left to search.
Scope stated plainly, because a tool that overstates what it parsed is worse than one that parses less.
Fixing a damaged file would mean writing to it, which this tool does not do.
It shows you structures worth a second look; it does not issue a safety verdict.
Cryptographic validation and certificate trust need a dedicated tool.
JPEG, JPEG 2000, JBIG2 and CCITT streams are described and shown as raw bytes.
The report says whether a document declares tagging and MarkInfo, but it does not walk the logical structure tree.
Object counts, per-page mapping and byte previews have ceilings — and the report says so when one is reached.
Some are operators inside a content stream rather than separate indirect objects.
Parsing, standards conformance and visual output are related but separate concerns.
Read-only, over an encrypted connection, then gone.
The PDF is sent over HTTPS, parsed to build the report, and removed after your session. It is not stored, shared, indexed or used to train models.
Embedded JavaScript, launch actions, attachments and rich media are reported as structures you can read. They are never run, opened or followed.
A document password, if you supply one, is used only to open the file for parsing and is never stored. Up to 10MB and 100 pages, one document per run.
Full detail in file handling and the privacy policy.
PDF Object Explorer is a browser-based inspection tool that displays the internal objects and resources inside a PDF. It lets you browse pages, indirect objects, fonts, images, content streams, annotations, forms, metadata and object references, and links those structures back to the rendered page — without modifying the original file.
A PDF object is a unit of data inside a PDF file. Objects can represent numbers, strings, arrays, dictionaries, streams, pages, fonts, images, annotations and other document resources. Many important objects are indirect objects identified by an object number and a generation number.
An indirect object has an object number and a generation number, which lets other objects refer to it. A reference written as 24 0 R points to object 24, generation 0. That indirection is what makes reuse possible — one image object can be drawn on every page.
The explorer lists every object it can parse, including objects stored inside compressed object streams. Encrypted data, unsupported filters or severely damaged structures may limit what can be displayed. Very large documents are capped at a stated number of objects, and the report tells you when a limit was reached.
Yes — this is the core of the tool. Click any text run, image, vector path, form XObject, annotation or form field on the rendered page and the inspector shows the object behind it: the font that drew the text, the XObject that holds the image pixels, the content stream that issued the instruction. Some vector graphics are drawing instructions inside a content stream rather than separate indirect objects, and the inspector says so when that is the case.
Yes. Content streams are decoded where the filter allows and shown as text, along with the operator profile for the page — how many operators in total, how many text operations, and which operators are most used. Raw bytes are also shown as a hex dump. There is no syntax highlighting or operator-by-operator timeline in this version.
Yes. Each font object shows its base name, subtype, whether the font program is embedded, whether it is a subset, its encoding, whether it carries a ToUnicode map, its descriptor, and the pages that actually use it. For deeper font diagnosis — glyph coverage, rendering risk and print readiness — use the dedicated PDF Font Inspector.
Yes. Every image XObject is listed with pixel dimensions, colour space, bits per component, compression filter, transparency and soft mask, stored size, and the pages it is drawn on. This version does not render image thumbnails in the list — you locate an image by clicking it on the page instead.
Yes. The explorer hashes the stored bytes of each image and reports images whose encoded data is identical, along with roughly how much file size the duplication costs. Note that an image shared correctly — one object drawn on twelve pages — costs nothing extra and is reported separately from an image stored twelve times over.
Yes. The Metadata section shows the document information dictionary — title, author, subject, keywords, creator, producer, creation and modification dates — plus the raw XMP metadata packet when the file carries one.
Yes. Links, comments, highlights, stamps, ink annotations, shapes and form widgets are listed with their object ID, page, subtype, author, bounds, flags and appearance stream, and each is drawn as a box over the rendered page.
Yes. AcroForm fields are shown with their full and partial names, field type, current and default values, flags, parent and child fields, the widgets that render them, and the page each appears on. Fields with no appearance stream are flagged, because their values can be invisible in some viewers.
The explorer counts and describes embedded-file objects and file specifications so you know they are there. It never opens, extracts or executes embedded content.
JavaScript lives in objects that the explorer lists like any other, so you can see that it is present and what references it. This version does not single out or pretty-print JavaScript source, and it never executes it.
No — it does not produce a safety verdict. It surfaces structures worth a second look, such as embedded files or unusual actions, but it is an inspection tool and is not a substitute for antivirus or dedicated malware-analysis software.
No. The explorer is strictly read-only. It parses your document and reports what it finds, and never rewrites, repairs, optimises, normalises or re-saves it. Embedded JavaScript, launch actions, attached files and rich media are never executed or opened.
No. The explorer diagnoses and explains structural problems — broken references, unparseable streams, a damaged cross-reference table — but it deliberately does not modify the original file. Repair would mean writing to your document, which this tool never does.
A text editor cannot reliably decode compressed streams, read objects packed inside object streams, interpret binary image data, or follow a cross-reference stream. It also cannot connect an object to the place it appears on the page. You will usually see some readable fragments surrounded by binary noise.
A PDF content stream is a sequence of instructions that tells a viewer how to draw text, images and vector graphics on a page. It references fonts, images and other resources that are stored elsewhere in the document and named in the page’s resource dictionary.
A filter defines how stream data is encoded or compressed. Common examples are FlateDecode, LZWDecode, DCTDecode (JPEG), JPXDecode (JPEG 2000), CCITTFaxDecode and JBIG2Decode. This tool decompresses the general-purpose filters; image codecs are reported and previewed as raw bytes rather than decoded to text.
An object stream is a compressed stream that packs many non-stream indirect objects together. PDF 1.5 introduced them to reduce file size, and they are a common reason raw text inspection fails — the objects simply are not there as readable text. The explorer reads inside them and marks which objects were stored that way.
The cross-reference table records where each indirect object is stored so a reader can jump straight to it instead of scanning the file. Newer PDFs use a compressed cross-reference stream instead of a plain text table. The explorer parses both, shows each entry’s byte offset and generation, and follows the /Prev chain so every revision stays visible.
The page tree is the hierarchy that organises pages. Properties such as resources, page size and rotation can be set on a parent node and inherited by the pages beneath it, which is why a page can appear to have no resources of its own and still render.
A resource dictionary maps the short names a content stream uses — /F1, /Im1 — to the actual font, image, pattern, shading, colour space or graphics-state objects. It is the lookup table that connects drawing instructions to the objects they draw with.
An XObject is a reusable object referenced from page content. The two common kinds are image XObjects, which hold pixels, and form XObjects, which hold a reusable set of drawing instructions.
A form XObject is a reusable fragment of page content — a logo, a stamp, a repeated header — with its own resources and its own coordinate system. It is not the same thing as a PDF form field. Content inside one is real page content, just stored a level down, which is why text can be hard to find until you look inside it.
The explorer counts and lists optional content groups (layers) so you can see they exist. Content can also be effectively hidden by clipping, transparency, off-page placement or invisible text rendering modes — the presence of an object never guarantees it is visible.
PDFs saved incrementally keep earlier versions of changed objects in the file. The explorer counts the revisions, lists each cross-reference section separately, and marks entries that a later revision superseded.
An incremental save appends the new and changed objects to the end of the file instead of rewriting it. The previous versions of those objects stay in the file. Several rounds of editing can therefore leave a document much larger than its visible content warrants.
Yes. Objects are reported with their stored and decoded sizes, images are sorted by size, duplicated image data is flagged, uncompressed streams are counted, unreferenced objects are listed, and the number of incremental revisions is shown. The optimisation report names the likely causes — it never changes the file.
Yes, when you supply the correct password and the encryption method is supported. The password is used only to open the document for this analysis and is not stored. The tool does not bypass or recover passwords.
The explorer lists signature fields and the signature objects behind them, including the signer name, reason, location and signing time where present. It does not perform cryptographic verification or evaluate certificate trust — that needs a dedicated signature-validation tool.
Not always. Structural parsing, standards conformance and visual rendering are related but separate concerns. A file can be structurally sound and still render differently across viewers — for example when a font is not embedded and a substitute is used instead.
Yes. You can export the full analysis as JSON, the object list as CSV, or the diagnostics as CSV. The exports contain the analysis only — they are not a copy of your document. A formatted PDF report is not available in this version.
Yes. Search accepts an object number and matches object types and subtypes, and results link straight to the object with its references in both directions.
Yes. Searching a font name returns the font object, and selecting it shows which pages use it and which objects reference it.
Yes. Text extracted from content streams is searchable, and a match takes you to that exact text run on the page with its box highlighted. Text drawn with a font that has no ToUnicode map cannot be mapped back to characters, so it is not searchable — the tool tells you when that is why.
No. Every object carries a plain-language explanation of what it is, why it exists and whether it affects editing, so designers, print professionals, QA teams, support staff and anyone curious about how PDFs work can use it without knowing PDF syntax.
No. Preflight checks a PDF against a defined standard or rule set and reports conformance. An object explorer helps you browse and understand the file’s internal structure. They complement each other — preflight tells you a rule was broken, an explorer helps you find the object responsible.
Yes. You can inspect supported PDFs online with no account and no watermark. The file-size and page limits are shown before processing, and your upload is removed after your session.
A direct object is written inline wherever it is used and has no identity of its own. An indirect object is stored separately with an object number and generation, appears in the cross-reference table, and is referenced elsewhere as “24 0 R” — which is what lets one font or image serve every page.
The trailer is the block at the end of the file that points to the catalog and to the cross-reference table. Readers start there rather than at the beginning, which is why a damaged trailer can break a file whose objects are all perfectly intact.
The catalog is the document root. It holds references to the page tree, the outlines, the AcroForm, the metadata stream and the optional-content configuration, so almost every other object is reachable from it.
An appearance stream is the form XObject that defines what an annotation actually looks like when drawn. When one is missing, viewers fall back to their own rendering or show nothing at all — which is the usual reason an annotation appears in one application and not another.
Because the file leaves something ambiguous and each renderer resolves it differently. The common causes are a missing appearance stream, a font that is not embedded, an unusual stream filter, or a transparency group — and each of those is a specific object you can open in the report.
The Info dictionary is the older key–value block holding title, author, producer and dates. XMP is an XML metadata stream that can carry far richer, standardised properties. A file can contain both, and they can disagree — the report shows each one with its object number.
An image XObject is a numbered object referenced by name from the page’s resource dictionary, so it appears in the images list with its own object number. An inline image is written directly into the content stream between BI and EI operators and has no object of its own.
Free, no signup, no watermark, no daily limit. Your PDF is inspected read-only and never written to.
Inspect a PDFAll PDF toolsPDF font checkerLayout validatorQuality checkerPDF internals
Last updated: July 2026