Merge PDFs with a table of contents
Combine PDFs into one binder with a contents page and per-file bookmarks. Source filenames become section names, so rename them before adding the files.
- Give each source PDF a clear filename.
- Add the files in the intended section order.
- Generate the binder and check contents links and bookmarks.
Try public sample PDFs · Verify local processing and browser requirements
How it works
The merge itself works the way any structural PDF merge does: each source document is parsed, its page objects are copied into a new document in your chosen order, and shared resources such as fonts and images travel with the pages they belong to. Because pages are copied as objects rather than re-rendered, text stays selectable and quality is untouched. Where this tool differs from plain PDF merging is in the two navigation structures it adds afterward.
First, the contents page. While copying, the tool records the running page offset of every source file — if file one has 12 pages, file two starts at page 13 of the binder (page 14 once the contents page is inserted, and the tool accounts for that shift). It then generates a fresh first page listing each file name with its start page number. Each line is wrapped in a link annotation whose action is an internal GoTo — a jump to a page destination inside the same document, the same mechanism a PDF index or cross-reference uses. Clicking an entry in any standard viewer jumps straight to that file's first page. Nothing is hyperlinked to the web; the links resolve within the document itself.
Second, the outline. PDFs carry bookmarks in an outline dictionary — a linked tree of title/destination pairs that viewers display as a sidebar. The tool writes one top-level outline entry per source file, titled with the file name and pointing at the same destination as the corresponding contents-page link. So a reader gets two ways to navigate: the printed-style contents page, and the collapsible bookmark panel. If you later want to split the binder back apart at those bookmarks, the per-file entries make that a one-click round trip.
Illustrative example: a 5-document project binder
Illustrative scenario, not a recorded benchmark. File sizes, timings and results depend on the input and device. Try the reproducible samples.
A project manager needs to send one file containing a proposal (14 pages, 1.1 MB), a signed contract (9 pages, 0.7 MB), three appendices (6, 22, and 4 pages; 3.4 MB combined). She drops all five PDFs on the tool and drags the contract above the proposal so it appears first.
The result is a single 56-page PDF of about 5.3 MB: one generated contents page followed by the 55 source pages. The contents page reads Contract — page 2, Proposal — page 11, Appendix A — page 25, Appendix B — page 31, Appendix C — page 53, and each line jumps to that page when clicked. The bookmark sidebar shows the same five titles. Total time in the browser: about four seconds, most of it spent parsing the largest appendix.
Frequently asked questions
How is this different from a plain PDF merge?
A plain merge just concatenates pages, so readers have to scroll to find each document. This tool additionally generates a contents page with clickable go-to links and adds one bookmark per source file, turning the merge into a navigable binder.
Are the entries on the contents page actually clickable?
Yes. Each entry is a link annotation with an internal go-to action that jumps to the first page of that source file. The links work in any standard PDF viewer, including browser viewers.
Can I change the order of the files before merging?
Yes, the file list is re-arrangeable before you merge, and the contents page and bookmarks follow whatever order you set. The listed start pages are computed after reordering, so they are always correct.
What names appear in the table of contents?
Each entry uses the source file's name without the .pdf extension, alongside the page where that file starts in the merged document. The matching bookmark uses the same title.
Are my PDFs uploaded to a server to build the binder?
No. The files are read, merged, and rewritten by JavaScript running in your own browser, and the download is generated locally. Nothing is transmitted anywhere.