Watermarks protect documents and establish branding. Add text overlays like "CONFIDENTIAL" or image logos to PDFs with a single line of code using HTML and CSS for complete styling control.
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("contract.pdf");
pdf.ApplyWatermark("<h1 style='color:red;'>DRAFT</h1>");
pdf.SaveAs("watermarked.pdf");
IronPDF's watermark feature accepts HTML strings, giving you full access to CSS styling for fonts, colors, opacity, and positioning.
What Is a PDF Watermark?
A watermark is a semi-transparent overlay on PDF pages. Common uses include:
- Branding: Company logos on reports
- Security: "CONFIDENTIAL" or "INTERNAL USE ONLY" labels
- Status indicators: "DRAFT", "APPROVED", "SAMPLE"
- Copyright protection: Photographer watermarks on proofs
Unlike stamps that sit on top of content, watermarks typically appear behind or blend with the document content.
How Do I Add a Text Watermark?
Use the ApplyWatermark method with HTML:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Financial Report Q4</h1><p>Revenue: $1.2M</p>");
// Add text watermark with styling
pdf.ApplyWatermark("<h1 style='color:gray; font-size:72px;'>CONFIDENTIAL</h1>");
pdf.SaveAs("confidential-report.pdf");
The HTML string supports any valid CSS—fonts, colors, sizes, and transforms.
How Do I Control Watermark Opacity?
Adjust transparency with the opacity parameter:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("report.pdf");
// 50% opacity (default)
pdf.ApplyWatermark("<h1>DRAFT</h1>", opacity: 50);
// Subtle watermark at 20% opacity
pdf.ApplyWatermark("<h1>SAMPLE</h1>", opacity: 20);
// Bold watermark at 80% opacity
pdf.ApplyWatermark("<h1>DO NOT COPY</h1>", opacity: 80);
pdf.SaveAs("output.pdf");
Lower opacity values make the watermark more subtle, allowing document content to remain readable.
How Do I Rotate the Watermark?
Diagonal watermarks are common for security:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("contract.pdf");
// Rotate 45 degrees
pdf.ApplyWatermark(
"<h1 style='color:red;'>VOID</h1>",
rotation: -45,
opacity: 30
);
pdf.SaveAs("voided-contract.pdf");
Rotation values are in degrees. Negative values rotate counter-clockwise.
How Do I Position the Watermark?
IronPDF uses a 3x3 grid for watermark placement:
using IronPdf;
using IronPdf.Editing;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("document.pdf");
// Center of page (default)
pdf.ApplyWatermark("<h1>DRAFT</h1>",
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
// Top-right corner
pdf.ApplyWatermark("<img src='logo.png' />",
verticalAlignment: VerticalAlignment.Top,
horizontalAlignment: HorizontalAlignment.Right);
// Bottom-left corner
pdf.ApplyWatermark("<p>Page footer text</p>",
verticalAlignment: VerticalAlignment.Bottom,
horizontalAlignment: HorizontalAlignment.Left);
pdf.SaveAs("positioned-watermark.pdf");
The 3x3 grid gives you nine possible positions: top-left, top-center, top-right, middle-left, center, middle-right, bottom-left, bottom-center, and bottom-right.
How Do I Add an Image Watermark?
Use an <img> tag in your HTML:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("proposal.pdf");
// Image watermark from file
pdf.ApplyWatermark("<img src='company-logo.png' style='width:200px;' />",
opacity: 25);
// Or use Base64 encoded image
var logoBytes = File.ReadAllBytes("logo.png");
var base64 = Convert.ToBase64String(logoBytes);
pdf.ApplyWatermark($"<img src='data:image/png;base64,{base64}' style='width:150px;' />",
opacity: 30);
pdf.SaveAs("branded-proposal.pdf");
Image watermarks work well for company logos or certification stamps.
How Do I Combine Text and Images?
HTML supports multiple elements:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("certificate.pdf");
var watermarkHtml = @"
<div style='text-align:center;'>
<img src='logo.png' style='width:100px;' />
<h2 style='color:navy; margin:10px 0;'>ACME Corporation</h2>
<p style='color:gray;'>Authorized Document</p>
</div>";
pdf.ApplyWatermark(watermarkHtml, opacity: 40);
pdf.SaveAs("certified-document.pdf");
How Do I Apply Different Watermarks Per Page?
Target specific pages:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("multipage.pdf");
// Watermark only the first page
pdf.ApplyWatermark("<h1>COVER PAGE</h1>", pageIndices: new[] { 0 });
// Watermark pages 2-5
pdf.ApplyWatermark("<h1>CONFIDENTIAL</h1>", pageIndices: new[] { 1, 2, 3, 4 });
// Watermark the last page
pdf.ApplyWatermark("<h1>END OF DOCUMENT</h1>",
pageIndices: new[] { pdf.PageCount - 1 });
pdf.SaveAs("selective-watermark.pdf");
Page indices are zero-based, so page 1 is index 0.
How Do I Create a Diagonal Watermark Across the Page?
For watermarks that span the entire page diagonally:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = new PdfDocument("legal-doc.pdf");
var diagonalWatermark = @"
<h1 style='
color: red;
font-size: 120px;
font-family: Arial, sans-serif;
text-transform: uppercase;
letter-spacing: 10px;
'>CONFIDENTIAL</h1>";
pdf.ApplyWatermark(diagonalWatermark, rotation: -45, opacity: 15);
pdf.SaveAs("diagonal-watermark.pdf");
Large font sizes with low opacity create effective full-page watermarks.
How Do I Remove a Watermark?
Watermarks in IronPDF are rendered into the PDF. To "remove" one, you'd need to work with the original unwatermarked document. A common pattern:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
// Keep the original
var original = new PdfDocument("report.pdf");
original.SaveAs("report-original.pdf");
// Create watermarked version
var watermarked = new PdfDocument("report.pdf");
watermarked.ApplyWatermark("<h1>DRAFT</h1>", opacity: 30);
watermarked.SaveAs("report-draft.pdf");
// When ready, use the original for final version
Store originals separately if you need unwatermarked versions later.
How Do I Watermark During PDF Generation?
Apply watermarks right after rendering:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
var html = @"
<html>
<body>
<h1>Sales Report</h1>
<p>Q4 2024 Performance</p>
<table>
<tr><td>Revenue</td><td>$2.5M</td></tr>
<tr><td>Growth</td><td>15%</td></tr>
</table>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Apply watermark before saving
pdf.ApplyWatermark("<h1 style='color:lightgray;'>INTERNAL</h1>",
rotation: -30,
opacity: 20);
pdf.SaveAs("internal-sales-report.pdf");
Quick Reference
| Parameter | Description | Default |
|---|---|---|
html |
HTML string for watermark content | Required |
opacity |
Transparency (0-100) | 50 |
rotation |
Degrees of rotation | 0 |
verticalAlignment |
Top, Middle, Bottom | Middle |
horizontalAlignment |
Left, Center, Right | Center |
pageIndices |
Array of page numbers | All pages |
| Use Case | Settings |
|---|---|
| Draft indicator | Large text, 20-30% opacity, diagonal |
| Company logo | Image, 15-25% opacity, corner position |
| Confidential label | Red text, 30-40% opacity, centered |
| Copyright | Small text, bottom corner, 40% opacity |
CSS gives you complete control over watermark appearance—use any styling you'd use in a web page.
For more watermark customization options, see the IronPDF custom watermark documentation.
Written by Jacob Mellor, CTO at Iron Software. Jacob created IronPDF and leads a team of 50+ engineers building .NET document processing libraries.
Top comments (0)