BASALT · JOURNAL

What a PDF annotation is, and why comments vanish in other apps

2026-10-30 · what is a pdf annotation

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:

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.

DOWNLOAD BASALT 2.3.2 BUY $29 FREE FOR 24 HOURS · MACOS 13+