Templates Generator Sandbox Analyzer Showcase Blog Setup Guide About Contact
Setup Guide Beginner Friendly Step-by-Step

How to Set Up Your GitHub Profile README — Complete Step-by-Step Guide

👨‍💻 By Shubham Sharma · Updated August 2026 · 15 min read
This guide walks you through setting up a GitHub profile README from absolute scratch — creating the special repository, writing your content, getting it live on your profile, and optionally setting up auto-updates so it stays current. Every step has the exact commands or clicks you need. Nothing is assumed.
Total time: 20–30 minutes
💰 Cost: Free
🛠 Skill level: Beginner
Prerequisites: GitHub account

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.

Step 01 Create the special repository ~3 minutes

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
📸 What you should see
After you type your username as the repository name, GitHub shows a green banner that says "You found a secret! [username]/[username] is a special repository that you can use to add a README.md to your GitHub profile." If you see this banner, you've got the name right. If you don't see it, check your spelling — the name must match your username exactly, including capitalization.
💡 Not sure what your exact username is? Click your profile picture in the top right of GitHub. Your username appears directly below your profile photo in the dropdown. Copy it from there and paste it as the repository name — don't type it manually.
Step 02 Write your README content ~10 minutes

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:

📋 Minimal starting template — paste this into your README.md and customize
# Hi, I'm [Your Name] 👋 > [One sentence about what you build and what you care about] --- ## About Me - 🔭 Currently building: [your current project] - 🌱 Learning: [what you're actively studying] - 👯 Open to: [type of collaboration you'd say yes to] - 📍 Based in: [your city, country] --- ## Tech Stack ![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black) ![React](https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB) # Add or remove badges for your actual stack --- ## GitHub Stats <div align="center"> ![Stats](https://github-readme-stats.vercel.app/api?username=YOUR_USERNAME&show_icons=true&theme=tokyonight&hide_border=true&count_private=true) </div> --- ## Connect [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/YOUR_HANDLE) [![Email](https://img.shields.io/badge/Email-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:YOUR_EMAIL)
⚠️ Replace every placeholder before saving. Every instance of YOUR_USERNAME, YOUR_HANDLE, YOUR_EMAIL, and anything in square brackets needs to be replaced with your actual information. Leaving placeholders in your live README is one of the most common mistakes — and one of the most noticeable.

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.

Step 03 Add the content to your repository ~5 minutes

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
✅ That's it. As soon as you commit, go to github.com/YOUR_USERNAME in a new tab. Your README is now live on your profile. It usually appears within a few seconds — no waiting, no approval process.

Method B — Via Git on your local machine

If you prefer working locally:

📋 Clone, edit, and push via command line
# Clone your repository git clone https://github.com/YOUR_USERNAME/YOUR_USERNAME.git cd YOUR_USERNAME # Open README.md in your editor and paste your content code README.md # VS Code # or: nano README.md, vim README.md, etc. # Save the file, then commit and push git add README.md git commit -m "Add profile README" git push origin main

After the push, visit your GitHub profile in a browser — the README will be live immediately.

Step 04 Add GitHub stats widgets ~5 minutes

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:

📋 The three stats widgets with all important parameters set correctly
<div align="center"> # Stats card — count_private includes your private repo commits ![GitHub Stats](https://github-readme-stats.vercel.app/api?username=YOUR_USERNAME&show_icons=true&theme=tokyonight&hide_border=true&count_private=true&include_all_commits=true) # Streak counter ![Streak](https://github-readme-streak-stats.herokuapp.com/?user=YOUR_USERNAME&theme=tokyonight&hide_border=true) # Top languages — compact layout, max 6 languages ![Languages](https://github-readme-stats.vercel.app/api/top-langs/?username=YOUR_USERNAME&layout=compact&theme=tokyonight&hide_border=true&langs_count=6) </div>

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.

💡 If a widget shows a broken image: The public stats API occasionally hits rate limits, especially during peak hours. Wait 15–30 minutes and refresh your profile. If it's consistently broken, double-check that your username in the URL is spelled exactly right — including the correct case.
Step 05 Set up auto-updates with GitHub Actions (optional) ~10 minutes

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 SettingsActionsGeneral
  • 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:

