Create beautiful art in your GitHub contribution graph! Turn your commit history into ASCII art that displays on your GitHub profile.
- 🎨 Create ASCII art in your GitHub contribution graph
- 📅 Automatic date calculation - finds optimal starting points (Sundays for alignment)
- 👀 Live preview - see what your art will look like before creating commits
- 🔤 Extended character set - supports uppercase, lowercase, numbers, and special characters
- 💪 Flexible configuration - customize spacing, commits per day, and more
- 🚀 Modern tooling - uses UV package manager for fast, reliable dependency management
- 📊 Calendar view - visualize your commit pattern week by week
- 🎯 Smart alignment - automatically aligns with GitHub's contribution grid
# Install UV if you haven't already
pip install uv
# Clone the repository
git clone https://github.com/alemazzo/github-artist.git
cd github-artist
# Install the package
uv pip install -e .git clone https://github.com/alemazzo/github-artist.git
cd github-artist
pip install -e .# Preview text before creating commits
github-artist preview "HELLO"# Create art in your GitHub contribution graph
github-artist create your-username your-repo "HELLO"# List all supported characters
github-artist chars
# Show preview of all characters
github-artist chars --show-allThe simplest way to create GitHub art:
github-artist create <username> <repo> <text>Example:
github-artist create alemazzo my-art-repo "CODE"Customize your art with various options:
github-artist create alemazzo my-art-repo "HELLO" \
--start-date 2024-01-01 \
--spacing 2 \
--commits 3 \
--protocol ssh \
--yesgithub-artist create <username> <repo> <text> [OPTIONS]Arguments:
username- Your GitHub usernamerepo- Repository name (will be cloned if it doesn't exist)text- Text to create in the contribution graph
Options:
--start-date YYYY-MM-DD- Start date (default: auto-calculated to next Sunday)--spacing N- Space between letters (default: 1)--commits N- Number of commits per day (default: 1, more commits = darker squares)--weeks-advance N- Start N weeks from now when auto-calculating (default: 1)--protocol {https,ssh}- Clone protocol (default: https)--preview- Preview only, don't create commits--no-push- Create commits but don't push to GitHub-y, --yes- Skip confirmation prompt
Examples:
# Basic usage with auto-calculated start date
github-artist create myusername github-art "HELLO"
# Start on a specific date
github-artist create myusername github-art "2024" --start-date 2024-01-07
# More spacing between letters for better readability
github-artist create myusername github-art "CODE" --spacing 2
# Make darker contributions with more commits per day
github-artist create myusername github-art "HI" --commits 5
# Preview before creating
github-artist create myusername github-art "TEST" --preview
# Skip confirmation prompt (useful for automation)
github-artist create myusername github-art "AUTO" --yesgithub-artist preview <text> [OPTIONS]Arguments:
text- Text to preview
Options:
--start-date YYYY-MM-DD- Start date for preview--spacing N- Letter spacing--commits N- Commits per day--weeks-advance N- Weeks in advance
Examples:
# Simple preview
github-artist preview "HELLO WORLD"
# Preview with custom spacing
github-artist preview "CODE" --spacing 2
# Preview with specific start date
github-artist preview "2024" --start-date 2024-01-07github-artist chars [OPTIONS]Options:
--show-all- Show visual preview of all characters
Examples:
# List supported characters
github-artist chars
# Show preview of each character
github-artist chars --show-allGitHub Artist supports:
- Uppercase letters: A-Z
- Lowercase letters: a-z
- Numbers: 0-9
- Special characters: . , ! ? - _ + = : ; ' " ( ) [ ] / \ @ # & < >
- Symbols: ❤ ★ 👾 (Among Us character)
Use github-artist chars to see the complete list!
github-artist create myusername greeting-repo "HELLO"Output preview:
█ █ █████ █ █ █████
█ █ █ █ █ █ █
████ ████ █ █ █ █
█ █ █ █ █ █ █
█ █ █████ █████ █████
github-artist create myusername code-art "CODE" --spacing 2 --commits 3github-artist create myusername year-2024 "2024" --start-date 2024-01-07github-artist create myusername lowercase-art "hello world" --spacing 1# Create Among Us character art
github-artist create myusername among-us-art "👾" --commits 5
# Preview it first
github-artist preview "👾"Create a configuration file for reusable settings:
github-artist config --exampleThis creates github-artist-config.json:
{
"username": "your-username",
"repo_name": "github-art",
"protocol": "https",
"text": "HELLO",
"letter_spacing": 1,
"commits_per_day": 1,
"auto_calculate_start": true,
"weeks_in_advance": 1,
"preview_only": false,
"auto_push": false
}-
Start on Sundays: The auto-calculated start date always picks a Sunday for perfect alignment with GitHub's weekly grid.
-
Preview first: Always use
github-artist previewto see how your art will look. -
Letter spacing: Use
--spacing 2for better readability with longer text. -
Commits per day: Higher values (3-5) create darker squares, making the art more visible.
-
Repository setup: Create a dedicated repository for your GitHub art to keep it separate from your code projects.
- Character Matrix: Each character is defined as a 7x4 (or similar) binary matrix
- Date Calculation: Maps the matrix to dates, column by column (each column = 1 week)
- Commit Creation: Creates commits with backdated timestamps for each active cell
- GitHub Display: GitHub's contribution graph shows the commits as colored squares
github-artist/
├── github_artist/ # Main package
│ ├── __init__.py
│ ├── cli.py # Command-line interface
│ ├── core/ # Core functionality
│ │ ├── config.py # Configuration management
│ │ ├── git_ops.py # Git operations
│ │ └── preview.py # Preview and visualization
│ ├── data/ # Data files
│ │ └── characters.py # Character matrix definitions
│ └── utils/ # Utility modules
│ └── dates.py # Date calculations
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.md # This file
# Install development dependencies
uv pip install -e ".[dev]"
# Run tests
pytestEdit github_artist/data/characters.py and add your character matrix to CHAR_MATRICES:
"X": [
[1, 0, 0, 1],
[1, 0, 0, 1],
[0, 1, 1, 0],
[0, 0, 0, 0],
[0, 1, 1, 0],
[1, 0, 0, 1],
[1, 0, 0, 1],
],- GitHub limits: GitHub's contribution graph shows the last year of contributions
- Existing commits: This tool creates new commits and won't affect your existing work
- Repository: Use a dedicated repository for art to avoid cluttering your code projects
- Visibility: Make sure your repository is public for the art to show on your profile
- Time zones: Commits are created with your local timezone
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Add more character matrices
- Improve character designs
- Add emoji support
- Create themes/templates
- Improve documentation
- Write tests
This project is licensed under the MIT License - see the LICENSE file for details.
alemazzo
- GitHub: @alemazzo
- Inspired by the GitHub contribution graph
- Built with ❤️ and Python
- Powered by UV package manager
Happy Drawing! 🎨
Made with ❤️ by the GitHub community