🔖 Add Bookmarks to PDF WASM

Write a real PDF outline into your file — the clickable navigation tree that readers show in their sidebar. Manual entry, auto-detection, or CSV/JSON import.

What this tool does: It writes a proper /Outlines dictionary into the PDF — the same structure Adobe Acrobat, Preview, Chrome, and Firefox read to populate their bookmark sidebar. Once saved, any reader will show the navigation tree. The original file is untouched; you get a new copy with bookmarks embedded.

Upload PDF

Drop your PDF below, then add bookmarks manually, auto-detect from headings, or import a list.

document.pdf

—

Bookmark Tree 0 bookmarks

Quick Start
No bookmarks yet Add your first bookmark below, or use one of the quick-start options above.
Tips • Grip (⋮⋮) to drag — reorder the tree
• ⇧ ⇩ arrows — indent or outdent to create nesting
• Page column — type the page number to link
• Titles support up to 500 characters

Tree Preview

0 items
Add bookmarks to see the tree structure here.
Processing…0%
100% private. Nothing was uploaded.

How to Add Bookmarks to a PDF

1

Upload Your PDF

Drop a file. Use auto-detect, import, or add bookmarks manually.

2

Build the Tree

Add titles, set page numbers, and nest with indent/outdent.

3

Save & Download

Get a new PDF with a clickable outline in any reader.

Frequently Asked Questions

In the sidebar or navigation panel of any PDF reader — Adobe Acrobat, macOS Preview, Google Chrome, Firefox, Edge, and mobile readers all support it. Look for a "bookmarks" or "contents" or "outline" icon in the reader's toolbar. The bookmarks are stored as a proper /Outlines dictionary inside the PDF, so they travel with the file.

It scans up to 30 pages and computes the median font size (body text). Any line that's at least 35% larger than body text, is between 3-120 characters long, and contains letters is treated as a heading. Detected headings become bookmark entries you can rename, reorder, or delete before saving. Best for reports, academic papers, and manuals.

CSV: Title,Page,Level — one row per bookmark. Example:
Chapter 1,1,0
Introduction,1,1
Background,3,2
Chapter 2,15,0

JSON: Either a flat array with the same shape, or a nested tree using children arrays. Both are accepted.

The editor supports up to 6 levels of indent for readability, and the PDF format itself allows unlimited depth. Realistically, 3-4 levels is all anyone needs (chapters → sections → subsections → sub-subsections).

No. Everything runs in your browser using pdf-lib. Your files never leave your device.

Done!