What a .3gp file is actually carrying
3GP is 3GPP’s cut-down relative of the MP4 container, standardised when a video message had to travel through a mobile network measured in kilobits per second. The wrapper itself is close enough to MP4 that FFmpeg demuxes both with the same code path; its own input line names the whole family at once, mov,mp4,m4a,3gp,3g2,mj2. So the container is rarely what breaks.
The streams inside it are. A .3gp recorded on a feature phone typically holds H.263 or MPEG-4 Part 2 video next to AMR narrowband speech audio: codecs picked because a handset from that era could decode them in dedicated silicon, not because they would still be around two decades later. That combination is why the file opens as a black window, a stalled first frame, or sound with no picture on a current laptop, while the file size looks perfectly healthy. Nothing is corrupt. The decoders are simply gone.
Old codecs out, H.264 and AAC in
There is no repackaging shortcut here. Rewriting the container while keeping an H.263 stream inside would produce an MP4 that fails on exactly the same devices, so this tool decodes the picture and re-encodes it with libx264, and encodes the audio to AAC at 128 kbps. It also applies -movflags +faststart, which moves the MP4 index to the front of the file: that is what lets a browser or a messaging app begin playing before the whole file has arrived.
The output keeps your file’s own name with the extension swapped, so VIDEO0032.3gp comes back as VIDEO0032.mp4 rather than something generic you then have to rename.
Converting one recovered clip end to end
- Drop a single
.3gpfile onto the box above, or use Choose a file. Only the.3gpextension is accepted, and anything else you drop is listed straight back as an unsupported file type without being processed. - Set Quality. The three entries map to constant-rate-factor values of 18, 23 and 28 in that order, where a lower number keeps more bits.
- Press Convert 3GP to MP4 and leave the tab open while the progress bar advances.
The first conversion in a browser session also has to fetch the FFmpeg WebAssembly core before any encoding begins, so that run starts with a pause later runs in the same session do not have.
Where the quality dropdown earns its place
The interesting thing about this particular conversion is how little the top setting buys you. Your source was compressed once already, at a low resolution, by an encoder with a tiny bit budget. Re-encoding at CRF 18 does not undo any of that; it just describes the existing softness and blocking in more detail and hands you a bigger file. Balanced sits at the point where the result is hard to tell from the source at full size, which for this kind of footage is where most people should stay.
Smaller file is worth reaching for when the clip is going into a message or an email rather than an archive. And if you want real control over the final size rather than a quality target, Compress Video is the next step: it accepts .mp4 only, so it runs after this page rather than instead of it.
Neighbouring jobs that do not need this page first
If all you actually want is the sound, an old voice message or a recording of someone who is no longer around, Convert Video to MP3 accepts .3gp directly and skips the video re-encode entirely. If your pile of legacy media is mixed rather than all 3GP, the general Video Converter takes 3GP alongside MTS, AVI, MKV and others, and can target WebM or GIF as well as MP4. Camcorder tapes specifically, the ones that arrive as .mts or .m2ts files, are handled by Convert MTS to MP4, which can often stream-copy instead of re-encoding because the video is already H.264.
Everything here runs through a WebAssembly build of FFmpeg inside the tab, single-threaded, on your own hardware. That is why there is no file-size ceiling and no queue, and also why a long clip takes real time rather than finishing instantly. Old 3GP footage is short and small by nature, so it is one of the easier things to convert this way.