>FFmpegLab
FFmpeg Guide

Metadata Preservation – Timecode, Reel Names & EXIF

Keep timecode, reel names, camera metadata, and EXIF data through transcoding, remuxing, and rewrapping. Master -map_metadata, -movflags, and the ffmetadata workflow.

Metadata is the invisible backbone of professional video production. Timecode, reel names, camera settings, EXIF data, and custom tags tell the story of how and when your footage was created. Lose this data, and you lose context, organization, and often the ability to work efficiently in post‑production.

Yet FFmpeg's metadata handling is one of its most misunderstood features. The documentation is scattered across multiple pages, and the behavior varies dramatically between containers. Most users don't realize that simply running ffmpeg -i input.mp4 output.mp4 can silently strip critical metadata.

Key takeaways

The Gap: The Silent Loss of Critical Data

The FFmpeg documentation explains -map_metadata in a few paragraphs, but it doesn't warn you about the many ways metadata can be lost. Different containers store metadata differently. MOV files have timecode tracks. MXF files have reel_name and UMID fields. MP4 files have tags. And FFmpeg's default behavior is to not preserve everything.

As one user put it on the FFmpeg mailing list: "for preservation we're trying to keep as much of the source 'as-is'"[reference:0]. But without the right flags, that's nearly impossible.

The gap is practical knowledge—knowing which flags to use, when to use them, and which metadata types are container‑specific. This guide fills that gap.

The Symptom: "Where Did My Timecode Go?"

You've just transcoded a batch of MXF files from a professional camera. You open the output in your editing software—and the timecode is gone. The reel names are missing. The camera metadata is nowhere to be found.

This is a classic symptom of metadata loss during transcoding or remuxing. As documented in an FFmpeg bug report, copying or remuxing an MXF file can cause "some (most) of the stream metadata" to be lost[reference:1]. The original file had reel_name, timecode, and track_name—the copied file had only the bare minimum[reference:2].

This isn't a bug—it's the default behavior. You need to explicitly tell FFmpeg to preserve metadata.

Core Concepts: What Is Metadata?

In FFmpeg, metadata exists at three levels:

FFmpeg's metadata model is flat, not hierarchical—there are no subtags[reference:3]. Keys are unique; you can't have two tags with the same key[reference:4].

Different containers handle metadata differently:

ContainerMetadata SupportCommon Issues
MOV / QuickTimeTimecode tracks (tmcd), reel_name, extensive tagsTimecode can be lost if not explicitly mapped[reference:5]
MXFreel_name, UMID, file_package_name, timecode[reference:6]Most stream metadata is lost during copy[reference:7]
MP4Tags (title, artist, etc.), but limited EXIF/GPS supportEXIF/GPS metadata is usually not preserved[reference:8]
MKVExtensive tag support, but timecode becomes metadata, not a track[reference:9]Timecode track is converted to metadata during MKV creation

Method 1: -map_metadata – The Workhorse

The -map_metadata option is your primary tool for copying metadata from input to output[reference:10]. The simplest form copies all metadata from the first input:

ShareRenders { } Code Config
Generated Code Logs Customize
# Copy all metadata from the first input to the output
ffmpeg -i input.mov -map_metadata 0 -c copy output.mov

As the FFmpeg mailing list confirms: "you can use '-map_metadata 0'. It copies all possible metadata from input to output"[reference:11][reference:12].

But there's a catch: -map_metadata 0 copies global metadata. For per‑stream metadata (like timecode tracks or reel names), you need additional flags.

To copy metadata from a specific stream:

ShareRenders { } Code Config
Generated Code Logs Customize
# Copy metadata from video stream 0 to video stream 0
ffmpeg -i input.mov -map_metadata:s:v 0:s:v -c copy output.mov

For multiple streams, you may need -map_metadata:s per stream[reference:13].

Method 2: -movflags use_metadata_tags

For MOV and MP4 containers, -movflags use_metadata_tags preserves additional tags that would otherwise be lost[reference:14].

