A Timeline export becomes a local MP4 instead of a cloud upload
Timeline Visualizer reads the JSON file Google Maps exports from a phone, lets the user choose dates and camera behavior, previews the journey, and renders an MP4. The animation fades older travel, interpolates sparse long-distance routes, and ends with a complete route overview. Android also keeps a local library of created videos and their thumbnails.
The useful privacy choice is local processing. The application asks for no Google sign-in, location permission, analytics permission, or broad storage access. It reads files the user selects and does not upload the Timeline JSON. That claim has a clear boundary: map imagery comes from CARTO using OpenStreetMap data, so the tile provider receives requests for viewed geographic areas.
Android, iPhone, and Python have different setup costs
The Android app requires Android 8.0 or newer and is distributed as an APK from GitHub, not Google Play. Users must temporarily allow their browser or file manager to install unknown apps. The README advises downloading only from the repository release and turning the permission off afterward. That is reasonable direct distribution, but it shifts authenticity checks and updates onto the user.
The iPhone path is a web app in Safari. MP4 creation needs Safari 16.4 or newer with H.264 encoding and requires the tab to stay open. The desktop Python renderer needs Python 3.9 or newer, FFmpeg, and requirements from the repository. Building Android adds JDK 17, Android SDK Platform 36, Build Tools 36.0.0, and a CARTO basemap key.
What happened when we ran it
Our sandbox cloned commit 65d4d5b into a fresh Python 3.12 Debian container with 3 CPUs and 8 GB of RAM. Installation completed in 32 seconds, adding 42 packages and occupying 166 MB on disk. The project build then passed in 10 seconds.
Pytest completed in 11 seconds with 36 passed and 0 failed out of 36. Pip-audit found 0 known vulnerabilities in the installed dependency set. The checkout itself measured 20.4 MB, 302 files, and about 23,834 source lines. Our scan found 4 CI workflow files, a tests directory, and no Dockerfile.
Those results cover repository setup and the Python tests, not a full video made from a private account export. We did not install the Android APK, encode on an iPhone, verify FFmpeg output across every format, or inspect map tile requests. A real acceptance check should use a copied trip, review every frame near its start and finish, and remove the output after sharing.
The exported video can reveal more than the JSON file does
A local renderer prevents a server from receiving the complete Timeline file. The MP4 is still a portable record of movement. Exact start and end points can expose a home, workplace, hotel, school, or relative's address. Issue 66 requests a Safe Sharing mode that would replace selected private areas with coarser locations. The documented release does not claim that feature.
Until masking exists, choose exact dates, preview the whole route, and consider trimming the first and last legs. Do not assume a square 480p video hides detail; map geometry can remain identifiable without readable street labels. CARTO tile requests are another disclosure path. Users who need no network contact should supply an approved local map source or choose a tool designed for offline tiles.
Activity types are lost even when the route remains
The importer supports current Android and iOS direct-array exports, older semantic segments, raw-location fallback, visits, activities, varied coordinate encodings, and routes across the international date line. Conservative outlier filtering ignores isolated implausible out-and-back coordinates while leaving the source JSON unchanged. Users can turn that filter off if each original point matters.
Issue 46 describes a present limitation: transportation metadata is reduced to coordinates and timestamps, so the rendered journey does not distinguish walking, cycling, road, rail, air, or boat segments. A route remains visually continuous, but it cannot answer how the traveler moved. Researchers and expense reviewers should keep the source export and use an analysis tool rather than infer transport from animation speed.
Release 2.4.2 fixed a map-provider dependency
CARTO began requiring authenticated basemap requests, which left backgrounds missing. Version 2.4.2, released August 26, 2026, restored them by using the project's CARTO key in official Android and web builds. Android now removes cached map tiles after 30 days. The incident is a reminder that local rendering still depends on a network map service unless another tile path is configured.
GitHub recorded 2,859 stars, 12 combined issues and pull requests, and a last push on August 26. Dawarich is the better choice for people who want to accumulate, search, and analyze location history on a self-hosted server. Timeline Visualizer is narrower and easier: give it one export, create one video, inspect private places, then decide whether that MP4 should leave the device.

