How to Turn Your Google Location History into Smooth Route Videos
Recently stumbled upon an interesting repository: google-timeline-visualizer. The project takes raw location history exports from Google Maps (Timeline.json) and assembles them into an animated MP4 video with a map of your trips for the selected period.

A couple of years ago, Google started gradually moving location history from the cloud to users' devices. Now this data sits locally in bulky JSON files with a complex structure of coordinates, segments, and activity markers. The project author first wrote a Python script for personal use, then ported the logic to a native Kotlin app for Android and a web version for iOS.

What the utility can do
The main purpose of the utility is simple: turn dry location points into a pleasant animation that you won't be embarrassed to post on social media or keep as a memory of your vacation.
Here are some interesting solutions inside:
- GPS noise filtering. If your phone loses satellite lock for a second and sends you to the neighboring town, the algorithm cuts out such sharp back-and-forth jumps and doesn't break the overall route line.
- Flight interpolation. Long intercontinental flights are smoothed along a great circle arc. The camera smoothly flies along the geodesic line following the marker, instead of teleporting from point A to point B.
- Smooth camera tracking. During daily city commutes, the marker may wander slightly within a fixed screen zone, and only then does the map start moving smoothly behind it. This eliminates unpleasant jitter at traffic lights and in traffic jams.
- Flexible render settings. You can set the duration from 10 to 300 seconds, choose vertical format 1080×1920 for mobile stories or classic horizontal 1080p.
How to run on desktop
Initially, the project evolved as a Python script using FFmpeg for stitching tiles and frames. The desktop version still works.
You'll need Python 3.9+ and FFmpeg installed on your system:
python -m pip install -r requirements.txt
python visualizer.py --input Timeline.json --year 2025 --camera-movement steady \
--long-trip-compression balanced --output my_trip_2025.mp4
The script supports different coordinate formats: standard arrays, semanticSegments structure, E7 coordinates, and strings with prefixes geo:.
Mobile clients and web version
If you don't want to mess with the terminal, there are two ready-made options:
- Android. A ready-made APK is available in the repository releases. The app is written in Kotlin, renders video directly on the phone's processor, and saves finished clips to the system folder
Movies. - iPhone. Works through a web interface in Safari. Hardware H.264 encoder in the browser is used for encoding.
To build the Android project from scratch, you'll need JDK 17 and Android SDK 36:
./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest
Privacy considerations
Location data is sensitive, so the author made rendering strictly local. There's no Google account authorization or sending JSON to third-party servers here.
The only network interaction is loading raster map tiles from the CARTO service based on OpenStreetMap. Before loading the first map, the app directly warns about these network requests.
Who will find it useful
The project will be interesting for those who like to wrap up the year and visualize their trips. The source code is also worth checking out for mobile developers: the codebase clearly demonstrates how to organize tile map and video stream rendering without heavy external libraries.
Related projects