MP4
The dominant video container. ISOBMFF — shared with HEIC — wrapping H.264 / HEVC / AV1 streams.
- Extensions
- .mp4 · .m4v
- MIME
- video/mp4
- Strip
- Lossless
- Updated
- 2026-05-14
MP4 is the format your phone records video into, the format streaming services serve, the format social media re-encodes uploads into. It’s built on the ISO Base Media File Format (ISOBMFF) — the same container family as HEIC — and shares parser code with it inside Tracemute.
What it carries
MP4 metadata lives in three kinds of boxes, all under or alongside the moov (movie) box:
udta(user data) — the dump zone for QuickTime-era atoms. Children are 4-character types prefixed with©(copyright sign, byte0xA9):©xyz— GPS location as an ISO 6709 string like+50.0755+014.4378+325.000/©day— creation date©mod— camera model©too— software / encoder©nam/©cmt/©key— title / comment / keywords©mak/©swr/©ART/©cpy— make / authoring software / artist / copyright
moov/meta— the modern Apple iTunes-style metadata structure. Two children:keys— an indexed table of Apple namespace identifiers (com.apple.quicktime.location.ISO6709,.make,.model,.software,.creationdate,.content.identifier)ilst— typed values, indexed by 1-based u32 into the keys table. Modern iPhone MOVs put everything here.
uuid— vendor extension boxes. The Adobe XMP UUID (be7acfcb-97a9-42e8-9c71-999491e3afac) marks an XMP packet; Sony / Canon / GoPro / DJI all have their own UUIDs for proprietary telemetry.
What’s unique
The com.apple.quicktime.content.identifier key in ilst is the Live Photos pairing UUID, same as HEIC’s AssetIdentifier. A leaked HEIC + MOV pair can be conclusively linked even if filenames are scrubbed. See the MOV page for how this manifests on iPhone-recorded video specifically.
GoPro and DJI write dedicated metadata tracks inside moov/trak with a handler type of gpmd — these contain per-frame GPS, gyroscope, and accelerometer samples. The full flight log of your drone is in there.
What Tracemute does
The handler uses a free-atom strategy: metadata atoms aren’t deleted, they’re rewritten in place to type free with their body zeroed. This means:
- File size is unchanged.
- Atom sizes don’t shift.
- The sample table (
stco/co64chunk offsets) doesn’t need patching. - The audio/video sample data (
mdat) is byte-identical to the input.
The walker scans top-level boxes, descends into moov, descends further into moov/trak, and frees every udta / meta / uuid it finds. Apple keys+ilst is parsed into typed dossier fields before being freed wholesale.
What survives
mvhd/tkhd/mdhdcreation_time and modification_time fields. These are decoder-required header timestamps; even exiftool’s-all=doesn’t remove them.- GoPro
gpmdtelemetry tracks — kept in v1 because removing a whole track shifts sample-table offsets across the file. Their containingudtastill gets freed, so the personally-identifying tags are gone but the per-frame samples remain. Full removal is targeted for v1.1 (see “B3” in the roadmap). - The actual video and audio sample streams. No transcoding ever.
Where this format shows up