explaingit

gelstudios/gitfiti

8,429PythonAudience · developerComplexity · 1/5LicenseSetup · easy

TLDR

gitfiti is a Python script that draws pixel art on your GitHub profile's contribution calendar by making backdated commits in a pattern you choose.

Mindmap

mindmap
  root((gitfiti))
    What it does
      Draw pixel art on GitHub calendar
      Backdated commits
      Script generator
    Templates
      Built-in images
      Custom text grid
      0 to 4 shading
    How to use
      Run Python script
      Answer prompts
      Run generated script
    Cleanup
      Delete the repository
      Wait for calendar update
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Paint a pixel-art image (cat, mushroom, GitHub mascot) onto your GitHub contribution calendar to personalise your profile.

USE CASE 2

Write a custom pixel-art template using a text grid of numbers 0, 4 and render it on your GitHub calendar.

USE CASE 3

Generate a Mac/Linux shell script or Windows PowerShell script that automates the backdated commits for any image template.

Tech stack

Python

Getting it running

Difficulty · easy Time to first run · 30min

Requires a fresh dedicated GitHub repository, using an existing repo will replace its commit history.

Use, copy, modify, and distribute freely for any purpose, including commercial, as long as you keep the copyright notice.

In plain English

gitfiti is a Python script that draws pixel art on the GitHub contribution calendar, the green-square grid shown on every GitHub profile page. That calendar normally reflects how many commits a user made on each day. gitfiti exploits a feature of the git version control system that allows commits to carry any date in the past, and uses it to place commits on specific days in a deliberate pattern, forming images in the grid. The way it works is straightforward. You run the script, answer a few prompts for your GitHub username, the name of a fresh repository, and which image you want to paint. The tool then generates a shell script (for Mac and Linux) or a PowerShell script (for Windows). Running that generated script makes a flood of backdated commits and pushes them to your repository. The squares on your calendar update to reflect those commits, forming the image. The project notes that you should expect to wait a day or two before the pattern shows up, since GitHub updates the calendar on a delay. Several pixel-art images are bundled with the project, including a cat, a mushroom from old video games, and the GitHub mascot. You can also write your own templates using a simple text format: a grid of numbers from 0 to 4, where 0 is blank and 4 is the darkest green, matching the shading the calendar uses. If you change your mind, removing the art is done by deleting the repository you used for it and waiting for GitHub to update the calendar. The README explicitly recommends creating a new, separate repository for this purpose rather than using an existing one, since the process replaces the commit history. The project is licensed under MIT and has inspired a number of derivative tools that offer web-based drawing interfaces for designing templates visually.

Copy-paste prompts

Prompt 1
I want to paint a custom logo on my GitHub contribution calendar using gitfiti. Show me the text template format (grid of 0, 4 values) I need to create, and walk me through running the script to generate the commit script.
Prompt 2
Explain exactly what gitfiti does under the hood, how does it use git to place commits on past dates, and why does GitHub show them on the calendar?
Prompt 3
I already ran gitfiti and want to remove the pixel art. Walk me through the steps to clean up my contribution calendar.
Prompt 4
I want to create a gitfiti template that spells my initials in 5x7 block letters. Write the 0, 4 grid for the letters 'AB'.
Prompt 5
gitfiti generates a shell script. Can I modify that script to spread commits more randomly within each day so the calendar looks more natural?
Open on GitHub → Explain another repo

← gelstudios on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.