Convert TS to MOV — Free Online Tool
Convert MPEG-2 Transport Stream (.ts) files to QuickTime MOV format using H.264 video and AAC audio — making broadcast and DVR recordings compatible with Apple's professional editing ecosystem, including Final Cut Pro and iMovie. The output is optimized for fast streaming playback with the +faststart flag, which relocates the MOV metadata header to the beginning of the file.
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
MPEG-2 Transport Stream files are designed for robust broadcast transmission and typically carry H.264 or H.265 video alongside AAC or AC-3 audio, wrapped in a container built for live streaming reliability rather than editing. During this conversion, the video stream is re-encoded using the libx264 H.264 encoder (even if the source is already H.264, since TS container quirks and stream packaging differences make a clean re-encode the most reliable path to a well-formed MOV file). The AAC audio is re-encoded at 128k bitrate, which cleanly handles both stereo AAC and multichannel AC-3 sources from broadcast recordings. The resulting MOV file uses the '-movflags +faststart' optimization, which reorganizes the file so the moov atom (metadata) sits at the start of the file rather than the end — essential for progressive web playback and required by many professional NLE import workflows.
What Each Flag Does
| Flag | What it does |
|---|---|
ffmpeg
|
Invokes the FFmpeg binary — the open-source multimedia processing engine that handles all demuxing, decoding, encoding, and remuxing for this TS to MOV conversion. In the browser-based tool, this runs as FFmpeg.wasm compiled to WebAssembly, so no files leave your machine. |
-i input.ts
|
Specifies the input MPEG-2 Transport Stream file. FFmpeg automatically detects the TS container and identifies the encapsulated video and audio elementary streams, including their codecs (H.264, H.265, AC-3, AAC, etc.) and any PCR/timestamp information used for broadcast synchronization. |
-c:v libx264
|
Re-encodes the video stream using the libx264 encoder to produce H.264 video inside the MOV container. This ensures clean, well-formed video that is fully compatible with Apple QuickTime, Final Cut Pro, and iMovie, regardless of what video codec was used in the source TS file. |
-c:a aac
|
Re-encodes the audio stream to AAC using FFmpeg's built-in AAC encoder. This is critical for TS files from broadcast sources that carry AC-3 (Dolby Digital) audio, which is not natively supported in the MOV container without special handling — AAC is the standard audio codec for Apple QuickTime workflows. |
-crf 23
|
Sets the Constant Rate Factor for libx264 video encoding to 23, which is the default quality level balancing file size and visual fidelity. For broadcast TS source material, this produces output that is visually indistinguishable from the original for most content — lower values like 18 would produce larger files with marginally higher quality. |
-b:a 128k
|
Sets the AAC audio bitrate to 128 kilobits per second, which is adequate for stereo audio from most broadcast TS recordings. If the source contains 5.1 surround audio that you are downmixing to stereo, consider raising this to 192k or 256k to better preserve spatial audio detail. |
-movflags +faststart
|
Triggers a post-encoding pass that relocates the MOV file's moov atom (metadata and index block) from the end of the file to the beginning. This is particularly important when converting from TS, since the resulting MOV is often used for web streaming or NLE import — both of which require the metadata to be at the file's start for efficient access. |
output.mov
|
Defines the output filename with the .mov extension, which signals FFmpeg to use the QuickTime MOV container format. The MOV container supports all the selected codecs (H.264 video, AAC audio) and enables features not present in the TS container, including chapter markers, transparency tracks, and the faststart optimization. |
Common Use Cases
- Import a DVR or Hauppauge capture card recording saved as a .ts file into Final Cut Pro or iMovie, which require QuickTime-compatible containers for native editing
- Convert raw HLS or broadcast stream captures (e.g., from Wireshark or a stream recorder) into a stable MOV file for frame-accurate review in QuickTime Player
- Prepare transport stream recordings from an IPTV or satellite receiver for use in a DaVinci Resolve project, where MOV with H.264 is a well-supported ingest format
- Convert a .ts recording from an over-the-air TV tuner (such as a HDHomeRun) into a MOV file to share with collaborators on macOS who do not have TS-capable players installed
- Archive a broadcast capture as a MOV file with chapter marker support, taking advantage of the QuickTime container's native chapter structure for long-form content like recorded sports events or documentaries
- Convert a live stream recording saved in TS format into an Apple-compatible MOV for upload to platforms like Vimeo, which recommend QuickTime-wrapped H.264 for highest-quality ingest
Frequently Asked Questions
Yes, because this conversion re-encodes both the video and audio rather than performing a lossless remux. The video is re-encoded with libx264 at CRF 23, which is a visually high-quality setting but is still lossy compression — so there is a small, usually imperceptible quality reduction compared to the original TS stream. If your source .ts file already contains H.264 video and AAC audio, you can avoid re-encoding entirely by using '-c copy' in the FFmpeg command, though this can occasionally cause sync or container compatibility issues with broadcast TS files that have discontinuous timestamps.
Broadcast .ts files frequently carry AC-3 (Dolby Digital) audio rather than AAC, especially recordings from North American over-the-air television. The FFmpeg command on this tool explicitly re-encodes audio to AAC, so AC-3 tracks should be handled correctly. However, if your TS file contains multiple audio tracks or a format like DTS, you may need to specify which audio stream to use with '-map 0:a:0' or similar stream selection flags when running FFmpeg locally. The browser-based tool automatically selects the default audio stream.
The +faststart flag runs a post-processing step that moves the MOV file's metadata block (called the moov atom) from the end of the file to the beginning. Transport stream files are originally designed for sequential transmission where seeking is not expected, so converting them to MOV without this flag produces a file where playback cannot begin until the entire file is downloaded. With +faststart, the MOV file can begin playing in a browser or streaming context almost immediately. This is also a requirement for some video hosting platforms and professional NLE importers.
Both TS and MOV containers support subtitles, but subtitle codec compatibility between them is nuanced. The FFmpeg command shown here does not include explicit subtitle stream mapping, so embedded subtitles from the TS file are not automatically carried into the MOV output. If your .ts file contains DVB subtitles or EIA-608/708 closed captions, you will need to add '-c:s mov_text' and appropriate stream mapping flags when running the command locally to include text-based subtitles in the MOV container.
The '-crf 23' flag controls video quality using libx264's Constant Rate Factor scale, where lower numbers mean higher quality and larger file sizes. For broadcast-quality output suitable for professional editing, try '-crf 18' for near-lossless quality. For a smaller file where some quality loss is acceptable (such as a web preview), '-crf 28' is a reasonable choice. To change audio bitrate, replace '-b:a 128k' with a higher value like '-b:a 192k' or '-b:a 256k' for better audio fidelity from high-quality broadcast source material.
Yes. On macOS or Linux, you can run a shell loop to process an entire folder: 'for f in *.ts; do ffmpeg -i "$f" -c:v libx264 -c:a aac -crf 23 -b:a 128k -movflags +faststart "${f%.ts}.mov"; done'. On Windows Command Prompt, use 'for %f in (*.ts) do ffmpeg -i "%f" -c:v libx264 -c:a aac -crf 23 -b:a 128k -movflags +faststart "%~nf.mov"'. The browser-based tool on this page processes one file at a time, so for batch conversions of large TS libraries, running FFmpeg locally is the recommended approach.
Technical Notes
MPEG-2 Transport Streams present some specific challenges when converting to MOV that are worth understanding. TS files often contain discontinuous PTS/DTS timestamps — a deliberate design feature for broadcast robustness — which can cause FFmpeg to report warnings during conversion and occasionally result in audio/video sync drift in the output. If you experience sync issues, adding '-async 1' to the command can help FFmpeg correct timestamp irregularities during re-encoding. The TS container can carry multiple programs (MPTS — Multi-Program Transport Stream), and by default FFmpeg selects the first program's streams; use '-map 0:p:0:v' and '-map 0:p:0:a' to be explicit. On the output side, MOV is a well-structured container for editing but is not universally supported on non-Apple platforms — if you need broader compatibility, MP4 with the same codec settings is nearly identical and more universal. The MOV container gains meaningful features over TS in this conversion: native chapter marker support, transparency support (relevant if using the PNG or MJPEG codecs), and a clean moov atom structure that editing software relies on for efficient random access. The libx264 encoder used here produces Baseline/Main/High Profile H.264 depending on settings, which is compatible with virtually all Apple hardware accelerated playback.