Google Takeout videos with the wrong date: fix MP4 and MOV

Takeout gives every video the export day as its file date, and some videos carry no date inside at all. Drop your Takeout ZIPs below: each video gets the taken time from its JSON file in its own header and as its file date. Nothing is re-encoded or uploaded.

Drop all your Takeout ZIP files here

Every part at once — takeout-…-001.zip, -002.zip … A photo's JSON is often in a different part. Files stay on your computer.

Why Takeout videos show the wrong date

What the tool changes in a video

WhereWhatWhen
Movie header (mvhd)creation and modification time = the taken time from the JSON, in UTCwhen the stored date is empty, before 1970, or on/after the upload of a video taken earlier — or always, with Replace dates… ticked
Every track and media header (tkhd, mdhd)the same timetogether with the movie header
Date text in the metadata (com.apple.quicktime.creationdate, ©day)the same moment, in the same text formatonly when the video already has it — nothing is added
File date in the fixed ZIPthe taken timealways

These fields have a fixed size, so they are overwritten in place: the video keeps its exact size, no box moves (so the sample offsets stay valid whether the index sits before or after the media data), and the picture and sound bytes are copied unchanged. The automated tests decode videos made by ffmpeg before and after the change and compare every frame.

Formats: MP4, MOV, M4V, 3GP and 3G2, and Pixel motion-photo .MP files. AVI, MKV, WebM and other containers get the file date only.

How to fix the dates of Takeout videos

  1. Drop all your Takeout ZIP parts above. A video and its JSON file are often in different parts.
  2. Leave Replace dates and locations the camera already wrote off: a video that already holds a plausible recording date keeps it. Tick it only if you corrected dates in Google Photos.
  3. Click Fix and save and extract the fixed ZIP. To check a video, look at Properties → Details → Media created on Windows, or run ffprobe -show_entries format_tags=creation_time video.mp4.

Live Photos and motion photos

A Live Photo comes out of Takeout as a HEIC or JPEG plus a short MOV or MP4 without a JSON file of its own. The tool gives the video the photo's date (unless you untick that option) and treats its header by the same rules.

Videos without a JSON file

Names such as VID_20190101_101010.mp4 or PXL_20190809_203449253.mp4 (Pixel, UTC) give a date. It sets the file date and fills an empty video header; a header that already has a date is never replaced by a name.

Large videos

For a video stored uncompressed in the ZIP only its header is read, so a 10 GB video costs a few kilobytes of reading. A video stored compressed has to be unpacked in memory to be edited; above 256 MB it gets the file date only, and the report says so.

Frequently asked questions

Is the video re-encoded or recompressed?

No. Only the date fields in the headers are overwritten. The file keeps its size, and the picture and sound are the same bytes as before.

Which date does a video get?

The photoTakenTime from its JSON file — the date Google Photos shows. If the JSON has only the upload time (creationTime), the video gets that as its file date and its header is left alone.

Will it overwrite the dates my camera wrote?

Not by default. If a JPEG or HEIC already has a "date taken" (DateTimeOriginal) or GPS position, it is kept. A video keeps a plausible recording date in its header; a video date that is empty, before 1970, or only the upload or processing time (on or after the upload of a video taken earlier) is replaced. Turn on Replace dates and locations the camera already wrote if you changed dates in Google Photos and want those instead.

Which apps read the date inside a video?

The movie header's creation time is the standard place: ExifTool shows it as CreateDate, ffprobe as creation_time, Windows Explorer as Media created, and Immich reads it when it imports a video. Apps that sort by file date use the file date, which the fixed ZIP restores too.

Which time zone are the dates in?

Google stores the moment a photo was taken in UTC. The tool converts it to the time zone you choose — your computer's zone by default — and also writes the UTC offset (OffsetTimeOriginal) so apps can show the exact moment. Video headers store UTC by definition, so videos get the exact moment and apps show it in their own zone. Photos taken while travelling will show the time in the zone you picked, not the local time of the trip.

Are my photos uploaded?

No. The ZIP files are read by your browser on your own computer and the fixed archive is written there too. Nothing is sent to a server — you can disconnect from the internet after the page has loaded and it still works.