Cómo fusionar los JSON de Google Takeout con tus fotos
Paso a paso, cómo escribir la fecha y el GPS de los archivos .json de Google Takeout dentro de cada foto, con exiftool o con una aplicación de escritorio.
Tienes una carpeta de fotos y, al lado de cada una, un archivo .json con su fecha y su ubicación reales. Las fotos, en cambio, muestran una fecha equivocada. Lo que quieres es que la información del .json pase dentro de la foto, para poder tirar esos archivos y quedarte con una carpeta normal de imágenes.
Es un problema resuelto. Aquí tienes cómo hacerlo a mano y cómo hacerlo con un clic.
Qué significa "fusionar"
Un JPEG, un HEIC o un PNG lleva un bloque de metadatos llamado EXIF. Las cámaras escriben ahí la fecha de captura, en una etiqueta llamada DateTimeOriginal, y las coordenadas GPS en GPSLatitude y GPSLongitude. Las apps de fotos de cualquier sistema leen esas etiquetas.
El JSON de Takeout guarda la misma información en otro envoltorio. Fusionar es leer photoTakenTime y geoData del JSON y escribirlos en las etiquetas EXIF. De paso conviene ajustar las fechas de creación y modificación del archivo, para que el Explorador de Windows y el Finder ordenen bien incluso en las vistas que no miran el EXIF.
Los videos no tienen EXIF. Su fecha vive dentro del contenedor MP4 o MOV, en etiquetas como CreateDate. La idea es la misma; cambian los nombres de las etiquetas.
Paso 1: descomprime todo en un mismo sitio
Takeout divide las exportaciones grandes en varios zip. Descomprímelos todos en la misma carpeta padre para que las carpetas de álbum se fusionen. Si un álbum ocupa dos zip, la mitad de sus fotos y de sus JSON puede estar en cada uno, y tienen que acabar lado a lado. Si tienes muchas partes, mira cómo descomprimir Google Takeout en varias partes.
Paso 2: entiende cómo encuentra una foto su JSON
El nombre del JSON es el nombre de la foto más un sufijo. IMG_0042.JPG va con IMG_0042.JPG.supplemental-metadata.json en las exportaciones de 2024 en adelante, o con IMG_0042.JPG.json en las más antiguas. Dos cosas rompen esa regla sencilla. Los nombres de más de 46 caracteres se recortan, así que el sufijo sale cortado. Y en las fotos duplicadas el contador cambia de sitio: IMG_0042(1).JPG va con IMG_0042.JPG.supplemental-metadata(1).json. La herramienta que uses tiene que manejar los dos casos, o se saltará esos archivos sin avisar.
Paso 3: fusiona con exiftool
exiftool es gratuito y funciona en cualquier sistema. Instálalo, abre una terminal en la carpeta Google Fotos y ejecuta:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-DateTimeOriginal<PhotoTakenTimeTimestamp" \
"-CreateDate<PhotoTakenTimeTimestamp" \
"-FileCreateDate<PhotoTakenTimeTimestamp" \
"-FileModifyDate<PhotoTakenTimeTimestamp" \
"-GPSLatitude<GeoDataLatitude" "-GPSLatitudeRef<GeoDataLatitude" \
"-GPSLongitude<GeoDataLongitude" "-GPSLongitudeRef<GeoDataLongitude" \
-ext jpg -ext jpeg -ext heic -ext png -overwrite_original .
Qué hace: para cada imagen, busca en la misma carpeta un archivo con el mismo nombre más .supplemental-metadata.json y copia los campos de la lista. -d %s le dice a exiftool que la marca de tiempo está en segundos desde 1970. -overwrite_original evita que deje una copia de seguridad de cada archivo.
Ejecútalo una segunda vez con "%d/%F.json" para los JSON de estilo antiguo. Y una vez más para los videos:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-CreateDate<PhotoTakenTimeTimestamp" "-ModifyDate<PhotoTakenTimeTimestamp" \
"-TrackCreateDate<PhotoTakenTimeTimestamp" "-MediaCreateDate<PhotoTakenTimeTimestamp" \
"-FileModifyDate<PhotoTakenTimeTimestamp" \
-ext mp4 -ext mov -overwrite_original .
La guía de exiftool para Google Takeout explica cada opción con más detalle.
Paso 4: ocúpate de lo que exiftool no emparejó
Cuenta lo que queda sin fecha:
exiftool -r -if 'not $DateTimeOriginal' -ext jpg -ext heic -ext png -filename .
En la lista saldrán los nombres recortados, los duplicados con (1) y las fotos que nunca tuvieron JSON. Los recortados se pueden cazar con un pequeño script que busque el .json cuyo nombre sea el principio del esperado. Los duplicados hay que renombrarlos antes de que el patrón funcione. Esta es la parte que convierte un trabajo de diez minutos en una tarde entera, y es la razón de que existan scripts de la comunidad como GooglePhotosTakeoutHelper. Son gratuitos y hacen el emparejamiento por ti, en una terminal.
Un detalle más: las líneas de GPS de arriba escriben sin problema 0.0, 0.0 en las fotos cuyo JSON dice "ubicación desconocida". Añade -if '$GeoDataLatitude ne 0' o acepta un grupo de fotos en mitad del Atlántico.
Paso 5: la aplicación en su lugar
Takeout JSON Metadata Fixer hace los pasos 1 a 4 en una sola pasada, en Windows, Linux y Mac, con la interfaz en español.
Elige los zip de Takeout o la carpeta ya descomprimida. La aplicación empareja cada foto y cada video con su JSON probando todos los estilos de nombre que ha usado Google, incluido el recorte a 46 caracteres y el contador (1). Escribe la fecha en el EXIF de las imágenes y en el contenedor de los videos, ajusta las fechas del archivo y solo escribe el GPS cuando las coordenadas son reales. Las fotos sin JSON conservan su propia fecha EXIF, o la fecha del archivo si no tienen ninguna.
Puedes quedarte ahí, conservando los nombres y tus carpetas, y recibir la misma carpeta con los metadatos correctos. O puedes hacer que renombre los archivos por fecha y los ordene en carpetas por año y mes en la misma pasada. Una simulación te enseña el plan antes de escribir nada. Las primeras 1000 fotos son gratis; el uso ilimitado cuesta 19,99 $ una sola vez. No se sube nada a ningún sitio.
Paso 6: comprueba y después borra los JSON
Abre unas cuantas fotos de años distintos en tu app de fotos y confirma las fechas. Después borra los archivos .json. En Mac o Linux, desde dentro de la carpeta: find . -name "*.json" -delete. En Windows, busca *.json en la carpeta, selecciona todo y borra. Guarda los zip originales un mes por si notas algún problema. Más detalles en ¿puedo eliminar los archivos JSON de Google Takeout?.
Preguntas frecuentes
¿Fusionar cambia la calidad de la imagen?
No. Solo se reescribe el bloque de metadatos. Los datos comprimidos de la imagen se copian byte a byte.
¿Y si una foto ya tiene una fecha EXIF distinta de la del JSON?
El JSON refleja lo que te mostraba Google Fotos, incluida cualquier corrección que hicieras. En la mayoría de los casos es la que quieres. Si nunca cambiaste fechas en Google Fotos, las dos coincidirán de todas formas.
¿Por qué la hora sale desplazada unas horas?
La marca de tiempo del JSON está en UTC. El EXIF no tiene zona horaria, así que las herramientas la convierten a la zona local de tu ordenador. Pon tu ordenador en la zona donde se hicieron las fotos, o acepta el desfase. Lo explicamos en fotos con unas horas de desfase.
¿Puedo fusionar solo la fecha y no el GPS?
Sí. Quita las líneas de GPS del comando de exiftool. En la aplicación, el GPS se escribe cuando existe; si no quieres el lugar en los nombres de archivo, elige una plantilla de nombre sin él.