mahlernim/google-timeline-visualizerPublic

Visualize your year in travel using your Google Location History (Timeline) data

AI summary: A local, privacy-focused tool for vividly visualizing and animating Google Takeout location history data.

Stars
3K
+11 today
Forks
399
Watchers
198
Open issues
2
Open PRs
0
Contributors
~9
Commits
296
Branches
96

KotlinMITCreated Dec 16, 2025Last push 1d agoLatest release v3.0.17+28 stars this week+776 this month

Star history

since Dec 14, 2025
01K2KDec 2025Mar 2026Jun 2026Sep 2026
3K stars as of Sep 9, 2026, tracked back to Dec 14, 2025. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 1 commit2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 9 commits2026-08-18: 3 commits2026-08-19: 14 commits2026-08-20: 15 commits2026-08-21: 15 commits2026-08-22: 10 commits2026-08-23: 7 commits2026-08-24: 17 commits2026-08-25: 20 commits2026-08-26: 5 commits2026-08-27: 30 commits2026-08-28: 5 commits2026-08-29: 6 commits2026-08-30: 0 commits2026-08-31: 14 commits2026-09-01: 3 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 4 commits2026-09-05: 6 commits2026-09-06: 8 commits2026-09-07: 1 commit2026-09-08: 2 commits2026-09-09: 8 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits
203 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    4 trending appearances

What google-timeline-visualizer does

Google Timeline Visualizer provides a rich, interactive way to explore personal location history exported via Google Takeout. Operating entirely locally to ensure absolute data privacy, it parses the extensive JSON location data and renders it onto interactive maps. Users can view heatmaps, track specific routes over time, and generate detailed MP4 animations of their travel paths directly on their devices. It is available as a zero-install web application and a native Android APK, serving as a powerful analytical tool for individuals wanting to reclaim and visualize their movement data before securely deleting it from Google's centralized servers.

Privacy-conscious individuals and quantified-self enthusiasts wanting to explore and animate their personal location history securely.

  • Local data processing: Parses and renders massive Google Takeout JSON files entirely client-side, ensuring complete data privacy.
  • Interactive path mapping: Displays detailed historical routes, activity heatmaps, and frequent locations on interactive map interfaces.
  • Animation generation: Allows users to create and export dynamic MP4 video animations tracking their travel paths over specific timeframes.
  • Cross-platform availability: Accessible instantly via a web application or natively through an installable Android APK.
  • Granular time filtering: Enables users to slice and view their location data by specific years, months, or custom date ranges.

Where teams use it

Travel Animation

Users generating detailed path animations of specific long-term trips or vacations to export as MP4s and share.

Data Reclamation

Privacy-conscious individuals exploring their exported Google data locally before permanently deleting their history from Google's servers.

Personal Analytics

Individuals privately analyzing years of their own location data to vividly visualize past travels across different cities and countries.

Habit Tracking

Users analyzing their highly localized movement patterns to better understand their daily commutes or most frequented local businesses.

Getting started: Open the web app at ahn-lab.org/google-timeline-visualizer/ or install the Android APK.

README

main branch

Timeline Visualizer

한국어 안내 · 日本語

Turn your Timeline file into an animated travel video on your Android phone. Choose exact dates, preview the Journey, and create an MP4 ready to watch or share.

Videos library

New video

Android License Build

Use on iPhone

Open the iPhone web app in Safari. There is no app to install and no Timeline file is uploaded.

  1. In Google Maps, open profile picture → Settings → Personal content → Export Timeline data and save Timeline.json in Files.
  2. Return to the web app and select Choose Timeline.json.
  3. Choose a month range or exact dates, select the distance unit and camera movement, and confirm the map privacy notice.
  4. Preview the journey, then select Create MP4.
  5. Play, share, or download the finished video.

MP4 creation requires Safari 16.4 or newer with H.264 encoding support. Keep the tab open while the video is being created. To keep the web app on the Home Screen, use Safari's Share menu and choose Add to Home Screen.

Install on Android

Install Timeline Visualizer from the Google Play listing.

You can also join Google Play open testing to receive test updates. No application form, invitation, or Google Group membership is needed. Availability depends on your country and device.

