All tools

PDF Outline / Bookmark Extractor

Data

Walk a PDF's /Outlines bookmark tree and list every bookmark's title, nesting level, and link target, in document order

Drop in a PDF and see its bookmark tree (the sidebar table of contents most PDF viewers build from the document's /Outlines dictionary) laid out as a flat, indented list of titles with each entry's nesting level and link target. It walks the actual First/Next/First chain of outline objects rather than guessing from heading text, so nested chapters and sections show up at the right depth even in a deeply structured document. Each bookmark's target is reported as whatever the PDF actually stores: an object reference for a page jump, a URL for a web link, or a name for a named destination, but it does not resolve a page-ref target to an actual page number, since that requires a second pass over the separate page tree. It only reads the outline structure, never the page content streams, so it stays fast even on large documents, and a PDF with no bookmarks at all is reported as a clean zero-count result rather than an error.

pdfoutlinebookmarkstocdocument

How to use PDF Outline / Bookmark Extractor

  • 1.Drop a PDF file (or click to browse) to see its full bookmark tree with titles and nesting levels.
  • 2.Check the Destination column to tell a page jump apart from an external web link or a named destination before trying to follow it.
  • 3.Use the REST API or an SDK to batch-extract bookmark trees across many PDFs, e.g. to build a cross-document table of contents.

Frequently asked questions

Does this resolve bookmarks to actual page numbers?
No, a page-link bookmark's target is reported as its raw object reference (like "12 0 R"), not a resolved page number, since matching that reference to a page requires a separate walk over the page tree.
What happens if a PDF has no bookmarks?
If the /Outlines dictionary exists but is empty, you get a valid result with a bookmarkCount of 0. If there's no /Outlines dictionary at all, that's reported as an error instead.
Does it handle nested bookmarks correctly?
Yes, it recurses into each bookmark's own children via the outline tree's /First pointer, so a deeply nested table of contents is flattened into a list with each entry's correct indentation level.
Is my PDF uploaded to a server?
In the browser tool, no: the file is read and parsed entirely client-side. The REST API and SDKs do process the bytes you send them, same as any other API call.

Use via API, SDK, or MCP

cURL# Free: 1,000 req/day · Pro: 10,000 req/day
curl -X POST https://api.utilix.tech/v1/tools/pdf-outline-extractor \
  -H "Authorization: Bearer utx_live_..." \
  -F "file=@report.pdf"

Get an API key from your dashboard · Full API docs →