---
title: "What are PDF annotations? Types, examples, and how they work (2026)"
canonical_url: "https://www.nutrient.io/blog/what-are-annotations/"
md_url: "https://www.nutrient.io/blog/what-are-annotations.md"
last_updated: "2026-06-19T07:57:11.300Z"
description: "PDF annotations are markup objects layered on a page — highlights, comments, stamps, ink, forms. Here’s every annotation type, how it’s stored, and what “print annotations” actually means."
---

**TL;DR**

PDF annotations are objects added to a PDF page — including highlights, comments, drawings, stamps, and interactive form fields — that don’t alter the underlying document content. The PDF specification defines two categories: markup annotations (highlights, ink, stamps) and non-markup annotations (interactive forms, multimedia). This article covers all annotation types defined by the specification; how annotations are stored in the PDF data model; and how Nutrient SDK provides APIs to create, read, update, and delete them across web, mobile, and desktop platforms.

## What are PDF annotations and why do they matter?

PDF annotations are objects defined by the PDF specification that are added to a page to provide notes, highlights, drawings, or interactive elements without altering the underlying document content. In other words, an annotation is a layer of markup and comments that helps people review, clarify, or collaborate on a document more easily. With Nutrient’s SDKs, you can turn a static PDF into a workspace for feedback and collaboration.

They support a range of use cases:

- **Education** — Teachers and students highlight important information, add explanations, and provide feedback.

- **Business** — Teams collaborate on proposals, review reports, and track document changes.

- **Research** — Researchers mark findings and append context or insights.

- **Personal use** — Users annotate e-books and articles to track ideas or emphasize content.

### Key benefits

Some of the key benefits of annotations include:

- **Improved communication** — Clarify complex information and add helpful context.

- **Increased productivity** — Streamline reviews and avoid lengthy feedback loops.

- **Enhanced collaboration** — Enable multiple reviewers to share notes and markups.

- **Better organization** — Highlight key details and structure documents more clearly.

