- 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.