Make it yours.
Your colors, your shape, your stats, set in your type.
GitHub, in a different light
3,591 contributions in the last year
Your colors, your shape, your stats, set in your type.
What you see is what you copy, year picker and stats included.
Public contribution counts. No GitHub login or token.
Ready-made looks
Finished designs, ready to paste.
Pick a palette, then copy the code.
Profile page
2DThe familiar calendar, with a year picker.
Portfolio
2DOffset hexagons with mono stats.
Personal site
2DSoft dots over four stat cards.
Landing page
3DYour year as a lit skyline.
Team dashboard
3DBusier days stack taller bricks.
Minimal
2DHollow rings. No labels, just rhythm.
Analytics
2DEvery day shows its own count.
Résumé
2DDiamond cells with a divided stat row.
Year in review
3DRound columns rise from the floor.
Changelog
2DSlender bars, month labels only.
Built to be borrowed
Install heatmap-ui, copy the component into your project, and pass a username. The copied source carries every setting from the preview, and brings its own year picker, so there is nothing else to build.
github-activity.tsxHave your own data? Pass daily counts to the exported GithubActivity view instead.
npm i @thilakbhat/heatmap-uiimport GithubProfile from "./github-activity";
export default function Profile() {
return <GithubProfile username="tb962" />;
}The graph, explained
A contribution graph is a calendar heatmap of public GitHub activity: one cell for each day, one column for each week, and a colour that deepens as the count rises. Commits to a default branch, issues, pull requests and discussions you open, and pull request reviews all count toward a day.
This generator reads the public calendar for any username, draws it with heatmap-ui, and gives you the React component. The graph is plain SVG, so it stays sharp at any size and follows your light or dark theme.
Switch between the last 12 months and any calendar year since the account began. Each view recalculates its totals, streaks, and best day for exactly the dates on screen.
Four numbers, defined
Every figure covers the period on screen, so switching years changes the numbers with the graph.
Under the hood
The same component on this page is the one you copy. Nothing is simplified for the demo.
Built on heatmap-ui 0.3.0 fitted weeks. Wide layouts show the whole year; narrow ones drop the oldest weeks first, and phones scroll from the newest.
Skyline, Lego, blocks, cylinders, and bars. Drag or use the keyboard to orbit. No WebGL, no canvas, nothing to configure.
The copied component needs only React and heatmap-ui. The year selector, the stats, and the data fetch all live in the same file.
Tooltips on every day, a keyboard-friendly year selector, labelled stats, and motion that respects reduced-motion settings.
A few more details
About the data, the component, and where it fits.
No. This browser preview reads public contribution counts from a public, cached contribution endpoint. It never asks for a GitHub login or token.
The browser preview can only show the public contribution calendar available for a profile. Private contribution details are not exposed to an unauthenticated public widget.
Install heatmap-ui, copy the component with your chosen settings, and render GithubProfile with a username. If you already have daily counts from your own backend, pass them to the exported GithubActivity view instead.
Yes. The component has its own year selector, listing the last 12 months and every calendar year with public activity. Totals, streaks, and the best day recalculate for the year on screen. To hide the selector, set year to false in the DISPLAY line at the top of the copied file.
Every setting is a single line at the top of github-activity.tsx: COLORS, MODE (2D or 3D), SHAPE, BLOCKS, STATS, FONT, TINT, and DISPLAY. Change a line and the graph restyles. There is no configuration file or theme provider to set up.
Yes. The file is a client component, marked with "use client", so it drops into the Next.js App Router, Vite, Remix, or any app on React 18.2 or later. It fetches in the browser. To fetch on the server instead, load the counts there and pass them to GithubActivity.
It fits its container. On a wide page it shows the full year; in a narrower column it shows as many recent weeks as fit, dropping the oldest first. On a phone it keeps at least half a year and scrolls from the latest week, with the weekday labels held still.
Each day is the date GitHub reports for the contribution. The component stops at today in the viewer's time zone, so a year that is still under way never shows empty future days.
Yes. heatmap-ui is open source under the MIT license, and the copied component is yours to change and ship.
More than a contribution graph.
Explore all heatmap patterns