catchorg/Catch2Public

A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)

AI summary: Modern, native C++ test framework supporting unit tests, TDD, and BDD with micro-benchmarking.

Stars
21.5K
Forks
3.5K
Watchers
460
Open issues
385
Open PRs
57
Contributors
~452
Commits
4.8K
Branches
11

C++BSL-1.0Created Nov 8, 2010Last push todayLatest release v3.16.0+12 stars this week+41 this month

Quick answers

What is Catch2?
Modern, native C++ test framework supporting unit tests, TDD, and BDD with micro-benchmarking.
What does Catch2 do?
Catch2 is a widely used C++ testing framework that emphasizes simplicity, natural syntax, and ease of use. It allows developers to write unit tests using standard C++ boolean expressions inside assertion macros, eliminating the need for specialized comparison functions. The framework includes built-in micro-benchmarking capabilities to measure code performance alongside standard correctness checks. It also supports Behavior-Driven Development paradigms through descriptive sections that cleanly share set-up and tear-down logic. With the release of version 3, Catch2 transitioned from a single-header library to a separately compiled library with multiple headers for improved compile times.
Who is Catch2 for?
C++ software engineers and library authors requiring a robust, expressive, and fast testing framework for modern C++ projects. It requires a C++ compiler supporting C++14 or later.
How popular is Catch2 on GitHub?
catchorg/Catch2 has 21,506 stars and 3,501 forks on GitHub, and gained 12 stars in the last 7 days.
What license does Catch2 use?
catchorg/Catch2 is released under the BSL-1.0 license.

Star history

since Oct 29, 2017
010K20KOct 2017Oct 2020Sep 2023Oct 2026
21.5K stars as of Oct 4, 2026. Before Jul 27, 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: 0 commits2025-10-06: 1 commit2025-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: 1 commit2025-10-15: 0 commits2025-10-16: 2 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: 1 commit2025-11-08: 0 commits2025-11-09: 2 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: 2 commits2025-12-01: 2 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: 1 commit2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 1 commit2025-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: 1 commit2025-12-27: 0 commits2025-12-28: 3 commits2025-12-29: 1 commit2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 1 commit2026-01-02: 0 commits2026-01-03: 3 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 1 commit2026-01-07: 0 commits2026-01-08: 1 commit2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 2 commits2026-01-12: 2 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-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: 2 commits2026-02-10: 2 commits2026-02-11: 0 commits2026-02-12: 2 commits2026-02-13: 1 commit2026-02-14: 0 commits2026-02-15: 6 commits2026-02-16: 2 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: 1 commit2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 1 commit2026-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: 1 commit2026-03-28: 1 commit2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 3 commits2026-04-02: 2 commits2026-04-03: 1 commit2026-04-04: 2 commits2026-04-05: 1 commit2026-04-06: 1 commit2026-04-07: 4 commits2026-04-08: 2 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 1 commit2026-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: 1 commit2026-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: 1 commit2026-05-06: 1 commit2026-05-07: 5 commits2026-05-08: 1 commit2026-05-09: 0 commits2026-05-10: 2 commits2026-05-11: 0 commits2026-05-12: 5 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: 2 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: 2 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 2 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: 1 commit2026-07-05: 1 commit2026-07-06: 2 commits2026-07-07: 2 commits2026-07-08: 1 commit2026-07-09: 0 commits2026-07-10: 1 commit2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 1 commit2026-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: 1 commit2026-07-23: 4 commits2026-07-24: 5 commits2026-07-25: 0 commits2026-07-26: 3 commits2026-07-27: 0 commits2026-07-28: 1 commit2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 1 commit2026-08-01: 1 commit2026-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: 1 commit2026-08-09: 1 commit2026-08-10: 1 commit2026-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: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 4 commits2026-08-21: 1 commit2026-08-22: 3 commits2026-08-23: 1 commit2026-08-24: 1 commit2026-08-25: 1 commit2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 1 commit2026-09-04: 1 commit2026-09-05: 0 commits2026-09-06: 3 commits2026-09-07: 2 commits2026-09-08: 1 commit2026-09-09: 3 commits2026-09-10: 2 commits2026-09-11: 2 commits2026-09-12: 0 commits2026-09-13: 2 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 1 commit2026-09-23: 1 commit2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
146 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    21,506 stars

  • Battle-tested

    15 years of history

  • Actively maintained

    Pushed within 48 hours

  • Community-driven

    ~452 contributors

  • Well documented

    High community health score

  • Repeat trending

    5 trending appearances

