<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Colin</title>
    <description>The latest articles on DEV Community by Colin (@github_card).</description>
    <link>https://dev.to/github_card</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4177440%2F310b7e59-d6c4-4b0b-97f1-112dabcbedad.png</url>
      <title>DEV Community: Colin</title>
      <link>https://dev.to/github_card</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/github_card"/>
    <language>en</language>
    <item>
      <title>GitHub Readme Stats Not Working? How to Fix 503, Rate Limits, 403 and Broken Images</title>
      <dc:creator>Colin</dc:creator>
      <pubDate>Wed, 14 Oct 2026 14:20:31 +0000</pubDate>
      <link>https://dev.to/github_card/github-readme-stats-not-working-how-to-fix-503-rate-limits-403-and-broken-images-18pm</link>
      <guid>https://dev.to/github_card/github-readme-stats-not-working-how-to-fix-503-rate-limits-403-and-broken-images-18pm</guid>
      <description>&lt;p&gt;You open your GitHub profile and the stats card is gone. All that's left is a broken image icon, or a grey "Something went wrong" box. Nothing changed in your README, so what broke?&lt;/p&gt;

&lt;p&gt;Almost always, the problem is the public service that draws the card, not your Markdown. Below is how I narrow it down, and three fixes that actually last.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Last verified: Oct 14, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Likely cause&lt;/th&gt;
&lt;th&gt;Fastest fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;503&lt;/code&gt; / &lt;code&gt;DEPLOYMENT_PAUSED&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Public github-readme-stats instance paused&lt;/td&gt;
&lt;td&gt;GitHub Actions or self-host&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Something went wrong" card&lt;/td&gt;
&lt;td&gt;GitHub API rate limit or a fetch error&lt;/td&gt;
&lt;td&gt;Your own token (Actions / self-host)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;403 Forbidden&lt;/code&gt; on streak card&lt;/td&gt;
&lt;td&gt;Public streak endpoint blocking requests&lt;/td&gt;
&lt;td&gt;Streak Stats GitHub Action&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Broken image icon, no error&lt;/td&gt;
&lt;td&gt;Slow response or a cached failure behind GitHub's image proxy&lt;/td&gt;
&lt;td&gt;Static SVG in your repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Card shows the wrong data&lt;/td&gt;
&lt;td&gt;Typo, wrong username, cache&lt;/td&gt;
&lt;td&gt;Check the URL and wait out the cache&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 1: Is it you or the service?
&lt;/h2&gt;

&lt;p&gt;Copy the image URL out of your README and open it straight in your browser. Or check the headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="s2"&gt;"https://github-readme-stats.vercel.app/api?username=YOUR_USERNAME"&lt;/span&gt;
curl &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="s2"&gt;"https://streak-stats.demolab.com/?user=YOUR_USERNAME"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;200 with &lt;code&gt;image/svg+xml&lt;/code&gt;&lt;/strong&gt; and a normal card: the service is fine. The problem is in your README (see Step 6) or a stale cached copy on GitHub.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;200 but the SVG says "Something went wrong"&lt;/strong&gt;: the service is up but couldn't fetch your data. This is usually a rate limit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;503&lt;/strong&gt;: the instance itself is down or paused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;403&lt;/strong&gt;: the endpoint is refusing the request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I checked on Oct 14, both public endpoints returned 200. They work most days, but they go down every so often, so "it works right now" doesn't mean it'll still work tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Know why the public instances break
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;503 DEPLOYMENT_PAUSED.&lt;/strong&gt; In &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/3851" rel="noopener noreferrer"&gt;#3851&lt;/a&gt; ("Public deployment paused"), the maintainers explain that Vercel's sponsorship ended. They point people to GitHub Actions or self-hosting instead. &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4737" rel="noopener noreferrer"&gt;#4737&lt;/a&gt; and &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4798" rel="noopener noreferrer"&gt;#4798&lt;/a&gt; ("not working again ?") are both still open. The repo README now also says the project is no longer maintained and recommends its successor, &lt;a href="https://github.com/stats-organization/github-stats-extended" rel="noopener noreferrer"&gt;GitHub Stats Extended&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rate limits.&lt;/strong&gt; The README says the public instance is "best-effort and can be unreliable due to rate limits and traffic spikes." Thousands of profiles share one pool of GitHub API requests. When that pool runs out, you get the error card.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;403 on Streak Stats.&lt;/strong&gt; In &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/872" rel="noopener noreferrer"&gt;streak #872&lt;/a&gt;, users reported every public streak endpoint returning 403. That issue is closed now, but it can happen again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Broken image, no error.&lt;/strong&gt; GitHub doesn't load README images straight from the source. It serves them through its own image proxy (camo). If the card service is slow, the image may just not appear. Users have reported this in &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/754" rel="noopener noreferrer"&gt;streak #754&lt;/a&gt; and &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/792" rel="noopener noreferrer"&gt;#792&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 (recommended): Generate the SVGs with GitHub Actions
&lt;/h2&gt;

