Export PDF Comments and Annotations

Exporting PDF annotations means pulling every comment, highlight, sticky note and stamp out of a marked-up document into a structured list, so review feedback can be read, filtered and tracked outside the PDF. This tool walks each page's annotations and builds a page/type/author/content table you can read on screen or download as a CSV for a spreadsheet — the standard way to collect comments from a reviewed draft. Everything runs on your device.

Extract annotations — runs on your device

How it works

Annotations are self-describing objects. Each page of a PDF may hold an /Annots array of annotation dictionaries, and each dictionary carries everything the export needs in named fields: /Subtype identifies the kind (/Text is a sticky note, /Highlight, /Underline and /StrikeOut are text markup, /FreeText is a typed box, /Stamp, /Ink and so on); /T holds the title, which PDF editors conventionally fill with the reviewer's name; /Contents holds the typed comment text; and /M holds a modification date. The tool iterates the pages in order, reads each array, decodes the string fields — PDF strings may be plain Latin-1 or UTF-16, and both are handled — and emits one table row per annotation.

Two structural details shape what you see in the output. First, replies: when a reviewer answers a comment, the reply is its own annotation carrying an /IRT ("in reply to") reference to the parent, so a discussion thread appears as several rows on the same page rather than one merged blob. Second, highlights: a /Highlight annotation stores the rectangles it covers, but not the words underneath — those belong to the page's content stream. If the reviewer typed a note into the highlight's pop-up it appears in the content column; a bare highlight exports with an empty one, which is correct, not a bug.

Form fields are deliberately excluded from the walk. A visible field is a /Widget annotation, so it technically lives in the same /Annots arrays, but its "content" is fill-in data, not review commentary — mixing the two would pollute a comment report with every checkbox on the form. To inventory fields and their values instead, use the PDF form inspector, which exports them as JSON.

The CSV is generated in memory from the same rows shown in the table, with quoting applied so commas and line breaks inside comments survive the round trip into Excel or Google Sheets. Nothing about the source PDF is modified; extraction is a pure read.

Worked example: consolidating feedback on a design spec

A product manager circulates spec-v2.pdf (36 pages, 2.8 MB) to three reviewers and gets back one file containing all their marks: 87 annotations in total. Running it through this tool takes about a second and produces an 87-row table — 41 highlights (12 with pop-up comments), 33 sticky notes, 9 replies and 4 stamps. The CSV weighs 11 KB. In a spreadsheet she sorts by the author column and finds the split — Priya 44, Marcus 29, Dana 14 — then filters out the 29 bare highlights with empty content, leaving 58 actionable comments. Each gets a status column and becomes a tracked to-do; the whole triage takes twenty minutes instead of paging through 36 pages of pop-ups. The source PDF is unchanged and goes back into review for round three.

Frequently asked questions

How do I export all comments from a PDF into a spreadsheet?

Load the PDF into the tool on this page. It lists every annotation with its page, type, author and text in a table, and a CSV download drops straight into Excel, Google Sheets or Numbers.

What information does the export include for each comment?

Each row records the page number, the annotation type such as highlight or sticky note, the author name stored in the annotation, and the comment text. Highlights without a typed comment still appear with their type and page.

Can I extract annotations made by a specific reviewer only?

Export everything, then filter the CSV's author column in your spreadsheet. Author names come from each annotation's title field, which most PDF editors fill with the reviewer's name automatically.

Why do some highlights show no text content in the export?

A highlight only stores text if the reviewer typed a comment into its pop-up; the highlighted words themselves live in the page, not in the annotation. Rows with an empty content column are plain highlights with no attached note.

Does this tool also export form field values?

No. Form fields are excluded deliberately, because filled-in data is a different job from review comments. Use the PDF form inspector to list every field and export its values as JSON.

Is my marked-up document uploaded anywhere during extraction?

No. The PDF is parsed by JavaScript running in your browser, and both the table and the CSV are generated on your device. Confidential review drafts never leave your machine.

Related tools