TraceClear Studio โ AI Image Watermark Remover & C2PA Metadata Stripper
A 100% client-side privacy tool that inspects and verifies invisible C2PA provenance manifests (cryptographic credentials embedded in DALL-E 3 / ChatGPT images), digital signatures, capture tags, and metadata headers, and strips them completely by generating clean raster derivatives directly in-browser using WebAssembly and OffscreenCanvas.
๐Overview & Purpose
When OpenAI's ChatGPT (DALL-E 3) generates an image, it embeds invisible C2PA Content Credentials (cryptographic provenance manifests), along with potential EXIF, XMP, or PNG text metadata that mark the image as AI-generated.
๐ก๏ธ 100% Client-Side Privacy Tool
- Inspects and verifies invisible C2PA provenance manifests, digital signatures, capture tags, and metadata headers.
- Strips all metadata and C2PA manifests by generating a clean raster copy directly inside your browserโwithout uploading any image bytes to a remote server.
๐ ๏ธHow It Is Built (Tech Stack & Architecture)
The application is built using a modern, performance-oriented frontend architecture designed for zero server latency, instant WASM pre-warming, and strict local memory security:
| Layer | Technology | Role |
|---|---|---|
| Framework | Next.js 15 (App Router) | React Server Components, client state isolation, SEO metadata |
| UI Library | React 19 + TypeScript | Type-safe component trees, state hooks, and custom refs |
| Styling | Tailwind CSS v4 | Fast utility CSS, dark/light theme tokens, micro-animations |
| Provenance Engine | @contentauth/c2pa-web | Official C2PA WebAssembly engine (/wasm/c2pa.wasm) for reading & verifying manifests |
| Icons | Lucide React | Crisp iconography for UI controls, statuses, and badges |
| Typography | Google Fonts | Inter (sans), Plus Jakarta Sans (headings), JetBrains Mono (metadata readouts) |
โ๏ธHow It Works (Step-by-Step Mechanism)
The engine coordinates concurrent binary inspection, WebAssembly verification, and background pixel raster re-encoding:
User drops/selects image (File)
Client Memory (0 Server Uploads)๐Step 1: Zero-Server Ingestion
When a user uploads, drops, or pastes an image, the file stays strictly in client RAM as a JavaScript File object. No fetch or POST requests are ever dispatched to any backend.
โกStep 2: Concurrency & Binary Header Audit
In audit.ts, two operations execute concurrently:
- Ultra-Fast Dimension Extraction (<0.05ms):
parseDimensionsFromHeader()inspects raw binary markers (PNGIHDR, JPEGSOFmarkers, WebPVP8/VP8L/VP8X, GIF headers) without decoding the entire image into a bitmap. - Metadata Signature Scanning: Slices the first 512KB of the file to search for markers:
Exif/EXIF(Camera, device info, GPS tags)8BIM/Photoshop 3.0/IPTC(Editorial and rights tags)http://ns.adobe.com/xap/1.0//xmpmeta(Adobe XMP packets)tEXt/iTXt/zTXt(PNG text metadata chunks)
๐ฌStep 3: WebAssembly-Powered C2PA Manifest Inspection
- The app pre-warms the official C2PA WASM binary (
preloadC2pa()) on mount. - When an image is provided,
inspectC2pa()reads the JUMBF manifest store. - It parses claim generator details (e.g. ChatGPT / DALL-E 3), signature issuers, signing timestamps, assertion actions, and ingredient chains.
๐Step 4: Speculative Background Pre-Sanitization
In page.tsx, as soon as a file is selected, the app initiates sanitizeImageRaster() in the background while the audit is finishing. When the user clicks "Remove Watermark", the clean result is displayed instantly with 0ms perceived delay.
๐จStep 5: Clean Derivative Generation (Pixel Re-encoding)
- The source image is decoded into raw pixel data using
createImageBitmap(file). - It renders the raw pixel buffer onto an
OffscreenCanvas(or standard HTML5<canvas>fallback). - It re-encodes the clean pixel array into a fresh Blob (
image/jpeg,image/png, orimage/webp).
๐พStep 6: Interactive Split-Slider & Export
- An interactive split slider and side-by-side view let users visually verify the pixel fidelity between the original image and the sanitized derivative.
- Users can download
<name>-clean.jpg/.png/.webpor copy the clean image straight to the clipboard vianavigator.clipboard.write([ClipboardItem]).
๐Codebase Structure
Clean modular directory structure isolating UI components, WASM libraries, and SEO schema generators:
Image-Provenance-Cleaner/ โโโ public/ โ โโโ favicon.svg โ โโโ wasm/ โ โโโ c2pa.wasm # Official C2PA WebAssembly binary โโโ src/ โ โโโ app/ โ โ โโโ globals.css # Tailwind v4 setup & custom scanning animations โ โ โโโ layout.tsx # Fonts, SEO metadata, JSON-LD structured data โ โ โโโ page.tsx # Main studio state machine (idle -> auditing -> cleaned) โ โโโ components/ โ โ โโโ file-drop.tsx # Drag & drop / file picker / paste listener โ โ โโโ image-stage.tsx # Interactive split-comparison canvas & zoom inspector โ โ โโโ metadata-card.tsx # Collapsible metadata group details & copy buttons โ โ โโโ clean-result-card.tsx # Download action, size comparison, copy to clipboard โ โ โโโ header.tsx # Top navigation, status indicator & theme toggle โ โ โโโ education-section.tsx # Educational guide on C2PA & AI provenance โ โ โโโ principles-section.tsx # 100% client-side privacy guarantees โ โ โโโ faq-section.tsx # Crawlable SEO FAQ accordion โ โโโ lib/ โ โโโ audit.ts # Binary header parser for dimensions & metadata tags โ โโโ c2pa.ts # C2PA WASM SDK loader and manifest validator โ โโโ cleaner.ts # OffscreenCanvas pixel re-encoder & sanitizer โ โโโ sample.ts # Synthetic demo image generator โ โโโ types.ts # Core TypeScript data definitions โ โโโ json-ld.ts # Structured SEO schemas (SoftwareApplication, FAQ, HowTo) โโโ next.config.ts # Security headers & immutable caching for WASM โโโ package.json # Dependencies and scripts
๐Key Engineering Highlights
All operations execute locally in the clientโs browser sandbox; images never leave the user's device.
Configured in next.config.ts (Cache-Control: public, max-age=31536000, immutable) so c2pa.wasm loads instantaneously on repeat visits.
Runs raster re-encoding in parallel with metadata auditing to ensure an instantaneous 0ms perceived user experience.
Extracts dimensions directly from binary headers in <0.05ms before the browser even finishes decoding the full bitmap.
Complete OpenGraph, Twitter cards, and rich JSON-LD schemas (SoftwareApplication, FAQPage, HowTo) embedded directly in layout.tsx.
๐Project Links & Repository
- ๐ Live Application: https://chatgpt-image-watermark-remover.vercel.app
- ๐ป GitHub Repository: https://github.com/Mudassirdbs/Image-Provenance-Cleaner
FROM CONCEPT TO CODE </>
LET'S TURN IDEAS INTO SOLUTIONS
I'm available for full-time roles & freelance projects.
I thrive on crafting dynamic web applications
and delivering seamless user experiences.