Convert 3GPP to MKV — Free Online Tool

Convert 3GPP mobile video files to MKV (Matroska) container format, re-encoding the video with H.264 (libx264) and audio with AAC — upgrading from a constrained mobile format to a flexible, open-standard container that supports subtitles, chapters, and multiple audio tracks.

FFmpeg Command

Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg

Free — no uploads, no signups. Your files never leave your browser.

Estimated output:

Conversion Complete!

Download

How It Works

3GPP files are designed for low-bitrate mobile transmission, typically using H.264 or MPEG-4 video with AAC audio at highly compressed settings. During this conversion, the video stream is re-encoded using libx264 at CRF 23 (a visually lossless-equivalent quality for most content), and the audio is re-encoded as AAC at 128k — a significant bitrate upgrade from the 32–64k commonly used in 3GP files. The result is an MKV container, which imposes no codec restrictions and supports metadata, chapters, subtitles, and multiple audio tracks that 3GPP simply cannot carry. Because both input and output use H.264 video, the re-encoding overhead is relatively modest, though some generation loss will occur compared to a raw copy.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg multimedia processing engine. In the browser version of this tool, this runs via FFmpeg.wasm compiled to WebAssembly — no files leave your device.
-i input.3gp Specifies the input 3GPP file. FFmpeg reads the 3GP container and demuxes its video and audio streams for processing — typically H.264 Baseline video and low-bitrate AAC or AMR audio.
-c:v libx264 Re-encodes the video stream using the libx264 encoder, producing H.264 video at Main Profile — compatible with virtually all modern players and more flexible than the Baseline Profile commonly used in 3GP source files.
-c:a aac Encodes the audio stream as AAC using FFmpeg's native AAC encoder. This is necessary because 3GP files sometimes contain AMR audio that MKV does not natively support, and it upgrades low-bitrate 3GP audio to the target 128k bitrate.
-crf 23 Sets the Constant Rate Factor for libx264 video encoding to 23, which is the default quality level. This controls the tradeoff between file size and visual quality — lower values like 18 produce better quality at larger sizes, higher values like 28 reduce size with more compression artifacts.
-b:a 128k Sets the AAC audio output bitrate to 128 kilobits per second — a significant upgrade over the 32–64k audio bitrates typical in 3GP files recorded for mobile transmission, resulting in noticeably clearer audio in the MKV output.
output.mkv Specifies the output filename and instructs FFmpeg to write a Matroska (.mkv) container. The .mkv extension triggers FFmpeg to use the Matroska muxer, which supports subtitles, chapters, multiple audio tracks, and rich metadata — none of which the source 3GP container supports.

Common Use Cases

  • Archiving old mobile phone recordings from feature-phone or early smartphone era into a modern, widely supported container without discarding any video content
  • Preparing 3GP video clips received via MMS or downloaded from early mobile platforms for editing in desktop video editors like DaVinci Resolve or Kdenlive that handle MKV natively
  • Upgrading the audio quality of a 3GP file recorded with a very low bitrate (e.g., 32k AMR or AAC) to 128k AAC inside MKV for clearer playback on home theater systems
  • Converting 3GPP footage captured on a basic phone into MKV so it can be stored alongside other video files in a Plex or Jellyfin media library with proper metadata support
  • Batch-converting a collection of 3GP clips from an old device backup into MKV for long-term preservation in an open, non-proprietary container format
  • Re-packaging 3GP sports or event clips shared on older messaging platforms into MKV so subtitle tracks or chapter markers can be added in a post-processing step

Frequently Asked Questions

Yes, there is a small amount of additional generation loss because the video is re-encoded rather than stream-copied. Both the input 3GP and the output MKV use H.264 video, but FFmpeg still decodes and re-encodes the video at CRF 23. In practice, the visual difference from 3GP's already-compressed source is minimal, and the audio quality will actually improve significantly — jumping from the 32–64k typically found in 3GP files to 128k AAC in the MKV output.
It technically can if you replace '-c:v libx264' with '-c:v copy', but there's a caveat: 3GP files often store H.264 in a specific profile (Baseline) tuned for mobile devices, and some players may behave differently with stream-copied video that retains those constraints. Re-encoding with libx264 at CRF 23 produces a clean, broadly compatible H.264 stream without the mobile-specific restrictions. If your priority is speed and you trust the source stream, you can manually add '-c:v copy' to the FFmpeg command shown on this page.
The MKV container itself fully supports subtitles, chapters, and multiple audio tracks — unlike 3GPP, which supports none of these. However, this conversion tool only transfers what exists in the source 3GP file, so no subtitles or chapters will appear in the output unless you add them manually afterward using a tool like mkvtoolnix or an additional FFmpeg command with '-i subtitles.srt' piped in.
To adjust video quality, change the '-crf 23' value: lower numbers like '-crf 18' produce higher quality at larger file sizes, while higher numbers like '-crf 28' reduce file size with more visible compression. For audio, change '-b:a 128k' to a higher value like '-b:a 192k' or '-b:a 256k' for better fidelity, or drop it to '-b:a 96k' to save space. CRF 18 and 128k–192k audio are good targets if the 3GP source has any detail worth preserving.
3GP files are specifically engineered for low-bandwidth mobile networks and use very aggressive compression — often extremely low audio bitrates (32k AMR or AAC) and heavily constrained video quality. The MKV output re-encodes audio at 128k AAC (2–4x higher bitrate) and video at CRF 23 without mobile-specific profile restrictions, which typically results in a noticeably larger file. This is expected and reflects a genuine quality improvement over the source.
Yes, on the command line you can use a shell loop to process multiple files. On Linux or macOS, run: for f in *.3gp; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k "${f%.3gp}.mkv"; done. On Windows PowerShell: Get-ChildItem *.3gp | ForEach-Object { ffmpeg -i $_.FullName -c:v libx264 -c:a aac -crf 23 -b:a 128k ($_.BaseName + '.mkv') }. Batch processing in the browser tool processes files one at a time due to WebAssembly memory constraints.

Technical Notes

3GPP (.3gp) is a container derived from MPEG-4 Part 12, sharing structural DNA with MP4 but stripped down for mobile constraints — it mandates Baseline Profile H.264 or MPEG-4 Part 2 video and typically carries AMR-NB, AMR-WB, or low-bitrate AAC audio. MKV (Matroska) has no such restrictions and is designed as a universal container. One key difference in this conversion is the removal of the '-movflags +faststart' flag that 3GP files typically use for progressive mobile streaming; MKV uses its own internal seeking index and does not require this flag. The libx264 encoder defaults to Main Profile output at CRF 23, which is universally compatible with modern players and far less restrictive than the mobile-optimized Baseline Profile in the source. AMR audio (common in older 3GP files) is not carried into MKV — it is transcoded to AAC, which is a lossy-to-lossy transcode. Metadata fields like creation time may be preserved if FFmpeg can read them from the 3GP container, but 3GP's metadata support is minimal compared to MKV's rich tagging capabilities.

Related Tools