AVI
Microsoft's 1992 RIFF-based video container. Still common from dashcams and camcorders. Metadata replaced in place with JUNK.
- Extensions
- .avi
- MIME
- video/x-msvideo
- Strip
- Lossless
- Updated
- 2026-05-27
AVI is the format dashcams write, the format budget action cameras default to, the format legacy camcorders and screen recorders still emit. Microsoft introduced it in 1992 and it never quite went away — partly because the RIFF chunk format underneath is dead simple to write, and partly because the container is unencumbered by patents.
If a video file is older than ten years or comes off a cheap recording device, there’s a good chance it’s AVI inside.
What it carries
AVI is a RIFF container — the same chunked structure as WAV audio and WebP images. Top-level layout:
RIFFouter container with form typeAVI.LIST hdrl— stream descriptors (avih main header, strh + strf per stream). Required for playback.LIST INFO— the canonical metadata target. Sub-chunks with 4-character IDs:INAM— titleIART— artist / authorICMT— commentsICOP— copyrightICRD— creation dateIENG— engineerIGNR— genreISFT— software (the encoder name)ITCH— technicianISTD— production studioISTR— starring
IDIT— camcorder digitisation timestamp (DV cameras embed this directly inhdrl).ISMP— SMPTE timecode.LIST movi— actual audio + video sample data.idx1— playback index. Stores offsets RELATIVE to the start of the movi LIST.- OpenDML AVI 2.0:
LIST odmlheaders andix##super-index chunks with ABSOLUTE file offsets (used for files larger than 1 GB).
What’s unique
The OpenDML super-indices (ix00, ix01, …) carry absolute file offsets. Naively deleting a metadata chunk shifts every byte after it and invalidates those offsets. Tracemute’s strip is therefore file-size-preserving: each metadata chunk’s fourCC is rewritten from LIST (or INAM, IART, …) to JUNK — a valid RIFF padding chunk decoders ignore — and the body is zeroed. Total bytes unchanged, every downstream offset still valid.
The recursive walker also catches metadata buried inside non-INFO LISTs (camcorders often nest IDIT inside hdrl).
What Tracemute does
The handler is a native RIFF walker with a same-size JUNK rewrite:
- Validate the RIFF/AVI signature.
- Walk every chunk in the outer RIFF body. Descend into LIST chunks so nested metadata is caught.
- For
LIST INFOcontainers and known standalone metadata chunks (INAM, IART, ICMT, ICOP, ICRD, IENG, IGNR, IKEY, ISBJ, ISFT, ISRC, ITCH, ILNG, ISTR, ISTD, IDIT, ISMP, …) — parse the contents for the dossier, then rewrite the chunk’s fourCC toJUNKand zero its body. - The
LIST hdrlandLIST movichunks are kept verbatim.idx1and OpenDMLix##indices stay byte-identical because nothing has moved.
What survives
Stream descriptors (LIST hdrl), every audio + video sample chunk (LIST movi), the legacy idx1 index, OpenDML super-indices, and any non-metadata chunks (GoPro telemetry tracks, vendor-specific extensions). The output is the same size as the input. No transcoding.
Where this format shows up