What began in the 1990s as a static format for preserving content fidelity has since evolved into a versatile canvas for real-time collaboration. PDF annotation tools that are built into popular software like Adobe Acrobat and [ONLYOFFICE](https://www.onlyoffice.com/) now support a rich mix of markup and interactive features, making them indispensable in modern document workflows.

The following section covers the different annotation types.

## PDF annotation types

The PDF specification defines two categories for annotations:

- **Markup annotations** — Primarily used to mark up the content of a PDF document.

- **Non-markup annotations** — Used for other purposes, including interactive forms and multimedia.

### Text markup annotations

The simplest types of markup annotations are text markup annotations for marking up page text. These include text highlight, underline, or strikeout annotations.

Nutrient enhances these basic tools by allowing users to customize colors, adjust line thickness, and manage annotation styles through an intuitive interface.![Text Markup Annotations](@/assets/images/blog/2018/what-are-annotations/highlight-annotations.png)

### Drawing annotations

Various drawing annotations can be applied on top of a PDF page, including:

- **Square and circle annotations** — For drawing squares/rectangles and circles/ellipses.

- **Line annotations** — For drawing straight lines.

- **Polygon and polyline annotations** — For drawing polygonal lines.

- **Ink annotations** — For freeform drawing and connecting points into Bézier curves.

All of these support the usual drawing properties such as color, line thickness, fill color (for filled shapes), or line styles (e.g. dotted, dashed).![Drawing Annotations](@/assets/images/blog/2018/what-are-annotations/drawing-annotations.png)

Nutrient’s annotation system supports creating and manipulating these shapes with customizable color, line styles, and fill options.

### Stamp annotations

Stamp annotations can be used when simple shapes drawn with drawing annotations aren’t sufficient — for example, when you want to draw a complex raster or vector image.![Stamp Annotations](@/assets/images/blog/2018/what-are-annotations/stamp-annotations.png)

Nutrient even supports enhanced stamps that can be saved in the browser’s local storage for repeated use, and that can be customized to include user-specific information like IDs or timestamps.

### Text annotations

Two annotation types can be used to add notes to the page:

- Text annotations for adding sticky notes

- Free-text annotations for adding a floating text box![Text Annotations](@/assets/images/blog/2018/what-are-annotations/text-annotations.png)

Nutrient’s annotation tools provide rich text formatting options, such as font selection, text rotation, and justification, allowing for greater flexibility and clarity in note-taking.

### Multimedia annotations

Multimedia annotations let you add interactive elements like audio, video, and even 3D models to your PDF documents. These annotations support interactive content in educational and technical documents.

### Widget annotations

Widget annotations are used to implement interactive forms within PDFs. Nutrient supports a variety of form elements, including buttons, checkboxes, and combo boxes, enabling the creation of fully interactive PDF forms that can be easily filled out and submitted.

### Annotation types at a glance

| Icon | Annotation type | Description                                         | Common use case                     |
| ---- | --------------- | --------------------------------------------------- | ----------------------------------- |
| 🟨   | Highlight       | Marks important text                                | Reviewing academic papers           |
| 📝   | Sticky note     | Adds floating comment bubble                        | Team feedback on reports            |
| ✅    | Stamp           | Visual status indicators (e.g. Approved)            | Workflow approvals                  |
| ✏️   | Ink             | Freehand drawing and sketching                      | Annotating blueprints or forms      |
| 🔘   | Widget          | Interactive form fields like checkboxes and buttons | Fillable forms in PDFs              |
| 🎞️  | Multimedia      | Embedded audio, video, or 3D content                | Interactive technical documentation |

## The PDF annotation model

A PDF document is a collection of data objects organized into a tree structure. The document tree is formed from dictionaries of key-value pairs that can contain other dictionaries as values. An example of another PDF object is a content stream that contains lists of drawing operations or binary image data.

The top-level dictionary in a PDF document contains a list of pages in the document. Each page is represented by its own dictionary that contains separate entries for page content and for annotations associated with the page. Similarly, annotations are also represented by their own dictionaries. Each annotation dictionary contains at least two keys:

- `Rect` specifies the rectangle where the annotation is going to be positioned on the page. This rectangle is in the PDF page coordinate system, which has its origin in the bottom-left corner of the page, with the x axis pointing to the right and the y axis pointing up. Read more in our [coordinate space](https://www.nutrient.io/guides/ios/faq/coordinate-spaces.md) guide.

- `Subtype` specifies one of the supported annotation types.

The annotation type specifies which additional keys can be present in the annotation dictionary and which keys are required.

Below is an example of a page dictionary:

```

46 0 obj
<<
    /Type       /Page                       % Specifies that this dictionary defines a page.
    /Annots     [207 0 R, 208 0 R, 209 0 R] % Contains a list of references to annotation objects on this page.
    /Contents   501 0 R                     % Reference to page content stream.
    /MediaBox   [0, 0, 595, 842]            % Page dimensions.
    % Other page properties
>>

```

Here’s an example of a single annotation dictionary:

```

207 0 obj <<
    /Type       /Annot                               % Specifies that this dictionary defines an annotation.
    /Subtype    /Highlight                           % Specifies annotation type.
    /Rect       [52.9556, 728.343, 191.196, 743.218] % Annotation bounding box in page coordinates.
    /C          [1.0, 1.0, 0.0]                      % Annotation color.
>>

```

You can find all the details about how annotations are stored inside PDF documents in section 8.4 of [Adobe’s PDF specification](http://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf).

### Appearance streams

Annotations may contain properties that describe their appearance — such as annotation color or shape. However, these don’t guarantee that the annotation will be displayed the same in different PDF viewers. To solve this problem, each annotation can define an appearance stream that should be used for rendering the annotation. An appearance stream is a set of drawing commands that tells a PDF viewer precisely how to render an annotation, independent of the visual properties defined in the annotation’s dictionary. [The Nutrient SDK enables you to parse and create appearance streams](https://www.nutrient.io/guides/web/annotations/appearance-streams.md).

## Nutrient annotation model

The PDF annotation model [is quite complex](https://www.nutrient.io/guides/web/annotations/introduction-to-annotations/what-are-annotations.md). The Nutrient SDK provides a PDF annotation library that [exposes annotation dictionaries as regular objects](https://www.nutrient.io/guides/web/annotations/introduction-to-annotations/what-are-annotations.md#the-pdf-annotation-model/) in your programming language of choice. Each annotation dictionary describes a single annotation object on the page. It hides implementation details and complex interactions between various annotation properties, so you can create, read, update, and delete annotations without deep knowledge of the PDF file format.

### Advanced features in Nutrient’s PDF annotation library

[Nutrient’s PDF annotation library](https://www.nutrient.io/guides/web/annotations.md) offers several advanced features that enhance the usability and flexibility of annotations:

- **No zoom annotation** — This feature ensures annotations maintain a consistent size, regardless of the zoom level of the PDF. This is particularly useful for viewing complex documents, such as architectural plans, where clarity is crucial.

- **Enhanced stamps** — Users can save stamps locally in their browser and customize them with specific user data, such as IDs or timestamps. This feature streamlines the process of adding frequently used stamps and ensures consistency across documents.

- **Inspector tool** — Nutrient’s context-sensitive inspector tool enables users to fine-tune the appearance of annotations, including adjusting border colors, fill colors, opacity, and font settings. This level of control ensures annotations match a document’s visual style. Additionally, markup tools such as highlights, sticky notes, and freehand drawings are essential for adding comments and feedback directly to PDF documents. Our [PDF markup tool](https://www.nutrient.io/sdk/solutions/markup/) provides all these capabilities in an easy-to-use interface.

## Additional resources

- [Annotation guides](https://www.nutrient.io/guides/web/annotations.md) — Detailed guides on how to work with annotations in Nutrient SDKs.

- [Instant JSON reference](https://www.nutrient.io/api/reference/document-engine/instant-json/) — Learn more about Nutrient’s serialization format for annotations and forms.

- [Annotations demo](https://www.nutrient.io/demo/annotations) — Try our annotation features with this live demo.

Nutrient’s PDF annotation library supports web, mobile, and desktop platforms.

Ready to add PDF annotation tools to your web or mobile app? [Try Nutrient’s PDF SDK](https://www.nutrient.io/try/) today with a free trial — no credit card required.

## FAQ

#### What are PDF annotations?

PDF annotations are objects added to a PDF document to provide additional information or interactive elements without altering the original content. They include highlights, notes, shapes, and multimedia elements.

#### What are PDF annotations when printing?

When printing a PDF, annotations are the annotation objects — such as highlights, sticky notes, stamps, and ink drawings — that appear overlaid on the page content. Most PDF viewers offer a print option to include or exclude annotations. When annotations are included, the viewer renders the annotation appearance streams on top of the page before sending the output to the printer. When excluded, only the base page content is printed.

#### How do I annotate a PDF?

To annotate a PDF, open a document in a PDF viewer or editor, select the desired annotation tool, and apply the annotation to the document. Save the document to preserve the changes.

#### How do I annotate a PDF programmatically?

To annotate a PDF programmatically, use the annotation editing APIs provided by Nutrient SDKs, or import annotations in Instant JSON or XFDF formats.

#### What types of annotations can be added to a PDF?

The PDF specification includes text markup annotations (highlights, underlines), drawing annotations (shapes, lines), stamp annotations, text annotations (sticky notes, text boxes), multimedia annotations (sound, video), and widget annotations (interactive forms).

#### Can all PDF viewers handle annotations?

Most PDF viewers conforming to the PDF specification can render all types of annotations. However, the editing capabilities might vary between viewers.

#### What is an appearance stream of a PDF annotation?

An [appearance stream](https://www.nutrient.io/blog/what-are-appearance-streams/) is a set of drawing commands that defines how an annotation should be rendered in a PDF viewer, ensuring consistent appearance across different viewers.

#### How do I use no zoom annotation in Nutrient?

The no zoom annotation feature ensures annotations remain a consistent size, regardless of the document’s zoom level. This can be especially helpful in technical fields where precision is required.

#### Can I save and reuse custom stamps in Nutrient?

Yes. With Nutrient, you can save custom stamps in the browser’s local storage for easy reuse. You can also customize these stamps to include user-specific information like IDs or timestamps.
---

## Related pages

- [The business case for accessibility: Five ways it drives enterprise value](/blog/5-ways-accessibility-drives-enterprise-value.md)
- [Accessibility Untangled Why It Matters Guide](/blog/accessibility-untangled-why-it-matters-guide.md)
- [Advanced Techniques For React Native Ui Components](/blog/advanced-techniques-for-react-native-ui-components.md)
- [Ai Document Automation Extraction To Action](/blog/ai-document-automation-extraction-to-action.md)
- [Auto Tagging And Document Accessibility In Dotnet Sdk](/blog/auto-tagging-and-document-accessibility-in-dotnet-sdk.md)
- [Best Document Viewers](/blog/best-document-viewers.md)
- [The CEO’s AI playbook: Why decision architecture beats model selection](/blog/ceo-ai-playbook-decision-architecture.md)
- [Complete Guide To Pdfjs](/blog/complete-guide-to-pdfjs.md)
- [Create Pdfs With React](/blog/create-pdfs-with-react.md)
- [Creating A Document Scanner With Ocr In Python](/blog/creating-a-document-scanner-with-ocr-in-python.md)
- [Convert One Drive Files To Pdf In Sharepoint](/blog/convert-one-drive-files-to-pdf-in-sharepoint.md)
- [Digital Workflow Automation](/blog/digital-workflow-automation.md)
- [The CTO’s AI playbook: Why accountability architecture beats orchestration](/blog/cto-ai-playbook-accountability-architecture.md)
- [Digital Signatures](/blog/digital-signatures.md)
- [Document Viewer](/blog/document-viewer.md)
- [Document Ai Vs Ocr](/blog/document-ai-vs-ocr.md)
- [How To Build A Powerpoint Viewer Using Javascript](/blog/how-to-build-a-powerpoint-viewer-using-javascript.md)
- [Emerging threats: Your logging system may be an agentic threat vector](/blog/emerging-threats-your-logging-system.md)
- [or](/blog/how-to-build-a-javascript-pdf-viewer-with-pdfjs.md)
- [How To Build A React Powerpoint Viewer](/blog/how-to-build-a-react-powerpoint-viewer.md)
- [How To Convert Html To Pdf Using Html2pdf](/blog/how-to-convert-html-to-pdf-using-html2pdf.md)
- [or](/blog/how-to-build-a-reactjs-pdf-viewer-with-react-pdf.md)
- [or](/blog/how-to-build-a-nextjs-pdf-viewer.md)
- [How To Build A Reactjs Viewer With Pdfjs](/blog/how-to-build-a-reactjs-viewer-with-pdfjs.md)
- [or](/blog/how-to-convert-html-to-pdf-using-react.md)
- [or](/blog/how-to-convert-html-to-pdf-using-wkhtmltopdf-and-python.md)
- [How To Create Pdfs With React To Pdf](/blog/how-to-create-pdfs-with-react-to-pdf.md)
- [How To Convert Word To Pdf In Nodejs](/blog/how-to-convert-word-to-pdf-in-nodejs.md)
- [How To Embed A Pdf Viewer In Your Website](/blog/how-to-embed-a-pdf-viewer-in-your-website.md)
- [How To Generate Pdf From Html With Nodejs](/blog/how-to-generate-pdf-from-html-with-nodejs.md)
- [base_url tells WeasyPrint where to resolve relative asset paths](/blog/how-to-generate-pdf-reports-from-html-in-python.md)
- [Linearized Pdf](/blog/linearized-pdf.md)
- [From an HTML string.](/blog/html-in-pdf-format.md)
- [Nutrient Vs Conga Composer](/blog/nutrient-vs-conga-composer.md)
- [Open Pdf In Your Web App](/blog/open-pdf-in-your-web-app.md)
- [Pdf Page Labels](/blog/pdf-page-labels.md)
- [Online Document Viewer](/blog/online-document-viewer.md)
- [Pdfjs Area Annotations Canvas Capture](/blog/pdfjs-area-annotations-canvas-capture.md)
- [Pdf Sdk Performance Benchmark](/blog/pdf-sdk-performance-benchmark.md)
- [Pdfjs Eventbus Guide](/blog/pdfjs-eventbus-guide.md)
- [Pdf Sdk Compliance Security Checklist](/blog/pdf-sdk-compliance-security-checklist.md)
- [Pdf Ua Compliance Guide](/blog/pdf-ua-compliance-guide.md)
- [Pdfjs Coordinate Systems Pdf To Screen](/blog/pdfjs-coordinate-systems-pdf-to-screen.md)
- [Pdfjs React Viewer Setup](/blog/pdfjs-react-viewer-setup.md)
- [Pdfjs Rendering Overlays React Portals](/blog/pdfjs-rendering-overlays-react-portals.md)
- [Pdfjs Limitations Commercial Upgrade](/blog/pdfjs-limitations-commercial-upgrade.md)
- [Pdfjs Text Search Pdffindcontroller](/blog/pdfjs-text-search-pdffindcontroller.md)
- [Pdfjs Navigation Zoom Rotation](/blog/pdfjs-navigation-zoom-rotation.md)
- [Pdfjs Text Highlight Annotations](/blog/pdfjs-text-highlight-annotations.md)
- [Process Flows](/blog/process-flows.md)
- [Vector Pdf](/blog/vector-pdf.md)
- [or](/blog/sample-blog-updated.md)
- [Convert an HTML file to PDF.](/blog/top-ten-ways-to-convert-html-to-pdf.md)
- [Wcag2 Accessibility Requirements Documents](/blog/wcag2-accessibility-requirements-documents.md)
- [Web Sdk Is Now Headless](/blog/web-sdk-is-now-headless.md)
- [What Is A Vpat](/blog/what-is-a-vpat.md)
- [Why Your Ai Agent Hallucinates Pdf Table Data](/blog/why-your-ai-agent-hallucinates-pdf-table-data.md)
- [Why Pdfium Is A Trusted Platform For Pdf Rendering](/blog/why-pdfium-is-a-trusted-platform-for-pdf-rendering.md)
- [What Is Pdf Ua](/blog/what-is-pdf-ua.md)

