A simple Python diagnostic tool to troubleshoot why your GitHub contributions are not showing up in your profile statistics, even though they appear in the contribution graph.
Have you ever experienced this frustrating situation?
- β Your commits appear in the contribution graph (green squares)
- β But they don't count in your total contribution stats
- β Last year's contributions are missing from your profile
- β Your contribution streak is broken despite regular commits
This tool helps you diagnose and fix these issues!
β
Automated Checks - Runs 5+ critical checks automatically
β
Scoring System - Shows exactly what passed and what failed with percentage
β
Progress Bar - Visual progress indicator with 50-character bar
β
Visual Boxes - Professional boxed messages with borders (βββββ)
β
Numbered Lists - Clear numbered output for passed/failed checks
β
Clear Solutions - Provides actionable fixes for each issue
β
Email Verification - Checks if commits use the correct email
β
Branch Detection - Verifies you're on the default branch
β
Push Status - Confirms changes are synced with GitHub
β
Visual Checkboxes - Clear β/β indicators for completed/pending items
β
Summary Box - Professional summary with status, action, and progress
β
Step-by-Step Guide - Detailed manual verification steps
- Python 3.6 or higher
- Git repository
- Internet connection (for checking remote)
No additional dependencies required! Uses only Python standard library.
- Download the script
gitclone https://github.com/Hajjouz/github-stats- Make it executable (optional)
chmod +x check.pySimply run the script in your Git repository:
python3 check.py======================================================================
GITHUB CONTRIBUTIONS DIAGNOSTIC
======================================================================
1. EMAIL CONFIGURATION
----------------------------------------------------------------------
Git email: [email protected]
β
Email configured
β οΈ Must be VERIFIED at: https://github.com/settings/emails
2. BRANCH CHECK
----------------------------------------------------------------------
Current branch: main
Default branch: main
β
On default branch (contributions will count)
3. RECENT COMMITS
----------------------------------------------------------------------
a1b2c3d [email protected] 2024-10-05
d4e5f6g [email protected] 2024-10-03
β
Commits use configured email ([email protected])
β οΈ Email MUST be verified in GitHub!
4. REMOTE REPOSITORY
----------------------------------------------------------------------
Remote URL: https://github.com/username/repo.git
β
GitHub repository
GitHub Profile: https://github.com/username
β
Local and remote in sync (pushed)
5. COMMIT STATISTICS
----------------------------------------------------------------------
Commits since 2024: 156
Commits today: 3
β
Repository has 156 commits
======================================================================
VERIFICATION STATUS
======================================================================
π SCORE: 6/6 checks passed (100%)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[ββββββββββββββββββββββββββββββββββββββββββββββββββ] 100%
β
PASSED CHECKS:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. β Email configured in git
2. β On default branch
3. β Commits use correct email
4. β Commits exist
5. β Repository is on GitHub
6. β Changes pushed to GitHub
======================================================================
β
ALL AUTOMATED CHECKS PASSED!
======================================================================
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π CONGRATULATIONS! All automated checks passed! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β οΈ MANUAL VERIFICATION REQUIRED:
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π§ STEP 1: Verify Email
β’ Your email: [email protected]
β’ Visit: https://github.com/settings/emails
β’ Ensure green checkmark β next to your email
π STEP 2: Check Private Contributions (if private repo)
β’ Visit: https://github.com/settings/profile
β’ Find: 'Contributions & Activity'
β’ Enable: βοΈ 'Include private contributions'
β° STEP 3: Wait for GitHub to Update
β’ Contribution graph: 5-30 minutes
β’ Total statistics: 24-48 HOURS β οΈ
β’ Be patient! GitHub needs time to recalculate
======================================================================
οΏ½ MANUAL CHECKLIST
======================================================================
β Email configured in Git
β On default branch
β Changes pushed to GitHub
β Email VERIFIED in GitHub (manual check required!)
β 'Include private contributions' ON (if private repo)
β Waited 24-48 hours for stats to update
======================================================================
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π‘ QUICK SUMMARY β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β Status: β
All automated checks PASSED β
β Action: β οΈ Verify email manually in GitHub β
β Wait: β° 24-48 hours for stats to update β
β Progress: π’ Ready for manual verification β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Checks if Git email is configured
- Compares email in commits with configured email
- Critical: Email must match a verified email in GitHub
- Verifies you're on the default branch (main/master)
- Critical: Contributions only count on default branch
- Provides fix command if on wrong branch
- Lists last 5 commits with emails and dates
- Checks if commit emails match configured email
- Confirms commits exist in repository
- Verifies repository is on GitHub
- Extracts username from remote URL
- Checks if local commits are pushed to GitHub
- Provides direct links to GitHub settings
- Counts commits since last year
- Shows commits made today
- Helps verify repository activity
Problem:
β FAILED (1 check):
β Email not verified in GitHub
Solution:
- Go to GitHub Email Settings
- Find your email in the list
- Click "Resend verification email" if no green checkmark
- Check your inbox and verify the email
- Wait 24-48 hours for GitHub stats to update
Problem:
β FAILED (1 check):
β Not on default branch
Solution:
# Switch to default branch
git checkout main
# Merge your changes
git merge your-branch-name
# Push to GitHub
git push origin mainProblem:
β οΈ Local ahead of remote - need to push!
Solution:
# Push your commits
git push
# Or if you need to set upstream
git push -u origin mainProblem:
β οΈ Some commits use different email!
Solution:
# Set correct email for future commits
git config --global user.email "[email protected]"
# For existing commits, they won't retroactively count
# Make new commits with correct emailProblem: Contributions show in graph but not in public stats.
Solution:
- Go to GitHub Profile Settings
- Scroll to "Contributions & Activity"
- Check βοΈ "Include private contributions"
- This makes private repo contributions visible on your profile
It's important to understand GitHub's update schedule:
| What Updates | How Fast | Notes |
|---|---|---|
| Contribution Graph | 5-30 minutes | Green squares update quickly |
| Total Stats | 24-48 hours | The number next to your name |
| Longest Streak | 24-48 hours | Contribution streak counter |
| Current Streak | Real-time | Updates within minutes |
The tool provides a comprehensive scoring system with visual indicators:
π SCORE: 6/6 checks passed (100%)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[ββββββββββββββββββββββββββββββββββββββββββββββββββ] 100%
Visual Elements:
- Progress Bar - 50-character bar showing pass percentage (β = passed, β = failed)
- Percentage Score - Exact percentage of passed checks
- Numbered Lists - Clear enumeration of passed and failed checks
- Visual Boxes - Professional bordered messages (βββββ characters)
- Checkboxes - β for completed items, β for pending items
- Color Indicators - π’ (ready), π‘ (needs attention), π΄ (failed)
What Each Check Means:
- β Email configured in git - Git knows your email
- β On default branch - Commits will count
- β Commits use correct email - Email consistency
- β Commits exist - Repository has activity
- β Repository is on GitHub - Not GitLab/Bitbucket
- β Changes pushed to GitHub - Visible to GitHub
The tool uses professional formatting for easy reading:
[ββββββββββββββββββββββββββββββββββββββββββββββββββ] 100%
[ββββββββββββββββββββββββββββββββββββββββββββββββββ] 60%
[ββββββββββββββββββββββββββββββββββββββββββββββββββ] 25%
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π CONGRATULATIONS! All automated checks passed! β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
PASSED CHECKS:
1. β Email configured in git
2. β On default branch
3. β Changes pushed to GitHub
β Email configured in Git
β On default branch
β Email VERIFIED in GitHub (manual check required!)
β Waited 24-48 hours for stats to update
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π‘ QUICK SUMMARY β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β Status: β
All automated checks PASSED β
β Action: β οΈ Verify email manually in GitHub β
β Wait: β° 24-48 hours for stats to update β
β Progress: π’ Ready for manual verification β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
After running the tool, manually verify these items:
- Visit: https://github.com/settings/emails
- Locate your email in the list
- Confirm it has a green checkmark β
- If not, click "Resend verification email"
- Visit: https://github.com/settings/profile
- Scroll to "Contributions & Activity"
- Enable: βοΈ "Include private contributions"
- Graph updates: 5-30 minutes
- Total stats: 24-48 hours
- Be patient! GitHub needs time to recalculate
- Visit your profile: https://github.com/YOUR_USERNAME
- Click "Contribution activity" dropdown
- Select different time periods
- Verify contributions appear
# 1. Run diagnostic
python3 check.py
# Output shows you're not on main branch
# Score: 5/6 checks passed
# 2. Fix the issue
git checkout main
git push origin main
# 3. Run diagnostic again
python3 check.py
# Output shows all checks passed
# Score: 6/6 checks passed
# 4. Verify email in GitHub (manually)
# Visit: https://github.com/settings/emails
# 5. Wait 24-48 hours
# 6. Check your profile
# Visit: https://github.com/YOUR_USERNAMEIf you're using backdated commits (common in automation scripts):
- β Will show in contribution graph
- β Will count in total stats (if all requirements met)
β οΈ But requires all checks to pass- β° Needs time to update (24-48 hours)
Contributions to forks only count if:
- Pull request is merged to the original repository
- Or you push directly to the fork's default branch
Contributions to organization repos:
- Always count regardless of privacy settings
- Show up immediately in graph
- May take time to update total stats
Possible Reasons:
- Wait longer - Stats can take up to 48 hours
- Cache - Try clearing browser cache or private/incognito mode
- Email timing - If you just verified email, wait 24-48 hours
- Multiple emails - Check if you have multiple GitHub accounts
Error: Not a git repository
Solution:
# Navigate to your git repository
cd /path/to/your/repository
# Then run the script
python3 check.pyProblem: Remote URL format not recognized.
Solution: The script handles these formats:
https://github.com/username/repo.git[email protected]:username/repo.git
If yours is different, the script will still work but won't show username.
Contributions are welcome! Here are some ways to improve this tool:
- Add more automated checks
- Support for other Git hosting services (GitLab, Bitbucket)
- Check for GitHub API rate limits
- Verify email directly via GitHub API
- Add color output for better readability
- Create web interface version
This tool is provided as-is for educational and troubleshooting purposes.
If you encounter issues:
- Read the output carefully - The tool provides specific solutions
- Check all manual items - Some things can't be automated
- Wait 24-48 hours - Most common mistake is not waiting long enough
- Verify email - 90% of issues are unverified emails
- Check GitHub status - Visit GitHub Status
Based on common contribution issues:
| Issue | Frequency | Fixed By This Tool |
|---|---|---|
| Email not verified | 90% | β Detects |
| Not on default branch | 5% | β Fixes |
| Not pushed to GitHub | 3% | β Detects |
| Need to wait longer | 2% | β Explains |
This tool helps developers:
- β Fix missing contribution streaks
- β Ensure portfolio accuracy
- β Troubleshoot backdate scripts
- β Verify automation workflows
- β Debug contribution gaps
- Run this tool BEFORE creating lots of commits
- Verify email FIRST - saves 24-48 hours of waiting
- Always work on default branch for open source contributions
- Enable private contributions if you work on private repos
- Be patient - GitHub stats are not real-time
- GitHub Email Settings - Verify your email
- GitHub Profile Settings - Enable private contributions
- GitHub Status - Check if GitHub is down
- Git Config Guide - Set up Git correctly
Made with β€οΈ for developers who want accurate contribution graphs!
Last Updated: October 2025
Version: 2.0.0 - Enhanced with professional visual formatting
A: Yes! If all checks pass and email is verified, backdated commits from any year will count in your stats.
A: Graph updates in 5-30 minutes. Total stats can take 24-48 hours.
A: Make sure you're checking the correct account. Email must be verified on the account you're pushing to.
A: Yes! Works on Windows, macOS, and Linux. Just need Python 3.6+.
A: Yes, as long as you have Git configured and can access the repository.
β If this tool helped you, consider starring the repository!