Convert FLV to 3GPP — Free Online Tool
Convert FLV files to 3GPP format optimized for mobile devices, re-encoding the video with H.264 (libx264) and audio with AAC at a low 64k bitrate suited for 3G-era handsets. This is a full transcode — not a remux — since FLV's container structure and metadata are incompatible with the 3GPP standard.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your FLV file here
or click to browse
Free — no uploads, no signups. Your files never leave your browser.
Settings
Note: Browser-based encoding uses approximate quality targets. For precise CRF compression, copy the FFmpeg command above and run it on your desktop.
Estimated output:
Conversion Complete!
DownloadHow It Works
FLV (Flash Video) is a container format built around Adobe Flash Player, commonly used for legacy web video streaming. 3GPP is a mobile-first container designed for low-bandwidth delivery over 3G networks. Because these containers share no structural compatibility, this conversion is a full transcode: the video stream is decoded and re-encoded using H.264 (libx264) with a CRF of 23, and the audio is decoded and re-encoded as AAC at 64k bitrate — a deliberately conservative bitrate appropriate for mobile streaming over constrained connections. The -movflags +faststart flag restructures the 3GP file so the MOOV atom (the metadata index) is placed at the beginning of the file, enabling progressive playback on mobile devices before the full file has downloaded.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg program, the open-source multimedia processing engine that handles all decoding, encoding, and container remuxing for this FLV-to-3GP conversion. |
-i input.flv
|
Specifies the input file in FLV (Flash Video) format. FFmpeg reads the FLV container and demuxes it into its raw video and audio streams for decoding and re-encoding. |
-c:v libx264
|
Re-encodes the video stream using the libx264 H.264 encoder, which is the default and most broadly compatible video codec for 3GPP containers on mobile devices. |
-c:a aac
|
Re-encodes the audio stream as AAC (Advanced Audio Coding) using FFmpeg's native AAC encoder, producing the LC-profile AAC audio that the 3GPP standard mandates for mobile compatibility. |
-crf 23
|
Sets the Constant Rate Factor for the H.264 video encode to 23, a balanced default that produces reasonable visual quality for mobile-screen viewing without excessive file size — appropriate for 3G-bandwidth delivery scenarios. |
-b:a 64k
|
Sets the AAC audio bitrate to 64 kilobits per second, a deliberately conservative value matching the 3GPP format's design goal of efficient delivery over low-bandwidth 3G mobile networks. |
-movflags +faststart
|
Relocates the MOOV atom (the file's metadata and index) to the start of the 3GP output file, enabling progressive streaming playback on mobile devices before the file is fully downloaded — a key requirement for 3G mobile delivery. |
output.3gp
|
Specifies the output filename with the .3gp extension, which tells FFmpeg to write a 3GPP-format container. The .3gp extension is recognized by mobile devices and media players as a 3GPP-standard file. |
Common Use Cases
- Converting archived Flash-era video content from FLV to 3GP so it can be played back on older Android or feature phones that support 3GPP but not Flash
- Preparing low-bandwidth video clips for distribution via MMS messaging or mobile portals where file size and 3G compatibility are critical constraints
- Downsizing legacy web video captured in FLV format for playback on embedded systems or IoT devices with limited codec support
- Converting FLV recordings from older streaming platforms (e.g., early YouTube downloads) into a mobile-compatible format for offline viewing on 3GPP-capable media players
- Reducing file size of FLV content for storage on memory-constrained mobile devices by leveraging 3GP's low-bitrate audio defaults
- Transcoding FLV tutorial or lecture recordings into 3GP for distribution in regions where 3G networks are the primary mobile connectivity standard
Frequently Asked Questions
Yes, some quality loss is expected because this is a full transcode — both the video and audio streams are decoded and re-encoded from scratch. The default CRF of 23 for libx264 delivers visually acceptable quality for most content, but the audio is re-encoded at just 64k AAC, which is noticeably compressed compared to higher-bitrate FLV audio. If your source FLV has high-quality audio and you can tolerate a larger file, you can raise the audio bitrate in the FFmpeg command to 96k or 128k.
The 3GPP format was standardized for 3G mobile networks, which had severely limited bandwidth compared to modern connections. A 64k AAC bitrate reflects that design goal — it keeps file sizes small enough for MMS delivery and streaming over slow connections. For modern playback on smartphones or tablets where bandwidth is not a concern, raising the bitrate to 96k or 128k will produce noticeably better audio without the 3GPP specification preventing it.
The -movflags +faststart flag moves the MOOV atom — the index that tells a media player how to decode the file — to the beginning of the output 3GP file. Without this, the MOOV atom sits at the end, meaning a mobile device or web player must download the entire file before playback can begin. With +faststart, playback can start almost immediately as the file streams in, which is especially important for 3G network delivery scenarios where 3GPP was originally designed to be used.
No. The 3GPP format as handled in this conversion does not support subtitles or multiple audio tracks, and neither does the FLV source format in this tool's configuration. Only the primary video and audio streams are carried over. If your FLV file contained embedded subtitle data or secondary audio tracks, those will be dropped silently during the conversion.
Change the CRF value in the -crf flag. The scale runs from 18 (highest quality, largest file) to 28 (lowest quality, smallest file) for 3GP output. For example, replacing -crf 23 with -crf 28 will produce a much smaller file suitable for very constrained storage or bandwidth, at the cost of visible compression artifacts. Conversely, -crf 18 approaches near-transparent quality but significantly increases file size — which may be impractical for 3G delivery scenarios.
Yes. On Linux or macOS, you can use a shell loop: for f in *.flv; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "${f%.flv}.3gp"; done. On Windows Command Prompt, use: for %f in (*.flv) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "%~nf.3gp". This applies the exact same encoding settings to every FLV file in the current directory.
Technical Notes
FLV files typically carry H.264 or Sorenson Spark video with MP3 or AAC audio, but none of that stream data can be remuxed directly into a 3GP container because the container framing, timing metadata, and atom structures are fundamentally different. The libx264 encoder used here produces Baseline or Main Profile H.264, which is the most broadly compatible profile for 3GPP devices, including older handsets. AAC audio at 64k is the 3GPP default in this tool, chosen for bandwidth efficiency; it uses the LC (Low Complexity) AAC profile by default in FFmpeg, which is the profile mandated by the 3GPP standard. Transparency is not supported in either format. Chapters, subtitles, and multiple audio tracks present in the source will be discarded. The output file size will depend heavily on the source FLV's resolution and duration — note that FLV files originally designed for desktop web streaming may be at resolutions (720p or above) that are unnecessarily large for 3GPP's original mobile use case. You may want to add a -vf scale flag to downscale to 320x240 or 480x320 if targeting genuine 3G-era mobile compatibility.