Watermark is a local-first web application for inspecting C2PA Content Credentials and understanding media provenance. The first release verifies media in the browser, computes a SHA-256 digest, distinguishes valid signatures from trusted issuers, and displays manifest lineage without uploading the asset.
- Drag-and-drop image, audio, and video inspection
- C2PA manifest discovery and verification through
@contentauth/c2pa-web - Signature algorithm, issuer, claim generator, ingredients, assertions, and validation codes
- File size, MIME type, and SHA-256 display
- Explicit handling for missing, invalid, untrusted, and unsupported credentials
- Browser-only processing with no application backend
This software is under active development and contains known bugs. While we strive for accuracy, results may not always be as expected.
- Not all text documents are suitable for processing in all modes. PDFs with letter-spacing (e.g., stylized headers like "K Y L O S A R C") may produce garbled output when using grammar checking features.
- Scientific notation, chemical formulas, and technical content may be incorrectly flagged or modified by grammar/linting tools.
- Text extraction from PDFs, Word documents, and PowerPoint files may lose formatting, embedded images, or complex layouts.
- The unsloper and stripper tools are designed for prose text and may not work well on code, technical documentation, or structured data.
- Video files do not always load a playable preview or reference thumbnail. In these cases, you will still see watermarking details, C2PA manifest information, and metadata — but no video playback.
- Large video files may take longer to process or may not fully load in the browser.
- Some media formats may not be fully supported by the C2PA SDK.
Original documents and media are never overwritten by Watermark. All processing happens in memory and produces a new output — your source files remain completely untouched on disk. Even if results are unexpected or processing fails, there is no risk to your original files.
npm install
npm run devVite serves the app at http://localhost:42069.
npm run build
npm run typecheck
npm testsrc/App.tsxcontains the drop zone, preview, result views, and text/batch views.src/lib/c2pa.tsowns SDK initialization and file verification.src/lib/verification.tsnormalizes SDK manifest data into a stable UI model.src/lib/file.tscontains MIME detection, byte formatting, and SHA-256 utilities.src/lib/types.tsdefines the application verification contract.src/lib/transform.tsprovides text stripping, PII redaction, unsloping, and PDF normalization.src/lib/harper.tsintegrates the Harper grammar checker (WASM-based, browser-local).src/lib/metadata.tshandles file metadata extraction, sanitization, and editing.src/lib/extract.tsextracts text from PDFs, Word documents, and PowerPoint files.
The C2PA SDK runs in a Web Worker with its WASM binary loaded as a Vite asset. The app does not currently create or re-sign manifests; editing and signing require a separate key-management and provenance update design.
A trusted C2PA result means the SDK validated the manifest signature, content binding, and issuer trust policy available to the application. It does not prove that every statement in the manifest is true. A missing manifest does not establish that content is human-made or AI-generated.
- ✅ Privacy-safe metadata sanitizer with an explicit field allowlist.
- ✅ Text analysis with AI detection, grammar checking (Harper), and unsloping.
- ✅ File metadata viewer and editor.
- Provenance-aware crop, resize, and compression workflow.
- Local lineage dashboard backed by IndexedDB.
- AI-detection appeal evidence export.
- Educational views for C2PA, SynthID, statistical watermarking, and steganalysis.
- C2PA technical specification
- C2PA JavaScript SDK
- Supported C2PA media formats
- SynthID overview
- Harper - Grammar checker
MIT. See LICENSE.