Skip to main content
Tracemute Clean a file

← All formats

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:

  1. Walk the ISOBMFF box tree, find every udta at top level, in moov, and in moov/trak.
  2. 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.
  3. Rewrite the parent udta box’s fourCC to free and 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

Real situations that hand you a 3GP / 3G2 file.