ShareRenders { } Code Config
Generated Code Logs Customize
# Preserve MOV/MP4 tags with use_metadata_tags
ffmpeg -i input.mp4 -map_metadata 0 -movflags use_metadata_tags -c copy output.mp4

As noted on Super User: "-map_metadata and -movflags can be used in conjunction to preserve more metadata"[reference:15]. This flag ensures that custom tags (like those added by non‑FFmpeg tools) are preserved in the output.

Method 3: The ffmetadata Workflow

FFmpeg can dump metadata to a simple UTF‑8‑encoded INI‑like text file and load it back later[reference:16]. This is useful for backup, batch editing, or transferring metadata between different workflows.

ShareRenders { } Code Config
Generated Code Logs Customize
# Dump metadata to a file
ffmpeg -i input.mov -f ffmetadata metadata.txt

# Load metadata from a file during encoding
ffmpeg -i input.mov -i metadata.txt -map_metadata 1 -c copy output.mov

This workflow is particularly valuable when you need to preserve metadata across codec changes or when working with tools that don't support FFmpeg's native metadata handling.

Timecode & Reel Names – The Professional Essentials

Timecode and reel names are the most critical metadata for professional post‑production. They allow editors to sync footage, log clips, and maintain a consistent workflow across the entire pipeline.

Preserving Timecode

Timecode is stored differently depending on the container:

To explicitly set timecode during encoding:

ShareRenders { } Code Config
Generated Code Logs Customize
# Set timecode manually (SMPTE format: HH:MM:SS:FF)
ffmpeg -i input.mov -timecode 01:02:03:04 -c copy output.mov

# Note: Setting timecode while copying may not work in all containers[reference:23]

Important: Setting -timecode while using -c copy may not work in all containers[reference:24]. For best results, re‑encode or use the ffmetadata workflow.

Preserving Reel Names

Reel names are essential for identifying source tapes or camera cards. In MXF files, reel names are stored as stream metadata[reference:25]. Recent patches to FFmpeg have improved reel name preservation during copy operations[reference:26].

To set or modify a reel name:

ShareRenders { } Code Config
Generated Code Logs Customize
# Set reel name metadata (MOV/MP4)
ffmpeg -i input.mov -metadata reel_name="B002C0006_230803_1932" -c copy output.mov

However, as noted in an FFmpeg bug report, setting -metadata reel_name while using -c copy may not work in all containers[reference:27]. For reliable reel name preservation, consider using the ffmetadata workflow or re‑encoding.

Stripping Metadata – Privacy and Security

Metadata can contain sensitive information—camera models, GPS coordinates, codec comments, and timestamps[reference:28]. For privacy‑conscious workflows, stripping metadata is essential.

To strip all metadata from a file:

ShareRenders { } Code Config
Generated Code Logs Customize
# Strip all metadata from global, video, and audio streams
ffmpeg -i input.mov -map_metadata:g -1:g -map_metadata:s:v -1:g -map_metadata:s:a -1:g -c copy output.mov

As documented in the FFmpeg mailing list: "The -map_metadata argument allows copying global/stream metadata from input to output. If you use -1 as the input file it will strip the specified metadata"[reference:29].

For even simpler stripping, -map_metadata -1 removes all metadata from the file[reference:30]. However, be cautious—this also removes critical metadata like timecode and reel names.

As hoop.dev notes: "Always strip non-essential tags before writing new files. Use -map_metadata -1 to remove all metadata from containers"[reference:31]. This is especially important when processing media in shared or cloud environments[reference:32].

Debugging Common Metadata Issues

Here are the most frequent metadata problems and their solutions.

ProblemLikely CauseFix
Timecode is missing from output The tmcd track wasn't copied or was converted to metadata Use -map 0 -c:d copy to copy data tracks; or re‑encode to a format that supports timecode tracks[reference:33]
Reel name is lost during copy Container-specific metadata isn't preserved by default Use -map_metadata 0 and, for MXF, ensure you're using a recent FFmpeg version with the patch[reference:34]
EXIF/GPS data is missing MP4 containers don't support EXIF/GPS metadata[reference:35] Use a different container (e.g., MOV) or extract metadata with exiftool before transcoding[reference:36]
Custom tags are lost FFmpeg doesn't copy all tags by default Use -movflags use_metadata_tags for MOV/MP4 containers[reference:37]
Tagged date is overwritten FFmpeg uses "encoded date" for multiple fields Manually set the desired metadata with -metadata[reference:38]
File system timestamps are lost FFmpeg doesn't preserve file system metadata by default[reference:39] Use stat to capture timestamps and add them with -metadata[reference:40]

