The author of Contribution Painter has now permanently added serious attribution in both their README.md
and their tool's live demo footer, admitting fault. They've also removed their license file. Thus, this issue has been resolved in good faith. Ergo, I've gone through and redacted identifying information from this blog post, including links, screenshots, names, and more.
While the implementation code differs a lot, the user interface, layout, and functionality appear to have been directly copied from my original project with minimal alterations.
Over the years, I’ve encountered several copycats across my projects. However, this instance was particularly frustrating: a user copied my most-starred GitHub repository, and I had no prior connection to them.
Exactly one month ago, on April 18th, 2025 at 12:45:24 UTC, GitHub user [REDACTED: user] viewed and tested my GitHub Painter tool — multiple times, in fact:
This screenshot is from my automated GitHub Painter analytics, which periodically emails me usage data from the published web version.
Despite the bulk of GitHub Painter being built in a single evening, the project has been live for nearly two years (first commit on June 4, 2023; published online soon after). It currently has 126 GitHub stars, 6 forks, has been viewed/used thousands of times, and has contributions from three others, so it’s reasonably well-known and receives regular use:
Just three days later, on April 21st, [REDACTED: user] made their first commit to [REDACTED: repo].
It seems clear that [REDACTED: user] blatantly copied my project. Before breaking down the details, here’s a comparison of both tools:
My GitHub Painter:
Their tool:
Notably, my GitHub Painter never included a LICENSE.md
file. In open source, no license means no rights granted , so any copying is problematic.
Although their project is now called "Contribution Painter," their Git commit history ([REDACTED: repo commit reference showing they copied my name]) shows they originally copied my project’s name exactly, only changing it later to obscure the connection:
Here are my GitHub Painter’s instructions:
And here are theirs:
The similarities are undeniable. Point #1 and #5 are copied verbatim, and the rest are nearly identical. The differences are superficial: I use "->" for arrows, they use "→"; I write "Click," they write "Klik"; I say "Select year," they say "Select the year you want to use." Even the script is named identically in point #6: github_painter.sh
. The minor code differences are negligible — akin to calling something "big" versus "huge." Functionally, they are the same.
Here’s a diff checker comparison for reference:
My buttons:
Their buttons:
All six buttons are copied. For example, both apps have "Clear board (esc)" and "Download script →" — even the arrow is the same. Both have:
While the exact hex codes slightly differ, the colors are extremely similar.
My color selector buttons:
Their color selector buttons:
They copied everything: the white border for the selected color, the color names, and even the keybinds. On both apps, users can press "space", "a", "s", "d", "f", or "escape" for the same actions (painting your Contribution Graph or clearing it). There’s no originality here.
My project’s URL and year selector:
Their tool:
The phrasing "Enter repo URL" is identical, and the layout is nearly the same. Additionally, both apps use a native picker menu for the year selection:
Beyond the UI, the functionality is also copied. For example, when an invalid URL is entered, my app shows this alert:
Their app does the same:
It's also notable that both alerts trigger under the same circumstances: clicking "Download script →" with an invalid URL.
The programmatic similarities continue. When generating the script, my tool runs:
echo 'GENERATING ART...'
Their app runs:
echo 'GENERATING ART...'
To create a temporary directory, my tool uses:
mkdir github_painter
cd github_painter
Their app does the same, using the same directory name:
mkdir github_painter
cd github_painter
Note that using the same directory name is crazy. The directory could be named just about anything!
For reference, this occurs [REDACTED: reference to specific line of code in their repo] in their code and here in mine, if you want to check for yourself.
Perhaps the most telling sign is the overall page layout. Aside from my top banner, every design element is in the same place in both apps. Despite already showing these screenshots, here they are again to emphasize the similarities:
My GitHub Painter:
Their tool:
Until now, I never included a license (typically a LICENSE.md
file on GitHub) specifying how others could use my project, code, or ideas. Despite this, after copying my project, they suddenly added their own license! Depending on how much you believe they copied, this essentially means they’re licensing my work.
Specifically, they added an MIT license ([REDACTED: link to their repo's license]) — a highly permissive open-source license:
Looking at their project structure — just a single script and a single stylesheet — and the awkward comment style scattered throughout their repo ([REDACTED: repo link]), it’s pretty clear what happened: they found my app, saw that it worked well and looked polished, then downloaded it (not even forked!), fed it to an LLM, and said something like, “recreate this for my portfolio — keep everything basically the same, just tweak it enough to avoid getting caught.”
They claim no LLM was used and asked me to remove this paragraph above, specifically.
So… what now?
Is what [REDACTED: user] did acceptable? Do they really deserve their 10 GitHub stars and 2 forks for work that’s, frankly, mine in all but syntax? Should they have at least asked first — or at the very least, credited me? Was it okay for them to slap their own MIT license onto what is clearly a reimplementation of an unlicensed, copyrighted project?
Even if the code isn’t 1:1 — or really even close to it (despite the obvious, many indications of copying), does that matter when everything else — the UI, layout, flow, behavior, even the button names and keybinds — is nearly indistinguishable?
I don’t know. But it doesn’t sit right.
I've only conducted a preliminary analysis, yet the evidence of copying is overwhelming. Undoubtedly, I'm sure a more thorough investigation would reveal additional similarities and borrowed elements throughout the codebase and functionality.
I respect taking inspiration from others' work — that's a huge part of how open source and creativity thrive. But at some point, it crosses a line. Is this too far? I'm genuinely not sure.
Sigh.
Do better, [REDACTED: their name] ([REDACTED: user]).
NOTE: To the best of my understanding, everything I wrote is factually correct, however, if I made a mistake, please let me know. I’m happy to correct it. I’m not trying to be mean or rude, just sharing my experience and thoughts on the situation.