You can also install the APK from this repository's latest release.

  1. Under Assets, download the latest TimelineVisualizer-*.apk file on your phone. Do not download the .sha256 checksum file.
  2. Open the downloaded file.
  3. If Android blocks the installation, select Settings, allow your browser or file manager to Install unknown apps, then return and try again.
  4. After installation, you can turn that permission off again.

Only download the APK from this repository. Android may display a warning because the app is installed outside Google Play. That warning is expected for a directly distributed APK. Future releases can be installed over this release.

Requires Android 8.0 or newer.

Get your Timeline file

On Android, the export is in the phone's Settings app, not in Google Maps:

  1. Open Phone Settings.
  2. Select Location → Location services → Timeline.
  3. Select Export Timeline data, then Continue.
  4. Save Timeline.json somewhere easy to find, such as Downloads.

See Google's Timeline Help if the Timeline menu is missing or the labels differ on your phone.

Names and menu locations can vary by phone. In Timeline Visualizer, Get Timeline file shows these instructions and can open Location settings for you. Android does not provide apps with a standard link directly to the Timeline page.

On iPhone, the exported JSON can be used directly in the iPhone web app. It can also be moved to an Android phone and opened in the Android app.

Restore a missing Google Maps Timeline

If older trips disappeared after changing phones, reinstalling Google Maps, or resetting a device, an encrypted Timeline backup may be available in Google Maps. Use the app's Restore Google Maps Timeline link or follow the restoration guide.

Restore the history in Google Maps first, then export a new JSON file. Timeline Visualizer cannot access your Google account or encrypted backup and does not restore it directly.

Create and share a video

  1. Open Create video and set up your Travel Journal by choosing Timeline.json. The app saves useful journey history locally and adds new detail when you import a newer export later.
  2. Choose a saved trip, find a trip in your Journal, create a monthly or yearly recap, or enter exact dates. Ranges may cross year boundaries.
  3. Confirm the title, then choose a preset or a custom journey duration from 10 through 300 seconds. The template is saved for next time and supports {year} and {name}. Durations over 60 seconds show a rendering-time and storage reminder.
  4. Select Preview to check the animated map. This is an interactive preview. The saved video uses the same design with map tiles prepared before rendering.
  5. Select Create video. On Android 10 and later, the app saves it automatically under Movies/Timeline Visualizer. Android 8 and 9 use the system Save As picker. The app shows each stage, an estimated time when enough progress has been measured, and a cancel button. You can switch apps or turn off the screen while it continues.
  6. When the video is saved, watch or share it, use Save as to copy it elsewhere, optionally save or share the 1080 × 1080 Journey overview, or create another video.

The selected JSON file is not copied. Useful journey history is stored in the app-private Travel Journal so later exports can add new detailed route sections. Import an updated Timeline regularly if you want to preserve recent detail. The Journal remains only on this device and is excluded from Android backup and device transfer. Clearing app storage or uninstalling the app removes it.

Older travel fades behind the moving marker so long, detailed Timelines remain clear and efficient to render. After the selected journey duration, the video adds a 1.5-second ending that zooms out, reveals the complete route, and holds the final overview for half a second.

If you cancel, the app removes the incomplete output file. After a preview reaches the end, selecting Preview again starts it from the beginning. On Android 13 or newer, allow notifications to follow progress outside the app and receive a ready alert. Video creation continues even if you decline notification access.

Keep your videos

Completed videos are added to My videos automatically. Each entry keeps its thumbnail, title, Timeline period, duration, and creation date, with quick actions to watch or share it. Videos open in a full-screen player inside the app, with seeking, sharing, and an external-player fallback. Automatically created MP4 files remain in Movies/Timeline Visualizer. The app stores only a small local index and a deterministic thumbnail made from the final journey overview.

Use Add videos to include MP4s made before this library was introduced. You can select several videos at once. If a file is moved or deleted outside the app, its entry is marked File unavailable so you can remove it from the list.

Remove from list leaves the MP4 untouched. Delete video is a separate, confirmed action that permanently deletes the file when its storage provider allows it. Delete all removes every available video after confirmation. The bottom navigation keeps My videos, Create video, and Settings easy to reach.

Video settings

