How to Set Up Your GitHub Profile README — Complete Step-by-Step Guide
GitHub profile READMEs have been around since 2020 but a surprisingly large number of developers still don't have one — either because they didn't know it existed or because they started the process, got confused about the special repository name, and gave up. This guide fixes both problems.
By the end of it, your GitHub profile will show a custom README instead of the default empty profile view. It takes about 20 minutes if you do it from scratch, less if you use the generator to write the content.
The GitHub profile README lives in a special repository. The trick is that the repository name must be exactly the same as your GitHub username. When GitHub detects a public repository with your username as the name and a README.md inside it, it automatically displays that README on your profile page.
To create it:
- Go to github.com and make sure you're logged in
- Click the + icon in the top right corner → New repository
- In the "Repository name" field, type your exact GitHub username — for example if your username is alexchen99, the repository name must be alexchen99
- Set it to Public — a private repository will not work for profile READMEs
- Check the box that says "Add a README file"
- Leave everything else at defaults
- Click Create repository
Now that the repository exists, you need to put content into the README.md file. You have two options here — write it yourself in markdown, or use a tool to generate it.
Option A — Use the ReadmeDesign Generator (Recommended)
Go to readmedesign.com/readme-generator, fill in your details — name, role, tech stack, social links, which widgets to include — and click "Copy Markdown." The generator produces a complete, formatted README in about 2 minutes. You then paste it into your README.md file.
Option B — Write it yourself
If you prefer to write from scratch, here is a minimal starting template that covers the sections most people want:
How to preview before committing
If you want to see exactly how your markdown will render on GitHub before saving it, paste it into the ReadmeDesign Sandbox. It renders markdown exactly as GitHub does, including badges and HTML elements.
You have two ways to get your content into the README.md file — directly on GitHub in the browser, or via Git on your local machine. If you're setting this up for the first time, the browser method is easier.
Method A — Edit directly on GitHub (easiest)
- Go to your new repository at github.com/YOUR_USERNAME/YOUR_USERNAME
- Click on the README.md file
- Click the pencil icon (Edit this file) in the top right of the file view
- Select all the existing content and delete it
- Paste your new README content
- Scroll down to the "Commit changes" section
- Leave the commit message as is or write something like "Add profile README"
- Make sure "Commit directly to the main branch" is selected
- Click Commit changes
Method B — Via Git on your local machine
If you prefer working locally:
After the push, visit your GitHub profile in a browser — the README will be live immediately.
The stats cards — the ones that show your commit count, streak, and top languages — are images generated by a third-party service called github-readme-stats. They're not built into GitHub. You add them as markdown image links pointing to the stats API.
There are three settings you should always enable that most people miss:
Replace YOUR_USERNAME with your actual GitHub username in all three URLs. The widgets will start showing your real data immediately after you commit this to your README.
A static README is fine. But a README that updates itself — showing your latest blog posts, your actual coding hours this week, your most recent GitHub activity — feels alive rather than abandoned. GitHub Actions lets you automate this with scheduled workflows that run in the background for free.
This step is optional but worth doing if you write blog posts anywhere or use Wakatime.
Before anything else — enable write permissions
Workflows that update your README need permission to write to your repository. By default they can only read.
- Go to your username repository on GitHub
- Click Settings → Actions → General
- Scroll to "Workflow permissions"
- Select "Read and write permissions"
- Click Save
Auto-update with your latest blog posts
If you write on Dev.to, Hashnode, Medium, or any platform with an RSS feed, this workflow pulls your five most recent posts and lists them in your README every day automatically.
First add these two comment markers to your README exactly where you want the posts to appear:
Then create a new file at exactly this path inside your username repository: .github/workflows/blog-posts.yml
Save the file, commit it, and the workflow will run at 8am UTC every day going forward. To test it immediately: go to the Actions tab in your repository → click the workflow name → click Run workflow.
Dev.to → https://dev.to/feed/YOUR_USERNAME
Hashnode → https://yourblog.hashnode.dev/rss.xml
Medium → https://medium.com/feed/@YOUR_USERNAME
This is a setting most developers miss. If you do professional work in private repositories, your public contribution graph looks nearly empty even though you've been coding every day. GitHub has a setting to show private contribution activity without revealing what you were working on.
- Go to github.com/YOUR_USERNAME (your profile page)
- Scroll down to your contribution graph
- Click the small "Contribution settings" dropdown in the top right of the graph
- Check "Private contributions"
Your contribution graph will immediately update to include private repo activity. The graph shows that you contributed but doesn't reveal which repositories or what the commits contained.
Common Mistakes and How to Fix Them
These are the problems that come up most often when setting up a profile README for the first time.
Final Checklist Before You're Done
Run through this before considering your profile README complete:
- Repository named exactly the same as your GitHub username and set to Public
- README.md file exists in the root of the repository (not inside a subfolder)
- No placeholder text remaining — every YOUR_USERNAME, YOUR_HANDLE, YOUR_EMAIL replaced
- Stats card URLs include count_private=true and include_all_commits=true
- All stat widgets use the same theme (e.g. tokyonight across all three)
- Social links (LinkedIn, email, portfolio) are correct and working
- Private contributions enabled on your GitHub profile settings
- Viewed your profile from an incognito browser window to see what recruiters see
- Profile looks correct on mobile (narrow width) — check that badge rows wrap cleanly
- "Currently building" and "currently learning" sections reflect what you're actually doing right now
Need help writing the content?
The Generator builds your complete README from your details in 2 minutes. The Live Sandbox lets you write and preview it exactly as GitHub renders it.
Open Generator → Open Sandbox →