Convert WebM to 3GP — Free Online Tool

Convert WebM files (VP9 video, Opus audio) to 3GP format optimized for 3G mobile devices, re-encoding the video with H.264 and audio with AAC for maximum compatibility with legacy and feature phones. This is a full transcode — both the video and audio streams are re-encoded to fit the 3GP container's mobile-first codec requirements.

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

WebM uses VP9 video and Opus audio — neither of which is supported by the 3GP container. This conversion performs a full transcode: the VP9 video stream is decoded and re-encoded as H.264 (libx264) using a CRF of 23 for balanced quality-to-size ratio, and the Opus audio is decoded and re-encoded as AAC at 64 kbps, which is the standard for low-bandwidth mobile audio in 3GP. A scale filter (scale=trunc(iw/2)*2:trunc(ih/2)*2) ensures the output dimensions are divisible by 2, which is required by H.264. Because 3GP was designed for 3G network transmission and limited device storage, the output file will typically be significantly smaller than the source WebM, especially if the source was high-resolution. Any WebM-specific features — including VP9 transparency layers, Opus surround tracks, subtitle streams, and chapter markers — are dropped during conversion, as 3GP does not support them.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary — the open-source multimedia processing engine that powers this conversion both in the browser (via FFmpeg.wasm) and on the desktop command line.
-i input.webm Specifies the input file as a WebM container, which FFmpeg will parse for its VP9 video and Opus audio streams before transcoding them to 3GP-compatible codecs.
-c:v libx264 Sets the video encoder to libx264, which re-encodes the VP9 video stream as H.264 — the primary video codec supported by the 3GP container and required for playback on 3G-era mobile devices.
-c:a aac Sets the audio encoder to AAC, re-encoding the Opus audio track from the WebM into AAC, which is the standard audio codec for 3GP and broadly supported by mobile multimedia players.
-crf 23 Sets the H.264 Constant Rate Factor to 23, which is libx264's default and represents a good balance between visual quality and file size — appropriate for mobile video where bandwidth and storage are limited.
-b:a 64k Sets the AAC audio bitrate to 64 kilobits per second, a low but sufficient bitrate for speech and general audio on mobile devices, consistent with 3GP's low-bandwidth design goals.
-vf scale=trunc(iw/2)*2:trunc(ih/2)*2 Applies a video filter that rounds the output width and height down to the nearest even number — this is required because H.264 encoding in 3GP demands even-numbered frame dimensions, and the WebM source may have odd-pixel dimensions.
output.3gp Specifies the output filename with the .3gp extension, which tells FFmpeg to write the encoded H.264 video and AAC audio into a 3GP container formatted for 3G mobile device playback.

Common Use Cases

  • Sharing a web-captured WebM clip with someone using an older 3G-era Nokia or Samsung feature phone that only supports 3GP playback
  • Preparing tutorial or promotional video content recorded in WebM for distribution via MMS messaging, which historically used 3GP as its video standard
  • Archiving or testing video compatibility with legacy mobile multimedia applications and embedded systems that were built around the 3GPP specification
  • Reducing a WebM video's file size and bitrate drastically for upload to platforms or services with strict mobile-oriented file size limits
  • Converting WebM screen recordings or web-sourced clips into a format playable by older Android or Symbian media players that predate VP9 support
  • Producing low-bandwidth video for deployment in regions where 3G infrastructure is the primary network and data costs require highly compressed video

Frequently Asked Questions

The 3GP container only supports H.264 and MJPEG for video — it has no support for VP9, which is the default (and typically only) video codec used in WebM files. Because the codec is incompatible, the entire video stream must be decoded from VP9 and re-encoded as H.264. There is no way to avoid this transcode when moving from WebM to 3GP.
No. 3GP does not support Opus audio — it only supports AAC and MP3. The Opus audio track will be fully decoded and re-encoded as AAC at 64 kbps by default. AAC at 64 kbps is a reasonable quality level for voice and ambient audio on mobile devices, but it will represent a quality reduction compared to a high-bitrate Opus source. If your WebM contains music or high-fidelity audio, consider increasing the audio bitrate in the FFmpeg command.
All of these are silently dropped during conversion. The 3GP format does not support subtitle streams, chapter markers, or multiple audio tracks — it was designed as a minimal container for single-stream mobile video. If your WebM had embedded subtitles or alternate language audio tracks, you will need to handle those separately before or after conversion, as they cannot be carried into a 3GP file.
It depends heavily on the source. If your WebM was encoded at a high VP9 quality (low CRF), the 3GP output at CRF 23 with 64k AAC audio will likely be noticeably smaller. However, if your WebM was already heavily compressed (high CRF, low resolution), the 3GP file might be a similar size or even slightly larger due to H.264 being less efficient than VP9 at equivalent visual quality. The 3GP format is optimized for low bandwidth, but H.264 is not as compression-efficient as VP9 per unit of quality.
To reduce quality and file size, increase the CRF value — for example, change -crf 23 to -crf 35 or -crf 40. Higher CRF values mean lower quality and smaller files. For 3GP on very constrained devices, values between 28 and 40 are common. You can also lower the audio bitrate by changing -b:a 64k to -b:a 32k or -b:a 48k. To additionally constrain the output to a specific resolution suitable for older phones (e.g., 176x144 QCIF), you can modify the -vf filter to -vf scale=176:144.
Yes. On Linux or macOS, you can run a shell loop: for f in *.webm; 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%.webm}.3gp"; done. On Windows Command Prompt, use: for %f in (*.webm) 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 particularly useful for files over 1GB, which exceed the browser tool's limit.

Technical Notes

Converting WebM to 3GP represents one of the more significant format transitions in terms of feature loss: WebM is a modern, feature-rich open container supporting VP9/AV1 video, Opus audio, transparency (alpha channel), HDR metadata, subtitles, chapters, and multiple audio tracks, while 3GP is a stripped-down mobile container defined by the 3GPP standard for 2000s-era 3G handsets. The H.264 encoder (libx264) used here is widely compatible but less efficient than VP9 — at the same CRF value, H.264 will produce a larger file than VP9 for equivalent perceived quality. The special scale filter (scale=trunc(iw/2)*2:trunc(ih/2)*2) is mandatory because H.264 requires frame dimensions to be even numbers, and WebM sources are not guaranteed to have even-numbered dimensions. Any VP9 alpha channel (transparency) present in the WebM is permanently discarded, as H.264 in 3GP has no transparency support. HDR metadata is also lost during the VP9-to-H.264 transcode unless explicit tone-mapping flags are added. The AAC audio codec used in 3GP output is a lossy format; re-encoding from Opus (also lossy) to AAC introduces generation loss, so the audio quality of the 3GP output will always be somewhat lower than the WebM source regardless of bitrate settings.

Related Tools