roboflow/supervisionPublic

We write your reusable computer vision tools. ๐Ÿ’œ

AI summary: A reusable computer vision utility library providing tools for filtering, annotating, and counting objects.

Stars
49.2K
+27 today
Forks
4.6K
Watchers
301
Open issues
44
Open PRs
37
Contributors
~174
Commits
5K
Branches
54

PythonMITCreated Nov 28, 2022Last push 1d agoLatest release 0.29.1+642 stars this week+689 this month

Star history

since Jan 15, 2023
020K40KJan 2023Mar 2024May 2025Aug 2026
49.2K stars as of Aug 7, 2026, tracked back to Jan 15, 2023. 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: 2 commits2025-08-05: 0 commits2025-08-06: 6 commits2025-08-07: 12 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-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: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 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: 1 commit2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-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: 1 commit2025-09-23: 0 commits2025-09-24: 1 commit2025-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: 1 commit2025-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: 1 commit2025-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: 1 commit2025-10-28: 3 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: 14 commits2025-11-06: 3 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 1 commit2025-11-13: 2 commits2025-11-14: 17 commits2025-11-15: 17 commits2025-11-16: 5 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: 0 commits2025-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: 7 commits2026-01-06: 2 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 23 commits2026-01-13: 3 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 1 commit2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 5 commits2026-01-20: 1 commit2026-01-21: 0 commits2026-01-22: 1 commit2026-01-23: 1 commit2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 3 commits2026-01-27: 15 commits2026-01-28: 1 commit2026-01-29: 2 commits2026-01-30: 7 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 36 commits2026-02-03: 23 commits2026-02-04: 11 commits2026-02-05: 1 commit2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 9 commits2026-02-11: 0 commits2026-02-12: 7 commits2026-02-13: 1 commit2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 3 commits2026-02-20: 6 commits2026-02-21: 0 commits2026-02-22: 1 commit2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 2 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 1 commit2026-03-03: 1 commit2026-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: 10 commits2026-03-11: 1 commit2026-03-12: 0 commits2026-03-13: 4 commits2026-03-14: 1 commit2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 2 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 2 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 2 commits2026-03-30: 7 commits2026-03-31: 3 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: 1 commit2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 6 commits2026-04-14: 4 commits2026-04-15: 7 commits2026-04-16: 1 commit2026-04-17: 3 commits2026-04-18: 3 commits2026-04-19: 0 commits2026-04-20: 1 commit2026-04-21: 2 commits2026-04-22: 6 commits2026-04-23: 1 commit2026-04-24: 2 commits2026-04-25: 1 commit2026-04-26: 0 commits2026-04-27: 1 commit2026-04-28: 1 commit2026-04-29: 0 commits2026-04-30: 4 commits2026-05-01: 1 commit2026-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: 3 commits2026-05-14: 1 commit2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 4 commits2026-05-20: 3 commits2026-05-21: 0 commits2026-05-22: 7 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 1 commit2026-05-26: 1 commit2026-05-27: 2 commits2026-05-28: 1 commit2026-05-29: 1 commit2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 1 commit2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 3 commits2026-06-05: 0 commits2026-06-06: 1 commit2026-06-07: 2 commits2026-06-08: 3 commits2026-06-09: 4 commits2026-06-10: 4 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 9 commits2026-06-16: 3 commits2026-06-17: 8 commits2026-06-18: 7 commits2026-06-19: 1 commit2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 2 commits2026-06-23: 3 commits2026-06-24: 1 commit2026-06-25: 6 commits2026-06-26: 4 commits2026-06-27: 4 commits2026-06-28: 0 commits2026-06-29: 8 commits2026-06-30: 1 commit2026-07-01: 12 commits2026-07-02: 3 commits2026-07-03: 8 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 6 commits2026-07-07: 4 commits2026-07-08: 3 commits2026-07-09: 4 commits2026-07-10: 1 commit2026-07-11: 3 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 1 commit2026-07-15: 4 commits2026-07-16: 4 commits2026-07-17: 8 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 5 commits2026-07-21: 7 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 1 commit2026-07-27: 3 commits2026-07-28: 4 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
523 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    49,150 stars

  • Very active

    523 commits in 52 weeks

  • Community-driven

    ~174 contributors

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    5 trending appearances

