If Location History was on, Google Maps has been keeping the list you never wrote down: every country you have been to, and when. The catch is that you can no longer open it on a computer. Google's own help page now puts it plainly: “Timeline is not available for Maps on your computer.”
The history still exists. It lives on your phone, and the phone will hand it over as one JSON file. This page is how to get that file and turn it into an actual answer — a count, a list with years, and a map — without sending a record of everywhere you have been to anyone's server.
The short version. Export Timeline from your phone (steps below), open driftlog-counter.pages.dev, and drop the file on it. It is a free page I made; it reads the file inside your browser, and once the page has loaded you can switch off Wi-Fi before dropping the file in, which is the easiest way to be sure nothing is sent.
Timeline used to be a page on the Google Maps website. Google moved it onto the phone: according to its Timeline help page, visits and routes are now saved to the Timeline on each signed-in device, and a backup, if you turn it on, is an encrypted copy stored on Google's servers.
Two consequences matter here. First, there is no longer a map of everything on a big screen, which is why people end up searching for a “Timeline viewer”. Second, what is on your phone is what you have. If older years are missing from it, an old Google Takeout archive, if you ever downloaded one, may still have them. That case is further down.
These are the paths from Google's help pages as of September 2026. Menus move around; if a name has changed, the export button is still somewhere under Timeline or Location settings.
The file is usually called Timeline.json. Source: Manage your Google Maps Timeline (Android).
The file is called location-history.json. Source: Manage your Google Maps Timeline (iPhone & iPad).
To get the file onto a computer, AirDrop or a cable is the tidy way. Think twice about emailing it to yourself or dropping it into a shared drive: it is a complete record of where you sleep, work and travel.
Open driftlog-counter.pages.dev and drop the file on it. On a phone you do not need a computer at all: on an iPhone, tap Choose photos → Choose Files and pick location-history.json from where you saved it. What happens next:
You can drop photos in at the same time — the page reads the location stored in photo files too — and the countries from both are merged into one list.
Before Timeline moved to the phone, Google Takeout could export Location History from the web. If you downloaded one of those archives, unzip it and look inside the Location History folder:
Records.json holds every raw location point, often for many years. It can be hundreds of megabytes. In archives from before 2022 the same file is called Location History.json.Drop the whole unzipped folder on the counter, or just that one file. Both are read, and a large file is fine, because it is never loaded in one piece. If that archive is older than your current phone, it may cover years your on-device Timeline no longer has.
All three formats bury coordinates in text in one of three shapes, so a regular expression gets every point out without caring about the JSON structure, which Google has changed several times:
import csv, re, sys
# Records.json ("latitudeE7"), Timeline.json from Android ("48.8584°, 2.2945°")
# and location-history.json from the iPhone ("geo:48.8584,2.2945").
POINT = re.compile(
r'"latitudeE7"\s*:\s*(-?\d+)\s*,\s*"longitudeE7"\s*:\s*(-?\d+)'
r'|(-?\d{1,2}\.\d+)(?:°|\\u00b0),\s*(-?\d{1,3}\.\d+)(?:°|\\u00b0)'
r'|geo:(-?\d{1,2}\.\d+),(-?\d{1,3}\.\d+)'
)
out = csv.writer(sys.stdout)
for path in sys.argv[1:]:
text = open(path, encoding="utf-8").read()
for m in POINT.finditer(text):
if m.group(1):
lat, lon = int(m.group(1)), int(m.group(2))
if lat > 900000000: lat -= 2**32 # a few old exports overflowed
if lon > 1800000000: lon -= 2**32
lat, lon = lat / 1e7, lon / 1e7
elif m.group(3):
lat, lon = float(m.group(3)), float(m.group(4))
else:
lat, lon = float(m.group(5)), float(m.group(6))
out.writerow([lat, lon])
python3 timeline_points.py Timeline.json > coords.csv
That gives you a CSV of latitude and longitude, with no dates. For turning it into countries offline, and for why the obvious nearest-town lookup gets borders wrong, see Step 3 on the photo version of this page; that script expects a date in a third column, so with this CSV it counts points rather than days. This reads the whole file into memory, which is fine for a phone export and slow for a very large Records.json.
Raw location signals can include points recorded at a connecting airport or, occasionally, in the air. A country you only changed planes in will then appear in the list. Each country shows its years and how many points it came from; one that rests on a handful of points from a single year is worth a second look.
Borders at 1:50m are accurate to roughly a kilometre, so a point right on a border can land on the wrong side. Points a little offshore — a beach, a pier, a ferry — are moved to the nearest coast within about 13 km; anything further out at sea is reported as “too far from land to place” and not counted.
There is no single right list. The page counts the 193 UN member states plus Taiwan, and lists territories separately so you can apply your own rule. Travel clubs use longer lists; the Travelers' Century Club, for example, counts territories and regions separately.
Timeline only has what your phone recorded while Location History was on. Years with it switched off, trips with the phone off, and history lost in the move to the phone are simply missing. Photos from those trips can fill some of the gap: drop them in alongside the Timeline file.
Disclosure. I make Driftlog, a travel map app for iPhone. It does not import Timeline files — the free counter page is the only part of Driftlog that reads them. What the app does instead is record the countries, regions and cities you pass through from now on, in the background with no check-ins, and read the location data already in your photos to rebuild earlier trips. Free to download; your home country and one other country open in full, and one purchase of $6.99 opens the rest, with no subscription, no ads and no account. iOS 17 and later; an Android version is in review at Google Play and not published yet.
Corrections welcome. Google changes these menus often. If a step here no longer matches your phone, email me at shiori.sutudio@gmail.com and I will fix the page and re-date it.