I moved all 130 of my saved Google Maps places to Organic Maps, every one at its exact location, without retyping a single pin.
I wanted a maps app that works offline, doesn’t track me and isn’t owned by an ad company. Organic Maps ticks those boxes. The one thing holding me back was years of saved places: conference venues from WordCamps, hotels, restaurants from family holidays in France, a champagne trip. Starting over from scratch was not an option.
Here is how the move went, including the part where the obvious route failed.
Getting my data out of Google
Google Takeout gave me my places, but not in the format every guide promised.
Most tutorials say Takeout produces a Saved Places.json file with coordinates, ready to convert. Mine didn’t. Under Takeout/Saved I found one CSV file per list: 24 in total, from “Antwerpen” and “BrightonSEO” to “Zomervakantie 2026”. Two of them turned out to be empty.
My starred places weren’t a separate JSON file either. They were simply another list among the CSVs.
The catch: no coordinates
The CSVs hold a name, a note and a Google Maps link per place, but no latitude or longitude.
A typical row looks like this:
Title,Note,URL
Phantasialand,,https://www.google.com/maps/place/Phantasialand/data=!4m2!3m1!1s0x47bf18127c90d325:0xbb5eddf05d0565f
Organic Maps needs coordinates. Only 4 of my 130 places had them in the link, all of them dropped pins.
The usual workaround is Google My Maps: import each CSV, let Google look up every place by its name, then export as KML. That works, but name matching is a gamble with entries like “ALDI”, “Lidl”, “Carrefour Market” or “13 Rue de la Gare”. You end up checking every pin by hand.
The trick: the location is hidden in the link
The long hex code in each Google link already contains the place’s exact position.
Look at the end of the URL: !1s0x47bf18127c90d325:0xbb5eddf05d0565f. The first half, 0x47bf18127c90d325, is an S2 cell ID. S2 is the system Google uses to divide the globe into tiny numbered cells. Decode that number and you get a latitude and longitude, no lookup service needed.
For Phantasialand it decodes to 50.7987, 6.8795, right at the theme park. The core of the conversion is a few lines of Python with the s2sphere library:
import re, s2sphere
def coords(url):
# Dropped pins carry plain coordinates
m = re.search(r'/search/(-?\d+\.\d+),(-?\d+\.\d+)', url)
if m:
return float(m[1]), float(m[2])
# Saved places carry an S2 cell ID
m = re.search(r'!1s(0x[0-9a-f]+):0x[0-9a-f]+', url)
if m:
ll = s2sphere.CellId(int(m[1], 16)).to_lat_lng()
return ll.lat().degrees, ll.lng().degrees
The rest of the script reads each CSV and writes one KMZ file per list, with the place name as the bookmark title. Notes and the original Google link go into the description.
The result: 22 lists, 130 places, zero guesses
Every place came across with exact coordinates, and every list kept its name. Notes survived as well.
Importing is the easy part. Get the KMZ files onto your phone and open each one with Organic Maps. Every file becomes its own bookmark list.
Keeping them safe
Whether your bookmarks survive a reinstall depends on your phone.
- iPhone and iPad: Organic Maps backs up and syncs bookmarks and tracks through iCloud. Reinstall, and your lists come back.
- Android: there is no cloud sync yet. Uninstalling the app deletes your bookmarks. Use the one-click export of all bookmarks as a single KMZ file, store it somewhere safe, and repeat whenever you add places.
I also kept the converted KMZ files. They are a full backup of everything I brought over from Google.
Do it yourself
The move took an afternoon, and the hard part turned out to be a solved problem hidden in plain sight.
- Go to takeout.google.com, click Deselect all and select Saved. Also select Maps (your places) in case you get the JSON file.
- Unzip the export and open Takeout/Saved. You’ll find one CSV per list.
- Convert each CSV to KMZ by decoding the S2 cell ID in each link (the code above). Avoid matching places by name: it picks the wrong ALDI.
- Open each KMZ with Organic Maps on your phone.
- On Android, export a backup of all bookmarks right away. On iOS, check that iCloud sync is on.
My main lesson: don’t trust a migration guide that assumes your export looks like theirs. Check what Google actually gave you, then look closely at the data. The answer was in the URLs all along.
Photo by Joachim Schnürle



Leave a Reply