How to strip camera and device metadata from mp4 / mov
- Step 1Work from the original camera file — Device tags live in the file the camera or phone wrote. A copy that has been re-exported by an editor may carry a different encoder stamp (the NLE's, not the camera's) — scrub whichever copy you intend to publish so the published file is clean.
- Step 2Drop the MP4 or MOV onto the scrubber — FFmpeg.wasm reads the file locally — the device-identifying clip is never uploaded. MOV, MP4, M4V, MKV, WebM, AVI, and TS are all accepted; the same container comes back out.
- Step 3Keep Mode on 'default' for a standard device strip —
-map_metadata -1removes the whole global tag block: camera make/model, software/encoder stamp, capture date, and GPS. Title and chapters are kept. That covers every common device fingerprint. - Step 4Choose 'all' to also clear muxer fingerprints — Mode 'all' adds
-map_chapters -1 -fflags +bitexact, which removes chapter markers and suppresses any encoder fingerprint the muxer would otherwise stamp into the output — the most thorough device anonymisation. - Step 5Process and download — The strip is a fast stream-copy; the cleaned file keeps its extension (
clip-out.mov) and the source on disk is left untouched. - Step 6Confirm with ffprobe or a metadata viewer — Check that
make,model,encoder, andcom.android.versionare gone. If a re-export stamped a freshencodertag, scrub the final exported file. Note that any device caption burned into the image (a timecode or camera-ID overlay) is pixel data — remove it with video-redactor.
Device fingerprint fields by source
The hardware/software identifiers the scrubber removes, by where the file came from. All are container metadata; removing them is lossless.
| Source | Device fields written | Removed by default mode? |
|---|---|---|
| iPhone / iPad (.mov) | com.apple.quicktime.make (Apple), .model (e.g. iPhone 15 Pro), .software (iOS version) | Yes |
| Android (.mp4) | com.android.version, handler_name, occasionally vendor manufacturer/model tags | Yes |
| DSLR / mirrorless | make, model, firmware string in udta; sometimes a serial-like identifier | Yes (tag-based fields) |
| Editor re-export (Premiere, Resolve, ffmpeg) | encoder / Lavf writing-library string identifying the software | Yes — but a fresh stamp can be re-added on re-export |
Default vs all mode for device stripping
Both modes stream-copy the media. The difference is how aggressively container-level fingerprints are cleared.
| Aspect | Mode: default | Mode: all |
|---|---|---|
| FFmpeg flags | -map_metadata -1 -c copy | -map_metadata -1 -map_chapters -1 -fflags +bitexact -c copy |
| Camera make/model/software | Removed | Removed |
| Encoder / muxer fingerprint | Input tags removed | Removed + muxer suppressed (bitexact) |
| Chapter markers | Kept | Removed |
| Use when | Standard device anonymisation | Maximum-paranoia, zero residual fingerprint |
Cookbook
Before/after metadata dumps showing device fields disappearing from MP4 and MOV files. Identifiers anonymised.
iPhone .mov: make / model / software removed
An iPhone records its exact model into QuickTime atoms. Default mode strips them.
Before (ffprobe): TAG:com.apple.quicktime.make : Apple TAG:com.apple.quicktime.model : iPhone 15 Pro TAG:com.apple.quicktime.software : 17.4.1 Scrub (Mode: default) → IMG_3310-out.mov After: (no make / model / software) Streams: hevc + aac, byte-identical to source
Editor export: the encoder stamp removed
After a Premiere or ffmpeg export, an encoder tag identifies the software. Scrub the final file to clear it.
Before: TAG:encoder : Lavf60.16.100 TAG:major_brand : isom Scrub (Mode: default) → final-cut-out.mp4 After: (no encoder tag) Note: scrub the LAST exported file — re-exporting after scrubbing re-adds a fresh encoder stamp.
Android .mp4: version and handler cleared
Android stamps OS version and handler names. Default mode removes the tag block.
Before: TAG:com.android.version : 14 TAG:handler_name : VideoHandle Scrub (Mode: default) → VID_20260511-out.mp4 After: (no com.android.version) (handler tags reset to muxer defaults)
DSLR clip: firmware string gone
Mirrorless bodies write make/model and sometimes firmware into udta. Tag-based identifiers are removed.
Before: TAG:make : SONY TAG:model : ILCE-7M4 TAG:com.sony.... : firmware/lens hints Scrub (Mode: default) → C0042-out.mov After: (no make / model / sony vendor tags)
Maximum strip with mode 'all'
For zero residual fingerprint, 'all' also clears chapters and suppresses the muxer stamp.
Scrub (Mode: all): -map_metadata -1 -map_chapters -1 -fflags +bitexact -c copy Result: - all device tags: GONE - chapter markers: GONE - muxer 'encoder' fingerprint: suppressed - video/audio streams: still byte-identical
Edge cases and what actually happens
Re-exporting after scrubbing re-adds an encoder tag
ExpectedIf you scrub a file and then run it through an editor or transcoder again, the new tool stamps its own encoder string. Always scrub the final exported file you intend to publish, not an intermediate one, or the publish copy will carry the last tool's fingerprint.
Camera ID or timecode burned into the picture
By designSome cameras and broadcast workflows overlay a camera ID, timecode, or watermark onto the frames. That is pixel data in the encoded stream and metadata removal cannot touch it. Blur or cover it with video-redactor.
Major brand / ftyp box still identifies the format
PreservedThe container's major_brand / ftyp (e.g. isom, qt) describes the file format, not your device, and is required for playback — it is not a personal identifier. Default mode does not remove it; mode 'all' with bitexact normalises muxer-added fingerprints but the brand box remains so the file stays valid.
DSLR serial number stored in a vendor data track
PreservedTag-based make/model/serial are removed, but a few cameras embed identifiers in a vendor-specific data stream rather than a tag. -c copy preserves all streams, so such a track can survive. Tag fingerprints are reliably cleared; a vendor data stream would need separate removal.
Output essentially same size
ExpectedDevice tags are tiny, so the scrubbed file is the same size as the original minus a few bytes. That confirms a clean stream-copy: only the metadata changed, not the footage.
Unusual container the muxer can't rewrite
FailA corrupt download or an exotic container the MP4/MOV muxer rejects produces a 'Metadata scrub failed' error (non-zero exit). Re-acquire the original or remux to a standard MP4 first, then scrub.
File exceeds the tier size cap
LimitFree is 1 GB per file; Pro 10 GB, Pro-media and Developer 100 GB. There is no length cap. A full RAW- proxy shoot above the limit needs a higher tier or trimming first with lossless-trimmer.
You wanted to remove the audio fingerprint too
By designThis tool removes metadata, not media. If the concern is an identifiable voice in the audio, mute it with audio-mute-region or strip the track via audio-track-extractor workflows — metadata scrubbing leaves the audio intact.
Frequently asked questions
Which device fields does this remove?
Camera make and model (com.apple.quicktime.make / .model), the iOS/Android software version, the encoder software stamp, and com.android.version — the whole global metadata block. Capture date and GPS go at the same time because they live in the same block.
Will my footage lose quality?
No. The tool stream-copies the video and audio with -c copy, so the encoded bytes are identical to the source. Only the container's metadata is rewritten.
Is the file uploaded anywhere?
No. FFmpeg.wasm runs in your browser and the device-identifying clip never leaves your machine — which is the point when you are trying to break the link to your hardware.
Why does my scrubbed file still have an encoder tag?
Because something re-exported it after the scrub. Each editor/transcoder adds its own encoder string. Scrub the final published file last. For belt-and-braces removal, use mode 'all', which suppresses muxer fingerprints via -fflags +bitexact.
Does the major_brand / format box leak my device?
No. major_brand (isom, qt, etc.) identifies the container format and is needed for playback — it is not a personal or device identifier. It is correctly left in place.
Can it remove a serial number my DSLR embedded?
Tag-based serial/make/model are removed. A few cameras store identifiers in a vendor data stream instead of a tag; -c copy preserves all streams, so that case needs separate stream removal. For typical phone and DSLR tags, the strip is complete.
Does it also remove the capture date and GPS?
Yes — default mode clears the entire global metadata block, so date and location are removed alongside the device fields. If you specifically want only date or only GPS framing, the underlying operation is the same one-pass strip.
What about a camera-ID overlay visible on screen?
That is burned into the picture, not metadata. Cover it with video-redactor. Metadata scrubbing changes tags, not pixels.
Which formats are supported?
MP4, MOV, M4V, MKV, WebM, AVI, and TS. The output uses the same container as the input.
Does default mode delete my chapter markers?
No. Default keeps title and chapter markers. Use mode 'all' if you also want chapters removed (it runs -map_chapters -1).
How big a file can I scrub for free?
Up to 1 GB per file on Free, one at a time. Pro is 10 GB / 5 files, Pro-media 100 GB / 50 files, Developer 100 GB / unlimited batch. Length is unlimited; only size is capped.
Do I need to install anything?
No. It runs in the browser via FFmpeg.wasm — no FFmpeg install, no sign-in for files under the free cap. Handy on managed work machines where installing software is blocked.
Privacy first
Every JAD Video tool runs entirely in your browser via WebCodecs and FFmpeg (WebAssembly). Your video files never leave your device — verified by zero outbound network requests during processing.