What Catch2 does

Catch2 is a widely used C++ testing framework that emphasizes simplicity, natural syntax, and ease of use. It allows developers to write unit tests using standard C++ boolean expressions inside assertion macros, eliminating the need for specialized comparison functions. The framework includes built-in micro-benchmarking capabilities to measure code performance alongside standard correctness checks. It also supports Behavior-Driven Development paradigms through descriptive sections that cleanly share set-up and tear-down logic. With the release of version 3, Catch2 transitioned from a single-header library to a separately compiled library with multiple headers for improved compile times.

C++ software engineers and library authors requiring a robust, expressive, and fast testing framework for modern C++ projects. It requires a C++ compiler supporting C++14 or later.

  • Natural Assertions: Uses standard C++ boolean expressions for testing rather than requiring a complex matrix of assert macros.
  • Micro-Benchmarking: Integrates performance benchmarking directly into the test suite using dedicated macros.
  • BDD and TDD Support: Facilitates behavior-driven and test-driven development methodologies with expressive test sections.
  • Modular Architecture: Distributed as a compiled library with multiple headers in v3 to significantly improve build performance.
  • Section Scoping: Provides a unique section mechanism that neatly isolates and shares setup and teardown code across multiple tests.

Where teams use it

C++ Unit Testing

Write comprehensive unit tests for C++ applications with highly readable assertion syntax.

Performance Benchmarking

Measure the execution time of critical functions to detect performance regressions during development.

Behavior-Driven Development

Structure test cases using Given-When-Then BDD scenarios to clearly define software requirements.

Test Driven Development

Quickly iterate on software design by writing natural tests before implementing the underlying logic.

README

devel branch

Catch2 logo

Github Releases Linux build status Linux build status MacOS build status Build Status Code Coverage Try online Join the chat in Discord: https://discord.gg/4CWS9zD

What is Catch2?

Catch2 is mainly a unit testing framework for C++, but it also provides basic micro-benchmarking features, and simple BDD macros.

Catch2's main advantage is that using it is both simple and natural. Test names do not have to be valid identifiers, assertions look like normal C++ boolean expressions, and sections provide a nice and local way to share set-up and tear-down code in tests.

Example unit test

#include <catch2/catch_test_macros.hpp>

#include <cstdint>

uint32_t factorial( uint32_t number ) {
    return number <= 1 ? number : factorial(number-1) * number;
}

TEST_CASE( "Factorials are computed", "[factorial]" ) {
    REQUIRE( factorial( 1) == 1 );
    REQUIRE( factorial( 2) == 2 );
    REQUIRE( factorial( 3) == 6 );
    REQUIRE( factorial(10) == 3'628'800 );
}

Example microbenchmark

#include <catch2/catch_test_macros.hpp>
#include <catch2/benchmark/catch_benchmark.hpp>

#include <cstdint>

uint64_t fibonacci(uint64_t number) {
    return number < 2 ? number : fibonacci(number - 1) + fibonacci(number - 2);
}