What supervision does

Supervision is a Python library that provides a comprehensive set of utilities to streamline the development of computer vision applications. It offers a standardized interface for interacting with outputs from various popular models like YOLO, SAM, and DINO. The library focuses heavily on post-processing tasks, such as tracking objects across frames and annotating images with bounding boxes or masks. It makes complex computer vision pipelines much simpler to build and deploy.

It is primarily for computer vision engineers and data scientists building robust detection and tracking pipelines. Developers needing quick visualization and post-processing tools for their CV models will find it extremely useful.

  • Agnostic model interfaces: It works seamlessly with outputs from YOLO, SAM, DINO, and other standard CV models.
  • Advanced visual annotation: It provides a wide variety of visual annotators for bounding boxes, masks, and traces.
  • Robust object tracking: It includes built-in algorithms for maintaining object identity across video frames.
  • Polygon zone counting: It features tools for counting objects that enter or exit specific polygon zones.
  • Dataset manipulation utilities: It offers utilities for filtering, splitting, and converting computer vision datasets.

Where teams use it

Video Analytics

Building pipelines for traffic analysis or crowd counting.

Model Evaluation

Visualizing the predictions of custom-trained object detection models.

Automated Inspection

Annotating defects or specific features in manufacturing imagery.

Sports Analysis

Tracking players and ball movement across complex video footage.

Getting started: pip install supervision

README

develop branch
๐Ÿ“‘ Table of Contents

๐Ÿ‘‹ Hello

We are your essential toolkit for computer vision. From data loading to real-time zone counting, we provide the building blocks so you can focus on building applications around your models. ๐Ÿค

๐Ÿ’ป Install

Pip install the supervision package in a Python>=3.10 environment.

pip install supervision

Read more about conda, mamba, and installing from source in our guide.

๐Ÿ”ฅ Quickstart

Models

Supervision was designed to be model agnostic. Just plug in any classification, detection, or segmentation model. For your convenience, we have created connectors for the most popular libraries like Ultralytics, Transformers, MMDetection, or Inference. Other integrations, like rfdetr, already return sv.Detections directly.

Install the optional dependencies for this example with pip install pillow rfdetr.

import supervision as sv
from PIL import Image
from rfdetr import RFDETRSmall

image = Image.open("path/to/image.jpg")
model = RFDETRSmall()
detections = model.predict(image, threshold=0.5)

len(detections)
# 5
๐Ÿ‘‰ more model connectors
  • inference

    Running with Inference requires a Roboflow API KEY.

    import supervision as sv
    from PIL import Image
    from inference import get_model
    
    image = Image.open("path/to/image.jpg")
    model = get_model(model_id="rfdetr-small", api_key="ROBOFLOW_API_KEY")
    result = model.infer(image)[0]
    detections = sv.Detections.from_inference(result)
    
    len(detections)
    # 5

Annotators

Supervision offers a wide range of highly customizable annotators, allowing you to compose the perfect visualization for your use case.

import cv2
import supervision as sv

image = cv2.imread("path/to/image.jpg")
# Assuming detections are obtained from a model
detections = sv.Detections(...)

box_annotator = sv.BoxAnnotator()
annotated_frame = box_annotator.annotate(scene=image.copy(), detections=detections)
supervision-0.16.0-annotators.mp4

Datasets

Supervision provides a set of utils that allow you to load, split, merge, and save datasets in one of the supported formats.

import supervision as sv
from roboflow import Roboflow

project = Roboflow().workspace("WORKSPACE_ID").project("PROJECT_ID")
dataset = project.version("PROJECT_VERSION").download("coco")

