Online Tool Store Online Tool Store

PDF Bookmark Editor

Read, edit and write the clickable outline in a PDF, with nesting, correct UTF-16 titles for any language, and a seed-from-page-text shortcut.

🔒 This tool runs entirely in your browser. Your files are never uploaded to a server.

Saving replaces the document's entire outline with the list above — bookmarks are a single tree, so there is no way to edit one without rewriting all of them. Each bookmark points at the top of its page, which is what almost every reader shows anyway; precise positions within a page are not preserved from an existing outline. The file is read, edited and saved entirely in your browser.

How to use it

  1. Drop in the PDF. Any existing outline is read in and becomes editable.
  2. Edit titles and page numbers, set levels, reorder with the arrows.
  3. Check the nesting preview — it shows the tree readers will display.
  4. Save. The outline is rewritten from your list.

A bookmark tree is genuinely a tree

In the file, each bookmark is a dictionary with explicit links in four directions, plus a destination:

/Title    the label shown in the sidebar
/Parent   the entry one level up
/Prev    /Next    siblings, in order
/First   /Last    the range of children
/Count    open descendants — what makes a reader expand it
/Dest    [pageRef /Fit]

Every one of those is a reference to another object, so there is no such thing as changing a single bookmark in isolation — inserting one entry rewires its neighbours, its parent's First and Last, and every ancestor's Count. That is why this tool presents the whole outline and rebuilds it on save. It is not a shortcut; it is what the format requires.

Because pdf-lib has no outline API, the tree is assembled directly against its object model. That is exactly the kind of hand-built structure that produces a file which opens fine and shows nothing in the sidebar, so it was verified by writing a nested outline and reading it back with a different library: the nesting, the page destinations and an accented title all came through intact.

The encoding trap

plain PDF string   Latin-1     "Séction" → mojibake
hex string         UTF-16     "Séction" → "Séction"

PDF text strings are Latin-1 unless written as a UTF-16 hex string with a byte-order mark. Anything outside Latin-1 — an accent in the wrong place, Greek, Cyrillic, Chinese, an em dash — is silently corrupted by the simpler option, and the damage only becomes visible in the reader's sidebar. Titles here always take the UTF-16 route, so it does not matter what language the document is in.

Levels that cannot exist

A flat list with an indent column can describe trees that are not trees. If the first entry is indented, it has no parent; if an entry jumps from level 0 to level 2, the intermediate parent does not exist. Rather than producing a malformed outline, the tool clamps such an entry to one level deeper than its predecessor and says so in the warning area — so the preview always shows the tree you will actually get, not the one your indents implied.

Starting from nothing

Scanned documents and many generated PDFs have no outline at all, and typing sixty titles from scratch is the reason people give up on bookmarks. The one-per-page option seeds a bookmark for every page using the first 60 characters of its text, which for a report or a scanned book is often close to the heading already. Editing rough titles is much faster than inventing them, and anything with no extractable text falls back to "Page N" rather than being skipped.

FAQ

What are PDF bookmarks?

The clickable table of contents in a reader's sidebar — formally the document outline. They are stored as a tree of dictionaries in the file, quite separately from any contents page printed inside the document, which is why a PDF can have a visible contents list and no bookmarks at all.

Why does saving replace all my bookmarks rather than editing one?

Because the outline is a single linked tree: every entry points at its parent, its previous and next siblings, and its children. Changing one entry means rewriting those links, so the honest implementation rebuilds the whole tree from your list. That is what the tool does, and why the list it shows you is the complete outline rather than a diff.

Why do my accented or non-Latin titles come out wrong in other tools?

Because PDF text strings default to a Latin-1 encoding that cannot represent them. Written that way, "Séction" becomes mojibake in the sidebar. Titles here are written as UTF-16 hex strings, which is the encoding the format provides for exactly this, so accents, Greek, Cyrillic and CJK all survive.

Can I nest bookmarks?

Yes, up to four levels using the level column. The nesting preview shows the tree you will get. A bookmark cannot be indented more than one level deeper than the one above it — there would be no parent to attach to — so the tool pulls such an entry back and tells you it did.

Do bookmarks point at an exact position on the page?

They can, but these point at the whole page using a Fit destination. That is what most readers display anyway, and it avoids inventing coordinates that would be wrong at a different zoom. It does mean precise scroll positions from an existing outline are not preserved — page numbers are.

What does the one-per-page button do?

Creates a bookmark for every page, titled with the first 60 characters of its text. It is a starting point for a scanned or generated document with no outline at all — quicker to edit sixty rough titles than to type sixty from nothing. Pages with no extractable text get "Page N".

How we compare

Feature Online Tool Store Upload-based PDF sites Acrobat Pro
File never leaves your device
Reads and edits an existing outline Often add-only
Correct UTF-16 titles for any language Frequently broken
Seeds bookmarks from page text Via structure tags
Free, no page limits
Exact scroll positions and zoom per bookmark Whole page only Varies
Bookmark actions beyond page jumps

Does the thing most bookmark tools get wrong — non-Latin titles — and does it without uploading a document that may be confidential. Destinations are whole-page rather than pixel-precise, and there are no scripted bookmark actions, both of which are Acrobat's territory.

Explore related tools

Embed this tool

Paste this on your own site — it stays free, and every file still stays in your visitor's browser, not yours or ours.