>
Generate structured, multi-level tables of contents and sidebar outline trees for your PDF files with our free PDF Bookmarks Generator. Drag and drop outline sections, configure 3 levels of nested bookmarks, assign colors or text styling (bold/italic), and link nodes directly to specific PDF pages. Use our interactive Visual Editor, paste outline lists in bulk, or run the client-side Heading Scanner to detect chapter titles automatically—all compiled in browser RAM with 100% privacy.
Upload your PDF book, ebook, or manual into the outline editor workspace.
Build hierarchical bookmark tree nodes (L1, L2, L3) or scan headings automatically.
Click Export Outline to encode bookmark dictionary trees and save your bookmarked PDF.
Drag, reorder, and nest bookmark nodes across 3 depth levels with custom text colors and bold or italic formatting options.
Extracts text coordinates and font dimensions across pages to identify potential chapter titles, sections, and headings automatically.
Injects standard PDF outline dictionaries directly into client-side PDF catalog objects, guaranteeing sidebar navigation compatibility across Adobe Acrobat, Chrome, and Preview.
PDF document bookmarks (known officially as document outlines) are defined within the PDF Catalog dictionary under the key /Outlines. An outline dictionary consists of a doubly-linked tree structure of item dictionaries where each node contains pointers to its parent node (/Parent), preceding sibling (/Prev), next sibling (/Next), first child (/First), and last child (/Last).
Each bookmark node references its target destination via an explicit destination array /Dest [pageRef /XYZ left top zoom]. Optional presentation keys control visual display in PDF readers, including RGB text color arrays (/C [r g b]), font style flags (/F 1 for Italic, /F 2 for Bold), and expand/collapse count values (/Count).
Using client-side pdf-lib and PDF.js, our generator parses existing outline trees upon file upload, parses heading text layer coordinates, and injects clean indirect object references directly into the output byte stream without modifying original page vector contents.