mvt-project/mvtPublic

MVT (Mobile Verification Toolkit) helps with conducting forensics of mobile devices in order to find signs of a potential compromise.

AI summary: A forensic tool for automating the gathering of traces to identify potential compromises of mobile devices.

Stars
15.2K
+150 today
Forks
1.4K
Watchers
296
Open issues
27
Open PRs
30
Contributors
~83
Commits
1.4K
Branches
131

PythonOtherCreated Jul 16, 2021Last push 4d agoLatest release v2026.9.28+395 stars this week+1.6K this month

Quick answers

What is mvt?
A forensic tool for automating the gathering of traces to identify potential compromises of mobile devices.
What does mvt do?
The Mobile Verification Toolkit (MVT) is a collection of utilities to simplify and automate the process of gathering forensic traces on Android and iOS devices. It helps security researchers identify a potential compromise by advanced spyware like Pegasus. The toolkit parses backup files, extracts relevant artifacts, and compares them against known indicators of compromise. By automating these checks, it significantly speeds up the incident response process for mobile security analysts.
Who is mvt for?
Security researchers, forensic analysts, and incident responders investigating mobile device compromises. Users must have strong technical knowledge of mobile operating systems and command-line tools.
How popular is mvt on GitHub?
mvt-project/mvt has 15,165 stars and 1,432 forks on GitHub, and gained 395 stars in the last 7 days.
What license does mvt use?
mvt-project/mvt is released under the Other license.

Star history

