Back to PDF
PDF bookmarks — add an outline / bookmark tree

PDF bookmarks — add an outline / bookmark tree

Add a PDF outline (bookmark tree) in one shot using a Markdown-like syntax (`# Chapter 1 [3]`). Built with pdf-lib's low-level Catalog → Outlines API. `#` count = nesting level (1–6), each line ends with the target page in `[3]` brackets. Perfect for scanned PDFs or long documents without chapter titles, so you can jump to sections in Acrobat / Preview / browser PDF viewers. Runs entirely in your browser — no upload.

pdf

How to use

Drop or pick a single PDF. Write your bookmark tree in Markdown-like syntax. `#` count (1–6) is the nesting level, end each line with `[3]` to point to a page. Check the parsed outline preview for the hierarchy and count. Invalid lines are highlighted in red. Click Add bookmarks to bake the outline into a new PDF via pdf-lib.

FAQ

How do I count page numbers?
Use the physical page number (1-based). If the cover is page 1 and the body starts on page 2, write `[2]` for body chapter 1. Not the printed page label (i, ii, iii) — match what the PDF viewer shows in the page counter.
How deep can the tree go?
1–6 levels (`#` to `######`). The PDF spec allows deeper trees but six levels keeps things readable. Skipping levels (e.g. `#` then `###`) works but may look odd in viewers.
What happens to existing bookmarks?
They are removed. This tool clears `/Outlines` before writing the new tree. Back up the original PDF if you need to preserve the old outline.
Will viewers other than Acrobat show the bookmarks?
Yes. We use the standard PDF outline spec, so Acrobat, Preview, Chrome, Firefox, Edge, iBooks, etc. all display them identically. No Acrobat-specific actions are used.
Can it handle encrypted PDFs?
No. Unlock the PDF first, then run it through this tool.
Is anything uploaded?
No. pdf-lib runs entirely in your browser; the PDF stays local.

Related tools

PDF page numbers — template / 9 positions / range

PDF page numbers — template / 9 positions / range

Stamp page numbers onto every page of a PDF. The format is a free template (`{n}` / `{n} / {total}` / `Page {n}` etc.). Tune the placement (9-grid), font size, color, starting number, margin, and which page range to apply to. Runs entirely on pdf-lib in the browser — your files never leave the device. Batch processing and ZIP download supported.

pdf
PDF add text — bake dates, notes, or labels into a page

PDF add text — bake dates, notes, or labels into a page

Drop a text annotation onto a chosen page of a PDF — perfect for date stamps, file numbers, contractor names, or any quick label that just needs to look right. Position via 9-grid + margin, set font size / color / rotation / opacity, and pick which pages. Uses pdf-lib's built-in Helvetica (Regular / Bold / Oblique), so the text is ASCII / Latin only. For Japanese, build a stamp PNG with stamp-jp and place it with pdf-add-image. Multiple PDFs can be batched and downloaded as a ZIP. Files never leave your browser.

pdftext
PDF text extract — export pages to .txt

PDF text extract — export pages to .txt

Extract plain text from PDF files entirely in the browser via pdfjs-dist getTextContent. Each PDF becomes its own .txt file; batch downloads ship as a ZIP. Page-break markers are optional.

pdfextracttext
PDF text search — full-text search across multiple PDFs

PDF text search — full-text search across multiple PDFs

Search several PDFs at once and inspect every match with its page number and surrounding context. Toggle case sensitivity, word boundaries (\b), regular expressions, and a multi-line mode. Adjust the query or context width (10–200 chars) and the matches refresh live. Each file shows a hit count and the full result set can be downloaded as CSV. Uploaded PDFs never leave the browser.

pdftextextract