3GP / 3G2
The mobile video format from 3GPP. ISOBMFF — shared with MP4 — with 3GPP user-data atoms on top.
- Extensions
- .3gp · .3g2
- MIME
- video/3gpp
- Strip
- Lossless
- Updated
- 2026-05-27
3GP is the format older Android phones recorded video into, the format MMS messaging used to ship video, and the format some carrier-locked devices still default to. Its 3GPP2 cousin (.3g2, CDMA carriers) uses the same wire format with a different ftyp brand. Underneath, both are ISO Base Media File Format (ISOBMFF) — the same container family as MP4 and MOV — so the same parser handles all three.
Where 3GP differs from MP4 is in the user-data atoms: 3GPP TS 26.244 defines a set of standard udta children (titl, dscp, cprt, perf, auth, gnre, albm, kywd, yrrc, loci) that older phones used instead of QuickTime’s ©* atoms.
What it carries
Everything MP4 carries plus the 3GPP-specific user-data atoms:
- loci — location information. Carries lat / lon / altitude as 16.16 fixed-point values, optional name and notes. The 3GPP equivalent of QuickTime’s
©xyz. - titl — title (text + 16-bit ISO 639-2 language code).
- dscp — description.
- cprt — copyright.
- perf — performer / actor name.
- auth — author / creator name.
- gnre — genre.
- albm — album.
- kywd — keywords.
- yrrc — recording year (single u16 after the FullBox preamble).
Plus the QuickTime-era ©* atoms and Apple iTunes-style keys+ilst metadata documented on the MP4 page — modern Android still emits ©xyz GPS in some firmware variants.
What’s unique
The loci atom is the privacy-relevant one. It carries GPS coordinates in a fixed-point binary form that exiftool reads correctly but many naive metadata strippers miss because they only look for ©xyz text. Tracemute decodes loci’s 16.16 fixed-point lat/lon and surfaces them in the dossier as GPS coordinates, then strips the parent udta wholesale.
The 3GPP text atoms (titl, dscp, etc.) are FullBoxes with a language code — different binary layout from QuickTime’s text-length / language / utf8 shape, but conceptually similar. Tracemute parses both forms.
What Tracemute does
The same handler as MP4 — file-size-preserving free-atom strip — extended to recognise 3GPP udta atoms:
- Walk the ISOBMFF box tree, find every
udtaat top level, inmoov, and inmoov/trak. - Inside each udta, recognise both QuickTime
©*atoms AND 3GPP text atoms (titl, dscp, cprt, perf, auth, gnre, albm, kywd, yrrc) AND the loci GPS atom — surface their content in the dossier. - Rewrite the parent udta box’s fourCC to
freeand zero its body. Output is the same size as input, sample-table offsets unchanged.
The output MIME is video/3gpp or video/3gpp2 based on the ftyp brand (3gp4/3gp5/3gp6/3gp7/3gs*/3gh* → 3gpp; 3g2a/3g2b/3g2c/kddi → 3gpp2), so the cleaned file still identifies correctly to downstream players.
What survives
Same as MP4: mvhd / tkhd / mdhd decoder-required timestamps, the full video and audio sample streams, every codec descriptor. No transcoding.
Where this format shows up