README Template
A production-ready README template for open-source and internal projects.
README Template
Overview
A README is the front door of your project. It is the first thing developers see on GitHub, npm, PyPI, or Docker Hub. A well-structured README reduces onboarding friction, answers common questions, and sets expectations for contributors.
This template provides a battle-tested structure you can copy, adapt, and ship in minutes.
When to Use
Use this template when:
- Starting a new open-source project
- Documenting an internal library or tool
- Publishing a package to a public registry
- Handing off a project to another team
Solution
Copy the template below and replace the [bracketed] placeholders:
# [Project Name]
[](LICENSE)
> [One-line description of what this project does.]
## Table of Contents
- [Overview](#overview)
- [Installation](#installation)
- [Usage](#usage)
- [API Reference](#api-reference)
- [Contributing](#contributing)
- [License](#license)
## Overview
[2-3 paragraphs explaining what the project does, why it exists, and who should use it.]
## Installation
### Prerequisites
- [Node.js 18+](https://nodejs.org/)
- [Python 3.10+](https://python.org/)
### Quick Start
```bash
# Clone the repository
git clone https://github.com/username/repo.git
cd repo
# Install dependencies
npm install
# Run the project
npm run dev
Usage
Basic Example
import { myFunction } from 'my-package';
const result = myFunction({ option: true });
console.log(result);
Configuration
| Option | Type | Default | Description |
|---|---|---|---|
timeout | number | 5000 | Request timeout in milliseconds |
retries | number | 3 | Number of retry attempts |
API Reference
See API.md for the full API documentation.
Contributing
We welcome contributions! Please read CONTRIBUTING.md for details.
License
MIT © [Author Name]
## Explanation
Each section serves a specific purpose:
- **Badges**: Instantly communicate build status, version, and license
- **One-liner**: Hook the reader in under 10 seconds
- **Table of Contents**: Essential for long READMEs; auto-generated on GitHub
- **Installation**: Lower the barrier to first success; include copy-paste commands
- **Usage**: Show a minimal working example before explaining edge cases
- **API Reference**: Link to detailed docs; keep the README scannable
- **Contributing**: Set expectations for PRs, issues, and code style
- **License**: Protects both authors and users legally
## Variants
| Project Type | Sections to Add | Sections to Skip |
|-------------|-----------------|------------------|
| **Library / SDK** | API Reference, Changelog | Screenshots |
| **CLI Tool** | Commands, Flags, Config | Architecture |
| **Web App** | Screenshots, Demo link, Deploy | API Reference |
| **Internal Tool** | Onboarding, Internal Slack channel | License, Contributing |
## Best Practices
- **Keep the first 100 lines scannable** — most readers never scroll past the fold
- **Use a demo GIF or screenshot** — visual proof beats paragraphs
- **Link, don't inline** — detailed docs belong in `/docs`, not the README
- **Update the TOC** — stale TOCs frustrate readers; use `doctoc` or auto-generate
- **Add a troubleshooting section** — collect the top 3 issues from your issue tracker
- **Include a changelog link** — users need to know what changed between versions
## Common Mistakes
- **No installation instructions** — assume the reader has zero context
- **Missing prerequisites** — "it works on my machine" syndrome
- **Giant blocks of text** — break into sections, lists, and tables
- **Outdated examples** — broken code examples erode trust immediately
- **No license** — legally blocks usage and contribution
- **Copy-paste from another project** — stale links and wrong project names
## Frequently Asked Questions
**Q: How long should a README be?**
A: As short as possible while answering: What is this? How do I install it? How do I use it? Where do I get help?
**Q: Should I include a Table of Contents?**
A: Yes, if the README exceeds 300 lines. GitHub auto-generates one from H2 headings, but a manual TOC is more flexible.
**Q: Can I use HTML in a README?**
A: Yes, GitHub Flavored Markdown supports a subset of HTML. Use it sparingly for layout (e.g., centering badges) but prefer Markdown for content.