All posts
careerproductivitydeveloperindie-hacking

How to Write a README That Actually Gets Read

How to Write a README That Actually Gets Read — practical advice from a developer and founder who has actually been through it.

SR

Suhail Roushan

June 19, 2026

·
3 min read

A good README is the difference between your project being used or ignored. I've seen countless promising repos die in obscurity because their documentation was an afterthought. In my experience building products at Anjeer Labs, a clear README is your project's front door—if it's locked or confusing, people simply walk away. Writing a README that actually gets read is a critical skill for any developer, and it's about structure and empathy, not just words.

What belongs in a README file?

Your README is a sales pitch, user manual, and technical reference combined. Start with the absolute essentials. The first thing a visitor sees should answer their core question: "What is this and why should I care?" Immediately follow that with a clear, visual example. For a UI library, show a code snippet and a screenshot. For an API, show a minimal curl command and the expected response. The top of your README must prove value in under 10 seconds.

How to structure your README for maximum clarity

Adopt a consistent, scannable structure. People don't read; they skim. Use clear headings and break text into short paragraphs. Here’s the order that works for me:

  1. Project Title & Badges: Use shields.io for version, license, and build status.
  2. One-Liner Description: A single sentence under the title.
  3. Visual Demo/Gif: "Show, don't tell" is paramount.
  4. Quick Start: The minimal steps to get something running. Assume zero context.
  5. Detailed Documentation: Link out to a separate docs/ folder or site. Your README is a table of contents, not the whole book.
  6. API Reference or Configuration: Key options only.
  7. FAQ / Troubleshooting: Document the problems you had while building it.
  8. Contributing & License.

This structure guides users from curiosity to implementation without friction.

Do you really need a "Features" list?

Yes, but only if you write it correctly. A bad features list is generic fluff: "Fast, lightweight, easy-to-use." A good one translates technical specs into user benefits. Compare:

  • Bad: "Uses Rust for performance."
  • Good: "Processes CSV files 10x faster than Node.js csv-parser by using a native Rust core."

Be specific and comparative. Each bullet should answer a potential user's objection or highlight a key differentiator. This section is for the evaluator who is comparing your project to three others on GitHub.

Writing installation instructions that work

This is where most READMEs fail. They assume too much. Your installation steps must be idiot-proof and copy-pasteable. Test them in a fresh environment. Use concrete examples and include the exact commands, including the $ prompt.

# Good
$ git clone https://github.com/yourname/project.git
$ cd project
$ npm install
$ npm run dev

# Bad
Clone the repo, install dependencies, and start the dev server.

Always specify the exact version requirements for the runtime (Node.js >=18, Python 3.11+, etc.) and mention if any global dependencies are needed. The goal is zero "what now?" moments.

When should you write the README?

Write the first draft of your README before you write a single line of code. This is my most controversial but valuable piece of advice. Writing a "README-first" forces you to define the project's purpose, scope, and public API. It acts as a blueprint. As you build, update it. By the time you push to GitHub, the documentation is already complete, not a last-minute chore. This practice, which I follow for all projects on suhailroushan.com, ensures the code and its explanation evolve together.

Treat your README as the most important file in your repository—because for your users, it is.

Related posts

Written by Suhail Roushan — Full-stack developer. More posts on AI, Next.js, and building products at suhailroushan.com/blog.

Get in touch