How to write tasty READMEs: essential tips for success

A README file is like the starter dish in a full-course meal—it’s the first taste users get of your project. Just like a well-prepared appetizer sets the tone for the rest of the meal, a great README draws users in and prepares them for what’s to come. Unfortunately, people frequently overlook its importance for a software project. This guide explains why a decent README is your key for success and gives you practical tips on how to make it stand out. Additionally, it includes templates and a short checklist to speed up the writing process and evaluate your writing.

What is README

A README is a plain text file—typically named README, README.txt, or README.md—that provides an overview of a system or project. It explains the purpose of the code, what it does, and how to use it.

💡
The README filename is often written in capital letters, so that it appears at the top in command-line environments that use alphabetical ordering.

Audience and purpose

As with any written content, it’s important to understand who the README is for and why we are creating it. The table below outlines different types of users, their definitions, and the purpose the README serves for each group.

TypeDefinitionPurpose
UsersPeople who interact with the project but don't modify or develop it, such as general users, mentors, and stakeholdersUnderstand the project’s purpose and learn how to use it effectively.
CollaboratorsIndividuals actively contributing to the project: contributors, developers, and testersLearn how to add features, fix bugs, or improve the project.
MaintainersPeople responsible for managing, deploying, and documenting the project: project managers, system administrators, and technical writersGain a high-level overview of the project’s goals, progress, key features, and environments.

Key elements

What should your README starter pack include? There is no universal structure. However, some sections are must-haves to consider. Here is the list:

  • Project title

  • Project description

  • Technologies used

  • Installation instructions

  • Usage examples

  • Contribution guidelines

  • License information

  • Other

Explore the diversity of README formats by comparing these templates: profile README template and project README template.

How to create good README

Let’s walk through the steps to create your first README.

Step 1: create README file

Navigate to the project’s folder and create a new file with .md extension. If you are using Github, complete the following steps:

  1. Log in to your GitHub account.

  2. From your dashboard, select New to create a new repository.

  3. Name your repository, add a description, and choose if it should be private or public.

  4. Make sure to select the Add a README file box.

  5. Click Create repository.

    GitHub will automatically add a README file to your project.

Step 2: add project title

The project title is the name of your project. Try to make it self-explanatory so the user could tell what your project is about only by skimming it. The project title is the only L1 heading of your Markdown file.

Bad example:

# Project XYZ

Gives no insight into what the project does or its functionality.

Good example:

# TaskMaster: task management app

The title is clear and descriptive.

Step 3: provide project description

A project description is essentially a short summary of the entire software project. It tells your reader what the project aim is and what problems it solves. If the readers want a quick overview of the project without reading the whole README, the project description is where to look.

Here is an example of a good project description:

## Introduction

TaskMaster is a user-friendly task management app that helps individuals and teams efficiently organize, prioritize, and track tasks, set deadlines, collaborate, and stay on top of their projects

For a training project, try to cover the following questions in your project description:

  • What was your motivation?

  • Why did you start this project?

  • What makes your project stand out?

  • What were the challenges?

  • What did you learn?

Example:

## Introduction

I created TaskMaster as my training project to learn how to build a simple task management app that helps users organize their tasks. This experience allowed me to improve my programming skills and learn about the fundamentals of app development.

Step 4: list technologies used

Listing the technologies used in your project might prove hugely helpful both for users and contributors. It allows readers to quickly understand how the project came to be and what is the project’s environment and compatibility. It also showcases the tech stack, which can attract developers familiar with those tools.

You can include languages you used, frameworks, libraries, and its versions. For example:

## Technologies Used

- **Languages**: JavaScript (ES6)
- **Frameworks**: React 18.0
- **Backend**: Node.js with Express
- **Databases**: MongoDB
- **Version Control**: Git

Step 5: include installation instructions

If your audience needs to download your project first, provide a clear, step-by-step instructions on how to set up and run the software, including any operating systems, dependencies, or prerequisites needed.

Example:

## Installation

1. Clone the repository.

```
git clone https://github.com/yourusername/TaskMaster.git

cd TaskMaster

```
2. Install the dependencies.

```
npm install

```
3. Start the development server.

```
npm start

```

Step 6: include usage examples

Usage examples are a great way to show the readers how to use your project. This section often includes code snippets and commands as well as visual aids like screenshots.

Example:

## Usage examples

- **Example task**:  
  *Title*: "Finish Project Report"  
  *Description*: "Complete the final draft of the project."  
  *Due Date*: "2024-10-30"

- **Example of tagging**:
   Use tags like **Urgent**, **Work**, or **Personal** to categorize tasks.

Step 7: add contribution guidelines

Clear and inviting guidelines can attract contributors to your project. Think of them as a shield on a shop door that says “Welcome”. It means everyone is encouraged to come in and get involved. Often, especially in large open-source projects, contributor information is separated into its own .md file. However, even if your project is small, but you still want people to contribute, you can add a separate section for contributors. Be sure to state your project’s contribution policy, requirements, and onboarding steps.

Example:

## Contribution Guidelines

We welcome contributions to TaskMaster! Please follow these steps:

1. Fork the repository.
2. Create a branch
   Use a descriptive name.
3. Make changes.
   Follow our coding style.
4. Commit.
   Write clear commit messages.
5. Submit a pull reques.

Step 8: choose your license

Coding is creative work, and creative work is, by default, protected by copyright. A license helps you to clarify what other developers can and cannot do with your software project. The most popular software license on GitHub is the MIT License. It is very permissive allowing users to do almost anything they want with your code, including using it in commercial products. If you need help choosing a license, click here.

Example:

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

Include licensing information for dependencies.

Step 9: add other information

There might be some specific information that is relevant just for your project, such as contact details, acknowledgements, or FAQs. Feel free to add whatever you think is informative and relevant.

Example:

## Contact details 

For inquiries or suggestions, please contact us:

- **Email**: contact@taskmasterapp.com
- **GitHub**: [TaskMaster Repository](https://github.com/yourusername/TaskMaster)
- **LinkedIn**: [Your LinkedIn Profile](https://www.linkedin.com/in/yourprofile)

We appreciate your feedback!

For a README to be helpful, there are certain mandatory pieces of information the document should contain. If you are new to GitHub, you can use this README checklist to confirm you are really on track. The following set of tools will significantly automate your writing process:

But remember, READMEs are not just a one-time task. They mirror your project and grow with it, so it is important to always keep them up-to-date. Hope you’ll enjoy the writing. Good luck!

0
Subscribe to my newsletter

Read articles from Yauheniya Krasnikava directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Yauheniya Krasnikava
Yauheniya Krasnikava

As a junior technical writer, I enjoy turning complex tech concepts into engaging stories that both techies and non-techies love! Whether it’s step-by-step guides or software documentation, my mission is to make tech clear and accessible for everyone. Excited to keep growing and contributing to the community!