ds = sv.DetectionDataset.from_coco(
    images_directory_path=f"{dataset.location}/train",
    annotations_path=f"{dataset.location}/train/_annotations.coco.json",
)

path, image, annotation = ds[0]
# loads image on demand

for path, image, annotation in ds:
    # loads image on demand
    pass
๐Ÿ‘‰ more dataset utils
  • load

    dataset = sv.DetectionDataset.from_yolo(
        images_directory_path=...,
        annotations_directory_path=...,
        data_yaml_path=...,
    )
    
    dataset = sv.DetectionDataset.from_pascal_voc(
        images_directory_path=...,
        annotations_directory_path=...,
    )
    
    dataset = sv.DetectionDataset.from_coco(
        images_directory_path=...,
        annotations_path=...,
    )
  • split

    train_dataset, test_dataset = dataset.split(split_ratio=0.7)
    test_dataset, valid_dataset = test_dataset.split(split_ratio=0.5)
    
    len(train_dataset), len(test_dataset), len(valid_dataset)
    # (700, 150, 150)
  • merge

    ds_1 = sv.DetectionDataset(...)
    len(ds_1)
    # 100
    ds_1.classes
    # ['dog', 'person']
    
    ds_2 = sv.DetectionDataset(...)
    len(ds_2)
    # 200
    ds_2.classes
    # ['cat']
    
    ds_merged = sv.DetectionDataset.merge([ds_1, ds_2])
    len(ds_merged)
    # 300
    ds_merged.classes
    # ['cat', 'dog', 'person']
  • save

    dataset.as_yolo(
        images_directory_path=...,
        annotations_directory_path=...,
        data_yaml_path=...,
    )
    
    dataset.as_pascal_voc(
        images_directory_path=...,
        annotations_directory_path=...,
    )
    
    dataset.as_coco(
        images_directory_path=...,
        annotations_path=...,
    )
  • convert

    sv.DetectionDataset.from_yolo(
        images_directory_path=...,
        annotations_directory_path=...,
        data_yaml_path=...,
    ).as_pascal_voc(
        images_directory_path=...,
        annotations_directory_path=...,
    )

๐ŸŽฌ Tutorials

Want to learn how to use Supervision? Explore our how-to guides, end-to-end examples, cheatsheet, and cookbooks!


Dwell Time Analysis with Computer Vision | Real-Time Stream Processing Dwell Time Analysis with Computer Vision | Real-Time Stream Processing

Created: 5 Apr 2024

Learn how to use computer vision to analyze wait times and optimize processes. This tutorial covers object detection, tracking, and calculating time spent in designated zones. Use these techniques to improve customer experience in retail, traffic management, or other scenarios.


Speed Estimation & Vehicle Tracking | Computer Vision | Open Source Speed Estimation & Vehicle Tracking | Computer Vision | Open Source

Created: 11 Jan 2024

Learn how to track and estimate the speed of vehicles using YOLO, ByteTrack, and Roboflow Inference. This comprehensive tutorial covers object detection, multi-object tracking, filtering detections, perspective transformation, speed estimation, visualization improvements, and more.

๐Ÿ’œ Built with Supervision

Did you build something cool using supervision? Let us know!

football-players-tracking-25.mp4
traffic_analysis_result.mov
vehicles-step-7-new.mp4

๐Ÿ“š Documentation

Visit our documentation page to learn how supervision can help you build computer vision applications faster and more reliably.

๐Ÿ† Contribution

We love your input! Please see our contributing guide to get started. Thank you ๐Ÿ™ to all our contributors!


View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 268

Releases and announcements

