How to Write a Great README (With Markdown)

The 9 sections every good README has, why each one matters, and how to ship yours in under 15 minutes.

A good README is the difference between a project people use and a project people forget. It's the first thing a visitor sees on your GitHub page, the first thing a potential contributor reads before deciding whether to file an issue, and the only documentation most users will ever read. This post walks through the 9 sections every good README should have, why each one matters, and how to use the Free README Generator to ship yours in under 15 minutes.

Why READMEs matter more than you think

Every time someone lands on your GitHub repository, they're doing a quick evaluation: is this project worth my time? The README is almost all the signal they get. Great code with a bad README loses to average code with a great README, because the average-code project is easier to adopt.

Good READMEs also reduce your support load. Every question a user asks in an issue is a signal that your README didn't answer it. Write the README once; avoid answering the same question 50 times.

The 9 sections every good README has

Not every project needs every section — a two-file utility library doesn't need an Architecture section. But if you're missing three or more of the nine, your README is probably thin.

1. Project name and tagline

The first line after the badges: a clear, memorable one-liner that tells a new visitor exactly what the project does. "A fast, zero-dependency Markdown formatter for Node and the browser" beats "A utility library" every time.

2. Badges (shields.io)

A single row of shields.io badges at the very top: npm version, license, build status, coverage, downloads. They signal maturity, activity, and quality at a glance. The README Generator includes them by default with a one-click toggle.

3. Description

Two or three paragraphs explaining what the project does, who it's for, and why it exists. Be specific about the problem you're solving and honest about the scope. "Converts Markdown to clean HTML with GFM tables and syntax highlighting" beats "A Markdown toolkit."

4. Features

A bulleted list of what makes your project worth choosing. Keep it to 5–8 items. Lead with differentiation: what makes your library different from the ten other libraries that do the same thing? If you can't answer that, reconsider whether the project needs to exist.

5. Installation

A fenced code block showing the exact install command. For npm packages: npm install your-package. For Python: pip install your-package. For Rust: cargo add your-package. For applications: link to the releases page or the download instructions.

6. Usage

At least one code example showing the most common use case. For libraries, a <10-line snippet that imports, calls the main function, and logs the result. For CLIs, the 3 most common commands. For web apps, a screenshot and a quick setup guide.

Use Markdown fenced code blocks with language hints (```js, ```python) so GitHub and most renderers apply syntax highlighting.

7. API reference (for libraries)

A short reference for public functions, their parameters, and their return values. Don't try to be exhaustive — link to full docs for that. The README's job is to show the most common patterns, not document every edge case.

8. Contributing

A paragraph or two explaining how to contribute. Include the dev setup commands, the test command, the style guide, and the PR process. Link to a CONTRIBUTING.md for more detail if you have one. Don't gatekeep — the easier you make it to contribute, the more contributors you'll get.

9. License

The last section of the README, always. One line: "MIT © Your Name" or "Apache 2.0 © Your Organization". Link to the full LICENSE file. Never leave a README without a license — projects without licenses are legally murky.

The tools that make this easy

You don't have to write all of this from scratch. Our Free README Generator builds a polished README from a short form in under two minutes — pick a template, fill in the fields, and copy the output. Once you have the base, customize any section.

If your README has long sections, use the TOC Generator to add a navigable Table of Contents at the top. Preview the final result with the Live Preview before committing. Clean up inconsistencies with the Formatter.

Common mistakes to avoid

  • No usage example. The single biggest README sin. Users will bounce.
  • Too long. If your README is 3000+ words, move the reference docs to a separate file. README is the entry point, not the manual.
  • Marketing fluff. "Revolutionary!", "Game-changing!", "Industry-leading!" — strip all of it. Tell me what the code does.
  • Broken code examples. Test every example in your README before shipping. A broken example is worse than no example.
  • No license. Without a license, your code is legally unclear — don't leave users guessing.

Ship it

Open the README Generator, pick a template, fill in the form, and paste the output into a new README.md file in your project root. Edit the sections that need customization. Commit, push, and watch your project suddenly look 10× more professional.

For more markdown writing tips, subscribe to the blog feed via the RSS feed or keep an eye on the blog index.