#heatmap #themes #profile #activity #rounding #hackatime

app hackatime-heatmap

Easy to set up Hackatime coding activity heatmap for your profile!

8 releases

Uses new Rust 2024

0.3.5 Feb 5, 2026
0.3.4 Feb 5, 2026
0.2.1 Feb 3, 2026

#366 in HTTP server

AGPL-3.0-only

94KB
1.5K SLoC

Rust 765 SLoC Svelte 481 SLoC // 0.0% comments JavaScript 52 SLoC // 0.1% comments TypeScript 11 SLoC // 0.4% comments

Hackatime Heatmap

Easy to set up Hackatime coding activity heatmap for your profile!

Hackatime activity heatmap.

^^^ Those are my stats!

Make and customize your own here!


Usage

You can either use the color scheme aware version:

<a href="https://heatmap.shymike.dev?id=YOUR_ID&standalone=true" title="Click to view detailed data for each day!">
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://heatmap.shymike.dev?id=YOUR_ID&theme=dark">
        <img alt="Hackatime activity heatmap." src="https://heatmap.shymike.dev?id=YOUR_ID&theme=light">
    </picture>
</a>

[!CAUTION] Only the top url in the a tag can have the standalone tag set to true, otherwise the graph will not appear!

Or the simple version:

<img alt="Hackatime activity heatmap." title="Click to view detailed data for each day!" src="https://heatmap.shymike.dev?id=YOUR_ID">

Configuration

All the parameters that can be adjusted are:

Some examples:

Id

This parameter is mandatory and can be set to your Hackatime ID, Hackatime Username or Slack ID

Examples:

Timezone

This parameter can be set to the identifier of any timezone on the tz database. Defaults to UTC.

Theme

The theme can be set to either dark, light, catppuccin_dark or catppuccin_light. Defaults to dark.

Cell Size

The size of each cell in pixels. Defaults to 10 px.

Padding

The padding between each cell in pixels. Defaults to 3.

Rounding

The rounding percentage of each cell (0-100). Defaults to 20.

Ranges

The percentage ranges for each color as a 3 item string list. Defaults to 70,30,10.

Year

Display data for a specific calendar year (Jan 1 - Dec 31) instead of the last 365 days. Use current for the current year, or specify a year number. If not set, shows the last 365 days.

Show Labels

Whether to show month labels, weekday labels (Mon/Wed/Fri), and the "Less/More" legend. Defaults to true.

Standalone

Whether or not to embed HTML into the request. Defaults to false

Dependencies

~31–51MB
~642K SLoC