Media editor: build vs buy in the age of AI
Polotno

PDF tool

Add a watermark to a PDF

Add a watermark to a PDF without uploading it anywhere. The PDF watermark goes diagonally across every page, and the stamp stays editable right up until you export.

Quick answer

Type your text, drop a PDF, and every page gets a diagonal watermark you can still edit before exporting. Nothing is uploaded.

Formula: PDF → Polotno JSON → text element per page → PDF (browser-only)

Drop a PDF file here to convert it to PDF

or

Runs entirely in your browser. Your file never leaves your device.

Add a watermark to a PDF without uploading the file anywhere. The PDF watermark lands on every page at an angle, and because the stamp is a real text element it stays editable right up until you export.

Every page, sized to that page

The watermark is placed per page rather than once for the document. Font size comes from each page's diagonal, so a landscape insert in a portrait report gets a stamp in proportion to its own page. Documents that mix A4 and A3, or slip a chart in sideways, come out looking deliberate rather than patched.

It stays editable

Once the PDF parses, the document opens in the embedded editor with the watermark already applied. Select it on any page to change the text, colour, angle, or opacity, or delete it from a page that should not carry it. The export renders what you see.

What this is not

It is not a security control. The watermark is an ordinary element drawn on top of the page, and anyone who opens the exported file in a PDF editor can remove it. It is useful for marking a draft, an internal copy, or a proof. It will not stop a determined recipient, and no client-side watermark will.

The same operation in code

watermark.ts
import { pdfToJson } from "@polotno/pdf-import";
import { jsonToPDFBlob } from "@polotno/pdf-export/browser";

const design = await pdfToJson({ pdf: await file.arrayBuffer() });

for (const page of design.pages) {
  page.children.push({
    type: "text",
    text: "CONFIDENTIAL",
    fontSize: 96,
    fill: "#ff0000",
    opacity: 0.25,
    rotation: -35,
    align: "center",
    alwaysOnTop: true,
    // position from the page box
    x: 0,
    y: design.height / 2,
    width: design.width,
  });
}

const blob = await jsonToPDFBlob(design);

The same loop runs under Node for batch work. See PDF import, PDF export, and PDF editing in the SDK.

As an API, without the browser

The same watermark runs server-side. Post the design to the Cloud Render API and get the watermarked file back, or run the renderer inside your own infrastructure when the documents cannot leave your network. Both paths take the identical schema, so a preview on this page and a file from a queue never disagree.

Watermarking an image works the same way, because the watermark is an element on the design whichever format comes out. See the watermark API for the pattern, and PDF generation for stamping documents generated from data.

Frequently asked questions

Q: How do I add a watermark to a PDF?

Type the text you want, drop the PDF on the converter, and every page gets a diagonal stamp. The document opens in the editor afterwards so you can move, recolour, or resize the watermark before downloading.

Q: Does my PDF get uploaded?

No. The file is parsed in your browser with pdf.js and the watermark is added to the design locally. Nothing is transmitted, which matters given people watermark contracts, drafts, and pre-release documents.

Q: Is this a security feature?

No, and it is worth being blunt about it. The watermark is a normal text element sitting on top of the page. Anyone can open the exported PDF in an editor and delete it. Use it to mark a draft or discourage casual reuse, not to protect a document.

Q: Can I change the angle, colour, or opacity?

Yes, in the editor after conversion. The defaults are a red stamp at 25% opacity rotated 35 degrees, which reads clearly without hiding the text underneath. Select the watermark on any page to change it.

Q: Does it handle documents with mixed page sizes?

Yes. The stamp is sized and centred per page from that page's diagonal, so a landscape chart in a portrait report gets a watermark in proportion to its own page rather than the document's first one.

Q: Will the watermark cover the text underneath?

Not at the default 25% opacity - the underlying text stays readable and selectable, since the watermark is a separate element rather than a flattened overlay.

Want this in your app? Embed Polotno SDK.

TRUSTED BY

100,000+

CREATORS

300+

BUSINESSES

ExpediaUnbounceLovePopPostGridPredis.ai