RealPDF
A real PDF editor that runs entirely in your browser. No uploads, no accounts — your documents never leave your device. The only exception is a signing request you choose to send, and that is encrypted in the browser first (see below).
Features
Edit & annotate
- Freehand pen, highlighter (multiplied blend, like a real marker) and eraser
- Text boxes with font family/size/color, rectangles, ellipses, lines and arrows
- Edit any drawn result, not just text: selecting an annotation shows the options of the tool that produced it, pre-filled with that object's own values, and changing them restyles the selection in place — a cover's fill, a rectangle/ellipse/line/arrow's colour and width (the arrow head follows its line), a pen stroke or highlight, and text (selecting text activates the text tool so its font, size and colour can be edited right away). Multi-selections, undo/redo and export all keep up; see docs/selection-options.md.
- Edit existing text in place: click any text and retype it — the original font (bold/italic included), size, colour and position are matched, and the box grows along the baseline as you type so the replacement never wraps. The original glyphs are deleted from the page's content stream (the text layer, search and copy see the new text only), with the replacement embedded using the same font program (subset per font). The canvas previews the final page automatically: the original glyphs disappear from the rendered page as you edit (no fake background box, so text over artwork/stripes previews correctly), and undo brings them back. Re-click an edit to keep changing it, or erase it to reveal the original. A replacement that is selected can also be restyled with the text options.
- Cover existing content with white boxes and type over it to "replace" text
- Insert images (drag & drop or file picker) and signatures — draw them or upload a photo/scan (with automatic white-background removal)
- Select, move, resize, rotate and delete annotations, multi-select with Shift
- Undo/redo, zoom (25%–400%), fit-to-width, page navigation
Signing (certificate-based, like DocuSign or Acrobat Sign)
- A Sign button in the top bar with two choices: Sign yourself and Request signatures
- Adopt your signature once per device: your name and email, and a signature you type (three script fonts), draw or upload. RealPDF confirms the email with a 6-digit code and its CA issues a certificate for that address (valid one year, subject
CN=<name>, OU=Email verified by RealPDF, E=<email>). The key pair is generated in the browser as non-extractable and only the public key is sent; the signer and their signature are remembered on the device, so next time Sign goes straight to placing. Only the email is verified, not the name
- Your own certificate instead: Use a certificate file opens a PKCS#12 file (
.p12 / .pfx, RSA or ECDSA P-256/384/521) with its password in the browser; the certificate, its private key and the password never leave the device
- Place, review, done: the editing tools step aside while you sign. Click on the page (or drag a box) to drop your signature, drag it to move or resize it, or click a "Sign here" tag on the document's empty signature fields. A Start flag points at the next tag, and a document with tags shows them before you create a signature, which happens at the first one. Once every tag is signed the bar says Ready to finish?; Finish shows a review step (with reason, location and certify under More options) and the done step offers the download. The handwritten signature is embedded in the certified signature's appearance, next to "Digitally signed by", the name and the date
- Standard PAdES signatures (
ETSI.CAdES.detached, SHA-256, with the signer's certificate chain and the signing-certificate-v2 attribute), which Adobe Acrobat/Reader and other validators check as digitally signed documents
- Countersigning: an unchanged document is signed as an incremental update (the original bytes are kept and the signature is appended), so signatures already in the file stay valid
- Certify (DocMDP): the first signer can lock the document so that any change other than filling forms and signing invalidates it
- Request signatures: list the signers (name, optional email), place a "Sign here" field for each (added to the PDF as empty signature fields named after the signer), and get a link like
https://realpdf.app/sign/<id>#<key> plus an email draft addressed to them. The document is encrypted in the browser with AES-256-GCM before upload and the key exists only in the link's , which browsers never send to the server, so the server stores ciphertext it cannot read (file name and message included). Whoever opens the link presses , sees their tags, creates a signature at the first one and fills them, and the signed copy is uploaded back to the same link (encrypted again); the sender opens the link to see who signed and download the result. Links expire after 30 days, and the sender can delete them earlier from the home screen or the dialog
Local library
This is the beginning of the README. Read the rest at the original. Read the full README ↗