Guide
There are three inputs: a Google Timeline file, a hand-written JSON file, and a Lifetime form that only needs a birth month and events. All three feed the same grid and ranking. Nothing you enter is sent to a server.
1. Get your Google Timeline file
Google now stores location history on your device rather than in your account, so there are two places to export from. A full walkthrough is in Exporting your Google Timeline.
- Phone — Google Maps app → profile → Settings → Personal content / Location history (or "Timeline") → Export Timeline data → save
Timeline.json. - Google Takeout —
takeout.google.com→ select "Location History (Timeline)" → export. The archive contains the JSON files underSemantic Location History.
Supported: the new on-device array, Takeout semanticSegments, and legacy
timelineObjects. Not supported yet: Records.json
(raw GPS points with no visit/activity segments).
2. Upload and group
In the Google Timeline tab, choose the file or paste it, then press Visualize:
- Each visit's coordinates are resolved against offline boundary data. No API is called, so coordinates never leave the browser.
- The cell unit is chosen automatically from the span: roughly up to 3 days → hours, 3 months → days, 3 years → weeks, 12 years → months, longer → years. Override it with the Unit dropdown.
- The Country / Region buttons set the grouping. Region resolves to provinces in Korea and to states / provinces / prefectures (first-level divisions) elsewhere.
Points outside any boundary, or that could not be named, are clustered and shown as "Unknown 1, 2…". Click a name in the ranking to rename it ("Unknown 1" → "Home").
3. Reading the grid
- Cell — one cell is one unit (hour, day, week, month, year). Its color is the place you spent the most time in during that span; a faint color means the cell is only partly covered by data.
- Left label — the span that row covers: an hour range for hours, a date range for days and weeks, a year-month range for months and years.
- Columns / Cell size — the grid fills the width with no horizontal scroll. Fix the number of columns per row, or make cells larger or smaller.
- Include travel (Google Timeline only) — shows walking / driving segments in grey.
- Ranking — total time and share per group. The core "where did my time go" answer.
Manual JSON
For writing a residency history by hand. Choose country, region or name as the grouping on the right.
{
"birth": "1994-03",
"today": "2026-09",
"expectedAge": 100,
"places": [
{ "country": "South Korea", "region": "Seoul", "start": "1994-03", "end": "2011-08" },
{ "country": "USA", "region": "New York", "start": "2011-08", "end": "2016-06" },
{ "country": "South Korea", "region": "Seoul", "start": "2016-06" }
]
} birth—"YYYY-MM"or"YYYY". Required.today— reference date; omit for today.expectedAge— how far the grid runs. Falls back to the on-screen field, then 100.places[].end— empty means "to present".places[].country/region— the color key per mode;nameis the fallback.
When several periods cover one cell, the one with the most overlap in that cell wins its color.
Lifetime
Enter a birth month, a planned age, and life events for a whole-life grid plus days / weeks / months lived and left, and a progress figure. After the first visualize, editing an event updates the grid immediately.
Theme
The Light / Dark button in the header switches the theme. Your choice is saved in this browser; with no choice, it follows your system setting.
Sharing and privacy
Location history is sensitive. "Copy share link" puts only the rendered grid and ranking in the link, never the raw visit coordinates. Unnamed points are anonymised to "Unknown N" in the link.
Opening the link shows that grid and ranking on a dedicated share page. It is a snapshot, so the unit and grouping are fixed (they would need the source data), but cell size and column count still work. The recipient can hit "Make your own" to build theirs.