Convert MP4 to 3GP — Free Online Tool

Convert MP4 videos to 3GP format, optimized for 3G mobile phones and low-bandwidth environments. This tool re-encodes your video using H.264 (libx264) and AAC audio at conservative bitrates, producing compact files designed for older mobile devices and constrained storage conditions.

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

Unlike a simple remux, converting MP4 to 3GP requires active re-encoding of both streams. While both formats can carry H.264 video and AAC audio, the 3GP container imposes stricter constraints: video dimensions must be divisible by 2, audio bitrates are kept low (defaulting to 64k), and features present in the MP4 — such as subtitle tracks, chapter markers, and multiple audio tracks — are dropped entirely since 3GP does not support them. The video is re-encoded with CRF 23 for balanced quality-to-size compression, and a scale filter ensures pixel dimensions conform to the format's requirements. The result is a significantly smaller file suited for mobile playback on legacy 3G-era hardware or upload to platforms that require 3GP input.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the open-source multimedia processing engine that handles all decoding, filtering, and re-encoding in this MP4-to-3GP conversion pipeline.
-i input.mp4 Specifies the source MP4 file as input. FFmpeg will demux the MP4 container and make the contained H.264 or other video stream and AAC/MP3 audio stream available for re-encoding into 3GP.
-c:v libx264 Sets the video encoder to libx264, which produces H.264-encoded video compatible with the 3GP container. Even if the source MP4 already contains H.264, a full re-encode is performed here to apply the 3GP-appropriate CRF and dimension constraints.
-c:a aac Encodes the audio stream as AAC-LC, the standard audio codec for 3GP files. This ensures compatibility with legacy mobile devices that expect AAC within the 3GP container, and the audio is re-encoded at the specified bitrate rather than copied from the source.
-crf 23 Sets the Constant Rate Factor for the H.264 video encode to 23, the default quality level. For 3GP's typical use on small screens and constrained playback hardware, CRF 23 provides a practical balance — increase it toward 35–40 for smaller files suitable for MMS, or lower it toward 18 for better quality on larger displays.
-b:a 64k Targets an audio bitrate of 64 kilobits per second for the AAC stream — deliberately conservative compared to MP4 defaults, reflecting 3GP's origin in low-bandwidth 3G networks. This bitrate maintains acceptable speech intelligibility while minimizing file size.
-vf scale=trunc(iw/2)*2:trunc(ih/2)*2 Applies a video filter that rounds both the width and height of the output frame down to the nearest even integer. H.264 encoding within 3GP requires even pixel dimensions, and without this filter, source footage with odd-numbered dimensions would cause FFmpeg to fail with a 'not divisible by 2' error.
output.3gp Specifies the output filename with the .3gp extension, which signals FFmpeg to use the 3GP container format for muxing the re-encoded H.264 video and AAC audio streams into a file compatible with 3G mobile devices.

Common Use Cases

  • Preparing video content for distribution on older Nokia, Samsung, or Sony Ericsson feature phones that only support 3GP playback
  • Reducing video file size for sharing over MMS (Multimedia Messaging Service), which imposes tight file size limits typically between 300KB and 1MB
  • Archiving or re-encoding footage for telecoms or carrier platforms that still accept or require 3GP submissions
  • Converting MP4 clips to 3GP for use in legacy video messaging apps or embedded systems with limited codec support
  • Compressing video content for deployment in low-bandwidth regions where 3G networks are the primary connectivity infrastructure
  • Creating small-footprint video previews from high-quality MP4 masters for early-stage mobile app prototyping on constrained test devices

Frequently Asked Questions

Yes — this is a lossy conversion in both directions. Your MP4's video is re-encoded using H.264 at CRF 23, which is a reasonable quality level but not lossless. The bigger quality impact comes from the audio: the default bitrate drops to 64k AAC, noticeably lower than the 128k typically used in MP4 files. If your source MP4 was already compressed, this second encode will compound quality loss, so use the highest-quality source file available.
Quite a few. The 3GP container does not support subtitle tracks, embedded chapter markers, or multiple audio tracks — all of which MP4 natively supports. If your source MP4 contains any of these (for example, a movie with forced subtitles or a language-selectable audio track), none of that metadata will carry over to the 3GP output. Only the primary video and a single audio stream are preserved.
The flag '-vf scale=trunc(iw/2)*2:trunc(ih/2)*2' ensures that the output video's width and height are both divisible by 2. H.264 encoding in 3GP requires even-numbered pixel dimensions, and if your source MP4 has an odd dimension (which can happen with cropped or non-standard footage), FFmpeg will throw an error without this filter. The formula truncates each dimension to the nearest even number without significantly altering the frame size.
Change the CRF value to control video quality and file size. Lower CRF values (like 18) produce higher quality and larger files, while higher values (like 35 or 40) produce smaller, lower-quality output better suited for MMS or very constrained storage. For audio, replace '-b:a 64k' with '-b:a 32k' or '-b:a 96k' depending on how much you need to reduce file size or preserve speech clarity. A command targeting maximum compression might use '-crf 35 -b:a 32k'.
Yes. On Linux or macOS, you can loop over files in a directory: 'for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -vf scale=trunc(iw/2)*2:trunc(ih/2)*2 "${f%.mp4}.3gp"; done'. On Windows Command Prompt, use 'for %f in (*.mp4) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -vf scale=trunc(iw/2)*2:trunc(ih/2)*2 "%~nf.3gp"'. This is especially useful for batch-processing a library of clips for mobile deployment.
3GP was designed for 3G mobile networks with limited bandwidth and storage — original 3G data speeds were often under 384 kbps total. Keeping audio at 64k AAC preserves reasonable speech intelligibility while leaving more of the bitrate budget for video. If your content is music or requires higher audio fidelity, you can raise it to 96k or 128k, but be aware this increases file size and may reduce compatibility with the most constrained legacy devices.

Technical Notes

3GP is a subset of the MP4/ISOBMFF container family, but it is significantly more restricted in what it permits. The format was standardized by 3GPP (Release 5 onward) and supports only a narrow set of codecs — this tool uses libx264 for video and AAC-LC for audio, which represents the most broadly compatible codec pairing for 3GP playback. MJPEG is technically supported as a video codec in 3GP but is rarely used due to poor compression efficiency. One key technical constraint is the mandatory even-dimension requirement for H.264 video, handled here by the trunc(iw/2)*2 scale expression. The 3GP format does not support transparency, subtitles, chapters, or multiple audio streams — all of which are stripped during conversion. File sizes will typically be 60–85% smaller than the source MP4 depending on the original bitrate, making 3GP genuinely useful for size-critical delivery scenarios. Note that modern Android and iOS devices have largely deprecated native 3GP recording, so this format is most relevant for legacy device compatibility or specific carrier/platform requirements rather than general consumer use.

Related Tools