Zero-Trust File Sanitization

A client-only forensic metadata scrubber for documents and images. Drop your files to destroy hidden traps and tracking data instantly.

Start Sanitizing

Inspection Terminal

Supports .pdf, .jpg, .png, .tiff

🛡️

Drop file here to inspect

Or click to browse

No file selected

100% sterile files. 0% server uploads.

Designed for security researchers, journalists, and privacy advocates.

100% Client-Side

Your files never leave your device. All forensic parsing and sanitization happens entirely in your browser's memory using WebAssembly and Canvas APIs.

White-Box Trap Detection

Identifies hidden text traps in PDFs where selectable text is painted over with graphic fill layers to trick reviewers.

EXIF & Thumbnail Destruction

Completely re-encodes raw pixel data natively. Prevents "Uncropped Thumbnail" leaks where EXIF thumbnails retain uncropped image fragments.

XMP Network Stripping

Safely destroys embedded XMP metadata streams that can leak local file paths, editing history, or call home to third-party servers.

Latest Insights

Read more about file privacy, OPSEC, and metadata security on our blog.

August 22, 2026

The Genesis of SterileFile

Why we built a strictly client-side metadata scrubber.

Read More →

Automate Bulk Sanitization

Integrate SterileFile into your local workflows using headless browser bots. Zero API keys, zero uploads.

import { test, expect } from '@playwright/test';

test('bulk sanitize files', async ({ page }) => {
  // 1. Open SterileFile locally or via URL
  await page.goto('https://sterilefile.anmo.space/bot');

  // 2. Upload file via the hidden automation input
  await page.setInputFiles('#bot-file-input', 'confidential-report.pdf');

  // 3. Wait for the sanitization to complete and download
  const downloadPromise = page.waitForEvent('download');
  await page.click('#sanitize-btn');
  const download = await downloadPromise;

  // 4. Save the sterile file to your machine
  await download.saveAs('./clean-files/confidential-report-sterile.pdf');
});
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  
  // 1. Open SterileFile locally or via URL
  await page.goto('https://sterilefile.anmo.space/bot');

  // 2. Upload file via the hidden automation input
  const fileInput = await page.$('#bot-file-input');
  await fileInput.uploadFile('confidential-report.pdf');

  // 3. Set up download path and trigger sanitization
  const client = await page.target().createCDPSession();
  await client.send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: './clean-files/' });
  
  await page.click('#sanitize-btn');
  
  // Wait for file to download (implement custom wait logic)
  await new Promise(r => setTimeout(r, 2000));
  
  await browser.close();
})();

Frequently Asked Questions

Does this tool upload my files?

No. SterileFile is a pure HTML/JS application. You can disconnect from the internet after loading the page, and it will still work perfectly.

How does image sanitization work?

Instead of risky EXIF tag deletion, we paint the image onto an offscreen HTML5 canvas and extract the raw, naked pixels. This guarantees absolute zero-metadata re-encoding.

What is a White-Box Trap?

When someone tries to redact a PDF by drawing a white box over text instead of permanently deleting the text objects. The text remains selectable and extractable beneath the box.