Google Takeout-foto's met de verkeerde datum? Dit is waarom
Waarom elke foto uit een Google Takeout-export de datum van de download toont, waar de echte opnamedatum zit en hoe je hem terugzet in je foto's.
Je hebt je bibliotheek uit Google Foto's gedownload, uitgepakt en de map geopend. Tien jaar foto's, en elke foto zou vorige week dinsdag zijn gemaakt. Sorteer je op datum, dan staat een strandvakantie uit 2012 naast de schermafbeeldingen van gisteren.
Er is niets verloren. De datums zijn er nog, alleen niet op de plek waar je computer kijkt.
Waar de datum is gebleven
Een foto kan zijn datum op drie plekken hebben. De camera schrijft er een in het bestand zelf, in het EXIF-blok, als "DateTimeOriginal". Het besturingssysteem houdt er aan de buitenkant van het bestand nog twee bij: aangemaakt en gewijzigd. Finder, Verkenner en de meeste galerij-apps lezen eerst de EXIF en nemen de bestandsdatums als de EXIF ontbreekt.
Takeout maakt dit op twee manieren kapot. Ten eerste worden de bestandsdatums, als Google je bestanden in een zip stopt, het moment waarop de zip is gemaakt, of het moment waarop jij hem uitpakt. Dat alleen zou niet erg zijn als de EXIF heel was.
Ten tweede ontbreekt bij een groot deel van de foto's de EXIF-datum, of hij klopt niet. Schermafbeeldingen hebben er nooit een gehad. WhatsApp en andere chat-apps halen de metadata weg als ze comprimeren. Scans hebben de scandatum, niet de dag waarop de afdruk is gemaakt. En als je ooit een datum in Google Foto's hebt verbeterd, staat die verbetering in de database van Google, niet in het bestand. Google zet de juiste gegevens in een apart .json-bestand naast elke foto, in plaats van ze terug te schrijven in de foto.
Je computer negeert die .json-bestanden volledig. Dus toont hij de enige datum die hij kan vinden: de datum van de download.
Kijk eerst hoe erg het is
Zoek uit hoeveel bestanden echt hersteld moeten worden voordat je iets verandert. Foto's die rechtstreeks uit de camera van een telefoon komen, hebben meestal nog een goede EXIF-datum. Geldt dat voor de meeste van jouw foto's, dan hoef je misschien maar een deel te herstellen.
Heb je exiftool geïnstalleerd, dan toont dit elk bestand zonder EXIF-datum:
exiftool -r -if 'not $DateTimeOriginal' -filename "Takeout/Google Photos"
In één echt Takeout-deel met 991 foto's dat we hebben gemeten, waren de sidecarbestanden bij ongeveer één op de vijf foto's de enige bron van een juiste datum. Bij jou kan dat anders zijn. Bibliotheken vol schermafbeeldingen, chatfoto's en oude scans leunen veel meer op de sidecarbestanden.
Open een sidecarbestand en kijk
Elke foto heeft een partnerbestand, zoals IMG_2034.JPG.supplemental-metadata.json (oudere exports gebruiken IMG_2034.JPG.json). Open het in een teksteditor. Het deel dat ertoe doet, ziet er zo uit:
"photoTakenTime": {
"timestamp": "1563102330",
"formatted": "Jul 14, 2019, 11:05:30 AM UTC"
}
Die timestamp is de echte datum, in seconden sinds 1970, in UTC. Er is ook een creationTime: het moment waarop het bestand naar Google is geüpload. Wil je de datum waarop de foto is gemaakt, dan heb je photoTakenTime nodig. Het hele bestand bespreken we in wat de .json-bestanden in Google Takeout zijn.
Met de hand herstellen
Voor een paar foto's stel je de datum met de hand in. Op een Mac open je de foto in Voorvertoning of Foto's en pas je de datum aan. Op Windows klik je met de rechtermuisknop op het bestand, kies je Eigenschappen, dan Details, en pas je "Genomen op" aan. Doe dat voor vijftig foto's en je wilt een betere manier.
Voor een hele bibliotheek pakken mensen meestal exiftool. Eén opdracht kopieert de timestamp uit elk sidecarbestand naar de foto en naar de bestandsdatums:
exiftool -r -d %s -tagsfromfile "%d/%F.supplemental-metadata.json" \
"-DateTimeOriginal<PhotoTakenTimeTimestamp" \
"-FileCreateDate<PhotoTakenTimeTimestamp" \
"-FileModifyDate<PhotoTakenTimeTimestamp" \
-ext jpg -ext jpeg -overwrite_original "Takeout/Google Photos"
Dat werkt, maar er zijn haken en ogen. Google kapt lange namen van sidecarbestanden af op 46 tekens, dus het patroon hierboven mist er een paar. Bij duplicaten staat de (1) in de naam van het sidecarbestand op een andere plek dan in de naam van de foto. Video's hebben andere tags nodig. HEIC en PNG vragen elk een eigen ronde. We lopen het allemaal door in de handleiding voor exiftool. Er zijn ook gratis scripts uit de community, zoals GooglePhotosTakeoutHelper, die de naamproblemen voor je oplossen, als je met een terminal overweg kunt.
De app
Heb je geen zin om een avond op de opdrachtregel door te brengen, dan doet Takeout JSON Metadata Fixer dit als desktop-app op macOS, Windows en Linux.
Je wijst de app de Takeout-zips of de uitgepakte map aan. Hij koppelt elke foto aan zijn sidecarbestand, ook de namen met supplemental-metadata uit 2024, de afgekapte namen en de duplicaten met (1). Daarna schrijft hij photoTakenTime in de EXIF van de foto en zet hij de aanmaak- en wijzigingsdatum van het bestand gelijk. Foto's zonder sidecarbestand houden hun EXIF-datum als ze die hebben, en krijgen anders de bestandsdatum, dus niets komt eruit zonder datum.
Video's krijgen ook hun datum, in de MP4 of MOV op de plek waar spelers hem verwachten. GPS-coördinaten gaan terug in de foto als het sidecarbestand echte coördinaten heeft. Je kunt de app de bestanden ook laten hernoemen naar de echte datum en ze in mappen per jaar en maand laten ordenen, maar dat hoeft niet. Wil je alleen de datums herstellen, kies dan "Namen houden" en "Mijn mappen houden".
Met een proefrun zie je wat er zou veranderen zonder dat er iets wordt geschreven. De eerste 1000 foto's zijn gratis, en een eenmalige aankoop van $ 19,99 haalt de limiet weg. Alles draait op je eigen computer; je foto's worden nooit geüpload.
Staan de datums eenmaal in de bestanden, dan blijven ze kloppen, waar de foto's daarna ook heen gaan: Apple Foto's, een NAS, Immich, een USB-stick of een nieuwe telefoon.
Veelgestelde vragen
Staan de datums in de juiste tijdzone?
Het sidecarbestand bewaart een exact moment in UTC. Programma's zetten het om naar de lokale tijd van je computer als ze de EXIF schrijven, want EXIF heeft standaard geen tijdzone. Een foto die om 11:05 in Parijs is gemaakt, komt eruit als 11:05 als je computer op de tijd van Parijs staat, en als 05:05 als hij op New York staat. Zet je computer op de tijdzone waarin de meeste foto's zijn gemaakt voordat je ze herstelt, of accepteer een paar uur verschil bij vakantiefoto's.
Verlies ik iets als er in de EXIF wordt geschreven?
Een datumtag schrijven verandert alleen het metadatablok. De pixels van de foto blijven onaangeroerd. Bewaar de originele zips tot je tevreden bent met het resultaat; dat is sowieso verstandig.
Waarom kloppen maar een paar foto's niet?
Omdat maar een deel van de foto's vanaf het begin geen EXIF-datum had. Foto's uit een camera hebben er meestal een. Schermafbeeldingen, foto's uit chats, scans en alles waarvan je de datum in Google Foto's hebt aangepast, hangen af van het sidecarbestand.
Mag ik de .json-bestanden verwijderen nadat de datums zijn hersteld?
Ja. Staan de datum en de GPS in de foto's, dan hebben de sidecarbestanden hun werk gedaan. Bewaar ze tot je een paar foto's in je nieuwe bibliotheek hebt gecontroleerd, en verwijder ze dan. Zie ook .json-bestanden van Google Takeout verwijderen.