Convert 3GPP to Y4M — Free Online Tool

Convert 3GPP mobile video files to Y4M (YUV4MPEG2) uncompressed video for lossless intermediate processing. This tool decodes the H.264 or MJPEG video stream from your 3GP container into raw YUV pixel data, making it ideal for feeding into video processing pipelines or tools like FFmpeg filters, VapourSynth, or AviSynth.

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 store video in compressed form — typically H.264 (libx264) or MJPEG — inside a mobile-optimized container designed for 3G transmission. During this conversion, FFmpeg fully decodes that compressed video stream frame by frame into raw YUV pixel data and writes it into the Y4M container. Y4M is not a codec — it is simply a thin wrapper around uncompressed YUV frames with a plain-text header describing resolution, frame rate, and color space. Because Y4M stores every frame at full quality with no compression, the output file will be dramatically larger than the input 3GP file. Audio is dropped entirely, as Y4M has no audio support. The result is a pixel-perfect intermediate that downstream tools can process without any generation loss.

What Each Flag Does

Flag What it does
ffmpeg Invokes the FFmpeg binary. In this browser tool, this runs as FFmpeg.wasm compiled to WebAssembly, executing entirely within your browser with no server involvement.
-i input.3gp Specifies the input 3GPP file. FFmpeg reads the container, identifies the video codec (typically H.264 or MJPEG) and any audio streams, and prepares to decode the compressed video frames.
-c:v rawvideo Instructs FFmpeg to encode the output video stream as raw uncompressed video — meaning each decoded YUV frame from the 3GP source is written directly to the Y4M file with no compression applied. This is the only codec Y4M supports.
output.y4m The output filename with the .y4m extension, which causes FFmpeg to automatically select the YUV4MPEG2 muxer. FFmpeg writes the Y4M plain-text header followed by the sequence of uncompressed YUV frames decoded from the 3GP input.

Common Use Cases

  • Feeding mobile 3GP footage into a lossless processing pipeline (e.g., VapourSynth or AviSynth) where re-encoding the compressed stream would introduce generational quality loss
  • Using 3GP video as a lossless source for FFmpeg filter chains via pipe, since Y4M is the standard format for piping raw video between FFmpeg processes
  • Extracting individual frames from a 3GP video at full decoded quality for scientific analysis, motion studies, or frame-accurate editing
  • Archiving decoded raw frames from 3GP footage before re-encoding to a different codec, ensuring the transcode starts from uncompressed pixel data rather than already-compressed H.264
  • Testing or benchmarking video encoders by providing them with a standardized uncompressed Y4M source derived from real mobile device footage
  • Importing 3GP video into tools like HandBrake or x264/x265 CLIs that accept Y4M via stdin for precise encoding control

Frequently Asked Questions

3GP stores video using lossy compression codecs like H.264, which can achieve compression ratios of 100:1 or more compared to raw pixel data. Y4M stores every video frame as uncompressed YUV values with no compression whatsoever. A 10-second 720p 3GP file that is a few megabytes will expand to hundreds of megabytes as a Y4M file. This is expected and intentional — Y4M is designed as a lossless intermediate, not a storage format.
No. The conversion decodes the compressed 3GP video losslessly into raw pixel data, but it cannot recover detail that was discarded during the original H.264 or MJPEG encoding. What Y4M preserves is the exact decoded quality of the 3GP source — no further quality is lost in the conversion itself. Think of it as unwrapping the compressed frames into their decoded state, not upscaling or enhancing them.
The audio is dropped completely. Y4M is a video-only format with no provision for audio streams — it contains nothing but raw video frames and a plain-text header. If you need to preserve the AAC or MP3 audio from your 3GP file, extract it separately using FFmpeg with a command like 'ffmpeg -i input.3gp -vn -c:a copy output.aac' before or after this conversion.
FFmpeg will output the Y4M file using the pixel format of the decoded 3GP stream, most commonly yuv420p (4:2:0 planar YUV), which is the native output format of H.264 streams encoded for mobile devices. The Y4M header encodes this color space information so downstream tools can read it correctly. If your 3GP source uses a different chroma subsampling, FFmpeg will reflect that in the Y4M header.
Yes. You can add '-ss' and '-t' flags to trim the input before decoding, which is highly recommended given Y4M's large file sizes. For example, 'ffmpeg -ss 00:00:05 -t 00:00:10 -i input.3gp -c:v rawvideo output.y4m' will decode only 10 seconds starting at the 5-second mark. Trimming before the conversion dramatically reduces the Y4M file size when you only need a specific segment.
Yes, and this is one of the primary use cases for Y4M. On your desktop you can use 'ffmpeg -i input.3gp -c:v rawvideo -f yuv4mpegpipe - | x265 --input - --output output.hevc' or pipe between two FFmpeg instances. The browser-based tool saves to a file, but the displayed FFmpeg command can be adapted for piping workflows on your local machine by replacing 'output.y4m' with 'pipe:1' or '-' and adding '-f yuv4mpegpipe'.

Technical Notes

Y4M (YUV4MPEG2) imposes no quality parameters because it stores decoded pixel values without any compression step — the only quality variable is the fidelity of the original 3GP source. The 3GPP container supports H.264 and MJPEG for video and AAC or MP3 for audio; all audio is discarded in this conversion since Y4M has no audio container support. The '-movflags +faststart' optimization present in 3GP encoding is irrelevant to Y4M output. Frame rate and resolution metadata from the 3GP container are preserved and written into the Y4M plain-text header (e.g., 'YUV4MPEG2 W640 H480 F30:1 Ip A0:0 C420'). One known limitation is that 3GP files from older 3G-era mobile devices sometimes use non-standard frame rates or non-square pixel aspect ratios (SAR); FFmpeg will attempt to pass these through into the Y4M header, but some downstream tools may not handle unusual SAR values correctly. For files larger than 1GB, the desktop FFmpeg command shown on this page is strongly recommended, as the uncompressed output can exhaust browser memory limits for longer clips.

Related Tools