See your year on a map.
Drop your Google Maps Timeline export and press play — the camera settles into whatever city you were in, watches the days accumulate, then flies with you when you travel, arc-drawing every flight and route as it goes. Ends on a full pulled-back map of your year.
🔒 100% client-side. Your file never leaves your browser. Nothing is ever uploaded.
A single-file, zero-build web app that turns an exported Google Timeline (Timeline.json)
into a cinematic replay of your year. No backend, no accounts, no install, no cost.
- Cinematic playback — the map follows your life day by day and flies with you between cities.
- Two export formats — new on-device
semanticSegmentsand legacy TakeouttimelineObjects. - Live stats — total distance, days tracked, places, GPS points, per-mode breakdown you can toggle.
- Shareable recap — one tap copies a WhatsApp-shaped stats blurb.
- Demo journey — skeptical friends can watch a synthetic trip before doing the export.
Everything runs in index.html. The libraries (Leaflet, CARTO tiles, Google Fonts) load from CDNs at runtime.
It's a static file — open it directly, or serve it:
# any static server works
npx serve .
# or
python3 -m http.server 8000Then open http://localhost:8000.
Android: Settings → Location → Location Services → Timeline → Export Timeline data iPhone: Google Maps → profile → Settings → Personal Content → Export Timeline Data
Grab the Timeline.json and drop it onto the page. A full year is usually 30–70 MB.
This is a zero-config static site — no build step.
- Push this repo to GitHub (already done if you're reading this there).
- Go to https://vercel.com/new and Import the repo.
- Framework preset: Other. Build command: none. Output directory: leave default (root).
- Click Deploy.
Vercel serves index.html at / and every asset (og.png, icons, site.webmanifest) at the root.
vercel.json adds sensible security headers and long-lived caching for images.
Social share previews (WhatsApp, iMessage, Twitter/X, Slack) need absolute URLs, so the
og:image, og:url, canonical, robots.txt, and sitemap.xml currently point at the
https://everywhere.vercel.app/ placeholder. Once you know your real domain, replace that
base URL in:
index.html(the<link rel="canonical">and theog:/twitter:meta tags)robots.txtsitemap.xml
The privacy promise ("nothing leaves this page") is mechanically true: the file is read with
the browser FileReader API and parsed entirely in client-side JavaScript. There are no
network calls with your data — only static CDN loads for the map library, tiles, and fonts.
If you add any feature that sends data anywhere, update the UI copy so the claim stays true.
index.html the entire app (parser + film director + cinema runtime)
og.png 1200×630 social share card
icon.svg favicon (also the design source)
favicon-32.png PNG favicon fallback
apple-touch-icon.png / icon-512.png / site.webmanifest PWA / home-screen icons
vercel.json security headers + caching
design/og.svg editable source for the share card
everywhere-PRD.md full product & technical summary
- Parser & film director are pure functions — ideal for a fixture-based test suite (see the PRD's verification log for how they were validated against a real 63 MB / 16-month export).
- Known tuning knobs (chapter clustering radius, travel threshold, long-chapter pacing) and deferred items (place-name resolution, off-main-thread parsing for huge files) are documented in
everywhere-PRD.md.
MIT © Raghav Tripathi