Takeout JSON

¿Las fotos de Google Takeout tienen la fecha incorrecta? Por qué

Por qué todas las fotos de una exportación de Google Takeout muestran el día de la descarga, dónde están las fechas reales y cómo devolverlas a cada foto.

Descargaste tu biblioteca de Google Fotos, descomprimiste los archivos y abriste la carpeta. Diez años de fotos, y todas dicen que se tomaron el martes pasado. Al ordenar por fecha, un viaje a la playa de 2012 queda junto a las capturas de pantalla de ayer.

No se ha perdido nada. Las fechas siguen ahí, solo que no en el sitio donde tu ordenador las busca.

Dónde fue a parar la fecha

Una foto puede llevar su fecha en tres lugares. La cámara escribe una dentro del propio archivo, en el bloque EXIF, con el nombre "DateTimeOriginal". El sistema operativo guarda otras dos por fuera del archivo: la fecha de creación y la de modificación. El Explorador de Windows, el Finder y casi todas las galerías leen primero el EXIF y, si no existe, usan las fechas del archivo.

Takeout rompe esto de dos maneras. Primero, al meter tus archivos en un zip, las fechas del archivo pasan a ser el momento en que se creó el zip o el momento en que lo descomprimiste. Eso no importaría si el EXIF estuviera intacto.

Segundo, en una parte importante de las fotos el EXIF no tiene fecha o la tiene mal. Las capturas de pantalla nunca la tuvieron. WhatsApp y otras aplicaciones de mensajería quitan los metadatos al comprimir. Las fotos escaneadas llevan la fecha del escaneo, no la del día en que se hizo la copia en papel. Y si alguna vez corregiste una fecha dentro de Google Fotos, esa corrección se guardó en la base de datos de Google, no en el archivo. Google pone la información correcta en un archivo .json aparte, junto a cada foto, en lugar de escribirla dentro de la imagen.

Tu ordenador ignora esos archivos .json por completo. Así que muestra la única fecha que encuentra: la de la descarga.

Comprueba cuánto afecta a tu caso

Antes de arreglar nada, averigua cuántos archivos lo necesitan de verdad. Las fotos hechas con la cámara del teléfono suelen conservar una fecha EXIF válida. Si la mayoría de las tuyas la tienen, quizá solo haya que corregir una parte.

Si tienes exiftool instalado, este comando lista todos los archivos sin fecha EXIF:

exiftool -r -if 'not $DateTimeOriginal' -filename "Takeout/Google Fotos"

En una parte real de Takeout con 991 fotos que medimos, los archivos JSON eran la única fuente de una fecha correcta en aproximadamente una de cada cinco fotos. Tu mezcla será distinta. Las bibliotecas llenas de capturas de pantalla, fotos de chats y escaneos antiguos dependen mucho más de los JSON.

Abre un JSON y míralo

Cada foto tiene un archivo compañero, por ejemplo IMG_2034.JPG.supplemental-metadata.json (las exportaciones antiguas usan IMG_2034.JPG.json). Ábrelo con cualquier editor de texto. La parte que importa es esta:

"photoTakenTime": {
  "timestamp": "1563102330",
  "formatted": "Jul 14, 2019, 11:05:30 AM UTC"
}

Ese timestamp es la fecha real, en segundos desde 1970, en UTC. También hay un creationTime, que es el momento en que el archivo se subió a Google. Si quieres la fecha en que se hizo la foto, la buena es photoTakenTime. Explicamos todo el archivo en qué son los archivos JSON de Google Takeout.

Corregirlo a mano

Para un puñado de fotos, pon la fecha a mano. En un Mac, abre la foto en Vista Previa o en Fotos y ajusta la fecha. En Windows, haz clic derecho sobre el archivo, elige Propiedades, luego Detalles, y edita "Fecha de captura". Hazlo con cincuenta fotos y querrás algo mejor.