&lt;p&gt;This is the fix that holds up best. A workflow builds the cards on a schedule and commits them to your profile repo. Your README then points at a file in your own repo, with no outside service in the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stats and top languages card.&lt;/strong&gt; Save this as &lt;code&gt;.github/workflows/grs.yml&lt;/code&gt; in your &lt;code&gt;USERNAME/USERNAME&lt;/code&gt; repo. It's adapted from the &lt;a href="https://github.com/stats-organization/github-readme-stats-action" rel="noopener noreferrer"&gt;action's README&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Update README cards&lt;/span&gt;
&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*"&lt;/span&gt;
  &lt;span class="na"&gt;workflow_dispatch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v6&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stats-organization/github-readme-stats-action@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;card&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stats&lt;/span&gt;
          &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;username=${{ github.repository_owner }}&amp;amp;show_icons=true&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;profile/stats.svg&lt;/span&gt;
          &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stats-organization/github-readme-stats-action@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;card&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;top-langs&lt;/span&gt;
          &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;username=${{ github.repository_owner }}&amp;amp;layout=compact&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;profile/top-langs.svg&lt;/span&gt;
          &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stats-organization/github-readme-stats-action@v2&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;card&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;stats&lt;/span&gt;
          &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;username=${{ github.repository_owner }}&amp;amp;show_icons=true&amp;amp;theme=dark&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;profile/stats-dark.svg&lt;/span&gt;
          &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.GITHUB_TOKEN }}&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Commit cards&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;git config user.name "github-actions[bot]"&lt;/span&gt;
          &lt;span class="s"&gt;git config user.email "41898282+github-actions[bot]@users.noreply.github.com"&lt;/span&gt;
          &lt;span class="s"&gt;git add profile/*.svg&lt;/span&gt;
          &lt;span class="s"&gt;git commit -m "Update README cards" || exit 0&lt;/span&gt;
          &lt;span class="s"&gt;git push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then in your README:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Stats&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;./profile/stats.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Top Languages&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;./profile/top-langs.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To include private repo stats, create a PAT with the &lt;code&gt;repo&lt;/code&gt; and &lt;code&gt;read:user&lt;/code&gt; scopes. Store it as a repository secret and use it in place of &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;. Never paste the token into the YAML.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Streak card.&lt;/strong&gt; Add &lt;code&gt;.github/workflows/streak-stats.yml&lt;/code&gt;, following the &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats" rel="noopener noreferrer"&gt;Streak Stats README&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generate streak stats&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;DenverCoder1/github-readme-streak-stats@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;options&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;user=${{ github.repository_owner }}&amp;amp;theme=default&amp;amp;disable_animations=true&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;profile/streak.svg&lt;/span&gt;
          &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.STREAK_STATS_TOKEN }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;(Use the same checkout and commit steps as above.) The &lt;code&gt;token&lt;/code&gt; line is only needed for private contributions. The README says to use a PAT with the &lt;code&gt;repo&lt;/code&gt; scope, stored as a secret.&lt;/p&gt;

&lt;p&gt;The catch: the cards only update when the workflow runs, once a day here. For a profile README, that's usually fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Self-host on Vercel
&lt;/h2&gt;

&lt;p&gt;If you want cards that update live, deploy your own instance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the repo. The original README still has a Vercel guide, and GitHub Stats Extended has its own &lt;a href="https://github-stats-extended.vercel.app/frontend/docs/deploy/#self-hosted-on-vercel" rel="noopener noreferrer"&gt;deploy docs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Import the fork into Vercel.&lt;/li&gt;
&lt;li&gt;Create a GitHub PAT and add it as an environment variable named &lt;code&gt;PAT_1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Deploy, then &lt;strong&gt;swap the domain in your README&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Stats&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://YOUR-APP.vercel.app/api?username=YOUR_USERNAME&amp;amp;cache_seconds=21600&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last step trips people up. &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4747" rel="noopener noreferrer"&gt;#4747&lt;/a&gt; covers cases where a self-hosted fork still looked broken because the README still pointed at the public URL. Check the URL.&lt;/p&gt;

&lt;p&gt;On caching: &lt;code&gt;cache_seconds&lt;/code&gt; takes values from 21600 to 86400, and the default is 21600. On your own instance, you can set the &lt;code&gt;CACHE_SECONDS&lt;/code&gt; environment variable instead. On Vercel's free plan, keep in mind that your own usage counts against your own limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Top languages card looks wrong
&lt;/h2&gt;

&lt;p&gt;Two things come up a lot. The card only looks at your first 100 repos, and by default it ranks languages by byte count. One big Jupyter notebook can push everything else off the card.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Top Langs&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://YOUR-APP.vercel.app/api/top-langs/?username=YOUR_USERNAME&amp;amp;hide=jupyter%20notebook&amp;amp;exclude_repo=old-fork&amp;amp;size_weight=0.5&amp;amp;count_weight=0.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;size_weight=0.5&amp;amp;count_weight=0.5&lt;/code&gt; is the combination the README recommends. It weighs bytes and repo count together. To stop GitHub from counting notebooks at all, add a &lt;code&gt;.gitattributes&lt;/code&gt; file to that repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight codeowners"&gt;&lt;code&gt;&lt;span class="n"&gt;*.ipynb&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;linguist-vendored&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: The boring causes
&lt;/h2&gt;

&lt;p&gt;Before you change anything else, check these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A typo in the username, or a stray &lt;code&gt;\&amp;amp;&lt;/code&gt; copied from a doc.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user=&lt;/code&gt; vs &lt;code&gt;username=&lt;/code&gt;. Streak Stats uses &lt;code&gt;user&lt;/code&gt;, github-readme-stats uses &lt;code&gt;username&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A renamed account.&lt;/li&gt;
&lt;li&gt;A cached old version. Wait for the cache to expire before you assume it's broken.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For dark/light mode, use the light and dark SVGs the workflow writes above:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;picture&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;source&lt;/span&gt; &lt;span class="na"&gt;media=&lt;/span&gt;&lt;span class="s"&gt;"(prefers-color-scheme: dark)"&lt;/span&gt; &lt;span class="na"&gt;srcset=&lt;/span&gt;&lt;span class="s"&gt;"./profile/stats-dark.svg"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"./profile/stats.svg"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"GitHub stats"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/picture&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Alternatives
&lt;/h2&gt;

&lt;p&gt;If you'd rather not maintain a workflow at all, there are a few options. &lt;a href="https://github.com/stats-organization/github-stats-extended" rel="noopener noreferrer"&gt;GitHub Stats Extended&lt;/a&gt; is the maintained successor and has its own public instance. The two GitHub Actions above are the most robust free option. Community-run public instances exist too, but they're third-party and nobody promises they'll stay up.&lt;/p&gt;

&lt;p&gt;Full disclosure: I work on GitHubCard. &lt;a href="https://githubcard.com" rel="noopener noreferrer"&gt;GitHubCard&lt;/a&gt; is a hosted card editor: you design stats, top languages, streak and other widgets as one card, then embed it with a single line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;GitHub profile card&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/YOUR_USERNAME.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a hosted service too, so the same logic applies: if the card has to be up 100% of the time, a static SVG committed by an Action is still the safest choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources (accessed Oct 14, 2026)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;github-readme-stats README and issues &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/3851" rel="noopener noreferrer"&gt;#3851&lt;/a&gt;, &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4737" rel="noopener noreferrer"&gt;#4737&lt;/a&gt;, &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4747" rel="noopener noreferrer"&gt;#4747&lt;/a&gt;, &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/4798" rel="noopener noreferrer"&gt;#4798&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/stats-organization/github-readme-stats-action" rel="noopener noreferrer"&gt;stats-organization/github-readme-stats-action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats" rel="noopener noreferrer"&gt;DenverCoder1/github-readme-streak-stats&lt;/a&gt;, issues &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/754" rel="noopener noreferrer"&gt;#754&lt;/a&gt;, &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/792" rel="noopener noreferrer"&gt;#792&lt;/a&gt;, &lt;a href="https://github.com/DenverCoder1/github-readme-streak-stats/issues/872" rel="noopener noreferrer"&gt;#872&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Last verified: Oct 14, 2026.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>5 GitHub Profile README Templates You Can Copy (and How to Keep Them Short)</title>
      <dc:creator>Colin</dc:creator>
      <pubDate>Tue, 13 Oct 2026 13:10:58 +0000</pubDate>
      <link>https://dev.to/github_card/5-github-profile-readme-templates-you-can-copy-and-how-to-keep-them-short-cod</link>
      <guid>https://dev.to/github_card/5-github-profile-readme-templates-you-can-copy-and-how-to-keep-them-short-cod</guid>
      <description>&lt;p&gt;Most GitHub profile READMEs I see fall into two groups: an empty "Hi there 👋" left over from the default template, or a wall of badges, GIFs, and five stats widgets stacked on top of each other. Neither tells a visitor much.&lt;/p&gt;

&lt;p&gt;I've rewritten mine a few times. Below are five templates I'd actually use, depending on what kind of developer you are, plus a few rules that keep them from rotting.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: the 30-second setup
&lt;/h2&gt;

&lt;p&gt;If you haven't made one yet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new &lt;strong&gt;public&lt;/strong&gt; repository with exactly the same name as your GitHub username (e.g. &lt;code&gt;octocat/octocat&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;README.md&lt;/code&gt; to it.&lt;/li&gt;
&lt;li&gt;Whatever is in that file shows up at the top of your profile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Everything below is just Markdown (plus a bit of HTML that GitHub allows).&lt;/p&gt;

&lt;h2&gt;
  
  
  Template 1: The minimal one
&lt;/h2&gt;

&lt;p&gt;Good if you don't want to maintain anything. Three lines of who you are, three links, done.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Hi, I'm Sam&lt;/span&gt;

Backend developer. I mostly work on Go services and Postgres.
Currently: building internal tooling at a logistics startup.
&lt;span class="p"&gt;
-&lt;/span&gt; Blog: https://example.dev
&lt;span class="p"&gt;-&lt;/span&gt; X: https://x.com/yourhandle
&lt;span class="p"&gt;-&lt;/span&gt; Email: you@example.dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Honestly, this beats most "fancy" profiles. A recruiter or another dev can read it in five seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template 2: The open source maintainer
&lt;/h2&gt;

&lt;p&gt;If people land on your profile because of a project, send them back to it. Pin the repos too, but a short list with one-line descriptions does more than pins alone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Sam Doe&lt;/span&gt;

I maintain a few small libraries for working with CSV and time series data.

&lt;span class="gu"&gt;## Projects&lt;/span&gt;

| Project | What it does |
|---|---|
| &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;fastcsv&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/you/fastcsv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | Streaming CSV parser, zero deps |
| &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;tsbucket&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/you/tsbucket&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; | Downsample time series in the browser |

&lt;span class="gu"&gt;## Contributing&lt;/span&gt;

Issues and PRs welcome. Start with anything labelled &lt;span class="sb"&gt;`good first issue`&lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tables render fine on GitHub and stay readable on mobile as long as you keep them to two or three columns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template 3: The job seeker
&lt;/h2&gt;

&lt;p&gt;Here the goal is to answer "what can this person do, and can I see proof?" quickly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Sam Doe — Full-stack developer&lt;/span&gt;

React, TypeScript, Node.js, PostgreSQL. 4 years shipping SaaS products.

&lt;span class="gs"&gt;**Open to:**&lt;/span&gt; remote full-stack roles

&lt;span class="gu"&gt;## Things I've built&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Invoicer**&lt;/span&gt; — multi-tenant billing app (Next.js, Stripe). &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Live&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.dev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; · &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Code&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/you/invoicer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**Queue-lite**&lt;/span&gt; — Postgres-backed job queue. &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Code&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github.com/you/queue-lite&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="gu"&gt;## Contact&lt;/span&gt;
you@example.dev · &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;LinkedIn&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://linkedin.com/in/you&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put "open to" near the top. People skim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template 4: The writer
&lt;/h2&gt;

&lt;p&gt;If you blog, your profile can act as an index. You can update the list by hand, or automate it with a GitHub Action that pulls your RSS feed (there are several on the Marketplace; search "blog post workflow").&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Sam Doe&lt;/span&gt;

Fullstack developer. Writing about system design.

&lt;span class="gu"&gt;## Recent posts&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- BLOG-POST-LIST:START --&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Designing idempotent webhooks&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.dev/idempotent-webhooks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Why I stopped using ORMs for reporting queries&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.dev/orm-reporting&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- BLOG-POST-LIST:END --&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The HTML comments are markers that RSS actions typically use to know where to write. They're invisible on the rendered page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Template 5: The stats-and-visuals one
&lt;/h2&gt;

&lt;p&gt;This is the template most people actually want: a short intro plus some visual summary of your GitHub activity: stats, top languages, streak, contribution graph.&lt;/p&gt;

&lt;p&gt;The usual way to do this is to stack several embeds from different services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Stats&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github-readme-stats.vercel.app/api?username=you&amp;amp;show_icons=true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Top langs&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github-readme-stats.vercel.app/api/top-langs/?username=you&amp;amp;layout=compact&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Streak&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://streak-stats.demolab.com?user=you&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;Activity&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://github-readme-activity-graph.vercel.app/graph?username=you&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works, but each one has its own theme parameters, and they never quite line up visually. When one of the services is down or rate limited, you get a broken image in the middle of your profile.&lt;/p&gt;

&lt;p&gt;The alternative I've been using is to put all of that into one image. Full disclosure: I work on &lt;a href="https://githubcard.com" rel="noopener noreferrer"&gt;GitHubCard&lt;/a&gt;, which does exactly this. You drag widgets (profile stats, streak, contribution heatmap, top languages, top repos, star history, and so on) onto a canvas, theme them once, and embed a single SVG:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Hi, I'm Sam 👋&lt;/span&gt;

Full-stack developer building useful products.

&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;GitHubCard&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/you.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="gu"&gt;## Featured projects&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;you&lt;/code&gt; with your username. With no custom design it renders a default card; if you design and save one in the editor (that part needs a GitHub sign-in), you copy the link it gives you instead. Data refreshes from GitHub but is cached, so changes can take up to an hour to show. For a repo, the same idea works with &lt;code&gt;githubcard.com/owner/repo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Whatever tool you use, the point is the same: one visual, not six.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules I use to keep a profile README useful
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Keep the top 10 lines for the important stuff.&lt;/strong&gt; On a laptop screen, that's roughly what people see before scrolling. Name, what you do, what you're working on, how to reach you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Don't list every technology you've touched.&lt;/strong&gt; A row of 30 logo badges says "I've opened a lot of tutorials". Five you'd be comfortable being interviewed on is more convincing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Avoid anything that goes stale.&lt;/strong&gt; "Currently learning Rust" from 2022 is worse than nothing. If you include a "currently" line, either update it or automate it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Check it on mobile.&lt;/strong&gt; Open your profile on your phone. Wide tables, side-by-side images with &lt;code&gt;align="left"&lt;/code&gt;, and huge GIFs often fall apart there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Watch the number of external images.&lt;/strong&gt; Every embed is another request to another service. Fewer embeds means a faster profile and fewer broken-image icons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Use alt text.&lt;/strong&gt; &lt;code&gt;![GitHub stats for Sam](...)&lt;/code&gt; instead of &lt;code&gt;![](...)&lt;/code&gt;. It helps screen readers, and it's what shows when an image fails to load.&lt;/p&gt;

&lt;h2&gt;
  
  
  A combined starter you can copy
&lt;/h2&gt;

&lt;p&gt;If you just want something to paste and edit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Hi, I'm &amp;lt;Name&amp;gt; 👋&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;One&lt;/span&gt; &lt;span class="na"&gt;line:&lt;/span&gt; &lt;span class="na"&gt;what&lt;/span&gt; &lt;span class="na"&gt;you&lt;/span&gt; &lt;span class="na"&gt;do.&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;One&lt;/span&gt; &lt;span class="na"&gt;line:&lt;/span&gt; &lt;span class="na"&gt;what&lt;/span&gt; &lt;span class="na"&gt;you&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="na"&gt;re&lt;/span&gt; &lt;span class="na"&gt;working&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt; &lt;span class="na"&gt;now.&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;GitHub profile card for &amp;lt;username&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;username&amp;gt;&lt;/span&gt;.svg)

&lt;span class="gu"&gt;## Featured projects&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**[project-one](https://github.com/&amp;lt;username&amp;gt;/project-one)**&lt;/span&gt; — what it does, in one line
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="gs"&gt;**[project-two](https://github.com/&amp;lt;username&amp;gt;/project-two)**&lt;/span&gt; — what it does, in one line

&lt;span class="gu"&gt;## Writing&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Your best post&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.dev/post&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="gu"&gt;## Contact&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;email&amp;gt;&lt;/span&gt; · &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;X&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://x.com/&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;handle&amp;gt;&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Swap the image line for whatever stats setup you prefer, or delete it. The rest is the part that actually tells people who you are.&lt;/p&gt;

&lt;p&gt;If you have a profile README you're proud of, drop the link in the comments. I'm always looking for layouts to steal.&lt;/p&gt;

</description>
      <category>github</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to Add a GitHub Streak Stats Card to Your Profile README (Without Another Service)</title>
      <dc:creator>Colin</dc:creator>
      <pubDate>Mon, 12 Oct 2026 09:59:58 +0000</pubDate>
      <link>https://dev.to/github_card/how-to-add-a-github-streak-stats-card-to-your-profile-readme-without-another-service-4fbe</link>
      <guid>https://dev.to/github_card/how-to-add-a-github-streak-stats-card-to-your-profile-readme-without-another-service-4fbe</guid>
      <description>&lt;p&gt;A commit streak is one of the most popular things people put on their GitHub profile. It's a quick signal that you ship regularly. This guide covers how to add one, and how to keep it from becoming yet another image embed you have to babysit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set up your profile README
&lt;/h2&gt;

&lt;p&gt;If you don't have one yet:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a &lt;strong&gt;public&lt;/strong&gt; repository with the exact same name as your username (e.g. &lt;code&gt;alex/alex&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;README.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GitHub renders that file at the top of your profile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Add a card with streak stats
&lt;/h2&gt;

&lt;p&gt;The usual approach is a dedicated streak service with its own URL and theme parameters. If you already use separate cards for stats and languages, that's another host and another set of colors to match.&lt;/p&gt;

&lt;p&gt;An alternative is to put the streak on the same card as everything else. With &lt;a href="https://githubcard.com/" rel="noopener noreferrer"&gt;GitHubCard&lt;/a&gt;, a default card is a single URL, no sign-in needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;![GitHub card&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/YOUR_USERNAME.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;](https://github.com/YOUR_USERNAME)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Make the streak the focus (optional)
&lt;/h2&gt;

&lt;p&gt;If you want the streak front and center:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the canvas editor at &lt;a href="https://githubcard.com/" rel="noopener noreferrer"&gt;https://githubcard.com/&lt;/a&gt; and pick a profile card.&lt;/li&gt;
&lt;li&gt;Enter your username.&lt;/li&gt;
&lt;li&gt;Drag in the &lt;strong&gt;Streak Stats&lt;/strong&gt; widget and resize it as the main element.&lt;/li&gt;
&lt;li&gt;Add supporting widgets if you like: &lt;strong&gt;Contributions Heatmap&lt;/strong&gt;, &lt;strong&gt;Profile Stats&lt;/strong&gt;, &lt;strong&gt;Language Donut&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Set one theme for the whole card, then export as SVG (or PNG for social posts and slides).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Saving and updating a custom design requires signing in with GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things to know
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freshness:&lt;/strong&gt; cards use live GitHub data with caching, so changes can take up to about an hour to appear. Don't panic if today's commit doesn't show immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; core features are free, per the site's FAQ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repos too:&lt;/strong&gt; the same pattern works for repositories: &lt;code&gt;https://githubcard.com/OWNER/REPO.svg&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A note on streaks
&lt;/h2&gt;

&lt;p&gt;Streaks are motivating, but they're not a measure of quality. Many solid engineers have gaps because they work in private repos or take weekends off. Treat a streak card as a small signal on your profile, not the headline. Pair it with pinned projects and a short line about what you build.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I build GitHubCard. If you try it, I'd genuinely like to hear what's missing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Replace Six GitHub README Embeds With One Profile Card</title>
      <dc:creator>Colin</dc:creator>
      <pubDate>Mon, 12 Oct 2026 09:16:36 +0000</pubDate>
      <link>https://dev.to/github_card/replace-six-github-readme-embeds-with-one-profile-card-5bdc</link>
      <guid>https://dev.to/github_card/replace-six-github-readme-embeds-with-one-profile-card-5bdc</guid>
      <description>&lt;p&gt;A typical GitHub profile README ends up looking like a mashup of services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stats from one generator&lt;/li&gt;
&lt;li&gt;streak from another&lt;/li&gt;
&lt;li&gt;languages from a third&lt;/li&gt;
&lt;li&gt;an activity graph somewhere else&lt;/li&gt;
&lt;li&gt;skill icons from yet another host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each piece has its own URL parameters, themes, and failure modes. When one service lags or changes a query string, the profile looks broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  The idea
&lt;/h2&gt;

&lt;p&gt;Keep the live GitHub data, but design it once and embed it once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://githubcard.com/" rel="noopener noreferrer"&gt;GitHubCard&lt;/a&gt; is a drag-and-drop canvas for profile and repo cards. You pick widgets (stats, heatmap, streak, languages, top repos, star history, and more), theme them together, then export SVG or PNG. The README only needs one image link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fast path (no editor)
&lt;/h2&gt;

&lt;p&gt;If you only need a default card, swap &lt;code&gt;github.com&lt;/code&gt; for &lt;code&gt;githubcard.com&lt;/code&gt; in a profile or repo URL:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Profile: &lt;code&gt;https://githubcard.com/YOUR_USERNAME&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Repo: &lt;code&gt;https://githubcard.com/OWNER/REPO&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Embed in your profile README
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create (or open) the special repo named exactly like your username.&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;README.md&lt;/code&gt; if it is missing.&lt;/li&gt;
&lt;li&gt;Drop in one Markdown image (replace the username and design id if you published a custom card):
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;GitHub profile card&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/YOUR_USERNAME.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or with a click-through to your real profile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;![GitHub profile card&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/YOUR_USERNAME.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;](https://github.com/YOUR_USERNAME)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why one card helps
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One visual system.&lt;/strong&gt; Stats, languages, and heatmaps share the same theme instead of five different color palettes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fewer moving parts.&lt;/strong&gt; One callsite to maintain when you change layout or branding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Still live data.&lt;/strong&gt; Cards refresh from GitHub (with caching, so updates can take up to about an hour).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Canvas path (custom layout)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;a href="https://githubcard.com/" rel="noopener noreferrer"&gt;https://githubcard.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Choose a profile card or a repo card.&lt;/li&gt;
&lt;li&gt;Enter a username or &lt;code&gt;owner/repo&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Drag widgets, resize, theme once.&lt;/li&gt;
&lt;li&gt;Export SVG or PNG and paste the URL into Markdown.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Core features are free. Sign in with GitHub when you want to save and update a custom design.&lt;/p&gt;

&lt;h2&gt;
  
  
  A minimal before / after
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt; six image embeds, five hosts, a pile of query parameters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Hi, I'm Alex&lt;/span&gt;

Full-stack developer building useful products.

&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt;GitHubCard&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://githubcard.com/you.svg&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="gu"&gt;## Featured projects&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same story on the profile, less glue code in the README.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Open the designer at &lt;a href="https://githubcard.com/" rel="noopener noreferrer"&gt;githubcard.com&lt;/a&gt;, generate a card for your username, and paste one link into your profile README. If you already maintain a stack of embeds, try collapsing them into a single card and see whether the profile reads clearer.&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
