Skip to content
GitHub-Style Year Heatmap

Interactive Calendar Heatmaps

To visualise activity across a year, paste a list of ISO-format dates (yyyy-mm-dd) and the widget renders a 53×7 grid of intensity-bucketed squares — one per day, just like the GitHub contribution graph. Hover for date and count, switch years freely, export as CSV.

Year

2026

Unique Days

0

Longest Streak

0d

Total Events

0

Quick Conversion

Formula: weekly = days_per_year / 52

Year Heatmap

2026 Activity Heatmap — 371 cells
A 53-column by 7-row grid of squares representing each day of the year 2026. Cell color intensity reflects the event count on that day, with 5 buckets from empty (dark slate) to high activity (bright emerald).JanFebMarAprMayJunJulAugSepOctNovDecMonWedFri
LessMore

yyyy-mm-dd per line. Add `,N` for count. Duplicates also count.

Quick-Pick Years

Activity-Day to Heatmap Coverage

Active Days / Year% of YearPer WeekPattern
123.3%0.23Monthly habit
267.1%0.50Bi-weekly
5214.2%1.00Weekly
10027.4%1.92Every 3-4 days
15642.7%3.003×/week
20054.8%3.85Most weekdays
25068.5%4.81Working days only
26071.2%5.00Workdays full year
30082.2%5.77Near-daily with breaks
35095.9%6.73Almost daily
365100.0%7.02Every single day

Want to count weekdays only? Try Weekdays Between Dates.

The Bucket Formula

bucket(c) = ⌊4 × c / max(1, max_count)⌋ ∈ {0, 1, 2, 3, 4}cell color = palette[bucket] palette = [empty, light, medium-light, medium, high]

Worked: a dataset with maximum daily count = 8. A day with count = 3 maps to bucket ⌊4×3/8⌋ = 1 (light). A day with count = 6 maps to bucket ⌊4×6/8⌋ = 3 (medium). A day with count = 8 maps to bucket 4 (high). GitHub uses a slightly tweaked palette with mid-emerald hex codes — we match the color ramp from #1f2937 (empty) to #34d399 (high).

Saved Snapshots

No saved snapshots yet. Tap "Save Snapshot" after pasting data.

How to Build a Calendar Heatmap

  1. Pick the year you want to visualise. Year picker accepts 1900-2099.
  2. Paste ISO dates (yyyy-mm-dd) into the textarea, one per line. Add a comma + count for weighted entries.
  3. Click Apply. The heatmap recomputes with relative intensity buckets.
  4. Hover any cell to see the date and count in the tooltip. Switch years to compare.
  5. Copy CSV to export, or Save Snapshot for the history panel.

A Brief History of the Calendar Heatmap

In 2026, an open-source maintainer of a 600-star Rust crate wants a visual record of every commit landed since the first release in March 2022. The format that has become the lingua franca of contribution graphs is the calendar heatmap — a 7-row, 53-column grid of small colored squares, one per day, with intensity buckets reflecting the count of events on that day. GitHub introduced the format on user profiles in 2013, designed by Coby Chapple, and Bitbucket, GitLab, and Sourcehut adopted variants within two years.

The visualisation traces to John Tukey's exploratory data analysis (1977), where calendar plots were used to surface seasonal patterns in time-series. Heer, Bostock, and Ogievetsky's 2010 D3.js library shipped a calendar-heatmap example that became the most-forked block on bl.ocks.org; that block is the structural ancestor of the GitHub contribution graph. The 5-bucket green palette — empty, light, medium-light, medium, high — was chosen for colorblind accessibility (#ebedf0 to #216e39, tested against deuteranopia and protanopia).

The ISO 8601 week-numbering system, codified in 1988, anchors the heatmap's 53-column layout. ISO weeks start on Monday; weeks 1-53 are numbered with week 1 containing the first Thursday of the calendar year. A year has 53 ISO weeks when January 1 falls on Thursday (or on Wednesday in a leap year). GitHub's heatmap follows a US-style Sunday-starts-the-week convention but renders 53 columns regardless, with the leading and trailing partial weeks displayed as grayed-out cells.

Heatmaps are a particularly effective visualisation for self-quantification — Quantified Self, the movement founded by Gary Wolf and Kevin Kelly at Wired in 2007, drove the format into habit-tracking apps like Streaks, Habitica, and HabitShare. The 365-day single-page view makes longitudinal patterns visible at a glance: weekend dips, vacation gaps, monthly cycles, sustained streaks. The cognitive load is low — humans parse 2D color intensity faster than line charts (Cleveland and McGill, 'Graphical Perception', 1984).

Streak computation — the longest run of consecutive days with at least one event — turns the heatmap into a gamified record. GitHub removed the current-streak counter in 2018 to discourage burnout, but the longest-streak metric remains a quotable personal best. The widget surfaces both: longest streak across the dataset and current streak (if the year selector matches the current year), with the streak ending at today's date.

Browser-side rendering of heatmaps via SVG (instead of canvas or WebGL) keeps the markup accessible — each cell is a discrete rect with a tooltip-friendly data attribute. The widget on this page renders 371 rects (53 × 7), tracks pointer events for hover tooltips, and recomputes buckets when new dates are pasted. localStorage persists the data per-year so users can flip between 2024 and 2026 without re-pasting.

Calendar heatmaps have spread beyond contribution graphs to fitness (Strava heatmaps), medication adherence (Quantified Self trackers like Bearable), language learning (Duolingo streak), and finance (transaction frequency in Mint, YNAB, Lunch Money). The format is also the backbone of public-health dashboards — COVID-19 case-report heatmaps on the John Hopkins dashboard during 2020-2022 used the same 53-week layout to show epidemic waves at country granularity.

Interactive Calendar Heatmaps — FAQ

Have more questions? Contact us

Used by developers, analysts, and habit-trackers

4.9
Based on 5,640 reviews

I copy-pasted my git log dates and got a clean GitHub-style heatmap I could embed on my portfolio. The streak counter and bucket display match GitHub's profile exactly. Saved me writing my own D3 visualization.

A
Aiden Marsh
Open-source maintainer tracking 4-year commit history on personal site
May 20, 2026

Pasted my Apple Health workout dates and saw exactly which weeks I slacked in 2025. The intensity buckets surfaced that Tuesday and Thursday are my strongest gym days. Beautiful, immediate, no signup.

P
Priya Ramaswamy
Habit-tracker user comparing 365-day gym attendance year-over-year
April 14, 2026

I use this to prototype heatmaps before committing to a Plotly or D3 build. The CSV paste is fast, the 53-week layout is correct, and the year picker handles 2027 onwards already.

M
Marcus Sandeep
Data analyst building activity dashboards for a Boston SaaS startup
March 22, 2026

I needed a quick visual of when reports landed in 2024 versus 2025. Pasting two datasets side by side via the year switcher gave me the comparison instantly. Clean, accessible, accurate.

D
Dr. Lucia Brennan
Epidemiologist visualising case-report dates in a county-level dataset
February 18, 2026

Love using our calculator?

Related Tools

Learn More

Related Articles

Dive deeper with our expert guides and tutorials related to Interactive Calendar Heatmaps

Loading articles...