wiltodelta/remove-ai-watermarksPublic

AI watermark remover. CLI and Python library to strip visible and invisible AI watermarks (Gemini / Nano Banana sparkle, SynthID) and provenance metadata (C2PA, EXIF, IPTC) from images.

AI summary: A CLI and Python library to strip both visible and invisible AI watermarks from images.

Stars
4.5K
+30 today
Forks
415
Watchers
10
Open issues
1
Open PRs
1
Contributors
~7
Commits
358
Branches
4

PythonApache-2.0Created Mar 25, 2026Last push 1d agoLatest release v0.21.1+114 stars this week+114 this month

Star history

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

Signals and awards

derived from tracked data
  • Actively maintained

    Pushed within 48 hours

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What remove-ai-watermarks does

This tool provides a comprehensive suite to detect and remove provenance signals from AI-generated images. It can strip standard AI metadata (like C2PA, EXIF, and IPTC), remove known visible labels (such as the Gemini sparkle), and most notably, disrupt invisible pixel-level watermarks (like SynthID) by regenerating the image through a diffusion model. Designed for local execution, it ensures users retain full control over the provenance data attached to the content they generate.

AI artists, researchers, and users who generate images locally and want to manage their own content provenance.

  • Metadata stripping: Removes C2PA, EXIF, XMP, and IPTC provenance data embedded in image files.
  • Visible mark removal: Targets and erases known visual indicators like vendor text or sparkles.
  • Invisible watermark disruption: Uses local diffusion models to regenerate images, destroying pixel-level steganography.
  • Command-line interface: Provides simple CLI commands (identify, visible, erase, invisible) for automated workflows.

Where teams use it

Provenance scrubbing

Removing C2PA metadata from locally generated images before sharing them online.

Watermark disruption

Running an image through a diffusion pass to eliminate invisible tracking pixels.

Image identification

Scanning local files to detect what AI metadata or watermarks they currently contain.

Getting started: Install via pip and run the `identify` command on a target image.

README

main branch

Remove AI Watermarks

Remove AI provenance marks from images you generated yourself:

  • known visible labels such as the Gemini sparkle and vendor text marks;
  • invisible pixel watermarks through diffusion regeneration;
  • C2PA, EXIF, XMP, IPTC, and related AI metadata.

Try it online at raiw.cc if you do not want to install Python or run diffusion models locally.

PyPI Python Downloads License Tests Sponsor

This project is for lawful use on content you own. It does not target stock agency previews or other watermarks that protect third party paid content. See scope, safety, and legal notes.

Choose what you want to do

Goal Command GPU
Find provenance signals and watermarks identify No
Remove known visible AI marks visible No
Erase a region you select erase No
Strip AI metadata metadata No
Regenerate an image to disrupt invisible watermarks invisible Recommended
Run visible, invisible, and metadata removal all Recommended
Process a directory batch Depends on mode

Quick start

Install the core CLI:

uv tool install remove-ai-watermarks

Inspect an image:

remove-ai-watermarks identify image.png

Remove a known visible mark and AI metadata:

remove-ai-watermarks visible image.png -o clean.png

Strip metadata without running visible inpainting or diffusion:

remove-ai-watermarks metadata image.png --remove -o clean.png

For invisible watermark removal, install the diffusion dependencies:

uv tool install --force "remove-ai-watermarks[gpu]"
remove-ai-watermarks invisible image.png -o clean.png

If the local detectors cannot confirm an invisible watermark but you know the image came from an AI generator, add --force:

remove-ai-watermarks invisible image.png -o clean.png --force

See the installation guide for Homebrew, uv, optional features, and development setup.

Examples

Visible Gemini mark

Before After
Image with a visible Gemini watermark Image after visible watermark removal

High quality invisible removal

The qwen-zimage profile is the highest fidelity option for face heavy images. It is CUDA only and uses a much larger model stack than the default ControlNet profile.

uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png \
  --pipeline qwen-zimage --force
OpenAI example before OpenAI example after
OpenAI portrait grid before qwen-zimage OpenAI portrait grid after qwen-zimage
Gemini example before Gemini example after
Gemini sign before qwen-zimage Gemini sign after qwen-zimage

These exact output files were checked with the matching provider verifiers. That result applies to these files, not to every seed, image, or future watermark version.

Common recipes

Remove every detected visible mark

remove-ai-watermarks visible image.png -o clean.png

The default --mark auto checks all registered visible marks and removes every match. If the mark is visible to you but the detector misses it, select its region explicitly:

remove-ai-watermarks erase image.png \
  --region 1640,1930,400,100 \
  -o clean.png

--region uses x,y,width,height and may be repeated.

Use a learned fill backend

The core install uses OpenCV inpainting when no learned backend is installed. For more difficult backgrounds:

uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
uv tool install --force "remove-ai-watermarks[lama]"
remove-ai-watermarks visible image.png -o clean.png --backend lama

Reduce CUDA memory use

remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force

CPU offload lowers CUDA memory pressure by moving model components between CPU and GPU. It is slower and has no effect on CPU or MPS.

Process a directory

remove-ai-watermarks batch ./images --mode visible
remove-ai-watermarks batch ./images --mode all

