PrivMeta is a free, open-source metadata removal tool. File bytes are processed in the browser and are not uploaded by the cleaning code.
See the codePrivMeta is a free, open-source metadata remover. File bytes are processed in the browser and are not uploaded by the cleaning code.
| Type | Formats | Approach |
|---|---|---|
| Images | JPEG/JPG, PNG, WebP | Lossless segment removal for JPEG; browser raster re-encode for static PNG/WebP |
| Animated images | GIF | Lossless block-level removal; frames, timing and palette preserved |
| Documents | PDF, DOCX | Remove standard PDF properties/identifiers and DOCX package/author identities |
| Video | MP4, MOV, WebM, MKV | Format-specific ISO-BMFF and Matroska parsers; no transcoding |
| Audio | MP3, WAV, FLAC, AAC, M4A | Format-specific tag and container parsers; no transcoding |
AVI, OGG, HEIC/HEIF, TIFF and other unlisted formats are not currently supported. Coverage is deliberately structure-specific rather than described as “all metadata.” Read the privacy model and format coverage for the exact removal targets, preservation behaviour and known limitations.
The privacy regression harness drives the real browser UI, compares metadata with ExifTool, scans for raw sentinel values, validates important format properties and checks browser decoding. Run it locally with:
npm run privacy:test
It also runs in GitHub Actions for pull requests and pushes to master. See
the harness documentation for setup and fixture
guidance.
pdf-lib and jszip, plus hand-written client-side format parsersnpm install
npm run dev
Open http://localhost:3000.
Build and start:
docker compose up --build
Start an existing build in the background:
docker compose up -d
Stop it:
docker compose down
47 followers · starred Sep 2026
33 followers · starred Sep 2026
TypeScript
79.4%
JavaScript
15.1%
CSS
4.6%
PrivMeta is a free, open-source metadata removal tool. File bytes are processed in the browser and are not uploaded by the cleaning code.
See the codePrivMeta is a free, open-source metadata remover. File bytes are processed in the browser and are not uploaded by the cleaning code.
| Type | Formats | Approach |
|---|---|---|
| Images | JPEG/JPG, PNG, WebP | Lossless segment removal for JPEG; browser raster re-encode for static PNG/WebP |
| Animated images | GIF | Lossless block-level removal; frames, timing and palette preserved |
| Documents | PDF, DOCX | Remove standard PDF properties/identifiers and DOCX package/author identities |
| Video | MP4, MOV, WebM, MKV | Format-specific ISO-BMFF and Matroska parsers; no transcoding |
| Audio | MP3, WAV, FLAC, AAC, M4A | Format-specific tag and container parsers; no transcoding |
AVI, OGG, HEIC/HEIF, TIFF and other unlisted formats are not currently supported. Coverage is deliberately structure-specific rather than described as “all metadata.” Read the privacy model and format coverage for the exact removal targets, preservation behaviour and known limitations.
The privacy regression harness drives the real browser UI, compares metadata with ExifTool, scans for raw sentinel values, validates important format properties and checks browser decoding. Run it locally with:
npm run privacy:test
It also runs in GitHub Actions for pull requests and pushes to master. See
the harness documentation for setup and fixture
guidance.
pdf-lib and jszip, plus hand-written client-side format parsersnpm install
npm run dev
Open http://localhost:3000.
Build and start:
docker compose up --build
Start an existing build in the background:
docker compose up -d
Stop it:
docker compose down
47 followers · starred Sep 2026
33 followers · starred Sep 2026
TypeScript
79.4%
JavaScript
15.1%
CSS
4.6%