BASALT · JOURNAL
What a PDF annotation is, and why comments vanish in other apps
A PDF annotation is an object attached to a page that sits on top of the page content instead of being part of it. Sticky notes, highlights, typed text boxes, drawn shapes, links and form fields are all annotations. Because each one is a separate object with its own settings, a reader can show it, hide it or leave it off the printout without changing the page underneath.
That's also why comments seem to vanish. The page is the same in every app, but each app decides which annotations to draw, and a flag or a missing drawing inside the annotation can make one reader skip it. The same objects also carry the name of whoever made them, which is worth knowing before you share the file.
Where annotations live in the file
Each page dictionary can have an /Annots entry, an array of references to annotation objects. If the entry is missing, the page has none. The page's visible content, which is a separate stream of drawing instructions, isn't touched by any of them.
An annotation dictionary holds what the reader needs to treat it as a thing you can click, move and delete. The usual entries are:
/Subtype: the kind. Text (a sticky note), FreeText (a text box), Highlight, Underline, StrikeOut, Square, Circle, Ink (freehand drawing), Link, Widget (a form field), FileAttachment, Popup and Redact (a redaction mark)./Rect: the rectangle on the page that the annotation occupies./Contents: the text, such as the comment itself./T: the title, which by convention is the author's name, on markup annotations./M: the modification date./AP: the appearance stream, a small drawing that says how the annotation looks./F: a set of flags that control display and printing.
Form fields are annotations too, with the subtype Widget. A field's answer is stored as data in the field, not in the page's content, which is worth knowing when you fill a PDF form on a Mac and send it on: the typed value travels with the file.
Why comments don't show in another app
Four causes cover almost every case.
First, the flags. In /F, each bit switches something on: bit 1 is Invisible, bit 2 Hidden, bit 3 Print, bit 6 NoView, bit 7 ReadOnly and bit 8 Locked. As numbers, Hidden is 2, Print is 4 and NoView is 32. An annotation with the Hidden bit set is not drawn or printed, and with NoView set it isn't shown on screen, though it can still print. An annotation without the Print bit never prints, a common reason comments are missing from a printout.
Second, the appearance stream. Many annotations carry an /AP entry that draws them, and a reader that relies on it shows the annotation exactly as the author saw it. When a file has no /AP, a reader must draw the annotation itself from /Rect, /Contents and its type, and different readers do that differently. One app may draw a note icon where another draws nothing.
Third, viewer settings. Many readers have a switch to show or hide comments, and some hide popup notes until you click the icon. A comment can be there and simply not in view.
Fourth, flattening. When an app flattens a file, the annotations are drawn into the page content and the objects are discarded. Printing to a new PDF usually does the same to whatever annotations the print includes. The marks show everywhere afterward, but they can't be edited, and the comment text and author usually go with the objects. Flattening a PDF on a Mac explains what survives.
How to see them on a Mac
Preview is the simplest check. Open the file, choose Tools > Show Inspector, and open the Annotations pane. Apple describes it as showing annotations made to a PDF. The list has the columns Type, Author, Date and Page. Check this pane for reviewers' names.
For a look at the structure, install qpdf with brew install qpdf. It only reads here. Make an expanded copy first, because annotation dictionaries can sit inside compressed object streams in PDF 1.5 and later files:
qpdf --qdf --object-streams=disable document.pdf expanded.pdf
Then count the annotations by kind:
grep -a -o -E '/Subtype */(Text|FreeText|Highlight|Underline|StrikeOut|Square|Circle|Ink|Link|Widget|FileAttachment|Popup|Redact)\b' expanded.pdf | sort | uniq -c
Each line is a count and a subtype. A Popup is the window that goes with a note, so notes often come in Text and Popup pairs. The count is of annotation objects in the file, which can be more than a page lists: on macOS 15, one note added through PDFKit came out as two Text and two Popup objects, while the page itself listed one of each. Links and form fields are annotations as well, so a count above zero doesn't mean anyone commented.
To read the details, print the lines that name people and dates:
grep -a -E '^ */(T|M|F|Contents) ' expanded.pdf
Lines such as /Contents 9 0 R are a page pointing to its drawing instructions, not a comment. In a test file with two notes, each annotation showed its text, a /T reviewer name and an /M date. One had /F 4 (Print only) and the other /F 2 (Hidden). The hidden note was still in the file with its author and date, though a reader that honors the flag won't draw it. Use qpdf --show-object= followed by an object number to print any single annotation as it is stored.
Reviewers' names and dates travel with the file
A PDF that went through review can carry a name and a time for every comment: the /T entry and the /M entry on each markup. They aren't in the document properties, so removing the author from the metadata leaves them in place. The same goes for notes that were deleted from view but not from the file, such as hidden ones above.
Before you send a file outside your organization, look at the Annotations pane, and remove what shouldn't leave. Removing comments and annotations from a PDF covers the options. Drawing a black box as an annotation is not redaction, because the text under it is still there; the black box redaction myth shows why.
Frequently asked questions
Why are my PDF comments not showing?
Usually because of a flag or a viewer setting. The annotation may have the Hidden or NoView bit set, the reader may have comments turned off, or the file may lack the appearance stream the reader needs to draw it. To see whether the comment is in the file at all, count the annotations in an expanded copy with qpdf, as shown above.
Why are my PDF annotations not showing in another app?
Because each app draws annotations by its own rules. An annotation with an appearance stream is drawn as stored, and one without it is drawn however the app chooses, which can mean not at all. A different app also may not support the annotation type. If you need the marks to look the same everywhere, flatten a copy.
What does "this text has an annotation associated with it" mean?
It's a message some readers show over annotated text, and it means a comment, highlight or note is attached to that spot. Wording and behavior vary by reader. Look in the Annotations pane in Preview, or the comments list in your reader, to see the note itself.
What does print PDF annotations mean?
It's the setting that decides whether comments and markup are drawn on paper. In the file, each annotation has a Print flag, and an annotation without it is left off the printout whatever the setting says. If your notes are missing from a printout, check the print dialog first and the flag second.
Are form fields annotations?
Yes. A form field is an annotation with the subtype Widget, and its typed answer is stored with the field, not drawn into the page. That's why a form can still hold an answer you can no longer see.
Can I see who left a comment on a PDF?
Yes, in most cases. Markup annotations have a title entry that by convention holds the author's name, and a modification date. In Preview, the Annotations pane shows both as Author and Date. A comment made by software or a script may have a blank or generic name.
Does deleting a comment remove it from the file?
Normally, yes, because the reader removes the annotation object when it saves. If the file was saved incrementally, though, an earlier saved version may still contain it. Counting end-of-file markers in the file is one way to check.
Doing it in Basalt
Basalt has an Inspect tool that counts the annotations in a PDF and marks them for review, so you can see that a file carries comments before it leaves your hands. It reports the count and not the contents, so it doesn't repeat any reviewer's name. A Redact export removes any annotation that a redaction mark touches, and Forms can lock field answers into the page, which is on by default.
There's no one-step "remove all annotations" in Basalt, so to clean out every comment you'd remove them in the app you used to make them, or flatten a copy. Every tool writes a new file and your original is untouched. The engine that opens documents has no network entitlement. Basalt costs $29 once for up to three Macs, and the 24 hour trial includes every tool.
Redaction that proves itself
Basalt destroys the content you mark, then re-opens the file it wrote and proves the content is gone before it saves anything. Your documents never leave your Mac.