What the tool can recognize

Visible mark support includes:

  • Google Gemini and Nano Banana sparkle;
  • Doubao, Jimeng, Qwen, Kling, Baidu, LibLibAI, and RunningHub labels;
  • one calibrated Samsung Galaxy AI label variant.

Metadata and provenance inspection covers C2PA, EXIF, XMP, IPTC, common generator parameters, China TC260 AIGC labels, and several vendor specific signals. Optional decoders add support for open DWT-DCT watermarks and Adobe TrustMark.

The exact support matrix, including important locale and detector limits, lives in supported signals.

How it works

Visible removal follows three steps:

  1. Detect a registered mark in its expected area.
  2. Build a mask around the mark.
  3. Fill only the masked region with OpenCV, MI-GAN, or LaMa.

Metadata removal uses format aware stripping. JPEG metadata removal preserves the encoded image scan instead of recompressing it. Other supported containers use their corresponding metadata path.

Invisible removal is different. It regenerates the image through a diffusion pipeline to disrupt pixel and frequency domain watermarks. This changes the image and cannot guarantee that a proprietary verifier will reject every output.

See supported signals and known limitations for the full technical boundary.

Python API

import remove_ai_watermarks as raiw

result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)

The high level API accepts a file path or a BGR NumPy array. For path inputs it also reads provenance metadata, preserves alpha, and can strip AI metadata from the written result.

See the Python API guide for visible removal, provenance inspection, metadata stripping, and diffusion usage.

ComfyUI

The separate ComfyUI Remove AI Watermarks package provides nodes for visible removal, detection, region erasing, and invisible removal.

Important limitations

  • A missing local signal means unknown, not clean. Proprietary pixel watermarks may remain after metadata has been stripped.
  • Visible removal reconstructs a small region. Results depend on the background and selected fill backend.
  • Invisible removal changes the whole image and may alter faces, text, or fine detail.
  • qwen-zimage requires CUDA. The other diffusion profiles also support the devices listed by remove-ai-watermarks invisible --help.
  • Provider watermark systems can change. Validate important outputs with the provider's own verifier when one is available.

Documentation

Start with the documentation index.

Research notes and historical experiments are listed separately in the documentation index. They explain past decisions but do not define the current public API.

Contributing

Install the development environment and run the project gate:

uv sync --frozen --extra dev
bash maintain.sh

See module internals before changing a subsystem with documented invariants.

License

Apache 2.0. Copyright 2025-2026 wiltodelta.

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

61 total
  1. remove-ai-watermarks 0.21.1v0.21.1Jul 29, 2026

    **Full Changelog**: https://github.com/wiltodelta/remove-ai-watermarks/compare/v0.21.0...v0.21.1

  2. v0.21.0v0.21.0Jul 29, 2026

    Separate provenance metadata extraction from detection. - Add `ProvenanceEvidence` and `extract_provenance_evidence()`. - Add metadata-only `identify_from_evidence()` without source-file reads. - Preserve the existing path-based `identify()` API and pixel-backed checks.

  3. v0.20.2v0.20.2Jul 28, 2026

    Fix verified AI metadata stripping for malformed but raster-decodable images. When markers survive the first pass, the library now normalizes the decoded raster and verifies the output again. Includes regression coverage for recoverable and truly undecodable inputs.

  4. v0.20.1v0.20.1Jul 26, 2026

    ## What changed - Improve Qwen Z-Image face fidelity by calibrating face denoise for the DiffSynth runtime. - Preserve SynthID removal on the exact OpenAI and Gemini provider-oracle candidates. - Add regression coverage and document the calibrated face-stage behavior.

  5. v0.20.0v0.20.0Jul 26, 2026

    ## What's new - Add the high-fidelity Qwen Z-Image two-stage removal pipeline. - Add CPU offload controls for lower CUDA VRAM usage. - Add Tencent Yuanbao visible watermark removal. - Validate metadata removal in the full pipeline instead of reporting an unverified strip. - Update dependencies and reorganize documentation, assets, and test data. **Full changelog:** https://github.com/wiltodelta/remove-ai-watermarks/compare/v0.19.0...v0.20.0

Commits per week

last 52 weeks
810Week of 2025-08-03: 0 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: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 20 commitsWeek of 2026-03-29: 8 commitsWeek of 2026-04-05: 1 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 2 commitsWeek of 2026-04-26: 1 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 2 commitsWeek of 2026-05-17: 7 commitsWeek of 2026-05-24: 81 commitsWeek of 2026-05-31: 47 commitsWeek of 2026-06-07: 59 commitsWeek of 2026-06-14: 30 commitsWeek of 2026-06-21: 14 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 15 commitsWeek of 2026-07-12: 14 commitsWeek of 2026-07-19: 34 commitsWeek of 2026-07-26: 10 commitsAug 3, 2025Jul 26, 2026
345 commits in the last 52 weeks.

When work happens

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

Who is committing

last 52 weeks
Maintainer commits338 (95%)
Community commits17 (5%)

355 commits in total over the last year.

DateListRankStars gained
May 22, 2026daily#23+43
  • public-apis/public-apis

    A collective list of free APIs

    454.9K stars · Python

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    362.2K stars · Python