40 total
  1. supervision-0.29.10.29.1Jun 23, 2026133 downloads

    ## What's new ### ๐Ÿš€ `KeyPoints.with_nms()` โ€” NMS for pose estimation ```python import supervision as sv key_points = model.predict(image) # sv.KeyPoints key_points = key_points.with_nms(threshold=0.5) # removes duplicate skeletons ``` Derives axis-aligned bounding boxes from each skeleton's valid (non-zero and visible) keypoints, then applies standard box NMS. Supports `class_agnostic` mode and any `OverlapMetric` (`IOU`, `IOS`). Raises `ValueError` if `detection_confidence` is not set. https://github.com/user-attachments/assets/ed7bd310-4868-4275-ae04-c88e7a0c2561 --- ## Notable changes ### Bug fixes - **`sv.DetectionDataset.as_pascal_voc` no longer mutates bounding boxes** (#2341) Previously, every export shifted every bounding box by +1 px in-place. A second call compounded the shift. Fixed by rebinding to a new array; on-disk XML output is unchanged. - **`sv.Precision` and `sv.F1Score` correctly count background false positives** (#2331) Predictions on images with no ground-truth objects, and predictions of classes absent from any annotation, were previously ignored. Under `MICRO` and `MACRO` averaging they are now counted as false positive

  2. supervision-0.29.0.post0.29.0.post0Jun 17, 202623 downloads

    **Full Changelog**: https://github.com/roboflow/supervision/compare/0.29.0...0.29.0.post0

  3. supervision-0.29.00.29.0Jun 15, 202616 downloads

    ## ๐Ÿš€ Added - Added [`sv.VertexEllipseAreaAnnotator`](https://supervision.roboflow.com/0.29.0/keypoint/annotators/#supervision.key_points.annotators.VertexEllipseAreaAnnotator), [`sv.VertexEllipseOutlineAnnotator`](https://supervision.roboflow.com/0.29.0/keypoint/annotators/#supervision.key_points.annotators.VertexEllipseOutlineAnnotator), and [`sv.VertexEllipseHaloAnnotator`](https://supervision.roboflow.com/0.29.0/keypoint/annotators/#supervision.key_points.annotators.VertexEllipseHaloAnnotator) for visualizing keypoint uncertainty as covariance ellipses. ([#2277](https://github.com/roboflow/supervision/pull/2277), [#2286](https://github.com/roboflow/supervision/pull/2286)) ```python import cv2 import supervision as sv from rfdetr import RFDETRKeypointPreview image = cv2.imread("<SOURCE_IMAGE_PATH>") model = RFDETRKeypointPreview() key_points = model.predict(image) annotator = sv.VertexEllipseAreaAnnotator( sigma=[1.0, 2.0, 3.0], color=[sv.Color.GREEN, sv.Color.YELLOW, sv.Color.RED], opacity=0.4, ) annotated = annotator.annotate(image.copy(), key_points) ``` https://github.com/user

  4. [RC] supervision0.29.0rc0Jun 11, 2026pre-release21 downloads

    **Full Changelog**: https://github.com/roboflow/supervision/compare/0.28.0...0.29.0rc0

  5. supervision-0.28.00.28.0Apr 30, 2026144 downloads

    ## ๐Ÿ”ฆ Spotlight ### Memory-efficient masks with `sv.CompactMask` Segmentation models produce one full-resolution bitmap per instance. On a 1920ร—1080 image with 28 detections that is **~55 MB** of mask data. Most pixels are background. `sv.CompactMask` stores only the tight bounding-box crop, RLE-encoded โ€” the same 28 masks drop to **~237 KB** of crops, a **240ร— reduction** before RLE kicks in. It's a drop-in replacement: annotators, filters, and `area` all work unchanged. <img width="1185" height="697" alt="supervision-sam3" src="https://github.com/user-attachments/assets/ed6483c0-bf2e-4b1f-bbe2-a32c4e1a002b" /> ```python import supervision as sv # any segmentation model โ€” RF-DETR Seg, YOLO-Seg, SAM3 detections = model.predict(image) # sv.Detections with dense masks dense_mb = detections.mask.nbytes / 1024 / 1024 compact = sv.CompactMask.from_dense( masks=detections.mask, xyxy=detections.xyxy, image_shape=image.shape[:2], ) detections.mask = compact # swap in โ€” API unchanged # filter by pixel area without materialising dense masks large = detections[compact.area > 1000] # annotators call .to_dense() internally annotated = sv.MaskAn