Settings controls defaults for every new video. Steady camera and Balanced long-trip compression are the defaults. Fixed camera keeps one zoom level, while Dynamic camera follows local movement more actively. Long-trip compression changes only animation timing and never route geometry. Video format offers square 480p, 720p, and 1080p output plus portrait 1080 × 1920 and landscape 1920 × 1080 presets. Restore defaults returns all video settings to the recommended values.

Timeline processing uses Conservative GPS outlier filtering by default. It ignores only isolated, implausible out-and-back coordinates, reports the number ignored, and keeps the original JSON file unchanged. Set the filter to Off to use every location from the selected file.

The app supports English, Korean, Japanese, Simplified Chinese, Traditional Chinese, Spanish, French, German, and Brazilian Portuguese. Choose any supported language in Settings or keep System default. Settings also shows the installed version and build code.

Long flights and other sparse routes are interpolated along a great-circle path, so the camera follows the trip smoothly instead of jumping to the destination. During local travel, the marker can move within a stable central area before the camera follows it. This reduces rapid back-and-forth map movement on commutes without changing or removing any Timeline points.

Supported exports

  • Current Android and iOS direct-array Timeline exports
  • Older { "semanticSegments": [...] } exports
  • Optional raw location fallback with a warning and local noise reduction
  • Timeline paths, activities, and visits
  • String, latLng, degree, geo:, and E7 coordinates
  • Routes crossing the international date line

Privacy

No Google sign-in, location permission, account permission, analytics, or broad storage permission is used. The app reads only the JSON and video files you choose, and video rendering stays on the device. The Travel Journal stores useful imported journey history in private app storage and is never uploaded.

Google Sign-In could provide a profile name, but Google does not expose the phone's Timeline history through Sign-In. Requiring it would add account access without removing the export step, so the app uses your editable phone name for the default title.

Your Timeline file is never uploaded. The basemap is the only network feature. CARTO receives requests for the map areas shown and serves tiles based on OpenStreetMap data. This can reveal viewed areas to the tile provider, but the Timeline JSON is not uploaded. Before the first Timeline is loaded, the app explains this transfer and lets you cancel. See the full privacy explanation.

Desktop Python version

The original Python generator remains available for desktop users. It requires Python 3.9+, FFmpeg, and the packages in requirements.txt.

See platform parity for the portable features shared by Android, the desktop CLI, and the web app, plus the intentionally Android-only features.

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

Build and test

Android development requires JDK 17, Android SDK Platform 36, and Build Tools 36.0.0. Set CARTO_BASEMAP_API_KEY when building a copy that requests CARTO basemap tiles. Official Android and web releases inject the same project key from GitHub Actions. Local Python runs read the key from this environment variable as well.

export CARTO_BASEMAP_API_KEY="your-project-key"
./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest

Basemap attribution is displayed in every preview and exported video: © OpenStreetMap contributors and © CARTO.

Support

If Timeline Visualizer was useful to you, you can leave an optional one-time contribution. Support is appreciated but never required and does not include paid features, priority support, or a commitment to future development.

Licensed under the MIT License.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 8

Releases and announcements

