Convert MKV to 3GPP — Free Online Tool

Convert MKV files to 3GPP format optimized for mobile devices and 3G network streaming. This tool re-encodes your video using H.264 and AAC at mobile-friendly bitrates, producing a compact .3gp file compatible with legacy and modern handsets.

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

MKV is a flexible container that can hold almost any codec combination — H.264, H.265, VP9, FLAC, Opus, and more — along with subtitles, chapters, and multiple audio tracks. The 3GPP format is far more constrained: it supports only H.264 video and AAC or MP3 audio, targets low-bitrate mobile delivery, and drops subtitles, chapters, and secondary audio tracks entirely. This conversion always involves active re-encoding: the video is encoded fresh with libx264 at CRF 23, and the audio is transcoded to AAC at 64k — a bitrate tuned for voice and moderate-quality music on cellular connections. The -movflags +faststart flag reorganizes the file's metadata to the front, enabling progressive playback before the full download completes, which is critical for 3G streaming scenarios.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the engine performing this MKV-to-3GP conversion. In the browser, this runs as a WebAssembly module; on the desktop, this is your locally installed FFmpeg executable.
-i input.mkv Specifies the input Matroska file. FFmpeg reads the MKV container and demuxes its streams — which may include H.264/H.265/VP9 video, multi-track audio, subtitles, and chapters — making them available for re-encoding into the 3GPP output.
-c:v libx264 Encodes the output video stream using the libx264 H.264 encoder, the only practical video codec supported by 3GPP for broad device compatibility. Regardless of what video codec the source MKV used (H.265, VP9, etc.), the video is always re-encoded here.
-c:a aac Transcodes the audio to AAC using FFmpeg's native AAC encoder, the standard audio codec for 3GPP files. Any audio format present in the MKV — FLAC, Opus, MP3, Vorbis — is decoded and re-encoded to AAC, and only the first audio track is carried into the output.
-crf 23 Sets the H.264 Constant Rate Factor to 23, the default quality level balancing file size and visual quality for mobile viewing. Lower values (e.g., 18) produce better quality at larger sizes; higher values (e.g., 28) shrink the file further at the cost of more visible compression on small screens.
-b:a 64k Sets the AAC audio bitrate to 64 kilobits per second, a deliberately low value aligned with 3GPP's mobile-streaming design goals. This bitrate is adequate for speech and moderate music on a phone speaker but represents a significant quality reduction from typical MKV audio sources.
-movflags +faststart Runs a post-encoding pass that relocates the 3GP file's metadata (moov atom) from the end of the file to the beginning. This is required for true progressive mobile streaming over 3G connections, allowing playback to begin before the entire file has downloaded.
output.3gp Defines the output filename with the .3gp extension, signaling FFmpeg to mux the re-encoded H.264 video and AAC audio into the 3GPP container format. The .3gp extension is specifically recognized by mobile platforms and legacy handsets as a 3G-compatible multimedia file.

Common Use Cases

  • Preparing recorded video content for distribution on older Android or feature phones that only support 3GPP playback
  • Compressing a large MKV movie or lecture recording into a very small .3gp file for sharing over slow or metered mobile connections
  • Archiving video content in a 3G-era format for compatibility testing of mobile applications or media players
  • Converting MKV gameplay captures or short clips to send via MMS, which historically required 3GPP-compatible files on many carriers
  • Stripping down a multi-track, subtitle-laden MKV to a single-stream mobile-ready file for playback on embedded or IoT devices with limited codec support
  • Reproducing the FFmpeg command locally to batch-convert an entire library of MKV files into 3GPP format for a mobile video archive

Frequently Asked Questions

No. The 3GPP container does not support subtitle tracks or chapter metadata, so both are discarded during conversion. If your MKV contains embedded SRT, ASS, or PGS subtitles, they will be silently dropped. If preserving subtitles is important, consider converting to MP4 or MKV instead, both of which support embedded subtitle streams.
The 3GPP format supports only a single audio track, so FFmpeg will select the default or first audio stream from the MKV and transcode it to AAC at 64k. All secondary audio tracks — for example, commentary tracks or alternate language dubs — are dropped. If you need a specific track, you can modify the command to add '-map 0:v:0 -map 0:a:2' (replacing '2' with the index of your desired track) before running it locally.
3GPP was designed specifically for 3G mobile networks where bandwidth is scarce, so the format convention favors very low audio bitrates. At 64k AAC, speech and moderate-quality stereo music are reasonably intelligible, but you will hear a noticeable quality reduction compared to the source if the MKV contained FLAC, high-bitrate AAC, or Opus audio. If your use case requires better fidelity, you can adjust the '-b:a' value up to 128k, which remains within the 3GPP specification.
3GP files are typically much smaller than MKV sources — often 60–90% smaller — because re-encoding at CRF 23 with aggressive audio compression removes significant data. The exact reduction depends on the original MKV's codec: if the source was H.265 or VP9 (which compress more efficiently than H.264 at the same quality), the 3GP file may actually look noticeably worse at a similar size, since it is being converted to the less efficient H.264 codec under mobile constraints.
Yes. The '-crf 23' value controls H.264 quality on a scale where lower numbers mean better quality and larger files. For 3GPP, a practical range is CRF 18 (near-visually lossless, larger file) to CRF 28 (more compression, visible quality loss). Values below 18 are not recommended for 3GPP because the resulting bitrates are inefficient for mobile delivery and may exceed what some 3G-era players can decode smoothly. To change it, replace '23' in the command with your desired value, for example: 'ffmpeg -i input.mkv -c:v libx264 -c:a aac -crf 28 -b:a 64k -movflags +faststart output.3gp'.
On Linux or macOS, you can loop over all MKV files in a directory with: 'for f in *.mkv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "${f%.mkv}.3gp"; done'. On Windows Command Prompt, use: 'for %f in (*.mkv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "%~nf.3gp"'. This is especially useful for libraries exceeding the 1GB browser limit, since the desktop FFmpeg binary has no file size restriction.

Technical Notes

The 3GPP specification is a strict subset of the MPEG-4 Part 12 file format family, closely related to MP4 but standardized by 3GPP for cellular multimedia services. Because the output container is limited to libx264 video and AAC or MP3 audio, any MKV containing H.265, VP9, PNG, or lossless codecs will always require full re-encoding — there is no possibility of a stream copy (remux) shortcut here. The CRF 23 default produces reasonable quality for small-screen mobile viewing but will introduce visible compression artifacts on content with fine detail or fast motion if the source was high-resolution. Audio encoded at 64k AAC is mono-or-stereo lossy output; any 5.1 or 7.1 surround audio in the MKV will be downmixed to stereo automatically by FFmpeg. Notably, 3GPP does not support transparency, so MKV files containing alpha-channel video (rare, but possible with PNG or certain VP9 streams) will render with a black background. The -movflags +faststart flag is essential for the streaming use case: it moves the 'moov' atom to the beginning of the file in a post-processing step, allowing media players to begin playback while the file is still being received over a slow connection.

Related Tools