← Jan R. Long

Places Map

A clickable map built from a Google Sheet. Each row is one pin with a story. Free, no account, nothing to install.

What it is

Most mapping tools want you to learn their app. This one doesn't. Your spreadsheet is the database — one row per place, with a name, coordinates, and whatever story you want to tell about it. The map just draws what's in the sheet.

That means editing is editing a spreadsheet, which you already know how to do. Add a row, refresh the map, there's a new pin. Change one cell from want to been and a bucket-list place graduates to a visited one.

It's one renderer pointed at whatever data you give it, so the same tool covers a lot of ground:

What it costs: nothing, and there's no sign-up. You need a Google account for the sheet — that's it. Your data lives in your own Google Drive, not on anyone else's server. The map page reads your sheet straight from Google in the visitor's browser.

Make your own map

About ten minutes, start to finish. You'll copy a starter sheet, add your places, share it, and let the box below build your map link — no hand-typing URLs.

Handing this to someone to do at home? There's a one-page take-home card (PDF) — three steps and two QR codes, print and go. For a full walkthrough (columns, a worked example, troubleshooting) there's also the six-page guide (PDF).

  1. Copy the starter sheet

    Open the starter sheet → and click the Make a copy button it offers you. That drops your own private copy into your Google Drive, with the right column headings and eight example rows to learn from.

    Prefer to start from a file? Download template.csv, then in Google Sheets use File → Import → Upload.

  2. Add your places

    One row per place. Only three things are actually required — a name, a lat, and a lon. Everything else makes the map richer but is optional. The column reference below explains each one.

    To get coordinates: open Google Maps, right-click the exact spot, and the first line of the menu is the latitude and longitude — click it to copy. Paste it into the sheet and split it across the lat and lon columns.

    Delete the example rows when you're ready. Leave the heading row alone.

  3. Share your sheet so the map can read it

    In your sheet, click Share (top-right). Under General access choose Anyone with the link, role Viewer. Then Copy link. This lets the map read your places — it does not let anyone edit your sheet.

    "Anyone with the link" means what it says. The sheet isn't listed or searchable, but treat the contents as public — don't put home addresses, phone numbers, or anything private in a sheet you share.

    Want it more locked-down? File → Share → Publish to web → CSV works too — paste that address into the box below instead.

  4. Make your map link

    Paste your sheet link below and it builds your map address for you — no hand-typing URLs.

    Bookmark the link it gives you (or text it to yourself). That's your map — it refreshes whenever you edit the sheet.

The starter sheet

Eight example rows, deliberately mixed — a campsite, a bucket-list hike, an ancestor's homestead, an immigration record, a national park, a road trip. They're there to show what each column is for, and to show that this maps more than one kind of thing.

Starter sheet: Open the starter sheet & make your own copy →

That link hands you your own private copy in your own Google Drive — you're never editing the original, and nobody else can see what you put in yours. You'll need to be signed in to a Google account for it to have somewhere to put the copy.

Prefer a file? Download template.csv and use File → Import instead.

Here's what the first few rows look like:

nametierstatuswhostory
Bear LakeTenderfootbeenJan, Sue, DaleThe yearly trip. Raspberry shakes on the way out, every time.
Great-grandma Alma's homesteadWandererbeenAlma, PeterThe quarter-section they proved up on after arriving from Norway.
Havasu FallsExpertwantTen miles in, permit-only, turquoise water.

What each column does

Headings must be spelled exactly as below, in the first row. Order doesn't matter, and you can delete columns you don't use — anything missing is simply skipped.

ColumnWhat it does
namerequiredThe title on the pin's popup.
latrequiredLatitude, as a decimal — 41.9843. Not degrees-and-minutes.
lonrequiredLongitude, as a decimal — -111.3407. Negative in the Americas. lng also works.
storyoptionalThe reason the place is on the map. A full paragraph is fine — this is the point of the whole thing.
statusoptionalbeen or want. Drives the Been / Want to go / All toggle. Want-to-go pins draw as hollow dashed rings.
tieroptionalTenderfoot, Wanderer, or Expert — how far off the beaten path it is. Sets the pin colour. Blank counts as Wanderer.
whooptionalComma-separated names — Jan, Sue, Dale. Becomes the people picker, so you can show everywhere one person went.
dateoptionalWhen you were there. Anything with a year in it works — 2019-09, 1904-05-12, 1911. The year feeds the year filter.
categoryoptionalYour own grouping — Water, Wildlife, Family history. Becomes a filter. Invent whatever categories you like.
regionoptionalThe U.S. state, spelled out — Utah. Powers the states-shading view. state also works.
countyoptionalUtah county name, no "County" — Tooele. Powers the counties-shading view.
ratingoptional1 to 5. Shows as stars in the popup and lets you filter to only your favourites.
photooptionalWeb address of an image to show in the popup. It must be a direct link to an image file — a Google Photos share link won't work.
linkoptionalWeb address of a fuller write-up. Adds a "Read the full story & photos →" link to the popup.

The three tiers

Tier is about how far off the map a place is, not how much you liked it — that's what rating is for.

Tenderfoot — easy to get to, well known. Bear Lake, Yellowstone.
Wanderer — off the beaten path. You had to look it up.
Expert — remote, obscure, or hard-won. Most people have never heard of it.
A hollow dashed ring means want to go rather than been.

What the map can do

Everything below is driven by the columns you fill in. Fill in more, get more. All the filters stack, so you can ask for something quite specific — everywhere Dale went in Utah in 2019 that you'd rate four stars.

No sheet, no problem. Open map.html with nothing after it and you get a demo dataset of real Utah places, so you can click around before committing to anything.

If something's not working

The map is empty, or shows the demo places instead of mine

Nearly always the sheet address. It has to be the one from Publish to web ending in output=csv — not the address in your browser's bar when the sheet is open. Those look similar and behave completely differently. Re-copy it from the Publish to web box.

A place is missing, or landed in the ocean

Check that row's lat and lon. A row with no coordinates is skipped silently. A pin off the coast of Africa means one of the two is blank or zero; a pin on the wrong continent usually means lat and lon got swapped, or the minus sign is missing from lon.

I edited the sheet and nothing changed

Give it a few minutes and refresh — Google caches published sheets. If it still hasn't moved, make sure you edited the sheet you published, not a copy of it.

My photo doesn't show up

The photo column needs a direct link to an image file — one that ends in .jpg or .png and shows just the picture when you paste it into a browser. Share links from Google Photos, Dropbox, and iCloud point at a viewer page rather than the image itself, so they won't load.

The commas in my story broke the row

They won't, in Google Sheets — type freely, commas and all. This only bites if you're hand-editing a CSV file in a text editor, in which case wrap the text in "double quotes".

Going further

Full write-up pages

The link column can point at a proper page — a photo gallery and a longer story for one trip — so the popup stays short and the detail lives elsewhere. Any web address works.

Adding pins from your phone

There's an "Add a place" mode for capturing a spot while you're standing in it, but it needs a small script connected to your own sheet so the map can write back to it. Without that, the map only ever reads. If you want this, get in touch and I'll point you at the setup.

More than one map

Nothing is stored in the page, so one sheet is one map — make a second sheet for a different subject and you get a second map from the same link, just with a different sheet= on the end. Camping in one, family history in another.