Code frequency

additions and deletions
+50.3K-50.3KWeek of 2025-08-03: +775 linesWeek of 2025-08-03: -1,064 linesWeek of 2025-08-10: +0 linesWeek of 2025-08-10: -0 linesWeek of 2025-08-17: +0 linesWeek of 2025-08-17: -0 linesWeek of 2025-08-24: +0 linesWeek of 2025-08-24: -0 linesWeek of 2025-08-31: +0 linesWeek of 2025-08-31: -0 linesWeek of 2025-09-07: +3 linesWeek of 2025-09-07: -3 linesWeek of 2025-09-14: +0 linesWeek of 2025-09-14: -0 linesWeek of 2025-09-21: +1 linesWeek of 2025-09-21: -2 linesWeek of 2025-09-28: +2 linesWeek of 2025-09-28: -1 linesWeek of 2025-10-05: +0 linesWeek of 2025-10-05: -0 linesWeek of 2025-10-12: +1 linesWeek of 2025-10-12: -1 linesWeek of 2025-10-19: +0 linesWeek of 2025-10-19: -0 linesWeek of 2025-10-26: +369 linesWeek of 2025-10-26: -6 linesWeek of 2025-11-02: +909 linesWeek of 2025-11-02: -294 linesWeek of 2025-11-09: +1,805 linesWeek of 2025-11-09: -1,004 linesWeek of 2025-11-16: +108 linesWeek of 2025-11-16: -55 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: +0 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: +65 linesWeek of 2026-01-04: -29 linesWeek of 2026-01-11: +1,051 linesWeek of 2026-01-11: -891 linesWeek of 2026-01-18: +562 linesWeek of 2026-01-18: -86 linesWeek of 2026-01-25: +2,942 linesWeek of 2026-01-25: -902 linesWeek of 2026-02-01: +50,303 linesWeek of 2026-02-01: -46,494 linesWeek of 2026-02-08: +3,409 linesWeek of 2026-02-08: -1,202 linesWeek of 2026-02-15: +1,055 linesWeek of 2026-02-15: -137 linesWeek of 2026-02-22: +115 linesWeek of 2026-02-22: -4 linesWeek of 2026-03-01: +9 linesWeek of 2026-03-01: -9 linesWeek of 2026-03-08: +1,349 linesWeek of 2026-03-08: -1,079 linesWeek of 2026-03-15: +6 linesWeek of 2026-03-15: -7 linesWeek of 2026-03-22: +13 linesWeek of 2026-03-22: -13 linesWeek of 2026-03-29: +1,434 linesWeek of 2026-03-29: -75 linesWeek of 2026-04-05: +3 linesWeek of 2026-04-05: -3 linesWeek of 2026-04-12: +6,773 linesWeek of 2026-04-12: -686 linesWeek of 2026-04-19: +3,458 linesWeek of 2026-04-19: -334 linesWeek of 2026-04-26: +1,367 linesWeek of 2026-04-26: -592 linesWeek of 2026-05-03: +0 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +9 linesWeek of 2026-05-10: -9 linesWeek of 2026-05-17: +1,318 linesWeek of 2026-05-17: -401 linesWeek of 2026-05-24: +1,280 linesWeek of 2026-05-24: -36 linesWeek of 2026-05-31: +1,526 linesWeek of 2026-05-31: -1,057 linesWeek of 2026-06-07: +4,419 linesWeek of 2026-06-07: -1,755 linesWeek of 2026-06-14: +4,393 linesWeek of 2026-06-14: -580 linesWeek of 2026-06-21: +5,589 linesWeek of 2026-06-21: -685 linesWeek of 2026-06-28: +10,221 linesWeek of 2026-06-28: -3,026 linesWeek of 2026-07-05: +6,931 linesWeek of 2026-07-05: -1,007 linesWeek of 2026-07-12: +12,108 linesWeek of 2026-07-12: -6,222 linesWeek of 2026-07-19: +3,189 linesWeek of 2026-07-19: -1,246 linesWeek of 2026-07-26: +803 linesWeek of 2026-07-26: -285 linesAug 3, 2025Jul 26, 2026
+129.7K lines added, -71.3K removed over the last year.