Inspect Metadata Visually with the FFmpegLab IDE

Metadata preservation is much easier to debug with visual inspection. The FFmpegLab IDE lets you:

Here's how metadata inspection looks in the FFmpegLab IDE.

ShareRenders { } Code Config
Generated Code Logs Customize
📁 input.mov (1.2 GB) 🕐 Timecode: 00:06:15:21 🎬 Reel: B002C0006_230803_1932 ✅ 23 metadata fields detected
[global]
creation_time = 2023-08-03T19:32:00Z
major_brand = qt
[stream:0 (video)]
timecode = 00:06:15:21
reel_name = B002C0006_230803_1932 (1)
file_package_name = B002C0006_230803_1932_000001 (0)
[stream:1 (audio)]
language = eng
title = Stereo Mix
# Visual metadata inspection with before/after comparison
# Drag and drop files to compare metadata preservation across transcodes
📋 Metadata: 23 fields ✅ Timecode preserved ✅ Reel name preserved

The IDE shows you exactly what metadata exists in your input, what will be preserved in the output, and what might be lost. You can experiment with different flags and see the results in real time.

Frequently Asked Questions (FAQ)

What's the difference between -map_metadata and -metadata?

-map_metadata copies metadata from an input to the output[reference:41]. -metadata sets or overrides specific metadata keys in the output[reference:42]. Use -map_metadata for preservation; use -metadata for modification.

Why does my MP4 file lose EXIF/GPS metadata?

MP4 containers have limited support for EXIF and GPS metadata[reference:43]. For best results, use the MOV container or extract metadata with exiftool before transcoding[reference:44].

Does -map_metadata 0 copy all metadata?

It copies all possible metadata[reference:45]. However, some metadata is container‑specific and may not transfer between containers. Additionally, color information and some technical metadata are not part of FFmpeg's metadata model and must be set manually[reference:46].

How do I preserve timecode when transcoding to MKV?

FFmpeg stores timecode as metadata in MKV files, not as a dedicated timecode track[reference:47]. If you need a timecode track, transcode back to a format that supports it (like MOV or v210)[reference:48]. For most workflows, the metadata‑based timecode is sufficient.

Can I copy metadata from one file to another?

Yes. Use the ffmetadata workflow: dump metadata from the source file with -f ffmetadata, then load it into the destination file with -map_metadata 1[reference:49]. This works across different containers and codecs.

How do I remove sensitive metadata from a video file?

Use -map_metadata -1 to strip all metadata[reference:50]. For more granular control, use -map_metadata:g -1:g for global metadata and -map_metadata:s:v -1:g for video stream metadata[reference:51]. Always inspect the output with ffprobe to confirm that sensitive data has been removed.

Final Word

Metadata preservation is one of FFmpeg's most misunderstood features—and one of the most critical for professional workflows. Whether you're archiving footage, delivering to a client, or protecting privacy, understanding how to preserve (or strip) metadata is essential.

The key is knowing your container: MOV files need -map_metadata 0 and -movflags use_metadata_tags. MXF files need special attention to reel_name and timecode streams. MP4 files have limited EXIF support. And for maximum control, the ffmetadata workflow is your best friend.

With the FFmpegLab IDE's visual metadata inspection, you can see exactly what's in your files, experiment with preservation flags, and verify the results—all without the guesswork.

Metadata is invisible—until it's gone. Preserve it wisely.

✦  Fresh from the render queue

Better FFmpeg workflows, delivered.

Get practical commands, new templates, and deep-dive guides for the edits that are usually hardest to get right.

✓  Copy-pasteable commands    ✓  Editor templates    ✓  No noise
One useful email at a time.