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, C++-native test framework supporting unit tests, TDD, and BDD methodologies.

Stars
21.4K
+2 today
Forks
3.5K
Watchers
461
Open issues
390
Open PRs
50
Contributors
~448
Commits
4.8K
Branches
11

C++BSL-1.0Created Nov 8, 2010Last push 5d agoLatest release v3.15.3+24 stars this week+45 this month

Star history

since Oct 29, 2017
010K20KOct 2017Sep 2020Aug 2023Aug 2026
21.4K stars as of Aug 7, 2026, tracked back to Oct 29, 2017. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

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

Signals and awards

derived from tracked data
  • Widely adopted

    21,420 stars

  • Battle-tested

    15 years of history

  • Community-driven

    ~448 contributors

  • Well documented

    High community health score

  • Repeat trending

    5 trending appearances

What Catch2 does

Catch2 is a comprehensive unit testing framework built natively for modern C++ development. It simplifies test creation by allowing developers to write test names as standard strings rather than restrictive valid identifiers. The framework automatically registers tests, removing the need for tedious manual boilerplate. It integrates basic micro-benchmarking features directly into the testing suite. Furthermore, it provides macros that facilitate Behavior-Driven Development (BDD) paradigms natively in C++.

Geared towards C++ developers ranging from hobbyists to enterprise engineers. It is especially suited for those utilizing modern C++ standards who want a low-friction testing setup.

  • Natural test naming: Enables writing test cases using arbitrary string descriptions without identifier constraints.
  • Auto-registration: Detects and registers test cases automatically to eliminate manual setup.
  • BDD support: Provides native macros for structuring tests using Given-When-Then phrasing.
  • Micro-benchmarking: Integrates performance measurement capabilities alongside standard assertions.
  • Modern C++ compatibility: Fully supports C++14, C++17, and later standards out of the box.
  • Header-only option: Offers simple integration without complex build system requirements.

Where teams use it

Unit testing applications

C++ developers needing a straightforward, robust framework for verifying individual components.

Behavior-Driven Development

Teams looking to write expressive, specification-style tests in C++.

Performance regression tracking

Engineers utilizing built-in micro-benchmarks to catch performance drops in hot paths.

Cross-platform CI integration

Projects requiring a reliable testing tool that integrates easily into automated pipelines.

Getting started: cmake -B build -S . -DBUILD_TESTING=ON

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

Releases and announcements

111 total
  1. v3.15.3v3.15.3Jul 26, 2026154 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

  2. v3.15.2v3.15.2Jul 7, 2026482 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)

  3. 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)

  4. v3.15.0v3.15.0May 12, 2026777 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.

  5. v3.14.0v3.14.0Apr 5, 20261.7K downloads

    ### Fixes * Added missing `<cstdint>` includes. (#3078) * Fixed suppression of empty variadic macro arguments warning on Clang <19. (#3085) * Fixed `catch_discover_tests` failing during `PRE_TEST` discovery if a target does not have discoverable tests. (#3075) * Fixed build of the main library failing with `CATCH_CONFIG_PREFIX_ALL` defined. (#3087) * JUnit reporter outputs single failed (errored/skipped) assertion per test case. (#1919) ### Improvements * The default implementation of `--list-tags` and `--list-listeners` has a quiet variant. * Suppressed the new Clang warning about `__COUNTER__` usage. (#3076) * Line-wrapping counts utf-8 codepoints instead of bytes. (#1022, #3086) * Combining character sequences are still miscounted, but Catch2 does not aim to fully support Unicode.

Code frequency

additions and deletions
+3.1K-3.1KWeek of 2025-08-10: +1 linesWeek of 2025-08-10: -1 linesWeek of 2025-08-17: +511 linesWeek of 2025-08-17: -141 linesWeek of 2025-08-24: +207 linesWeek of 2025-08-24: -142 linesWeek of 2025-08-31: +0 linesWeek of 2025-08-31: -0 linesWeek of 2025-09-07: +56 linesWeek of 2025-09-07: -57 linesWeek of 2025-09-14: +8 linesWeek of 2025-09-14: -4 linesWeek of 2025-09-21: +536 linesWeek of 2025-09-21: -118 linesWeek 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: +486 linesWeek of 2026-07-26: -46 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesAug 10, 2025Aug 2, 2026
+14.4K lines added, -4.5K removed over the last year.

Commits per week

last 52 weeks
120Week of 2025-08-03: 5 commitsWeek of 2025-08-10: 1 commitsWeek of 2025-08-17: 5 commitsWeek of 2025-08-24: 4 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 3 commitsWeek of 2025-09-14: 1 commitsWeek of 2025-09-21: 12 commitsWeek of 2025-09-28: 6 commitsWeek 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: 3 commitsAug 3, 2025Jul 26, 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 — 18 commitsSun 11:00 — 28 commitsSun 12:00 — 25 commitsSun 13:00 — 25 commitsSun 14:00 — 26 commitsSun 15:00 — 27 commitsSun 16:00 — 33 commitsSun 17:00 — 18 commitsSun 18:00 — 28 commitsSun 19:00 — 23 commitsSun 20:00 — 42 commitsSun 21:00 — 68 commitsSun 22:00 — 29 commitsSun 23:00 — 31 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 — 36 commitsMon 12:00 — 49 commitsMon 13:00 — 38 commitsMon 14:00 — 36 commitsMon 15:00 — 54 commitsMon 16:00 — 37 commitsMon 17:00 — 28 commitsMon 18:00 — 61 commitsMon 19:00 — 53 commitsMon 20:00 — 51 commitsMon 21:00 — 40 commitsMon 22:00 — 42 commitsMon 23:00 — 30 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 — 39 commitsTue 10:00 — 31 commitsTue 11:00 — 55 commitsTue 12:00 — 26 commitsTue 13:00 — 37 commitsTue 14:00 — 38 commitsTue 15:00 — 48 commitsTue 16:00 — 31 commitsTue 17:00 — 47 commitsTue 18:00 — 94 commitsTue 19:00 — 64 commitsTue 20:00 — 43 commitsTue 21:00 — 40 commitsTue 22:00 — 40 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 — 36 commitsWed 11:00 — 24 commitsWed 12:00 — 23 commitsWed 13:00 — 20 commitsWed 14:00 — 31 commitsWed 15:00 — 48 commitsWed 16:00 — 35 commitsWed 17:00 — 26 commitsWed 18:00 — 62 commitsWed 19:00 — 56 commitsWed 20:00 — 34 commitsWed 21:00 — 53 commitsWed 22:00 — 22 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 — 33 commitsThu 15:00 — 41 commitsThu 16:00 — 50 commitsThu 17:00 — 21 commitsThu 18:00 — 54 commitsThu 19:00 — 65 commitsThu 20:00 — 36 commitsThu 21:00 — 36 commitsThu 22:00 — 42 commitsThu 23:00 — 36 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 — 23 commitsFri 10:00 — 36 commitsFri 11:00 — 45 commitsFri 12:00 — 24 commitsFri 13:00 — 20 commitsFri 14:00 — 41 commitsFri 15:00 — 42 commitsFri 16:00 — 38 commitsFri 17:00 — 32 commitsFri 18:00 — 79 commitsFri 19:00 — 74 commitsFri 20:00 — 25 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 — 29 commitsSat 15:00 — 36 commitsSat 16:00 — 23 commitsSat 17:00 — 25 commitsSat 18:00 — 34 commitsSat 19:00 — 37 commitsSat 20:00 — 60 commitsSat 21:00 — 50 commitsSat 22:00 — 21 commitsSat 23:00 — 47 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