📋 Add to README.md — the workflow fills in content between these markers
## ✍️ Latest Posts <!-- BLOG-POST-LIST:START --> <!-- BLOG-POST-LIST:END -->

Then create a new file at exactly this path inside your username repository: .github/workflows/blog-posts.yml

📋 .github/workflows/blog-posts.yml — full workflow file
name: Update README with Latest Blog Posts on: schedule: - cron: '0 8 * * *' # Runs daily at 8am UTC workflow_dispatch: # Lets you trigger manually from Actions tab jobs: update-readme: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: gautamkrishnar/blog-post-workflow@v1 with: # Replace with your RSS feed URL feed_list: "https://dev.to/feed/YOUR_DEV_TO_USERNAME" max_post_count: 5

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.

💡 RSS feed URLs by platform:
Dev.to → https://dev.to/feed/YOUR_USERNAME
Hashnode → https://yourblog.hashnode.dev/rss.xml
Medium → https://medium.com/feed/@YOUR_USERNAME
Step 06 Enable private contributions on your profile ~1 minute

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.

✅ Also enable this in your stats card: Add count_private=true to your GitHub Stats card URL (already included in the template in Step 4). This makes your commit count in the stats card also include private repo commits.

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.

❌ Mistake 1 — Repository name doesn't match username exactly
The most common setup error. The repository name is case-sensitive and must match your username character for character. If your username is AlexChen99 and you create a repository called alexchen99, the profile README feature won't activate.
✅ Fix
Go to Settings → Account → your username is shown there. Copy it exactly and use it as your repository name. If your repository already exists with the wrong name, go to that repository's Settings and rename it.
❌ Mistake 2 — Repository is set to private
A private repository with your username as the name does not create a profile README. GitHub only displays the README from a public repository.
✅ Fix
Go to the repository Settings → scroll to the "Danger Zone" section → click "Change repository visibility" → set it to Public.
❌ Mistake 3 — Stats card shows very low numbers
If your stats card shows 0–50 commits when you've been coding for years, you're probably missing the count_private=true and include_all_commits=true parameters. By default the stats card only counts public repo commits from the current year.
✅ Fix
Update your stats card URL to include both parameters: ?username=YOUR_USERNAME&count_private=true&include_all_commits=true
❌ Mistake 4 — Badges show broken icons
Broken icons on Shields.io badges are almost always caused by a wrong logo slug. The slug has to match Simple Icons exactly. Common wrong ones: nextjs instead of nextdotjs, tailwind instead of tailwindcss, nodejs instead of nodedotjs.
✅ Fix
Go to simpleicons.org, search for the technology, and use the exact slug shown on the site. Copy it directly rather than guessing.
❌ Mistake 5 — README doesn't appear on profile
If you've done everything correctly but the README still isn't showing on your profile, the most likely cause is that the file is named something other than README.md — for example readme.md or README.MD. GitHub is case-sensitive about this filename.
✅ Fix
Check the filename in your repository. It must be exactly README.md with uppercase R, E, A, D, M, E and lowercase .md extension.
❌ Mistake 6 — GitHub Actions workflow isn't running
Scheduled GitHub Actions don't run immediately when you create them. They run at the next scheduled time. Also, if the repository had no activity for 60 days, GitHub pauses scheduled workflows automatically.
✅ Fix
To run immediately: go to the Actions tab → click the workflow name → click "Run workflow." If workflows are paused due to inactivity, you'll see a banner in the Actions tab — click "Enable workflows" to reactivate them.

Final Checklist Before You're Done

Run through this before considering your profile README complete:

💡 One final tip: After setting up your README, share your GitHub profile URL in a developer community — Dev.to, a Discord server you're in, or LinkedIn. Real views from real people in the first few days signal to GitHub that your profile has genuine interest and gets you immediate feedback.

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 →
👨‍💻
Shubham Sharma
Software Engineer & Creator of ReadmeDesign
Shubham is a software engineer with 3+ years of experience in web architecture and developer tooling. He built ReadmeDesign to help developers showcase their technical work effectively to hiring managers.