How it works

How eDocu signs PDFs without uploading them

When you sign a PDF with eDocu, the document is read, previewed, signed, and saved as a new file inside your browser. This page explains each step, what eDocu's servers do receive, and what they don't.

The short version

  • Your PDF is processed in your browser.
  • eDocu does not upload or store the document you are signing.
  • The signed PDF is generated in your browser and downloaded directly by it.
  • Signing in does not change whether the PDF itself is uploaded.
  • eDocu's servers still receive other data, such as usage analytics and, if you use them, account details, saved signatures, and billing information. That data is separate from your document.
  1. SelectThe browser reads the PDF into memory
  2. Previewpdf.js renders the pages locally
  3. SignYou place your signature on the page
  4. Buildpdf-lib adds the signature to the original PDF
  5. DownloadThe browser saves the signed file

What happens when you select a PDF

When you choose a PDF, or drop it onto the signer, your browser gives the page access to that one file. eDocu reads its contents into memory in the browser tab as raw bytes (an ArrayBuffer). It keeps a copy of those original bytes in memory so it can build the signed file later. Nothing is sent to a server to open the file.

How the PDF preview works

eDocu uses pdf.js, an open-source PDF renderer, to show the pages. The pdf.js library code (version 3.11.174) is downloaded from the cdnjs content delivery network (run by Cloudflare) when the signer loads, like any other script.

eDocu passes the selected PDF to pdf.js as in-memory data rather than as a remote URL, so pdf.js has nothing to fetch. pdf.js parses the document in a Web Worker, a background thread that runs inside your browser. Its code comes from the same CDN, but your PDF is handed to it inside the browser, not over the network. Each page is then drawn onto a canvas and kept as a preview image in memory. These previews are only for display; they don't define the signed file.

How your signature is added

You can draw a signature, type your name in one of the signature fonts, or upload an image of your signature. In each case the browser turns it into an image. You then place and resize it on the page. eDocu stores its position as a percentage of the page, so it lands in the same spot in the final file.

When you download, eDocu uses pdf-lib, a JavaScript PDF library that is included in eDocu's own code. pdf-lib loads the original PDF bytes in the browser and embeds the signature image once, as PNG or JPEG. Other image types are converted to PNG in the browser first. It then draws the signature onto each page where you placed it, taking the page's rotation into account, and saves the result as a new PDF.

Because the signature is drawn on top of the original document, the rest of the PDF (its text, graphics, page sizes, and unsigned pages) stays as it was. If pdf-lib cannot open the original, for example an encrypted PDF, eDocu instead builds a new PDF from the rendered page previews with the signatures drawn on. That also happens in the browser, but the pages then become images, so their text can no longer be selected.

The result is a PDF with a visual signature. eDocu does not add a certificate-based digital signature or verify the signer's identity; see the Terms.

How the signed PDF is downloaded

The new PDF exists only as bytes in the browser's memory. eDocu wraps them in a Blob (a file-like object held by the browser) and creates a temporary blob: URL that points to that memory, not to a server. A download link with that URL is clicked automatically, and your browser saves the file, named signed-<original name>.pdf. The temporary URL is released a moment later.

The same steps and PDF code are used whether or not you are signed in. When you are signed in, the signer additionally loads your saved signatures from your account, but the PDF is handled the same way.

What eDocu's servers do receive

"Your document isn't uploaded" does not mean "nothing ever leaves your browser". Using eDocu involves the following server-side data, all separate from the document:

  • Usage analytics. eDocu uses its own first-party product analytics. Events can include page and session information, browser and device context, and technical details about the file, such as its type, size, extension, and number of PDF pages.
  • Account and sign-in data. If you create an account or sign in, eDocu receives the details needed for that, such as your name and email address, or your Google sign-in.
  • Saved signatures. If you are signed in and explicitly choose to save a signature, the signature image and related details (its name, the typed text of a typed signature, its colour, and its font) are sent to eDocu and stored with your account. Saving a signature sends the signature only, never the document you signed.
  • Billing. If you subscribe to a paid plan, subscription and billing information is processed through Stripe.

The Privacy Policy describes this data in full.

What eDocu does not receive from the signing flow

  • The original PDF.
  • The signed PDF.
  • The document's content, such as its text or page images.
  • The document's filename in analytics. Only the file extension is recorded.
  • Your signature image or typed signature text in analytics. A signature reaches eDocu only if you choose to save it to your account, as described above.

Does this also apply to image signing?

Yes. When you sign a JPG, PNG, or WebP image, the image is read into memory in your browser and drawn onto a canvas at its original size, with your signature on top. The canvas is then saved as a new image in the same format (or as PNG if your browser cannot create WebP files), and your browser downloads it the same way. The image file itself is not uploaded to eDocu.

Third-party code is not the same as your document

Some parts of eDocu are downloaded from other services. The pdf.js library comes from cdnjs (Cloudflare), and fonts, including the handwriting-style fonts used for typed signatures, come from Google Fonts. These are ordinary downloads of software and fonts: the requests do not contain your document, and the fonts are requested without the text you type.

These services still see standard request information, such as your IP address, and the signer needs them to load. eDocu is therefore not an offline tool.

How we verified this

We reviewed the current signer source code for both the public signer and the signed-in app, and followed the document from file selection to download. We then inspected the Network panel in the browser's developer tools while signing a PDF without an account, signing a PDF while signed in, signing an image, and using the Image to PDF, Compress Image, and Convert Image tools.

In each case no request carried the document or image, no multipart file upload appeared, and no large binary or base64 document payload was sent. The only requests were first-party analytics, account API calls, and downloads of code, fonts, and other static assets. This was a review by the eDocu team, not an independent audit.

You can check this yourself: open your browser's developer tools, switch to the Network tab, and sign a document. Entries starting with data: or blob: may appear there. They are the browser reading data that is already in memory, such as your signature image or the finished file, not requests to a server.

Learn more