Para una biblioteca entera, la herramienta habitual es exiftool. Un solo comando copia la marca de tiempo de cada JSON dentro de la foto y en las fechas del archivo:

exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
  "-DateTimeOriginal<PhotoTakenTimeTimestamp" \
  "-FileCreateDate<PhotoTakenTimeTimestamp" \
  "-FileModifyDate<PhotoTakenTimeTimestamp" \
  -ext jpg -ext jpeg -overwrite_original "Takeout/Google Fotos"

Funciona, con trampas. Google recorta los nombres largos de los JSON a 46 caracteres, así que el patrón de arriba se salta algunos. Los duplicados llevan un (1) en una posición distinta en el nombre del JSON y en el de la foto. Los videos necesitan otras etiquetas. HEIC y PNG necesitan pasadas separadas. Lo repasamos todo en la guía de exiftool. También hay scripts gratuitos de la comunidad, como GooglePhotosTakeoutHelper, que resuelven las rarezas de los nombres si te manejas con una terminal.

La aplicación

Si prefieres no pasar una tarde en la línea de comandos, Takeout JSON Metadata Fixer hace esto como aplicación de escritorio en macOS, Windows y Linux, con la interfaz en español.

Le indicas los zips de Takeout o la carpeta descomprimida. Empareja cada foto con su JSON, incluidos los nombres supplemental-metadata de 2024, los recortados y los duplicados con (1). Después escribe photoTakenTime en el EXIF de la foto y ajusta las fechas de creación y modificación del archivo para que coincidan. Las fotos sin JSON conservan su fecha EXIF si la tienen, y si no, usan la fecha del archivo, así que ninguna queda sin fecha.

Los videos también reciben su fecha, escrita dentro del MP4 o MOV donde los reproductores la esperan. Las coordenadas GPS vuelven a la foto cuando el JSON las tiene de verdad. También puedes pedirle que renombre los archivos con la fecha real y los ordene en carpetas por año y mes, pero esa parte es opcional. Si solo quieres corregir las fechas, elige "Conservar nombres" y "Conservar mis carpetas".

Hay una simulación que muestra lo que cambiaría sin escribir nada. Las primeras 1000 fotos son gratis, y una compra única de 19,99 USD quita el límite. Todo se ejecuta en tu propio ordenador; tus fotos nunca se suben a ningún sitio.

Una vez que las fechas están dentro de los archivos, siguen siendo correctas vayan donde vayan: Fotos de Apple, un NAS, Immich, una memoria USB o un teléfono nuevo.

Preguntas frecuentes

¿Las fechas quedarán en la zona horaria correcta?

El JSON guarda un instante exacto en UTC. Las herramientas lo convierten a la hora local de tu ordenador al escribir el EXIF, que por defecto no lleva zona horaria. Una foto tomada a las 11:05 en Madrid sale como 11:05 si tu ordenador está en hora de Madrid, y como 05:05 si está en hora de Bogotá. Pon tu ordenador en la zona donde se tomaron la mayoría de tus fotos antes de corregirlas, o acepta unas horas de desfase en las fotos de vacaciones.

¿Pierdo algo al escribir en el EXIF?

Escribir una etiqueta de fecha solo cambia el bloque de metadatos. Los píxeles de la imagen no se tocan. Guarda los zips originales hasta que estés satisfecho con el resultado, que de todos modos es buena costumbre.

¿Por qué solo algunas fotos están mal?

Porque solo algunas carecían de fecha EXIF desde el principio. Las fotos de cámara suelen tenerla. Las capturas de pantalla, las imágenes de chats, los escaneos y todo lo que cambiaste de fecha dentro de Google Fotos dependen del JSON.

¿Puedo borrar los archivos JSON después de corregir las fechas?

Sí. Una vez que la fecha y el GPS están escritos en las fotos, los JSON ya han cumplido su función. Guárdalos hasta haber comprobado unas cuantas fotos en tu nueva biblioteca y luego bórralos.