Driftlog

How many countries
have you been to?

Most people can't answer that without counting on their fingers and still getting it wrong. Your photos already know. Drop them in below.

Drop photos or a whole folder here

Holiday photos, a camera-roll export, a Google Takeout folder, or a Google Maps Timeline export (Timeline.json). Unzip Takeout archives first.

Select lots at once: in the photo picker, put a finger on the first photo and slide it sideways, then keep going down. Hold it at the bottom edge and the picker scrolls on, selecting as it goes.

On iPhone: tap Choose photos, pick from your Photo Library and leave “Location Is Included” on (it is by default). A few hundred photos at a time works well, and each batch adds to your map (Add more photos under it); for your whole library at once, the Driftlog app reads it directly. Exported your Google Maps Timeline? Tap Choose photos → Choose Files and pick location-history.json (how to export it).

Nothing is uploaded. Files are read inside your browser — check the network tab, or switch off Wi-Fi once the page has loaded. It keeps working.

Example — not your photos
0
countries

This is the part Driftlog does every day.

Driftlog is an iPhone app that keeps this map up to date on its own. No check-ins, no journaling — you carry your phone and the map fills in. It reads your old photos the way this page just did, then keeps going from there.

The app importing a camera roll — 6,432 photos in, 22 countries out, map filled. 9 seconds, no sound, loops.

Get Driftlog on the App Store

Free to try · one-time unlock, no subscription · iPhone and iPad, iOS 17+ · no account, nothing kept on a server

How this works

Photos
A photo taken with location on carries GPS coordinates in its EXIF metadata. The page reads only the start of each JPEG, the metadata box of each HEIC, and the header of each video — never the picture itself — then tests each coordinate against country borders.
Google Takeout and Timeline
Google Photos exports keep a location in a small JSON file next to each photo; Maps Timeline exports (the newer on-device Timeline.json, older Records.json and Semantic Location History) are read in slices, so large files work too. The Driftlog app itself does not import these files — this page is the only part of Driftlog that does.
What counts as a country
The headline counts the 193 UN member states plus Taiwan. Other places, such as Vatican City and Kosovo or territories like Hong Kong, Puerto Rico and Greenland, are named underneath and filled in on the map, but not counted. (The Driftlog app counts territories separately, so its number can be higher.) Borders are Natural Earth 1:50m, so a photo taken within a kilometre or so of a border can land on the wrong side.
Privacy
No file and no coordinate leaves your computer. The only requests the page makes are for its own HTML and scripts, fonts, map file and demo video, all fetched within a second or two of the page opening (on a page opened from a shared link, the demo video waits until you scroll to it), so it keeps working with the network switched off after that. There are no analytics and no cookies. More detail: doing the same thing with ExifTool on the command line.
Shared links
A shared result looks like driftlog-counter.pages.dev/c/37/#v=1.… Only the number is in the link's path, so Cloudflare, which hosts this page, sees that number when the link is opened or previewed. The country list sits after the #, which browsers never send to any server, including ours; the page reads it in the browser. Anyone who has the link can read the list, including the app you send it with, and Post it on X hands X the whole link. Picking countries by hand uses the same 194 as the photo count.
Video
Save video makes a 9:16 clip of your map filling in, from 0 to your count, for Reels, TikTok or Stories: in order of first visit when your files have dates, region by region otherwise. It never shows the dates. The clip is drawn and encoded on your device, as an MP4 with WebCodecs where the browser has it, otherwise by recording the drawing (MediaRecorder); where neither works, you get the last frame as an image. It ends on this page's address.