Skip to content

Repository files navigation

everywhere.

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.


What it is

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 semanticSegments and legacy Takeout timelineObjects.
  • 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.

Run it locally

It's a static file — open it directly, or serve it:

# any static server works
npx serve .
# or
python3 -m http.server 8000

Then open http://localhost:8000.

How to get your Timeline file

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.

Deploy to Vercel

This is a zero-config static site — no build step.

  1. Push this repo to GitHub (already done if you're reading this there).
  2. Go to https://vercel.com/new and Import the repo.
  3. Framework preset: Other. Build command: none. Output directory: leave default (root).
  4. 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.

After you have your domain

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 the og:/twitter: meta tags)
  • robots.txt
  • sitemap.xml

Privacy

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.

Project layout

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

Tech notes

  • 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.

License

MIT © Raghav Tripathi

About

See your year on a map — a single-file, 100% client-side Google Timeline visualizer. Drop your export, press play, watch your life redraw itself.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages