GitHub Readme Stats Not Working? How to Fix 503, Rate Limits, 403 and Broken Images
Description and use
Replace external SVGs in a GitHub profile README with locally generated ones via GitHub Actions to avoid 503, 403, and broken image errors.
Problem
GitHub profile README cards generated by public services become broken due to service downtime, rate limits, or API restrictions.
Outcome
The README displays functional, up-to-date stats cards without relying on external services, eliminating 503, 403, and broken image issues.
Workflow
- 1. Create a GitHub Actions workflow (.github/workflows/grs.yml) that runs on a schedule and uses stats-organization/github-readme-stats-action to generate stats and top-langs SVGs.
- 2. Commit the generated SVGs to the repository (profile/stats.svg, profile/top-langs.svg).
- 3. Update the README to reference the local SVG files.
- 4. (Optional) Add a second workflow (.github/workflows/streak-stats.yml) using DenverCoder1/github-readme-streak-stats to generate a streak SVG and commit it.
- 5. Store any required PATs as repository secrets and reference them in the workflow.
- 6. Push changes; the workflow will run daily and keep the cards up to date.
Evidence
GitHub Actions or self-host
The public instance is "best-effort and can be unreliable due to rate limits and traffic spikes."
Add .github/workflows/grs.yml in your USERNAME/USERNAME repo.
git config user.name "github-actions[bot]"
- Record date: 2026-10-14T15:56:10.042Z