Edit PDF

Annotate pages with text, shapes & highlights — or convert any PDF into a fillable form.

Drop your PDF here

or click to browse

Processed entirely in your browser — never uploaded

Processed entirely in your browser · Files never leave your device

Runs entirely in your browser. No uploads. Your files stay private.

How Browser-Based PDF Editing Works — Annotations and AcroForm Fields

PDF Editor combines two libraries to make a static PDF editable without uploading it. pdfjs-dist (Mozilla's PDF.js) renders each page onto an HTML canvas so you have a true visual surface to draw on. pdf-lib then writes the annotations you place back into the document as native PDF objects when you export. Both libraries run entirely in your browser, so the file never leaves your device.
Four annotation types are supported: text boxes, rectangles, semi-transparent highlights, and arrows. Each annotation stores its position as normalized coordinates relative to the page's media box, which means rendering at any zoom level keeps the position accurate. On export, pdf-lib drops these into the page's content stream — they become genuine vector objects, not a separate layer, so they display correctly in Acrobat, Chrome's built-in viewer, Edge, macOS Preview, and Foxit.
The Make Fillable tab adds AcroForm widgets by scanning the PDF's text layer for patterns: runs of four or more underscores, dotted lines, labels ending in a colon followed by whitespace, and checkbox markers like [ ], □, and ○. Detected positions are converted into PDFTextField, PDFCheckBox, or PDFSignature widgets via pdf-lib. The output is a standards-compliant interactive form that works in Acrobat Reader, browser PDF viewers, and any AcroForm-aware tool.
True editing of existing text is not supported here, and that is a property of the PDF format rather than a tool limitation. PDFs store text as positioned glyph streams from embedded font subsets — there is no concept of editable paragraphs or reflow. Even Acrobat Pro's text edit feature is essentially a wrapper that re-typesets a single line and only works when the original font is available. To add or correct text, this tool lets you draw a white rectangle over the old content and place a new text annotation on top.
Scanned image-only PDFs work for annotations but break automatic field detection because there is no text layer to scan. Run the file through PDF OCR first to add a Tesseract-generated text layer, then return here for Make Fillable to do its job. Manual field placement still works on raw scans.
Browser memory is the practical ceiling. PDFs up to about 200 pages and 100 MB are comfortable; very long documents slow down because pdfjs-dist has to render every page you scroll past. Encrypted PDFs cannot be parsed by pdf-lib until they are unlocked — use the PDF Password tool to remove protection first.
Digital signatures present in the source document are invalidated by any modification, including annotation. That is a property of the PDF signing standard. If you need to sign rather than annotate, use the PDF Sign tool, which writes a fresh signature widget into the file as the last modification.

Common Use Cases

01

Contract markup before signing

Add comments, highlight clauses, and draw arrows to sections needing redlines before sending the PDF back for revision.

02

Convert paper-style forms

Turn a contract template with underscore signature lines into a fillable PDF that clients can complete in any reader, including on mobile.

03

Annotate technical PDFs

Add notes, corrections, and callouts to engineering drawings, code printouts, or research papers without losing vector clarity.

04

Prepare presentation handouts

Annotate slide-deck exports with speaker cues, emphasis boxes, and arrows so attendees see exactly what to focus on.

Frequently Asked Questions

Text boxes, rectangles, semi-transparent highlights, and arrows. All four are embedded permanently as native PDF vector objects on export — they are not a separate annotation overlay.
Yes. Because pdf-lib writes them into the page's content stream, they render correctly in Adobe Acrobat, Chrome and Edge built-in viewers, macOS Preview, Foxit, and any other PDF reader.
No — true text editing of existing PDF content is not possible in a browser. PDFs store text as positioned glyphs from embedded font subsets, not as editable paragraphs. Cover the old text with a white rectangle and place a new text annotation on top.
Runs of four or more underscores or dots, labels ending with a colon followed by blank space, and checkbox markers like [ ], □, or ○. Each match becomes an AcroForm text field, checkbox, or signature widget.
No — automatic detection needs a text layer. Run the file through PDF OCR first to add Tesseract-generated text, then come back. Manual field placement still works on raw scans.
No. PDF.js renders pages and pdf-lib writes the output entirely in your browser. The file is held in tab memory and never transmitted.
Yes. Any modification to a signed PDF — including annotations — invalidates existing digital signatures. This is part of the PDF signing standard and applies to every PDF tool, including Acrobat.
There is no enforced cap. PDFs up to about 200 pages and 100 MB are comfortable on a modern laptop. Beyond that, pdfjs-dist rendering can pressure the tab's memory and slow scrolling.
Not directly — pdf-lib refuses to parse encrypted streams. Remove the password using the PDF Password tool first, edit, then re-encrypt if needed.
This tool is for adding visual annotations and converting static forms into interactive AcroForms. PDF Sign places a single signature widget — typed, drawn, or image-based — and is purpose-built for the signing workflow.

Advertisement