75 total
  1. Timeline Visualizer 3.0.17v3.0.17Sep 9, 20261.5K downloads

    ## Install or use Timeline Visualizer <!-- release-access-links --> - **Android:** [Install from Google Play](https://play.google.com/store/apps/details?id=dev.mahlernim.timelinevisualizer) - **iPhone, iPad, or computer:** [Open the web app](https://ahn-lab.org/google-timeline-visualizer/). No installation is required. # Timeline Visualizer v3.0.17 release notes ## Android release ### en-US - Safer landscape spacing around system bars and display cutouts. - Reduced memory use for video thumbnails. - Store title and descriptions now identify the original MahlerLab app. ### de-DE - Sicherer Abstand im Querformat zu Systemleisten und Displayaussparungen. - Geringerer Speicherbedarf für Videovorschaubilder. - Titel und Beschreibungen im Store kennzeichnen die originale MahlerLab-App. ### es-ES - Espaciado más seguro en horizontal junto a barras del sistema y recortes de pantalla. - Menor uso de memoria para miniaturas de vídeo. - El título y las descripciones de la tienda identifican la aplicación original de MahlerLab. ### fr-FR - Espacement plus sûr en paysage autour des barres système et découpes d'écran. - Moins de mémoire utilisée pour les miniatures vidéo. - Le titre e

  2. Timeline Visualizer 3.0.16v3.0.16Sep 6, 20266.6K downloads

    # Timeline Visualizer 3.0.16 - Added Indonesian and Vietnamese throughout the Android app and web app, with consistent Google Maps Timeline terminology and localized import, preview, export, and settings guidance. - Language and distance-unit controls show the detected defaults directly. You can change either selection without a separate automatic option. - The web landing page now has a Share app button and a social link preview card. [Get it on Google Play](https://play.google.com/store/apps/details?id=dev.mahlernim.timelinevisualizer). Play availability depends on review, country, and device. The GitHub APK is available under **Assets** below. ## 한국어 - Android 앱과 웹 앱에 인도네시아어와 베트남어를 추가했습니다. Google 지도 타임라인 용어를 일관되게 사용하고 가져오기, 미리보기, 내보내기 및 설정 안내를 번역했습니다. - 언어와 거리 단위에는 자동으로 감지한 값이 바로 표시됩니다. 별도의 자동 옵션 없이 원하는 값으로 변경할 수 있습니다. - 웹 시작 페이지에 앱 공유 버튼과 소셜 링크 미리보기 카드를 추가했습니다. ## 日本語 - Android アプリとウェブアプリにインドネシア語とベトナム語を追加しました。Google マップのタイムライン用語を統一し、読み込み、プレビュー、書き出し、設定の案内を翻訳しました。 - 言語と距離の単位には、自動で検出した値が直接表示されます。別の自動設定を選ばずに、どちらも変更できます。 - ウェブのランディングページにアプリ共有ボタンとSNS用リンクプレビューカードを追加しました。 ## 简体中文 - Android 应用和网页应用新增印度尼西亚语和越南语。统一使用 Google 地图时间轴术语,并翻译了导入、预览、导出及设置说明。 - 语言和距离单位直接显示自动检测的默认值,无需单独的自动选

  3. Timeline Visualizer 3.0.15v3.0.15Sep 6, 20261.5K downloads

    # Timeline Visualizer 3.0.15 - Fixed the export status tray overlapping system navigation during video playback. Tray actions remain clear of the navigation area without extra spacing when the app's bottom navigation is visible. [Download from the Google Playstore](https://play.google.com/store/apps/details?id=dev.mahlernim.timelinevisualizer) to receive automatic updates through Google Play. Availability depends on Google's review and your country or device. The APK is available under **Assets** below. ## 한국어 - 동영상 재생 중 내보내기 상태 표시줄이 시스템 내비게이션 영역과 겹치는 문제를 수정했습니다. 앱의 하단 메뉴가 보일 때는 불필요한 여백 없이 상태 표시줄의 버튼을 사용할 수 있습니다. ## 日本語 - 動画再生中に書き出しステータスバーがシステムナビゲーション領域と重なる問題を修正しました。アプリの下部メニューが表示されているときは余分な余白を追加せず、ステータスバーのボタンを操作できます。 ## 简体中文 - 修复了视频播放期间导出状态栏与系统导航区域重叠的问题。当应用底部导航栏可见时,不会增加多余间距,同时确保状态栏中的按钮不被系统导航区域遮挡。 ## 繁體中文 - 修正影片播放期間匯出狀態列與系統導覽區域重疊的問題。當應用程式底部導覽列顯示時,不會增加多餘間距,同時確保狀態列中的按鈕不被系統導覽區域遮擋。 ## Español - Se corrigió la superposición de la barra de estado de exportación con el área de navegación del sistema durante la reproducción de vídeo. Sus botones quedan fuera de esa área sin añadir espacio extra cuando la barra de navegación inferior de la aplicación está visible. ##

  4. Timeline Visualizer 3.0.14v3.0.14Sep 4, 20263.9K downloads

    # Timeline Visualizer 3.0.14 [Join Google Play open testing](https://play.google.com/apps/testing/dev.mahlernim.timelinevisualizer) to install the Android app and receive updates through Google Play. Sign in with the Google account used on your phone, join the test, then follow the download link. Open testing needs no invitation or Google Group membership. Availability depends on Google's review and your country or device. If the test is not available yet, check the enrollment page again later. The APK remains available under **Assets** below. - Fixed a crash when entering zero as a custom frame rate on Android. - Export cancellation now takes effect while retrying unavailable encoder input buffers, including when finishing a video. - Fixed CLI map tile requests across the International Date Line and beyond map latitude bounds. - CLI custom dimensions now accept 4K landscape and portrait sizes. The resolved short edge must be 480 through 2160 pixels, the long edge must not exceed 3840 pixels, and both dimensions must be even. - New CLI 480p landscape videos use 852x480 instead of 854x480, and portrait videos use 480x852 instead of 480x854, matching current Android and web presets

  5. Timeline Visualizer 3.0.12v3.0.12Sep 4, 2026700 downloads

    # Timeline Visualizer 3.0.12 Improved translations across eight languages, corrected Timeline import instructions, and clarified privacy wording. Buttons and settings now use more consistent terminology and tone. ## 한국어 8개 언어의 번역을 개선하고, 타임라인 가져오기 안내를 수정했으며, 개인정보 보호 관련 설명을 더 명확하게 다듬었습니다. 버튼과 설정의 용어 및 말투도 일관되게 정리했습니다. ## 日本語 8言語の翻訳を改善し、タイムラインのインポート手順を修正しました。プライバシーに関する説明を明確にし、ボタンや設定の用語と文体を統一しました。 ## 简体中文 改进了八种语言的翻译,修正了时间轴导入说明,并使隐私说明更加清晰。按钮和设置现在使用更加一致的术语和语气。 ## 繁體中文 改善了八種語言的翻譯,修正了時間軸匯入說明,並讓隱私權說明更加清楚。按鈕和設定現在使用更一致的用語和語氣。 ## Español Mejoramos las traducciones en ocho idiomas, corregimos las instrucciones para importar Timeline y aclaramos la información sobre privacidad. Los botones y ajustes ahora usan términos y un tono más coherentes. ## Français Nous avons amélioré les traductions dans huit langues, corrigé les instructions d’importation de Timeline et clarifié les informations sur la confidentialité. Les boutons et les paramètres utilisent désormais une terminologie et un ton plus cohérents. ## Deutsch Die Übersetzungen in acht Sprachen wurden verbessert, die Anleitung zum Importieren der Timeline korrigiert und die Datenschutzhinweise verständlicher formuliert. Schalt