since Jul 18, 2021
05K10K15KJul 2021Apr 2023Dec 2024Oct 2026
15.2K stars as of Oct 3, 2026. Before Sep 21, 2026, reconstructed from public GitHub event archives (checked against the repository's real star total); since then measured daily.

Contribution activity

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

Signals and awards

derived from tracked data
  • Widely adopted

    15,165 stars

  • Battle-tested

    5 years of history

  • Continuous integration

    Automated checks passing

  • Repeat trending

    5 trending appearances

What mvt does

The Mobile Verification Toolkit (MVT) is a collection of utilities to simplify and automate the process of gathering forensic traces on Android and iOS devices. It helps security researchers identify a potential compromise by advanced spyware like Pegasus. The toolkit parses backup files, extracts relevant artifacts, and compares them against known indicators of compromise. By automating these checks, it significantly speeds up the incident response process for mobile security analysts.

Security researchers, forensic analysts, and incident responders investigating mobile device compromises. Users must have strong technical knowledge of mobile operating systems and command-line tools.

  • iOS forensics: Extracts and analyzes data from iTunes backups and full filesystem dumps.
  • Android forensics: Uses ADB to extract data and parse various device logs and application databases.
  • Automated IoC matching: Compares extracted forensic traces against provided indicators of compromise (STIX2).
  • Timeline generation: Creates a chronological timeline of events to assist in forensic investigations.
  • Command-line interface: Provides a set of CLI tools for flexible integration into security workflows.

Where teams use it

Investigating spyware infections

Analyze mobile devices of high-risk individuals for traces of targeted surveillance malware.

Automating forensic triage

Speed up incident response by automatically parsing device backups for suspicious activities.

Generating event timelines

Build a chronological view of device events to understand the sequence of a potential compromise.

Matching threat indicators

Scan extracted artifacts against known malicious domains, processes, or file hashes.

README

main branch

Mobile Verification Toolkit

Important

We recently merged the "v3" branch. This introduced breaking changes. If you relied on mvt output in other scripts They might have broken. More details: #757

Documentation Status CI Downloads

Mobile Verification Toolkit (MVT) is a collection of utilities to simplify and automate the process of gathering forensic traces helpful to identify a potential compromise of Android and iOS devices.

It has been developed and released by the Amnesty International Security Lab in July 2021 in the context of the Pegasus Project along with a technical forensic methodology. It continues to be maintained by Amnesty International and other contributors.

Note MVT is a forensic research tool intended for technologists and investigators. It requires understanding digital forensics and using command-line tools. This is not intended for end-user self-assessment. If you are concerned with the security of your device please seek reputable expert assistance.

Indicators of Compromise

MVT supports using public indicators of compromise (IOCs) to scan mobile devices for potential traces of targeting or infection by known spyware campaigns. This includes IOCs published by Amnesty International and other research groups.

Warning Public indicators of compromise are insufficient to determine that a device is "clean", and not targeted with a particular spyware tool. Reliance on public indicators alone can miss recent forensic traces and give a false sense of security.

Reliable and comprehensive digital forensic support and triage requires access to non-public indicators, research and threat intelligence.

Such support is available to civil society through Amnesty International's Security Lab or through our forensic partnership with Access Now’s Digital Security Helpline.

More information about using indicators of compromise with MVT is available in the documentation.

Installation

MVT can be installed from sources or from PyPI (you will need some dependencies, check the documentation):

pip3 install mvt

You can also install MVT from PyPI with uv. First, install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then install MVT as a command-line tool:

uv tool install mvt

For alternative installation options and known issues, please refer to the documentation as well as GitHub Issues.

Usage

MVT provides three commands: mvt-ios and mvt-android analyse acquisitions from devices of that platform, and mvt hosts what belongs to neither: version, completion, plugins and download-iocs (version and download-iocs remain available on the platform commands for now). Running mvt on its own shows the installed version, update notices and the available commands. Check out the documentation to learn how to use them!

Pass --verbose to any of the three commands, before the command name (mvt-ios --verbose check-backup ...), for debug output. The --verbose option the check-* commands accept after their name still works but is kept for compatibility only and will be removed in a future release.

Shell completion

MVT can generate a shell completion script for Bash, Zsh, and Fish which covers mvt, mvt-ios and mvt-android:

mvt completion

The command prints setup instructions by default. To generate the completion script directly, pass the shell name:

mvt completion bash

MVT only writes completion files or shell configuration when --install is passed. See the command completion documentation for details.

Plugin packages extend MVT with additional forensic modules, which run inside the check-* commands, and with top-level commands on mvt, mvt-ios and mvt-android. See the development documentation for writing and installing them, and the custom CLI command documentation for the entry points a package registers commands in.

License

The purpose of MVT is to facilitate the consensual forensic analysis of devices of those who might be targets of sophisticated mobile spyware attacks, especially members of civil society and marginalized communities. We do not want MVT to enable privacy violations of non-consenting individuals. In order to achieve this, MVT is released under its own license. Read more here.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 33

Releases and announcements

27 total
  1. v2026.9.28v2026.9.28Sep 28, 2026

    ## What's Changed * Enable automated PyPI deployments for tagged releases by @DonnchaC in https://github.com/mvt-project/mvt/pull/943 * Remove adb-shell dependency from pyproject.toml by @besendorf in https://github.com/mvt-project/mvt/pull/926 * Do not treat a section's timing line as a section boundary by @va-resident in https://github.com/mvt-project/mvt/pull/945 * Descend into an OEM wrapper archive in check-bugreport by @va-resident in https://github.com/mvt-project/mvt/pull/944 * Carry the accessibility service count the dump states by @va-resident in https://github.com/mvt-project/mvt/pull/946 * Strip only a whole www. prefix from parsed domains by @itzzdev09 in https://github.com/mvt-project/mvt/pull/950 * Skip a malformed battery daily Update line instead of aborting by @itzzdev09 in https://github.com/mvt-project/mvt/pull/956 ## New Contributors * @itzzdev09 made their first contribution in https://github.com/mvt-project/mvt/pull/950 **Full Changelog**: https://github.com/mvt-project/mvt/compare/v2026.9.21...v2026.9.28

  2. v2026.9.21v2026.9.21Sep 21, 2026

    ## What's Changed * [auto] Update iOS releases and versions by @github-actions[bot] in https://github.com/mvt-project/mvt/pull/927 * Bump iphone_backup_decrypt to 0.10.0 by @besendorf in https://github.com/mvt-project/mvt/pull/934 * Fix mountinfo read-write detection across both option layers by @va-resident in https://github.com/mvt-project/mvt/pull/937 **Full Changelog**: https://github.com/mvt-project/mvt/compare/v2026.9.14...v2026.9.21

  3. v2026.9.14v2026.9.14Sep 14, 2026

    ## What's Changed * Report an unreadable sysdiagnose archive instead of aborting silently by @DonnchaC in https://github.com/mvt-project/mvt/pull/920 * Read bugreport file timestamps in the device's timezone by @DonnchaC in https://github.com/mvt-project/mvt/pull/921 * Defer indicator loading until first use by @bitmeta69 in https://github.com/mvt-project/mvt/pull/919 * Skip AppleDouble sidecars when listing a sysdiagnose by @DonnchaC in https://github.com/mvt-project/mvt/pull/922 * Keep the test suite out of the user's MVT folders by @DonnchaC in https://github.com/mvt-project/mvt/pull/923 * [auto] Update iOS releases and versions by @github-actions[bot] in https://github.com/mvt-project/mvt/pull/924 ## New Contributors * @bitmeta69 made their first contribution in https://github.com/mvt-project/mvt/pull/919 **Full Changelog**: https://github.com/mvt-project/mvt/compare/v2026.9.7...v2026.9.14

  4. v2026.9.7v2026.9.7Sep 7, 2026

    ## What's Changed * Replace iOSbackup with iphone_backup_decrypt by @besendorf in https://github.com/mvt-project/mvt/pull/774 * Fix CI coverage reports and fix matrix testing each Python version by @DonnchaC in https://github.com/mvt-project/mvt/pull/913 * Parse dumpsys settings as per-record results by @DonnchaC in https://github.com/mvt-project/mvt/pull/914 * Stop persisting environment variables to config.yaml by @DonnchaC in https://github.com/mvt-project/mvt/pull/916 * Add a SysdiagnoseInfo module to check-sysdiagnose by @DonnchaC in https://github.com/mvt-project/mvt/pull/917 **Full Changelog**: https://github.com/mvt-project/mvt/compare/v2026.9.1...v2026.9.7

  5. v2026.9.1v2026.9.1Sep 1, 2026

    ## What's Changed * Alert on unexpected trusted ADB keys in AndroidQF acquisitions by @besendorf in https://github.com/mvt-project/mvt/pull/860 * Store message URLs in analysis output by @besendorf in https://github.com/mvt-project/mvt/pull/856 * Add extensible CLI commands by @besendorf in https://github.com/mvt-project/mvt/pull/853 * Speed up compressed sysdiagnose analysis by @besendorf in https://github.com/mvt-project/mvt/pull/861 * Preserve tombstone abort messages and protobuf causes by @besendorf in https://github.com/mvt-project/mvt/pull/863 * Fix iOS data workflow and update dependencies by @besendorf in https://github.com/mvt-project/mvt/pull/864 * [auto] Update iOS releases and versions by @github-actions[bot] in https://github.com/mvt-project/mvt/pull/865 * Update GitHub Actions by @besendorf in https://github.com/mvt-project/mvt/pull/866 * Parse package installer from bugreports by @besendorf in https://github.com/mvt-project/mvt/pull/868 * Scope dumpsys package fields to the primary user by @besendorf in https://github.com/mvt-project/mvt/pull/872 * Parse system package flags from bugreports by @besendorf in https://github.com/mvt-project/mvt/pull/874 * Document iOS

Code frequency

additions and deletions
+6.3K-6.3KWeek of 2025-10-05: +3 linesWeek of 2025-10-05: -2 linesWeek of 2025-10-12: +0 linesWeek of 2025-10-12: -0 linesWeek of 2025-10-19: +876 linesWeek of 2025-10-19: -117 linesWeek of 2025-10-26: +1,426 linesWeek of 2025-10-26: -2,365 linesWeek of 2025-11-02: +8 linesWeek of 2025-11-02: -0 linesWeek of 2025-11-09: +0 linesWeek of 2025-11-09: -0 linesWeek of 2025-11-16: +0 linesWeek of 2025-11-16: -0 linesWeek of 2025-11-23: +0 linesWeek of 2025-11-23: -0 linesWeek of 2025-11-30: +0 linesWeek of 2025-11-30: -0 linesWeek of 2025-12-07: +0 linesWeek of 2025-12-07: -0 linesWeek of 2025-12-14: +149 linesWeek of 2025-12-14: -34 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: +38 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: +20 linesWeek of 2026-02-01: -0 linesWeek of 2026-02-08: +0 linesWeek of 2026-02-08: -0 linesWeek of 2026-02-15: +16 linesWeek of 2026-02-15: -4 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +8 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +0 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +52 linesWeek of 2026-03-15: -11 linesWeek of 2026-03-22: +25 linesWeek of 2026-03-22: -11 linesWeek of 2026-03-29: +60 linesWeek of 2026-03-29: -44 linesWeek of 2026-04-05: +274 linesWeek of 2026-04-05: -178 linesWeek of 2026-04-12: +186 linesWeek of 2026-04-12: -60 linesWeek of 2026-04-19: +25 linesWeek of 2026-04-19: -4 linesWeek of 2026-04-26: +2,443 linesWeek of 2026-04-26: -3,476 linesWeek of 2026-05-03: +1 linesWeek of 2026-05-03: -1 linesWeek of 2026-05-10: +3,968 linesWeek of 2026-05-10: -58 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: +368 linesWeek of 2026-05-31: -237 linesWeek of 2026-06-07: +53 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +564 linesWeek of 2026-06-14: -160 linesWeek of 2026-06-21: +73 linesWeek of 2026-06-21: -13 linesWeek of 2026-06-28: +1,311 linesWeek of 2026-06-28: -32 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +503 linesWeek of 2026-07-12: -267 linesWeek of 2026-07-19: +37 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +1,444 linesWeek of 2026-07-26: -157 linesWeek of 2026-08-02: +1,434 linesWeek of 2026-08-02: -16 linesWeek of 2026-08-09: +1,083 linesWeek of 2026-08-09: -793 linesWeek of 2026-08-16: +3,330 linesWeek of 2026-08-16: -857 linesWeek of 2026-08-23: +6,288 linesWeek of 2026-08-23: -889 linesWeek of 2026-08-30: +1,082 linesWeek of 2026-08-30: -156 linesWeek of 2026-09-06: +424 linesWeek of 2026-09-06: -83 linesWeek of 2026-09-13: +66 linesWeek of 2026-09-13: -62 linesWeek of 2026-09-20: +783 linesWeek of 2026-09-20: -75 linesWeek of 2026-09-27: +409 linesWeek of 2026-09-27: -27 linesOct 5, 2025Sep 27, 2026
+28.8K lines added, -10.2K removed over the last year.

Commits per week

last 52 weeks
250Week of 2025-10-05: 2 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 5 commitsWeek of 2025-10-26: 1 commitsWeek of 2025-11-02: 2 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: 12 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 1 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 1 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 2 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 1 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 1 commitsWeek of 2026-03-22: 6 commitsWeek of 2026-03-29: 5 commitsWeek of 2026-04-05: 10 commitsWeek of 2026-04-12: 2 commitsWeek of 2026-04-19: 1 commitsWeek of 2026-04-26: 7 commitsWeek of 2026-05-03: 1 commitsWeek of 2026-05-10: 10 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 4 commitsWeek of 2026-06-07: 1 commitsWeek of 2026-06-14: 11 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 3 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 6 commitsWeek of 2026-07-19: 1 commitsWeek of 2026-07-26: 8 commitsWeek of 2026-08-02: 4 commitsWeek of 2026-08-09: 7 commitsWeek of 2026-08-16: 25 commitsWeek of 2026-08-23: 17 commitsWeek of 2026-08-30: 8 commitsWeek of 2026-09-06: 6 commitsWeek of 2026-09-13: 5 commitsWeek of 2026-09-20: 13 commitsWeek of 2026-09-27: 6 commitsOct 5, 2025Sep 27, 2026
196 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 3 commitsSun 4:00 — 3 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 2 commitsSun 11:00 — 2 commitsSun 12:00 — 5 commitsSun 13:00 — 5 commitsSun 14:00 — 12 commitsSun 15:00 — 11 commitsSun 16:00 — 12 commitsSun 17:00 — 7 commitsSun 18:00 — 2 commitsSun 19:00 — 10 commitsSun 20:00 — 6 commitsSun 21:00 — 1 commitsSun 22:00 — 1 commitsSun 23:00 — 1 commitsMon 0:00 — 3 commitsMon 1:00 — 1 commitsMon 2:00 — 1 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 — 10 commitsMon 11:00 — 11 commitsMon 12:00 — 15 commitsMon 13:00 — 10 commitsMon 14:00 — 7 commitsMon 15:00 — 11 commitsMon 16:00 — 11 commitsMon 17:00 — 9 commitsMon 18:00 — 14 commitsMon 19:00 — 8 commitsMon 20:00 — 10 commitsMon 21:00 — 7 commitsMon 22:00 — 14 commitsMon 23:00 — 10 commitsTue 0:00 — 2 commitsTue 1:00 — 4 commitsTue 2:00 — 0 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 1 commitsTue 6:00 — 1 commitsTue 7:00 — 2 commitsTue 8:00 — 1 commitsTue 9:00 — 0 commitsTue 10:00 — 8 commitsTue 11:00 — 10 commitsTue 12:00 — 26 commitsTue 13:00 — 19 commitsTue 14:00 — 11 commitsTue 15:00 — 25 commitsTue 16:00 — 23 commitsTue 17:00 — 10 commitsTue 18:00 — 22 commitsTue 19:00 — 4 commitsTue 20:00 — 7 commitsTue 21:00 — 13 commitsTue 22:00 — 3 commitsTue 23:00 — 7 commitsWed 0:00 — 9 commitsWed 1:00 — 4 commitsWed 2:00 — 0 commitsWed 3:00 — 1 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 4 commitsWed 9:00 — 1 commitsWed 10:00 — 16 commitsWed 11:00 — 15 commitsWed 12:00 — 13 commitsWed 13:00 — 34 commitsWed 14:00 — 15 commitsWed 15:00 — 20 commitsWed 16:00 — 23 commitsWed 17:00 — 18 commitsWed 18:00 — 19 commitsWed 19:00 — 12 commitsWed 20:00 — 5 commitsWed 21:00 — 5 commitsWed 22:00 — 2 commitsWed 23:00 — 8 commitsThu 0:00 — 3 commitsThu 1:00 — 0 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 4 commitsThu 5:00 — 1 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 4 commitsThu 9:00 — 9 commitsThu 10:00 — 9 commitsThu 11:00 — 17 commitsThu 12:00 — 21 commitsThu 13:00 — 12 commitsThu 14:00 — 19 commitsThu 15:00 — 19 commitsThu 16:00 — 10 commitsThu 17:00 — 16 commitsThu 18:00 — 17 commitsThu 19:00 — 13 commitsThu 20:00 — 8 commitsThu 21:00 — 3 commitsThu 22:00 — 4 commitsThu 23:00 — 10 commitsFri 0:00 — 0 commitsFri 1:00 — 4 commitsFri 2:00 — 4 commitsFri 3:00 — 1 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 1 commitsFri 8:00 — 2 commitsFri 9:00 — 4 commitsFri 10:00 — 5 commitsFri 11:00 — 21 commitsFri 12:00 — 17 commitsFri 13:00 — 16 commitsFri 14:00 — 14 commitsFri 15:00 — 23 commitsFri 16:00 — 12 commitsFri 17:00 — 22 commitsFri 18:00 — 10 commitsFri 19:00 — 14 commitsFri 20:00 — 9 commitsFri 21:00 — 3 commitsFri 22:00 — 5 commitsFri 23:00 — 4 commitsSat 0:00 — 5 commitsSat 1:00 — 3 commitsSat 2:00 — 2 commitsSat 3:00 — 1 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 1 commitsSat 9:00 — 0 commitsSat 10:00 — 6 commitsSat 11:00 — 6 commitsSat 12:00 — 6 commitsSat 13:00 — 5 commitsSat 14:00 — 21 commitsSat 15:00 — 6 commitsSat 16:00 — 3 commitsSat 17:00 — 4 commitsSat 18:00 — 9 commitsSat 19:00 — 7 commitsSat 20:00 — 2 commitsSat 21:00 — 2 commitsSat 22:00 — 1 commitsSat 23:00 — 3 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Sep 25, 2026daily#8+543
Sep 24, 2026daily#8+543
Sep 23, 2026daily#11+441
Sep 22, 2026daily#5+169
Sep 21, 2026daily#7+177