An open API service indexing awesome lists of open source software.

https://github.com/muhammad-fiaz/github-readme-streak-stats

Display your total contributions, current streak, and longest streak on your GitHub profile README with beautiful themes and animations!
https://github.com/muhammad-fiaz/github-readme-streak-stats

git-stats github github-readme-streak-stats github-streak streak-github streak-tracker streak-tracking

Last synced: 21 days ago
JSON representation

Display your total contributions, current streak, and longest streak on your GitHub profile README with beautiful themes and animations!

Awesome Lists containing this project

README

          

# GitHub Readme Streak Stats

[![Version](https://img.shields.io/badge/version-1.0.1-blue.svg)](https://github.com/muhammad-fiaz/github-readme-streak-stats)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Test](https://github.com/muhammad-fiaz/github-readme-streak-stats/actions/workflows/test.yml/badge.svg)](https://github.com/muhammad-fiaz/github-readme-streak-stats/actions/workflows/test.yml)

Display your total contributions, current streak, and longest streak on your GitHub profile README with beautiful themes and animations!

# Demo

demo image

## Features

- **150+ Predefined Themes** - From popular editor themes to custom gradients
- **Gradient Support** - Linear gradients with customizable angles
- **Transparent Backgrounds** - Perfect for any README background
- **Bun Runtime** - Fast and modern JavaScript runtime
- **Zero Dependencies** - Pure TypeScript, no external packages needed
- **Animated SVG** - Smooth fade-in and pulse animations
- **Type-Safe** - Full TypeScript support with strict types

## Usage

Use this GitHub Action to generate your streak stats card and save it to your repository.

### Workflow Example

This workflow will generate two versions of your streak stats (Dark & Light) and push them to an `output` branch. You can then use them in your README.

Create a workflow file (e.g., `.github/workflows/streak-stats.yml`):

```yaml
name: Generate Streak Stats

on:
schedule:
- cron: "0 0 * * *" # Run daily at midnight
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v5

- name: Generate Streak Stats (Dark)
uses: muhammad-fiaz/github-readme-streak-stats@v1.0.1
with:
USERNAME: ${{ secrets.USER_NAME }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
THEME: tokyonight
OUTPUT_PATH: github-streak-stats-dark.svg

- name: Generate Streak Stats (Light)
uses: muhammad-fiaz/github-readme-streak-stats@v1.0.1
with:
USERNAME: ${{ secrets.USER_NAME }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
THEME: default
OUTPUT_PATH: github-streak-stats-light.svg

- name: Push to output branch
uses: crazy-max/ghaction-github-pages@v4.2.0
with:
target_branch: output
build_dir: .
keep_history: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

### Embed in README

Once the `output` branch is created (after the first run of the workflow), you can use the following HTML to display the card with automatic dark/light mode support:

```html





github-streak-stats


```

> **Note**: Replace `YOUR_USERNAME` and `YOUR_REPO` with your actual details.

## Demo

A demo workflow is available in [workflow-demo.yml](workflow-demo.yml) that showcases the action running daily to generate streak stats and push them to a demo branch.

## Inputs

| Input | Description | Required | Default |
| --------------- | --------------------------------------- | -------- | ------------------- |
| `USERNAME` | Your GitHub username | **Yes** | N/A |
| `GITHUB_TOKEN` | Your GitHub token (PAT or GITHUB_TOKEN) | **Yes** | N/A |
| `THEME` | Theme name (e.g., `default`, `dracula`) | No | `default` |
| `OUTPUT_PATH` | Path to save the SVG file | No | `github-streak.svg` |
| `ANIMATED` | Enable animations (`true` or `false`) | No | `true` |
| `LOCALE` | Locale code (e.g., `en`, `ja`) | No | `en` |
| `DATE_FORMAT` | Date format string | No | `M j[, Y]` |
| `HIDE_BORDER` | Hide the border (`true` or `false`) | No | `false` |
| `BORDER_RADIUS` | Corner radius | No | `4.5` |
| `CARD_WIDTH` | Card width | No | `495` |
| `CARD_HEIGHT` | Card height | No | `195` |

### Custom Color Overrides

You can also override specific colors:

| Input | Description |
| ------------------- | ---------------------------- |
| `RING` | Ring/Circle color |
| `FIRE` | Fire icon color |
| `BACKGROUND` | Background color or gradient |
| `STROKE` | Border color |
| `CURR_STREAK_NUM` | Current streak number color |
| `SIDE_NUMS` | Side stats numbers color |
| `CURR_STREAK_LABEL` | All label texts color |
| `DATES` | Dates text color |

## Available Themes

### Popular Themes

| Theme | Description |
| ------------ | ------------------------------- |
| `default` | Light theme with orange accents |
| `dark` | Dark theme with orange accents |
| `tokyonight` | Tokyo Night color scheme |
| `dracula` | Dracula color scheme |
| `nord` | Nord color scheme |
| `gruvbox` | Gruvbox color scheme |

### Gradient Themes

| Theme | Description |
| ------------------- | -------------------------- |
| `sunset-gradient` | Orange-pink-purple sunset |
| `ocean-gradient` | Blue-cyan ocean vibes |
| `ambient-gradient` | Purple-pink-yellow ambient |
| `telegram-gradient` | Telegram brand colors |
| `cyber-streakglow` | Cyberpunk neon colors |

### Checks for Gradient Background

It supports 3 types of background:

- **Solid**: `#ff0000`
- **Transparent**: `transparent` or `#0000`
- **Gradient**: `45,ff0000,00ff00` (Angle, Start Color, End Color)

## License

MIT License - feel free to use in your own projects!