What is 3GP?

3GP is the multimedia container that 3GPP defines as an instance of the ISO Base Media File Format (MPEG-4 Part 12), created for 3G mobile messaging and streaming. A 3GP file can carry H.263, H.264, or H.265 video, AMR-family or AAC audio, and timed text.

How 3GP works

A 3GP file stores timed media tracks in the box structure of the ISO Base Media File Format, the same family as MP4. Its file-type box carries four-character brands that name the 3GPP release and profile the file conforms to, for example 3gp4 for a Release 4 file or 3gr6 for a Release 6 progressive-download file. The current specification registers H.263, H.264, and H.265 video; AMR, AMR-WB, AMR-WB+, EVS, IVAS, Enhanced aacPlus, and AAC audio; and timed text. MPEG-4 Part 2 video is no longer in that list (the change history records its removal in Release 16), although older files can still contain it. Decoding requirements come from the codecs inside, not from the container, so an ingest system should probe each track before deciding whether remuxing is enough or transcoding is required.

Key facts

  1. video/3gpp does not prove that a video track exists: the registration makes it valid for every 3GP file, including audio-only ones. audio/3gpp is the stricter label, reserved for files with no visual material, and timed text counts as visual. Probe the tracks before routing a file as audio or video.
  2. No magic number is registered for 3GP. A conforming file starts with a file-type box that lists a 3GPP brand, such as 3gp4 or 3gp6, among its compatible brands, and readers are told to check that list instead of relying on the major brand. FFmpeg prints these values as major_brand and compatible_brands when it opens a file. One file can carry both 3GP and MP4 brands, so a .3gp or .mp4 suffix alone does not settle which rules it follows.
  3. 3G2 is the 3GPP2 counterpart, not an alias for 3GP. It has separate registrations (video/3gpp2 and audio/3gpp2, usual suffix .3g2), must list a 3GPP2 brand, and may contain 13K vocoder or EVRC speech, which the 3GP specification does not register. The MP4 Registration Authority registers 3g2a as a 3GPP2 brand, and FFmpeg 8.0’s 3G2 muxer writes 3g2a, or 3g2b when a track is H.264. Both belong to the ISO file family, so one parser can read either (FFmpeg uses a single demuxer for both), but the decoders required can differ.
  4. When stream-copying a 3GP file into MP4 with FFmpeg, the MP4 muxer accepts H.264, H.265, MPEG-4 Part 2, and AAC tracks but has no sample-entry tag for H.263, AMR, or AMR-WB, and stops with a “codec not currently supported in container” error. Those tracks must be re-encoded for MP4 output. This covers only the codecs named and describes FFmpeg’s muxer tables as checked in release 8.0, not every packaging tool. A tag is necessary for a copy, not a guarantee of one, and a copied track is not thereby playable in a browser.

When 3GP matters

Keep 3GP ingest for recordings from older phones and legacy mobile messaging archives. For web delivery, convert to MP4 with H.264 video and AAC audio, which MDN lists as supported in MP4 by Chrome, Edge, Firefox, and Safari (Firefox relies on the operating system’s decoders). Do not serve the 3GP file itself: MDN’s container format index names only Firefox for Android as supporting 3GP, and MDN’s codec guides report that no major browser has shipped H.263 decoding and mark AMR as unsupported in Chrome and Firefox. Copying a track into MP4 does not make it playable either: re-encode MPEG-4 Part 2 video, which MDN lists as unsupported in Chrome, Edge, Opera, and Safari, and check H.265 against your target browsers, because MDN ties its support to browser version, operating system, and hardware. Keep the original as well, because AMR narrowband is 8 kHz speech audio and re-encoding it adds compatibility, not fidelity.

How Transloadit helps with 3GP

Transloadit’s audio/video formats table, which covers FFmpeg-based Robots such as /video/encode, lists 3gp and 3g2 as formats those Robots can write. Both rows show Read as No because each row is the FFmpeg muxer of that name, and FFmpeg reads these files through a separate, shared demuxer. As the FFmpeg formats documentation describes, that one demuxer handles the whole MOV, MP4, and 3GP family, and FFmpeg reports it under the combined name mov,mp4,m4a,3gp,3g2,mj2, which includes both 3gp and 3g2, when it opens such a file.

The table reports what each FFmpeg stack version can read and write, not a tested result for every codec inside a 3GP upload. The stream-copy behavior in the key facts was checked in FFmpeg 8.0’s source, not on a Transloadit stack. Run a representative legacy file through your Assembly before depending on it.

Explore Transloadit’s file formats & compression capabilities

Sources

Turn media knowledge into a working pipeline

Connect uploads, processing, AI, storage, and delivery through one declarative API — with the encoding stack, scaling, and format churn handled for you.

Try Transloadit for free