How to Write a Great GitHub README (With Examples)
TL;DR
Your README is the first thing people see when they find your project on GitHub. This guide covers every section you need, common mistakes to avoid, and templates you can copy.
A GitHub repository without a good README is like a store with no sign on the door. People show up, look around, and leave. Your code might be brilliant, but if nobody can figure out what it does or how to run it, they'll move on.
The README.md file sits at the root of your repository. GitHub renders it automatically on your project's main page. It's your project's homepage, documentation, and first impression rolled into one file.
Here's how to write one that actually works.
Why Your README Matters More Than You Think
Three reasons to take your README seriously:
First impressions are fast. Developers spend about 30 seconds scanning a README before deciding whether to star, clone, or close the tab. If those 30 seconds don't answer "what is this?" and "how do I use it?", you've lost them.
Documentation saves you time. Every hour you spend writing clear install instructions saves you dozens of hours answering the same questions in issues and emails. A README that anticipates common questions reduces your support burden significantly.
Discoverability improves. GitHub's search algorithm considers README content. A well-written README with relevant terms helps people find your project when they're searching for solutions.
Try Markdown to HTML Converter Free
Convert Markdown to clean HTML code instantly.
Open ToolNo signup required. Runs in your browser.
Essential Sections Every README Needs
These six sections form the backbone of any good README. Skip one and you'll leave gaps that frustrate users.
1. Project Title and Description
Start with your project name as an H1 heading, followed by one or two sentences explaining what it does. Be specific. "A tool for developers" tells nobody anything. "A CLI tool that converts Swagger API specs into TypeScript client libraries" tells them everything.
2. Installation
Tell people exactly how to install your project. Include the package manager command, any prerequisites, and the minimum language or runtime version required.
If your project has system dependencies (like Python, Docker, or a specific database), list them here. Don't assume people have anything installed.
3. Usage
Show a basic example. Code speaks louder than paragraphs. Include the most common use case with real input and expected output.
4. Configuration
If your tool has options, flags, or config files, document them. A table works well here. If you're working with data in CSV format, you can quickly convert it to a clean Markdown table using Morphkit's CSV to Markdown tool instead of formatting it by hand.
5. Contributing
Even a short section here signals that you welcome contributions. Link to a CONTRIBUTING.md file if you have one, or list the basics: how to fork, how to submit a PR, and your code style expectations.
6. License
State your license clearly. One line is enough.
Optional Sections That Make a README Stand Out
Once you've nailed the essentials, these additions help your project feel polished and professional.
Badges sit at the top of your README and show build status, test coverage, npm version, or license type at a glance.
Screenshots or GIFs show what your project looks like in action. A 10-second GIF of your CLI tool running or your web app's interface communicates more than a paragraph of description ever could.
Table of Contents helps with longer READMEs. If your document has more than five or six sections, add one near the top with anchor links.
FAQ addresses the questions you keep seeing in issues. Put them in the README so people find answers before they open a ticket.
Changelog tracks what changed between versions. Link to a separate CHANGELOG.md for longer histories.
Roadmap shows where your project is heading. A bullet list of planned features tells potential contributors where they can help.
Markdown Formatting Tips for Better READMEs
Your README is a Markdown file, so learning a few formatting tricks goes a long way.
Headings create structure. Use ## for main sections and ### for subsections. Don't skip levels.
Code blocks need language hints. Always specify the language after the triple backticks for syntax highlighting.
Tables organize options and comparisons. The syntax is fiddly to write manually, but you can speed this up. If your data lives in a spreadsheet, export it as CSV and run it through Morphkit's CSV to Markdown converter.
Images need alt text. The syntax is .
Links should be descriptive. Write [installation guide](#installation) instead of [click here](#installation).
If you want to preview how your Markdown will look before pushing it to GitHub, convert it to HTML with Morphkit's Markdown to HTML tool.
Common README Mistakes
These come up constantly. Avoid them.
No installation instructions. The most common complaint in GitHub issues is "how do I install this?" Don't make people guess.
Outdated examples. Your API changed six months ago, but your README still shows the old syntax. Keep examples in sync with your actual code.
Wall of text with no structure. A README without headings is painful to scan. Break it into sections. Use short paragraphs. Add code blocks.
Too short. A single sentence description with no examples or install steps isn't a README. It's a sticky note.
Too long. If your README is 3,000 words, move detailed docs to a /docs folder or a separate documentation site. The README should be an entry point, not an encyclopedia.
No license. Without a license, your code is technically "all rights reserved" by default. If you want people to use your project, pick a license and state it clearly.
A README Template You Can Copy
Here's a complete template. Copy it, fill in your details, and you'll have a solid README in minutes.
# Project Name
One-line description of what this project does and who it's for.
## Installation
npm install your-package
## Usage
your-command --input file.txt
## Configuration
| Option | Description | Default |
|--------|-------------|---------|
| --input | Input file path | Required |
| --verbose | Enable detailed logging | false |
## Contributing
1. Fork this repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Open a Pull Request
## License
MIT License. See LICENSE for details.
If you have configuration tables stored in a spreadsheet, don't retype them. Export the file as CSV and paste it into Morphkit's CSV to Markdown tool.
Working With Markdown Outside GitHub
If you need to share your README as a formatted document, Morphkit's Markdown to PDF converter turns your .md file into a clean PDF.
Got existing documentation in plain text? Morphkit's Text to Markdown converter handles the conversion.
Start Writing
Your README is the most-read file in your entire repository. Spend 30 minutes on it now, and you'll save hours of confusion later.
Open your repository, create or edit your README.md, and work through the template above section by section. Preview your Markdown with Morphkit's Markdown to HTML tool to check formatting before you push. Your future users will thank you.