¿Qué son los archivos JSON de Google Takeout junto a las fotos?
Qué contiene el archivo .json que aparece junto a cada foto en una exportación de Google Takeout, para qué sirve y si es seguro borrarlo.
Descomprimiste tu exportación de Google Fotos y la mitad de los archivos no son fotos. Junto a cada imagen hay un archivo .json con un nombre como IMG_3391.HEIC.supplemental-metadata.json. No los pediste, casi ningún programa los abre y hay miles.
No son basura. Contienen las fechas y ubicaciones que Google no escribió dentro de tus fotos.
Por qué Google los añade
Google Fotos guarda lo que sabe de cada foto en su propia base de datos: cuándo se tomó, dónde, en qué álbum está, si la marcaste como favorita y cualquier fecha o lugar que corrigieras a mano. El archivo de imagen puede llevar o no esa información en su bloque EXIF. Las capturas de pantalla y las imágenes de chats normalmente no la llevan. Los cambios que hiciste dentro de Google Fotos, nunca.
Al exportar, Google te entrega el archivo de imagen más o menos como se subió. No vuelca su base de datos dentro de cada archivo. En su lugar, escribe la entrada de la base de datos en un pequeño archivo de texto junto a la imagen. Ese archivo de texto es el "sidecar" o archivo adjunto, y JSON es simplemente el formato en que está escrito.
Qué hay dentro
Ábrelo con el Bloc de notas, TextEdit o cualquier editor. Un JSON típico, algo recortado, se ve así:
{
"title": "IMG_3391.HEIC",
"description": "",
"imageViews": "12",
"creationTime": {
"timestamp": "1690120442",
"formatted": "Jul 23, 2023, 2:34:02 PM UTC"
},
"photoTakenTime": {
"timestamp": "1689929130",
"formatted": "Jul 21, 2023, 9:25:30 AM UTC"
},
"geoData": {
"latitude": 40.4168,
"longitude": -3.7038,
"altitude": 650.0,
"latitudeSpan": 0.0,
"longitudeSpan": 0.0
},
"geoDataExif": {
"latitude": 40.4168,
"longitude": -3.7038,
"altitude": 650.0
},
"url": "https://photos.google.com/photo/...",
"googlePhotosOrigin": {
"mobileUpload": {
"deviceType": "IOS_PHONE"
}
}
}
Los campos que importan:
photoTakenTime es la fecha en que se tomó la foto, tal como la mostraba Google Fotos. El timestamp son segundos desde el 1 de enero de 1970, en UTC. Si corregiste una fecha dentro de Google Fotos, este campo lleva tu corrección. Es el que hay que usar.
creationTime es cuándo se subió el archivo a Google. En una foto tomada y respaldada el mismo día coinciden. En el escaneo de una foto de 1985 subido en 2021, hay décadas de diferencia.
geoData es la ubicación que conocía Google Fotos, incluido cualquier lugar que pusieras a mano. geoDataExif es la ubicación que tenía el EXIF del archivo al subirlo. Cuando una foto no tiene ubicación, ambos llevan ceros: 0.0, 0.0, un punto en el océano Atlántico. Trata los ceros como "desconocido", no como un lugar real. Más sobre esto en recuperar el GPS de Takeout.
description es el pie de foto que escribiste, si lo hay. people lista los nombres que etiquetaste, cuando existen. favorited es true en las fotos favoritas. title es el nombre de archivo original, útil porque Takeout a veces acorta el nombre real del archivo.
Los archivos de álbum
Cada carpeta de álbum tiene además un metadata.json que describe el álbum, no una foto. Contiene el título del álbum y a veces una fecha y una marca de álbum compartido. Es pequeño e inofensivo. Las herramientas que importan álbumes, como immich-go, lo leen.
Por qué tienen nombres raros
Las exportaciones antiguas llamaban al JSON IMG_3391.HEIC.json. Desde 2024 el nombre pasó a ser IMG_3391.HEIC.supplemental-metadata.json. Google además corta los nombres largos a 46 caracteres, así que una foto de un Pixel acaba con un compañero llamado PXL_20230721_092530123.jpg.supplemental-m.json. Cuando dos fotos comparten nombre, el contador va en el JSON en otro sitio: IMG_3391(1).HEIC se empareja con IMG_3391.HEIC.supplemental-metadata(1).json. Los detalles están en supplemental-metadata.json explicado.
¿Se pueden borrar?
Sí, pero solo después de haberlos usado. Si borras los JSON primero, las fechas y ubicaciones que contienen desaparecen. Tus fotos mostrarán la fecha de descarga para siempre y no hay forma de recuperar la información salvo pedir otro Takeout.
Si todas tus fotos ya tienen un EXIF correcto, los JSON aportan poco. Puedes comprobarlo con exiftool: exiftool -r -if 'not $DateTimeOriginal' -filename . imprime cada foto sin fecha EXIF. Si la lista está vacía, borra sin miedo.
En la mayoría de bibliotecas la lista no está vacía. El orden seguro es: fusionar los datos del JSON en las fotos, comprobar unas cuantas y luego borrar los .json. Immich, PhotoPrism y otras herramientas autoalojadas pueden leer los JSON de Takeout directamente al importar, así que si ese es tu destino, guárdalos hasta terminar la importación.
Devolver los datos a las fotos
Puedes hacerlo con exiftool, que lee el JSON y escribe las etiquetas EXIF. El comando y sus trampas están en la guía de exiftool. Scripts gratuitos como GooglePhotosTakeoutHelper hacen lo mismo.
Takeout JSON Metadata Fixer lo hace como aplicación de escritorio en macOS, Windows y Linux.
Lee cada JSON, escribe photoTakenTime en el EXIF de la foto, ajusta las fechas del archivo para que coincidan y escribe las coordenadas GPS cuando son reales y no ceros. Conoce los dos estilos de nombre, los nombres recortados y los contadores (1), así que no se salta archivos que un patrón de nombre pasaría por alto. Opcionalmente renombra y ordena las fotos en carpetas, y puede escribir nuevos .json junto a la salida para Immich o PhotoPrism. Todo se ejecuta en tu ordenador. Las primeras 1000 fotos son gratis.
Preguntas frecuentes
¿Hay un JSON por cada foto?
Normalmente. Las fotos que aparecen en varios álbumes tienen una copia del JSON en cada carpeta de álbum. Unas pocas fotos no tienen JSON, sobre todo los clips de Live Photo y los archivos de subidas muy antiguas. Esas conservan la fecha que tenga el archivo.
¿Google Fotos puede volver a leerlos?
No. Si vuelves a subir la carpeta a Google Fotos, ignora los JSON y usa el EXIF de los archivos. Por eso quien mueve fotos entre dos cuentas de Google también pierde las fechas.
¿Las marcas de tiempo están en mi zona horaria?
No. Son instantes en UTC. Una herramienta los convierte a hora local al escribir el EXIF, usando la zona de tu ordenador. Comprueba que tu ordenador esté en la zona donde se tomaron la mayoría de las fotos.
¿Ocupan mucho espacio?
Entre unos cientos de bytes y un par de kilobytes cada uno. Diez mil suman unos 10 MB. El espacio no es motivo para borrarlos; el desorden sí.