Edit PDF
Add text, annotations, and form fields to PDFs directly in the browser. No Adobe Acrobat required.
Edit PDF
Add text, images, shapes, freehand drawings, highlights, underlines, and comments to any PDF page β all client-side, no upload needed.
Drop a PDF file here
or click to browse
Add Text, Shapes, and Annotations to Any PDF
You received a 12-page contract as a PDF and need to highlight three clauses, add a comment on page 4, and redact an account number on page 7. Opening the file in a full PDF editor is overkill for these annotations. Drop the PDF into the edit tool, use the highlight tool on the clauses, add a comment bubble on page 4, switch to the redact tool and draw a black box over the account number on page 7, then click Save PDF. The output is the same document with all your annotations applied.
The editor provides 13 tools: text, rectangle, redact, circle, line, arrow, freehand draw, image, highlight, underline, comment, eraser, and hand/pan. Each edit is stored per-page with its own colour, size, opacity, and fill settings. The undo/redo history lets you step through changes. When you save, every edit across all pages is drawn onto the PDF as vector graphics -- sharp at any zoom level.
Common editing tasks and how to accomplish them
A lawyer receives a 40-page merger agreement as a PDF. The highlight tool marks key clauses in yellow. The comment tool adds notes like "Needs board approval" at specific paragraphs. The redact tool draws solid black rectangles over sensitive financial figures. The save produces a marked-up PDF ready for review by the opposing counsel.
An invoice PDF has blank lines for quantity, unit price, and total -- but no editable form fields. The text tool adds typed content at the exact positions. Click anywhere on the page, type the value, and the text appears at the specified font size and colour. The output looks like the form was filled in electronically.
A designer adds a logo to a PDF proposal. The image tool accepts PNG, JPG, GIF, and WebP files. The freehand tool draws circling marks around areas needing revision. The arrow tool points to specific elements. The rectangle tool frames sections. All annotations are stored as vector overlays, preserving the original page content underneath.
Related tools
How Edits Are Stored as SVG Overlays and Drawn on Save
When you load a PDF, PDF.js renders the current page onto a Canvas element. An SVG element is positioned over the canvas to capture your interactions -- clicks, drags, and freehand strokes. Each edit is stored as a data object with type, coordinates, colour, size, opacity, and other properties. The SVG provides a live preview while the actual PDF drawing happens on save.
Coordinate conversion between screen and PDF space
The SVG overlay uses viewport coordinates (origin at top-left, measured in CSS pixels). PDF pages use point coordinates (origin at bottom-left, 1 point = 1/72 inch). The conversion functions vpToPdf() and pdfToVp() handle the Y-axis flip and scale factor. This ensures edits render correctly regardless of container size or zoom level. For a letter-size page (612x792 points) displayed at 500px width, the scale factor is approximately 0.817.
When you click Save PDF, pdf-lib loads the original document, embeds the Helvetica font, and iterates through all edits on all pages. Each edit type uses the corresponding API: drawText() for text, drawRectangle() for rects/highlights/redactions, drawEllipse() for circles, drawLine() for lines/arrows/underlines/freehand, and drawImage() for images. The edits are drawn directly onto the PDF pages, producing vector output that remains sharp at any zoom level.
Per-page undo and redo history
Each page maintains its own independent undo/redo stack. When you add, move, resize, or delete an edit, the current state is pushed onto the history stack. Undo restores the previous state. Redo moves forward. The Clear button removes all edits on the current page. Each page's history is independent -- editing page 3 does not affect the undo history for page 7.
The editor supports text in sizes from 8 to 120 points using the Helvetica font (Latin characters). For non-Latin text, you would need a custom font embedding solution not currently included. The redact tool draws solid black rectangles at full opacity, completely obscuring the underlying content. This is distinct from the highlight tool, which uses 30% opacity to mark text while keeping it readable.
Frequently Asked Questions
Is my data uploaded to a server?
No. All processing happens in your browser. Your files never leave your device -- there is no server upload at any point. This matters for confidential documents like legal contracts, financial statements, or medical records.
What types of edits can I make?
You can add text (8-120pt, Helvetica), draw shapes (rectangles, circles, lines, arrows), add images (PNG, JPG, GIF, WebP), make freehand drawings, highlight text (30% opacity), add underlines, insert comment bubbles, redact sensitive content (solid black), and erase any edit you have added. All edits are stored per-page.
Can I undo or redo edits?
Yes. Use the Undo and Redo buttons (or Ctrl+Z / Ctrl+Y) to step through your edit history per page. Each page maintains its own independent history stack. You can also clear all edits on the current page with the Clear button.
Is there a file size limit?
There is no hard limit, but very large PDFs (hundreds of pages or tens of MB) may slow down rendering because PDF.js renders each page individually. For best results, keep files under 50 MB.
Does editing reduce PDF quality?
No. Your edits are drawn as vector graphics and embedded text directly onto the PDF pages. The original page content is preserved. Only the elements you add are new -- nothing from the original is recompressed or degraded.
What fonts are available for text edits?
The tool uses Helvetica, which supports Latin characters (English, French, German, Spanish, etc.). Text is drawn using pdf-lib drawText() with the embedded Helvetica font. For non-Latin characters (Chinese, Japanese, Arabic), you would need a custom font embedding solution not currently included.
Can I edit multiple pages?
Yes. Use the Prev/Next buttons to navigate between pages. Each page stores its own independent set of edits with separate undo/redo history. When you save, all edits across all pages are applied to the output PDF.
How is this different from Adobe Acrobat?
Adobe Acrobat is a full-featured PDF editor with form fields, digital signatures, OCR, and PDF creation. This tool focuses on annotation -- adding text, shapes, highlights, and redactions. For quick markups without a subscription, this tool covers the essentials. For advanced features like form creation or digital signatures, Acrobat is the better choice.