TEST_CASE("Benchmark Fibonacci", "[!benchmark]") {
    REQUIRE(fibonacci(5) == 5);

    REQUIRE(fibonacci(20) == 6'765);
    BENCHMARK("fibonacci 20") {
        return fibonacci(20);
    };

    REQUIRE(fibonacci(25) == 75'025);
    BENCHMARK("fibonacci 25") {
        return fibonacci(25);
    };
}

Note that benchmarks are not run by default, so you need to run it explicitly with the [!benchmark] tag.

Catch2 v3 has been released!

You are on the devel branch, where the v3 version is being developed. v3 brings a bunch of significant changes, the big one being that Catch2 is no longer a single-header library. Catch2 now behaves as a normal library, with multiple headers and separately compiled implementation.

The documentation is slowly being updated to take these changes into account, but this work is currently still ongoing.

For migrating from the v2 releases to v3, you should look at our documentation. It provides a simple guidelines on getting started, and collects most common migration problems.

For the previous major version of Catch2 look into the v2.x branch here on GitHub.

How to use it

This documentation comprises these three parts:

More

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

112 total
  1. v3.16.0v3.16.0Aug 25, 2026722 downloads

    ### Fixes * Multiple fixes in `catch_discover_tests`: * Fixed `<target>_TESTS` variable accumulating JSON fragments alongside test names. * This was introduced during the refactoring in last release. * Fixed `<target>_TESTS` variable from `catch_discover_tests` not escaping test names to be properly parsed by CMake. * This means that e.g. test names with semicolons will not be split into multiple partial test names. * This bug has existed since the first version of the script. * Fixed `TEST_PREFIX`/`TEST_SUFFIX` args having leading/trailing whitespace stripped. * Added workaround for Clang 20-21 compile error with `TEMPLATE_PRODUCT_TEST_CASE` (#3115, #3173) ### Improvements * Verbosity option is now handled per reporter. * The standalone `--verbosity` flag is propagated to all reporters as default, just like `--colour-mode`. * The JSON reporter considers verbosity when listing tests. * Another set of performance improvements for `catch_discover_tests` performance * The newest version can register about 3k tests in 1 second, up from 1k previously. * The initial `TEST_CASE` registration is slightly faster. * Reduced overhead from first instanti

  2. v3.15.3v3.15.3Jul 26, 20261.6K downloads

    ### Fixes * The JSON reporter's number handling is locale-independent. (#3176) * Removed leftover debug message from `catch_discover_tests` (#3177) * Fixed typo in the "Could not jump to the Nth element" exception message (#3181) ### Improvements * `catch_discover_tests` registers tests in deterministic (alphabetical) order. * `catch_discover_tests` has been rewritten to be massively faster. * Preparing the actual CTest script is significantly faster. * Parsing the JSON test array is significantly faster. * Running without `ADD_TAGS_AS_LABELS` set is 10-15% faster (as opposed to being the same speed) (#3169) * The new implementation is about 4x-5x faster, so registering 500 tests now takes ~350ms (down from 1.1s). * JSON writing is faster * Small improvement in writing non-string values * ~6-40% improvement in writing string values that do not need escaping * ~1-6% improvement in writing string values that do need escaping * Better support for infs and NaNs in JSON output

  3. v3.15.2v3.15.2Jul 7, 2026631 downloads

    ### Fixes * Fixed `--warn InfiniteGenerators` triggering even if the generator was limited to specific element via path filtering. * Fixed `-Wunused-parameter` triggering in `-fnoexceptions` builds. ### Improvements * `catch_discover_tests` can handle cases where the binary prints out non-Catch2 output due to global constructors (#3162)

  4. v3.15.1v3.15.1Jun 14, 2026

    ### Fixes * Fixed potential OOB access when looking for start of broken UTF-8 sequence during linebreaking (#3096) * Fixed `TEMPLATE_LIST_TEST_CASE_METHOD` and `CATCH_TEMPLATE_PRODUCT_TEST_CASE` potentially causing ODR violations (#3161)

  5. v3.15.0v3.15.0May 12, 2026793 downloads

    ### Fixes * Fixed ambiguous overload issue with `std::optional<T>` in C++26. (#3095) * Since `std::optional` was turned into a range, the partial specialization of `StringMaker` for range-like types and for `std::optional<T>` were in conflict. ### Improvements * Simplified `CATCH_REGISTER_ENUM` internals for faster compilation and retrieval. * Successful assertion are slightly (1-2%) faster. * Generic (new-style) matchers support constexpr matching in C++20. * Combining matchers requires C++26. * Catch2-provided generic matchers are all constexpr enabled. * Added `STATIC_REQUIRE_THAT` for compile-time matcher assertions. * This requires the compiler to support enough `constexpr` for matchers, see above.

Code frequency

additions and deletions
+3.1K-3.1KWeek of 2025-09-28: +343 linesWeek of 2025-09-28: -188 linesWeek of 2025-10-05: +438 linesWeek of 2025-10-05: -18 linesWeek of 2025-10-12: +222 linesWeek of 2025-10-12: -59 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +0 linesWeek of 2025-10-26: -0 linesWeek of 2025-11-02: +1 linesWeek of 2025-11-02: -1 linesWeek of 2025-11-09: +61 linesWeek of 2025-11-09: -4 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: +300 linesWeek of 2025-11-30: -50 linesWeek of 2025-12-07: +3 linesWeek of 2025-12-07: -1 linesWeek of 2025-12-14: +1 linesWeek of 2025-12-14: -3 linesWeek of 2025-12-21: +111 linesWeek of 2025-12-21: -44 linesWeek of 2025-12-28: +661 linesWeek of 2025-12-28: -207 linesWeek of 2026-01-04: +268 linesWeek of 2026-01-04: -57 linesWeek of 2026-01-11: +1,967 linesWeek of 2026-01-11: -42 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: +1,000 linesWeek of 2026-02-08: -84 linesWeek of 2026-02-15: +3,060 linesWeek of 2026-02-15: -554 linesWeek of 2026-02-22: +0 linesWeek of 2026-02-22: -0 linesWeek of 2026-03-01: +1 linesWeek of 2026-03-01: -0 linesWeek of 2026-03-08: +2 linesWeek of 2026-03-08: -0 linesWeek of 2026-03-15: +0 linesWeek of 2026-03-15: -0 linesWeek of 2026-03-22: +95 linesWeek of 2026-03-22: -1 linesWeek of 2026-03-29: +137 linesWeek of 2026-03-29: -1,159 linesWeek of 2026-04-05: +1,163 linesWeek of 2026-04-05: -793 linesWeek of 2026-04-12: +7 linesWeek of 2026-04-12: -3 linesWeek of 2026-04-19: +35 linesWeek of 2026-04-19: -33 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +172 linesWeek of 2026-05-03: -21 linesWeek of 2026-05-10: +772 linesWeek of 2026-05-10: -415 linesWeek of 2026-05-17: +0 linesWeek of 2026-05-17: -0 linesWeek of 2026-05-24: +7 linesWeek of 2026-05-24: -5 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +62 linesWeek of 2026-06-07: -62 linesWeek of 2026-06-14: +97 linesWeek of 2026-06-14: -74 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +92 linesWeek of 2026-06-28: -15 linesWeek of 2026-07-05: +314 linesWeek of 2026-07-05: -72 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -1 linesWeek of 2026-07-19: +1,204 linesWeek of 2026-07-19: -65 linesWeek of 2026-07-26: +849 linesWeek of 2026-07-26: -281 linesWeek of 2026-08-02: +160 linesWeek of 2026-08-02: -12 linesWeek of 2026-08-09: +171 linesWeek of 2026-08-09: -122 linesWeek of 2026-08-16: +256 linesWeek of 2026-08-16: -90 linesWeek of 2026-08-23: +654 linesWeek of 2026-08-23: -274 linesWeek of 2026-08-30: +54 linesWeek of 2026-08-30: -11 linesWeek of 2026-09-06: +836 linesWeek of 2026-09-06: -119 linesWeek of 2026-09-13: +213 linesWeek of 2026-09-13: -78 linesWeek of 2026-09-20: +0 linesWeek of 2026-09-20: -0 linesSep 28, 2025Sep 20, 2026
+15.8K lines added, -5K removed over the last year.

Commits per week

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

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 31 commitsSun 1:00 — 2 commitsSun 2:00 — 2 commitsSun 3:00 — 2 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 2 commitsSun 7:00 — 2 commitsSun 8:00 — 2 commitsSun 9:00 — 18 commitsSun 10:00 — 19 commitsSun 11:00 — 28 commitsSun 12:00 — 25 commitsSun 13:00 — 25 commitsSun 14:00 — 26 commitsSun 15:00 — 28 commitsSun 16:00 — 33 commitsSun 17:00 — 18 commitsSun 18:00 — 28 commitsSun 19:00 — 24 commitsSun 20:00 — 43 commitsSun 21:00 — 68 commitsSun 22:00 — 29 commitsSun 23:00 — 34 commitsMon 0:00 — 23 commitsMon 1:00 — 5 commitsMon 2:00 — 1 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 8 commitsMon 7:00 — 21 commitsMon 8:00 — 53 commitsMon 9:00 — 22 commitsMon 10:00 — 46 commitsMon 11:00 — 37 commitsMon 12:00 — 49 commitsMon 13:00 — 38 commitsMon 14:00 — 36 commitsMon 15:00 — 55 commitsMon 16:00 — 37 commitsMon 17:00 — 28 commitsMon 18:00 — 61 commitsMon 19:00 — 53 commitsMon 20:00 — 51 commitsMon 21:00 — 41 commitsMon 22:00 — 42 commitsMon 23:00 — 31 commitsTue 0:00 — 16 commitsTue 1:00 — 5 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 3 commitsTue 7:00 — 27 commitsTue 8:00 — 61 commitsTue 9:00 — 40 commitsTue 10:00 — 31 commitsTue 11:00 — 55 commitsTue 12:00 — 26 commitsTue 13:00 — 37 commitsTue 14:00 — 39 commitsTue 15:00 — 48 commitsTue 16:00 — 31 commitsTue 17:00 — 48 commitsTue 18:00 — 94 commitsTue 19:00 — 64 commitsTue 20:00 — 43 commitsTue 21:00 — 40 commitsTue 22:00 — 41 commitsTue 23:00 — 43 commitsWed 0:00 — 18 commitsWed 1:00 — 3 commitsWed 2:00 — 2 commitsWed 3:00 — 0 commitsWed 4:00 — 2 commitsWed 5:00 — 1 commitsWed 6:00 — 4 commitsWed 7:00 — 27 commitsWed 8:00 — 60 commitsWed 9:00 — 28 commitsWed 10:00 — 37 commitsWed 11:00 — 24 commitsWed 12:00 — 23 commitsWed 13:00 — 20 commitsWed 14:00 — 31 commitsWed 15:00 — 48 commitsWed 16:00 — 36 commitsWed 17:00 — 26 commitsWed 18:00 — 62 commitsWed 19:00 — 56 commitsWed 20:00 — 35 commitsWed 21:00 — 53 commitsWed 22:00 — 24 commitsWed 23:00 — 35 commitsThu 0:00 — 25 commitsThu 1:00 — 3 commitsThu 2:00 — 2 commitsThu 3:00 — 0 commitsThu 4:00 — 1 commitsThu 5:00 — 0 commitsThu 6:00 — 2 commitsThu 7:00 — 21 commitsThu 8:00 — 78 commitsThu 9:00 — 22 commitsThu 10:00 — 29 commitsThu 11:00 — 44 commitsThu 12:00 — 30 commitsThu 13:00 — 26 commitsThu 14:00 — 34 commitsThu 15:00 — 41 commitsThu 16:00 — 51 commitsThu 17:00 — 21 commitsThu 18:00 — 54 commitsThu 19:00 — 65 commitsThu 20:00 — 38 commitsThu 21:00 — 37 commitsThu 22:00 — 42 commitsThu 23:00 — 38 commitsFri 0:00 — 19 commitsFri 1:00 — 6 commitsFri 2:00 — 3 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 1 commitsFri 6:00 — 8 commitsFri 7:00 — 25 commitsFri 8:00 — 62 commitsFri 9:00 — 25 commitsFri 10:00 — 36 commitsFri 11:00 — 45 commitsFri 12:00 — 24 commitsFri 13:00 — 21 commitsFri 14:00 — 41 commitsFri 15:00 — 42 commitsFri 16:00 — 38 commitsFri 17:00 — 33 commitsFri 18:00 — 79 commitsFri 19:00 — 74 commitsFri 20:00 — 26 commitsFri 21:00 — 37 commitsFri 22:00 — 28 commitsFri 23:00 — 29 commitsSat 0:00 — 27 commitsSat 1:00 — 4 commitsSat 2:00 — 2 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 1 commitsSat 6:00 — 2 commitsSat 7:00 — 2 commitsSat 8:00 — 8 commitsSat 9:00 — 18 commitsSat 10:00 — 21 commitsSat 11:00 — 27 commitsSat 12:00 — 27 commitsSat 13:00 — 20 commitsSat 14:00 — 30 commitsSat 15:00 — 37 commitsSat 16:00 — 24 commitsSat 17:00 — 25 commitsSat 18:00 — 34 commitsSat 19:00 — 38 commitsSat 20:00 — 60 commitsSat 21:00 — 50 commitsSat 22:00 — 21 commitsSat 23:00 — 48 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 31, 2026monthly#13+1,074
Jul 30, 2026monthly#13+1,074
Jul 29, 2026monthly#7+1,068
Jul 28, 2026monthly#5+1,057
Jul 27, 2026monthly#2+1,033