Code frequency

additions and deletions
+26.7K-26.7KWeek of 2025-12-14: +478 linesWeek of 2025-12-14: -0 linesWeek of 2025-12-21: +0 linesWeek of 2025-12-21: -0 linesWeek of 2025-12-28: +0 linesWeek of 2025-12-28: -0 linesWeek of 2026-01-04: +0 linesWeek of 2026-01-04: -0 linesWeek of 2026-01-11: +0 linesWeek of 2026-01-11: -0 linesWeek of 2026-01-18: +0 linesWeek of 2026-01-18: -0 linesWeek of 2026-01-25: +0 linesWeek of 2026-01-25: -0 linesWeek of 2026-02-01: +0 linesWeek of 2026-02-01: -0 linesWeek of 2026-02-08: +0 linesWeek of 2026-02-08: -0 linesWeek of 2026-02-15: +0 linesWeek of 2026-02-15: -0 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +0 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +0 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +0 linesWeek of 2026-03-22: -0 linesWeek of 2026-03-29: +0 linesWeek of 2026-03-29: -0 linesWeek of 2026-04-05: +0 linesWeek of 2026-04-05: -0 linesWeek of 2026-04-12: +0 linesWeek of 2026-04-12: -0 linesWeek of 2026-04-19: +0 linesWeek of 2026-04-19: -0 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +0 linesWeek of 2026-05-10: -0 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +0 linesWeek of 2026-05-24: -0 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +26,687 linesWeek of 2026-08-16: -3,766 linesDec 14, 2025Aug 16, 2026
+27.2K lines added, -3.8K removed over the last year.

Commits per week

