README best practices

How to write a good README for a GitHub project.

A good README helps someone understand the project, run it locally, configure it safely, and decide whether it is worth using, reviewing, or maintaining.

What makes a README good?

The best GitHub README files are practical before they are beautiful. They answer the first questions a developer has: what is this project, how do I run it, what configuration is required, where is the important code, and what should I be careful about?

1. Project title and one-line description

Start with the project name and a direct sentence that says what the project does, who it is for, and why it exists.

2. Quick Start

Show the fastest path to running the project. Put clone, install, setup, and run commands near the top.

3. Prerequisites and installation

List runtimes, package managers, databases, API keys, OAuth apps, and service accounts before the setup steps.

4. Usage examples

Add screenshots, CLI examples, API calls, routes, or UI steps. A README should prove how the project is used.

5. Environment variables

Document variable names, purpose, and whether they are required. Never include real secret values.

6. Project structure

Explain the important folders and entry points so a new contributor or client knows where to start.

7. Deployment and maintenance notes

For real handoff, include hosting provider, build command, database migrations, webhooks, rollback notes, and known limitations.

8. Contributing and license

If the project is public, explain how to contribute and what license applies. If there is no license, say so clearly.

Good README vs weak README

Weak README

A weak README says what the project is, but not how to run it. It often skips environment variables, deployment, tests, and project structure.

Good README

A good README gives a new developer enough context to clone, configure, run, test, deploy, and maintain the project without asking basic questions.

Example structure

A good README outline

# Project Name

One clear sentence explaining what this project does.

## Quick Start

```bash
git clone https://github.com/owner/project.git
cd project
npm install
npm run dev
```

## Configuration

List required environment variables and service setup.

## Usage

Show commands, screenshots, API calls, or product flows.

## Deployment

Explain build commands, hosting, migrations, and webhooks.

## Project Structure

Explain the folders and entry points that matter.

README checklist

  • Explain the project in one clear paragraph.
  • Put Quick Start commands near the top.
  • Use fenced code blocks for terminal commands and examples.
  • Document required environment variables without exposing secrets.
  • Describe the main folders and entry points.
  • Include deployment notes when the repo will be handed off.
  • Only mention features, licenses, and roadmaps that actually exist.

Related README resources

Generate this structure automatically

MakeMyReadme analyzes your repository and writes a README with sections that fit the actual project instead of forcing a generic template.

How to Write a Good README for GitHub | Best Practices | MakeMyReadme