Commits per week

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

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 โ€” 0 commitsSun 1:00 โ€” 4 commitsSun 2:00 โ€” 1 commitsSun 3:00 โ€” 4 commitsSun 4:00 โ€” 1 commitsSun 5:00 โ€” 1 commitsSun 6:00 โ€” 0 commitsSun 7:00 โ€” 2 commitsSun 8:00 โ€” 0 commitsSun 9:00 โ€” 1 commitsSun 10:00 โ€” 1 commitsSun 11:00 โ€” 10 commitsSun 12:00 โ€” 5 commitsSun 13:00 โ€” 13 commitsSun 14:00 โ€” 3 commitsSun 15:00 โ€” 4 commitsSun 16:00 โ€” 7 commitsSun 17:00 โ€” 7 commitsSun 18:00 โ€” 3 commitsSun 19:00 โ€” 6 commitsSun 20:00 โ€” 10 commitsSun 21:00 โ€” 4 commitsSun 22:00 โ€” 10 commitsSun 23:00 โ€” 16 commitsMon 0:00 โ€” 70 commitsMon 1:00 โ€” 50 commitsMon 2:00 โ€” 1 commitsMon 3:00 โ€” 1 commitsMon 4:00 โ€” 1 commitsMon 5:00 โ€” 1 commitsMon 6:00 โ€” 6 commitsMon 7:00 โ€” 7 commitsMon 8:00 โ€” 24 commitsMon 9:00 โ€” 35 commitsMon 10:00 โ€” 23 commitsMon 11:00 โ€” 31 commitsMon 12:00 โ€” 33 commitsMon 13:00 โ€” 54 commitsMon 14:00 โ€” 51 commitsMon 15:00 โ€” 52 commitsMon 16:00 โ€” 48 commitsMon 17:00 โ€” 103 commitsMon 18:00 โ€” 30 commitsMon 19:00 โ€” 37 commitsMon 20:00 โ€” 40 commitsMon 21:00 โ€” 32 commitsMon 22:00 โ€” 30 commitsMon 23:00 โ€” 26 commitsTue 0:00 โ€” 35 commitsTue 1:00 โ€” 19 commitsTue 2:00 โ€” 9 commitsTue 3:00 โ€” 4 commitsTue 4:00 โ€” 6 commitsTue 5:00 โ€” 6 commitsTue 6:00 โ€” 0 commitsTue 7:00 โ€” 6 commitsTue 8:00 โ€” 14 commitsTue 9:00 โ€” 16 commitsTue 10:00 โ€” 33 commitsTue 11:00 โ€” 40 commitsTue 12:00 โ€” 55 commitsTue 13:00 โ€” 60 commitsTue 14:00 โ€” 50 commitsTue 15:00 โ€” 60 commitsTue 16:00 โ€” 60 commitsTue 17:00 โ€” 53 commitsTue 18:00 โ€” 24 commitsTue 19:00 โ€” 26 commitsTue 20:00 โ€” 25 commitsTue 21:00 โ€” 42 commitsTue 22:00 โ€” 28 commitsTue 23:00 โ€” 26 commitsWed 0:00 โ€” 52 commitsWed 1:00 โ€” 20 commitsWed 2:00 โ€” 12 commitsWed 3:00 โ€” 4 commitsWed 4:00 โ€” 1 commitsWed 5:00 โ€” 1 commitsWed 6:00 โ€” 7 commitsWed 7:00 โ€” 6 commitsWed 8:00 โ€” 18 commitsWed 9:00 โ€” 35 commitsWed 10:00 โ€” 38 commitsWed 11:00 โ€” 37 commitsWed 12:00 โ€” 51 commitsWed 13:00 โ€” 47 commitsWed 14:00 โ€” 57 commitsWed 15:00 โ€” 80 commitsWed 16:00 โ€” 51 commitsWed 17:00 โ€” 42 commitsWed 18:00 โ€” 44 commitsWed 19:00 โ€” 44 commitsWed 20:00 โ€” 45 commitsWed 21:00 โ€” 33 commitsWed 22:00 โ€” 34 commitsWed 23:00 โ€” 40 commitsThu 0:00 โ€” 62 commitsThu 1:00 โ€” 20 commitsThu 2:00 โ€” 12 commitsThu 3:00 โ€” 5 commitsThu 4:00 โ€” 2 commitsThu 5:00 โ€” 1 commitsThu 6:00 โ€” 3 commitsThu 7:00 โ€” 8 commitsThu 8:00 โ€” 8 commitsThu 9:00 โ€” 29 commitsThu 10:00 โ€” 29 commitsThu 11:00 โ€” 21 commitsThu 12:00 โ€” 42 commitsThu 13:00 โ€” 52 commitsThu 14:00 โ€” 48 commitsThu 15:00 โ€” 63 commitsThu 16:00 โ€” 35 commitsThu 17:00 โ€” 47 commitsThu 18:00 โ€” 37 commitsThu 19:00 โ€” 26 commitsThu 20:00 โ€” 30 commitsThu 21:00 โ€” 24 commitsThu 22:00 โ€” 35 commitsThu 23:00 โ€” 28 commitsFri 0:00 โ€” 57 commitsFri 1:00 โ€” 42 commitsFri 2:00 โ€” 11 commitsFri 3:00 โ€” 2 commitsFri 4:00 โ€” 4 commitsFri 5:00 โ€” 1 commitsFri 6:00 โ€” 0 commitsFri 7:00 โ€” 6 commitsFri 8:00 โ€” 4 commitsFri 9:00 โ€” 27 commitsFri 10:00 โ€” 27 commitsFri 11:00 โ€” 29 commitsFri 12:00 โ€” 28 commitsFri 13:00 โ€” 27 commitsFri 14:00 โ€” 36 commitsFri 15:00 โ€” 37 commitsFri 16:00 โ€” 39 commitsFri 17:00 โ€” 32 commitsFri 18:00 โ€” 39 commitsFri 19:00 โ€” 19 commitsFri 20:00 โ€” 29 commitsFri 21:00 โ€” 19 commitsFri 22:00 โ€” 31 commitsFri 23:00 โ€” 11 commitsSat 0:00 โ€” 12 commitsSat 1:00 โ€” 12 commitsSat 2:00 โ€” 5 commitsSat 3:00 โ€” 5 commitsSat 4:00 โ€” 0 commitsSat 5:00 โ€” 1 commitsSat 6:00 โ€” 1 commitsSat 7:00 โ€” 5 commitsSat 8:00 โ€” 2 commitsSat 9:00 โ€” 3 commitsSat 10:00 โ€” 10 commitsSat 11:00 โ€” 4 commitsSat 12:00 โ€” 4 commitsSat 13:00 โ€” 7 commitsSat 14:00 โ€” 5 commitsSat 15:00 โ€” 4 commitsSat 16:00 โ€” 6 commitsSat 17:00 โ€” 10 commitsSat 18:00 โ€” 12 commitsSat 19:00 โ€” 7 commitsSat 20:00 โ€” 6 commitsSat 21:00 โ€” 9 commitsSat 22:00 โ€” 9 commitsSat 23:00 โ€” 8 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Aug 7, 2026daily#8+146
Aug 6, 2026daily#8+146
Jun 9, 2026daily#24+17
Jun 8, 2026daily#12+43
Jun 7, 2026daily#5+128