Convert TS to 3GPP — Free Online Tool
Convert MPEG-2 Transport Stream (.ts) files to 3GPP (.3gp) format, re-encoding video with H.264 and audio with AAC at mobile-optimized bitrates. This conversion strips broadcast-specific features like multiple audio tracks and subtitles, producing a compact, 3G-network-compatible file suited for older mobile devices.
to
FFmpeg Command
Copy this command to run the same conversion locally with FFmpeg on your desktop. Download FFmpeg
Drop your TS 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
A .ts file is a broadcast container that can carry multiple video, audio, and subtitle streams along with program-specific metadata used by DVB and ATSC broadcast systems. Converting to 3GPP requires full re-encoding — not just a remux — because the output container is designed for constrained mobile environments. The video stream is encoded with H.264 using a CRF of 23, which targets a consistent perceptual quality level rather than a fixed bitrate. The audio is re-encoded to AAC at 64k, a low bitrate chosen because 3GPP targets 3G mobile delivery where bandwidth is limited. The -movflags +faststart flag rewrites the MP4-family container metadata to the front of the file, enabling progressive playback before the full file has downloaded — a key requirement for mobile streaming. Any secondary audio tracks, subtitle streams, and broadcast metadata present in the source .ts file are discarded, as 3GPP supports only a single audio track and no subtitle streams.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary. In the browser-based version of this tool, this runs via FFmpeg.wasm compiled to WebAssembly, executing entirely in your browser with no server upload. The same command runs identically in a local FFmpeg installation for files over 1GB. |
-i input.ts
|
Specifies the MPEG-2 Transport Stream source file. FFmpeg will demux all available streams — video, audio, subtitles, and program metadata — from the .ts container, making them available for the encoding steps that follow. |
-c:v libx264
|
Re-encodes the video stream using the libx264 H.264 encoder. This is required because 3GPP does not support HEVC, MPEG-2 Video, or other codecs that may be present in the source .ts file — the output must be H.264 for broad mobile device compatibility. |
-c:a aac
|
Re-encodes the audio stream to AAC-LC using FFmpeg's native AAC encoder. 3GPP mandates AAC for audio, and this replaces whatever audio codec the source .ts file used — whether AC-3 from a broadcast recording, MP3, or Opus. |
-crf 23
|
Sets the H.264 Constant Rate Factor to 23, the standard default, which targets a perceptually good quality level without fixing a specific bitrate. For 3GPP's small-screen mobile use case this balances acceptable visual quality against the compact file sizes expected for 3G delivery. |
-b:a 64k
|
Sets the AAC audio bitrate to 64 kilobits per second. This is intentionally lower than typical desktop-grade encoding because 3GPP targets constrained mobile bandwidth; 64k AAC is intelligible for speech and adequate for mono or stereo content on small device speakers or earbuds. |
-movflags +faststart
|
Moves the 3GPP container's metadata (the 'moov' atom) to the beginning of the output file after encoding completes. This is essential for mobile streaming, allowing playback to begin before the entire file has been downloaded — a behavior the source .ts broadcast format handles differently through its packet structure. |
output.3gp
|
Specifies the output filename with the .3gp extension, which signals FFmpeg to use the 3GPP muxer. The .3gp extension is recognized by mobile operating systems and players as a 3G-compatible video file distinct from a generic .mp4. |
Common Use Cases
- Archiving a DVR-recorded broadcast TV segment in a compact format playable on a legacy 3G-era smartphone or feature phone that does not support modern containers
- Preparing a short video clip captured from a broadcast stream for distribution via MMS messaging, where file size constraints make the low-bitrate 3GPP format practical
- Converting a transport stream recording from a USB TV tuner for playback in older in-car entertainment systems that support 3GP but not TS files
- Reducing a broadcast-quality .ts recording to a small 3GPP file for embedding in a low-bandwidth mobile web page targeting users on 3G connections in regions with limited infrastructure
- Extracting a single-language version of a multi-audio-track broadcast recording — for example, isolating the default audio track — while converting to a universally mobile-compatible format
- Converting a short HLS-captured .ts segment into a standalone 3GP clip for use in a mobile app demo or prototype targeting older Android or feature phone environments
Frequently Asked Questions
Yes, quality loss is unavoidable in this conversion. The source .ts file typically contains H.264 or H.265 video, which must be decoded and re-encoded to H.264 for 3GPP — introducing generation loss. More significantly, the audio is compressed to AAC at just 64k, which is noticeably lower quality than typical broadcast audio. The 3GPP format is inherently lossy and optimized for small file size on mobile networks rather than fidelity, so this conversion is best suited for viewing on small screens where the quality difference is less perceptible.
MPEG-2 Transport Streams are designed for broadcast delivery and routinely carry multiple audio tracks — for example, original language and dubbed versions, or separate commentary tracks. The 3GPP container specification supports only a single audio stream, so FFmpeg will automatically select the default or first audio track from the .ts file and discard the rest. If you need a specific non-default audio track, you can add '-map 0:v:0 -map 0:a:2' (adjusting the index) to the FFmpeg command to select a particular track before conversion.
Subtitles are silently dropped. Transport streams commonly carry DVB Teletext, DVB Subtitles, or SCTE-35 subtitle streams used in broadcast workflows, but the 3GPP container has no support for subtitle tracks. If subtitle preservation is important, you would need to hard-burn them into the video using a filter like '-vf subtitles=input.ts' before the 3GPP output, which permanently renders them into the video frames.
The '-crf 23' flag controls video quality using H.264's Constant Rate Factor scale, where lower numbers produce higher quality and larger files, and higher numbers produce smaller files with more compression. For a smaller 3GP file suitable for very slow connections, try '-crf 28' or '-crf 30'. For better visual quality at the cost of a larger file, use '-crf 18'. You can also raise the audio bitrate from '-b:a 64k' to '-b:a 96k' or '-b:a 128k' if audio clarity is more important than file size.
Yes. On Linux or macOS, you can run a shell loop: 'for f in *.ts; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "${f%.ts}.3gp"; done'. On Windows Command Prompt, use: 'for %f in (*.ts) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 64k -movflags +faststart "%~nf.3gp"'. This applies the same encoding settings to every .ts file in the current directory, outputting a matching .3gp file for each.
The '-movflags +faststart' flag in the conversion command relocates the MP4/3GP container's 'moov' metadata atom to the beginning of the file. By default, FFmpeg writes this atom at the end after encoding is complete, meaning a player must download the entire file before it can begin playback. Moving it to the front allows a mobile browser or media player to start rendering video as soon as the first few bytes arrive. MPEG-2 Transport Streams use a different streaming model — packet-based delivery — that does not require this optimization but is also not natively supported by most mobile players.
Technical Notes
The 3GPP format (.3gp) is a subset of the ISO Base Media File Format (the same family as MP4 and MOV), originally standardized for delivery over 3G cellular networks by the Third Generation Partnership Project. It imposes strict constraints compared to a broadcast .ts container: only H.264 Baseline or Main Profile video and AAC-LC audio are broadly compatible across the target device range, which is why this tool defaults to libx264 and AAC rather than any of the other codecs available in the TS input. The CRF range for 3GPP output is deliberately limited to 18–28 in this tool, because values below 18 would produce file sizes inconsistent with mobile delivery goals, and values above 28 produce artifacts that are objectionable even on small screens. Note that H.265 (HEVC), which many modern .ts broadcast recordings use, cannot be passed through or used in the 3GPP output — it must be transcoded to H.264, which is the primary reason this conversion is computationally intensive. Broadcast .ts files often contain MPEG-2 Video or VC-1 as well, both of which are similarly unsupported in 3GPP and will be transcoded. The resulting .3gp files are compatible with Android 2.x and later, older Symbian-based Nokia devices, and any MP4-capable player, but lack the resolution and bitrate headroom of modern mobile formats like MP4/H.264 or WebM.