!(https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ihdl0a5hmx7fiq0gjj4g.jpg)
Picture this: you've just finished your project, pushed the code to Github and now you're staring at that blank space where a README text should go. And you're thinking, "What now?"
If you're going through this, then don't panic. We've all been there.
An average beginner will either leave it empty. Or maybe write a vague README with a title, an install command, and a lazy "open to contributions"
But that's not you!
You can do better. After all, your README is literally the front door of your project. It decides whether someone sticks around, contributes, or even understands what your code is supposed to do.
You don't need to be a Shakespeare to write one. A great README is a guide, a pitch, and a handshake all in one. It explains the “what,” “why,” and “how” of your project in clear, human language. It doesn’t have to be long— it just has to be good.
In this article, I will show you exactly what makes a great README, section by section—complete with examples, tips, and even a template you can steal for yourself. By the end, you might not be a Nobel laureate-level writer, but you'll know how to turn even the messiest repo into something people want to use, clone, and contribute to.
Ready? let's get to it then
What a Great README Answers (In This Order)
A great README should answer six questions, in this exact order:
- What is this? Give the one-sentence pitch. Example:
Drizzle is a weather app built for everyone
- Why does it exist?
What's the pain point it solves? Why should I care?
Example:
I got tired of confusing boring apps so I built something to quickly check the current weather conditions for any location using an API.
- How do I use it? Installation, setup, and basic usage.
```bash git clone https://github.com/yourname/tasktrackr cd tasktrackr npm install npm run dev ```
- How does it work (at a glance)? A simple diagram or 3-5 sentence technical overview for curious developers.
Drizzle is built using HTML, CSS, and JavaScript to make for an animating experience.
- How can I contribute? Link to CONTRIBUTING.md, or explain how to open issues and PRs.
Found a bug? Want to add a feature? Open an issue or submit a pull request—just follow the style guide in CONTRIBUTING.md.
- Where can I get help? Link to docs, Discord, email, or issue tracker.
Questions? Ping me on Twitter [@yourhandle] or open a GitHub issue.
The Golden Rules of a Great README
Here are the golden rules that separate great READMEs from forgettable ones:
- Start with the What and Why: Don’t make readers guess what your project is about. Open strong with a clear one-liner:
“This is a lightweight CLI tool to resize images in bulk.”
“A simple expense tracker built with Vue.js and Firebase.”
Then follow with a short “why” — what problem does it solve? Why did you build it?
✅ Good example:
"Ever needed to resize 200 images at once? This tool does it in one command."
- Show, Don’t Just Tell Use Screenshots, GIFs, or terminal output, they are worth 1,000 words. Use this especially for UI projects, a visual can instantly clarify what your app looks like or how it behaves.
Bonus: People are more likely to share and use something they can see.
- Keep the Installation Stupid Simple
If someone has to scroll, copy, edit, and Google just to install your project… they won’t.
```bash npm install your-package-name ```
- Write Like a Human Skip the corporate tone. You’re not writing terms and conditions. Be friendly, clear, and even a little funny if it suits your project.
*The Ultimate README Template (Steal This)
*
Here’s a plug-and-play README structure you can easily use for almost any project. Copy it, tweak it, and your repo will instantly look way more professional and welcoming.
*Project Title
*
A one-liner that explains what your project does and who it’s for.
Demo
Add a Link to live site or demo video
Features
- ✨ Feature 1
- 🚀 Feature 2
- 🛠️ Feature 3
Why This Exists
Brief explanation of the problem you're solving and your motivation behind it.
Installation
```bash # Clone the repo git clone https://github.com/yourusername/yourproject.git # Install dependencies npm install # Run locally npm start ```
Usage
```bash Copy code ## Example command resize-cli ./images --width 800 --height 600 ```
Configuration
Optional section if your project has environment variables or settings.
```bash ## .env file example API_KEY=yourkey ```
Project Status
🚧 This project is under active development.
✅ Stable and production-ready.
💀 No longer maintained.
(Add one and delete the others.)
Contributing
Pull requests are welcome! Please see CONTRIBUTING.md for guidelines.
License
MIT, Apache 2.0, or whatever fits your needs.
Acknowledgements
Shout-outs to tools, libraries, mentors, or inspirations.
Author
Your Name – @twitter – your.email@example.com
Common Mistakes to Avoid
- No README at All
🛑 The Sin: You pushed a project, but left the README empty (or didn’t include one).
💡 Fix It: Even a minimal README is better than none. Just answer three things: What is it? How do I use it? Why should I care?
- Too Vague, Too Short
🛑 The Sin: A one-line README that says:
"This is a Node.js project. Contributions welcome."
💡 Fix It: Give context. Say what your project actually does and why someone should use it. Be specific.
- Dumping Everything Into One Paragraph
🛑 The Sin: Walls of text with no formatting, no sections, no breathing room.
💡 Fix It: Use headings (##), bullet points (-), and code blocks (
) to make your README scannable.
4. No Installation or Usage Guide
🛑 The Sin: You expect users to figure it out on their own.
💡 Fix It: Include clear installation steps and a usage example, even if it’s simple. Show how to run it. Assume zero prior knowledge.
5. Forgetting the License
🛑 The Sin: Your code has no license, which legally means people can’t reuse it.
💡 Fix It: Add a license section with something like MIT or Apache 2.0. GitHub even offers automatic license templates.
Finally, Write README First
Your README isn’t an afterthought—it’s the first impression. A good README tells the story of your project in a way that invites people in. It answers questions before they’re asked, guides users before they get lost, and inspires contributors before they click away.
Top comments (0)