last 52 weeks
900Week of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 1 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 66 commitsWeek of 2026-08-23: 90 commitsWeek of 2026-08-30: 27 commitsWeek of 2026-09-06: 19 commitsSep 13, 2025Sep 6, 2026
203 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 1 commitsSun 12:00 — 1 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 1 commitsSun 16:00 — 1 commitsSun 17:00 — 1 commitsSun 18:00 — 0 commitsSun 19:00 — 6 commitsSun 20:00 — 0 commitsSun 21:00 — 0 commitsSun 22:00 — 1 commitsSun 23:00 — 0 commitsMon 0:00 — 1 commitsMon 1:00 — 2 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 1 commitsMon 9:00 — 2 commitsMon 10:00 — 12 commitsMon 11:00 — 4 commitsMon 12:00 — 7 commitsMon 13:00 — 1 commitsMon 14:00 — 0 commitsMon 15:00 — 2 commitsMon 16:00 — 3 commitsMon 17:00 — 2 commitsMon 18:00 — 0 commitsMon 19:00 — 1 commitsMon 20:00 — 1 commitsMon 21:00 — 1 commitsMon 22:00 — 1 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 1 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 2 commitsTue 10:00 — 1 commitsTue 11:00 — 7 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 0 commitsTue 15:00 — 1 commitsTue 16:00 — 7 commitsTue 17:00 — 0 commitsTue 18:00 — 5 commitsTue 19:00 — 2 commitsTue 20:00 — 0 commitsTue 21:00 — 1 commitsTue 22:00 — 1 commitsTue 23:00 — 1 commitsWed 0:00 — 1 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 8 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 0 commitsWed 13:00 — 2 commitsWed 14:00 — 0 commitsWed 15:00 — 6 commitsWed 16:00 — 1 commitsWed 17:00 — 1 commitsWed 18:00 — 1 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 0 commitsWed 22:00 — 3 commitsWed 23:00 — 3 commitsThu 0:00 — 1 commitsThu 1:00 — 2 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 2 commitsThu 10:00 — 2 commitsThu 11:00 — 0 commitsThu 12:00 — 3 commitsThu 13:00 — 3 commitsThu 14:00 — 2 commitsThu 15:00 — 2 commitsThu 16:00 — 4 commitsThu 17:00 — 3 commitsThu 18:00 — 2 commitsThu 19:00 — 0 commitsThu 20:00 — 4 commitsThu 21:00 — 1 commitsThu 22:00 — 7 commitsThu 23:00 — 7 commitsFri 0:00 — 2 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 3 commitsFri 9:00 — 1 commitsFri 10:00 — 1 commitsFri 11:00 — 1 commitsFri 12:00 — 1 commitsFri 13:00 — 1 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 2 commitsFri 18:00 — 2 commitsFri 19:00 — 1 commitsFri 20:00 — 5 commitsFri 21:00 — 4 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 2 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 1 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 2 commitsSat 10:00 — 3 commitsSat 11:00 — 1 commitsSat 12:00 — 2 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 1 commitsSat 16:00 — 2 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 3 commitsSat 20:00 — 3 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 2 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits123 (43%)
Community commits163 (57%)

286 commits in total over the last year.

DateListRankStars gained
Aug 24, 2026daily#8+441
Aug 23, 2026daily#8+441
Aug 22, 2026daily#1+1,053
Aug 21, 2026daily#8+657
  • bannedbook/fanqiang

    翻墙-科学上网

    53.2K stars · Kotlin

  • google-ai-edge/gallery

    A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally.

    24.7K stars · Kotlin

  • iamgio/quarkdown

    🪐 Markdown with superpowers: from ideas to papers, presentations, websites, books, and knowledge bases.

    16.1K stars · Kotlin

  • permissionlesstech/bitchat-android

    decentralized mesh chat

    7.6K stars · Kotlin

  • capcom6/android-sms-gateway

    The SMS Gateway for Android™ app enables sending and receiving SMS messages through an API that can be accessed directly on the device or via a cloud server when direct device access is not possible.

    5.7K stars · Kotlin

  • embabel/embabel-agent

    Agent framework for the JVM. Pronounced Em-BAY-bel /ɛmˈbeɪbəl/

    4.4K stars · Kotlin