🔒 File never leaves your device

Annotate PDF Without Uploading

Draw, highlight, sticky notes, text, shapes, arrows — then download. No upload. No account. No server. Works offline.

📄

Drop your PDF here

or click to browse  ·  Stays 100% in your browser

Page / 1
100%
Ready — open a PDF to start annotating.
Tool
Color
Size
3
Opacity
40%

How it works

1Open your PDF Drop or select any PDF from your device. Mozilla pdf.js renders each page entirely in your browser tab — your file is never sent to any server, ever.
2Annotate freely Pick from 9 tools: freehand pen, highlighter (adjustable opacity), text boxes, sticky notes, rectangles, ellipses, lines, arrows, and an eraser. All annotations are stored per-page in memory with full undo/redo history.
3Download Click Download PDF. pdf-lib merges every annotation layer as a permanent raster on top of each page and triggers a local file save. Sticky note pins are burned in, text renders at full resolution — no upload, no watermark.

Processing uses pdf.js (Mozilla) for rendering and pdf-lib for writing. Both run 100% client-side. You can verify by switching to airplane mode after the page loads — everything still works.

Frequently asked questions

Is my PDF really never uploaded anywhere?
Yes, 100%. This page contains no server-side code and makes zero network requests with your file. When you open a PDF, the browser's FileReader API reads it into local memory, pdf.js renders it on an HTML canvas, and you annotate on a second transparent canvas layered on top. The Download action assembles the result in-memory with pdf-lib and triggers a local save. To verify: load the page, then enable airplane mode in your OS — annotation and download still work perfectly.
What annotation tools are available?
Freehand draw — smooth pen strokes, adjustable size and color.
Highlighter — semi-transparent strokes with adjustable opacity (10–100%). Great for marking text without obscuring it.
Text box — click anywhere to place a typed label. Press Enter to commit, Escape to cancel.
Sticky note — click to place a yellow note pin; hover to reveal the full note text. Pins are burned into the downloaded PDF.
Rectangle & Ellipse — drag to draw outlined shapes for callouts or emphasis.
Line — straight line segment between two points.
Arrow — straight arrow with a solid arrowhead pointing at content.
Eraser — removes annotation pixels without affecting the original PDF.
Are annotations preserved correctly in the downloaded PDF?
Yes. When you download, pdf-lib embeds each annotation canvas as a raster image layer on top of the original page. Annotations are permanent and display correctly in Adobe Reader, Apple Preview, Chrome, Edge, and any other PDF viewer. The underlying text layer of the original PDF is preserved beneath the annotation image.
Can I annotate multi-page PDFs?
Yes. Use the Prev/Next buttons or type a page number directly into the page box to jump around. Annotations on every page are stored in memory while you navigate. When you download, all pages with all their annotations are merged into the output file. Use "Clear" to wipe only the current page's annotations, or close and reopen to reset everything.
Does it work with scanned or password-protected PDFs?
Scanned PDFs (image-only, no text layer) work perfectly — you annotate on top of the scanned image just like any other page. Password-protected PDFs that require a password to open cannot be rendered by pdf.js and will show an error. Try removing the password in another app first, then annotate here.