[Webinar] Docs-as-code without the complexity.→ Save your seat
<- Back to main blog

15 Elements to Include in Your README Document

DocumentationUpdated: May 25, 2026
Dragos
Dragos
Founder, robot with feelings. From planet Aiur.

Discover essential elements to enhance your README document with our comprehensive list and ensure your project is well-documented and user-friendly.

15 Elements to Include in Your README Document

For new users of your software, the README is typically the first piece of documentation they consult.

This text serves as an introduction to your project, explaining its purpose and providing instructions on how to use it.

In other words, the README is a guide that helps users navigate your software.

However, for a README to be helpful, there are certain indispensable sections this document should contain.

For instance, imagine if you omitted the installation instructions—how would developers even start using the software?

That’s why we’ve compiled this article—so you have a comprehensive list of elements your README should contain.

Project Title#

The first thing users should see after opening your README file is the project title. This is the name of your project; a few words describing your project in one sentence.

Ideally, your project title should be self-explanatory so users immediately get an idea of what the project is about. For example, look at this README title:

Source: GitHub

Even though the project’s function isn’t apparent from the title alone, the .js ending still indicates it’s a JavaScript build.

Furthermore, the soundwave icon on the left implies a musical association. Users can infer it’s audio software.

In addition, the subtitle further clarifies the software’s purpose. The smaller text right underneath explains everything the main title hinted at.

Project Description#

Place the project description directly after the project title.

This text is essentially an extended version of the heading, further elaborating on the project’s goals, functions, and usage.

A project description is essentially a short summary of the entire software.

If readers want a quick overview of the project without reading the whole README, the project description is where to look.

Here’s an excellent example of a project description:

Source: GitHub

Informative, humorous, and short, this description succinctly summarizes the project’s motivation and purpose, including all essential details. These are all the project’s main points.

Furthermore, the description is friendly and engaging—the reader likely laughed. With this description, users will immediately connect with the project’s aims.

Table of Contents#

Depending on the project’s complexity, READMEs can often be pretty lengthy.

Since long documents are harder to navigate, readers might overlook the information they need, or have trouble finding it.

However, you can address these issues by adding one simple element: a table of contents.

With an interactive table of contents, users can quickly find the information they’re looking for and immediately jump to those segments. They’ll read the README much more efficiently.

Here’s a sample table of contents:

Source: GitHub

This table of contents also includes sub-headings, creating a clean and organized structure users can easily follow, so navigating the README shouldn’t be a problem.

Technologies Used#

Although README files seldom include this element, listing the technologies used in your project is hugely helpful.

Having a record of these technologies considerably facilitates launching the project in the future.

Library versions change, and even a small change can lead to problems further down the line.

However, you can avoid these mishaps by noting the exact technologies used, as users will know precisely which platforms you built the software with.

For example, here’s how WebApp was made:

Source: WebApp

With this technology list, readers will know exactly how the software came to be and what components make up its codebase.

Additionally, each item is hyperlinked, allowing users to easily research the technologies for more details if they wish.

Requirements#

A README’s chief purpose is to make interaction with your project easier.

Users are more inclined to utilize your software if it’s well-documented, as they can then access supplementary materials that guide them.

Of these instructions, software requirements are perhaps the most essential.

Without a list of requirements, users can’t even launch the project; this data is crucial for a smooth start.

Have a look at Pa11y’s requirements:

Source: GitHub

The README offers detailed information for different operating systems, covering all possible options.

Furthermore, the document even offers alternative solutions if the user can’t run the newest Node.js version (Pa11y’s chief requirement).

The requirement overview is extremely thorough, taking into consideration all user environments, and guarantees an easy software launch—and that’s exactly what to strive for.

Installation Instructions#

After verifying the requirements are fulfilled, the next step is installing the software, so users can finally get their hands on the code.

Generally speaking, installation instructions should be straightforward—users shouldn’t lose time on installation.

Proclaim is a good example:

Source: GitHub

The README provides concise yet comprehensive instructions for several installation methods.

This text covers both the server and client sides and even offers two choices for the latter. As such, installing the software should be simple.

If you have many installation methods, it’s better to hyperlink the instructions to additional documents instead of prolonging the README.

That was PowerShell’s approach:

Source: GitHub

With this interactive table of installation instructions, the README remains short yet informative.

Usage Instructions#

Once your users have installed the software, it’s time to teach them how to use it. That way, they can begin utilizing your product as soon as possible.

The usage instructions typically include brief descriptions of the software’s capabilities, supplemented by code snippets.

That way, users know exactly what actions to perform to achieve their desired functionality.

For example, here’s an excerpt from the usage instructions by Closures:

Source: GitHub

Closures’ capabilities are outlined in a systematic list, with a code sample accompanying each feature.

With this helpful overview, users have specific guidelines for using the software.

They won’t waste time trying to figure it out on their own; instead, all the essential information is clearly presented.

Documentation#

Although it should be thorough, your README shouldn’t be too long, as users might lose interest. So, how do you balance these two facets?

Try including a hyperlinked documentation section. That way, users can navigate to additional documentation, but your README stays concise.

Here’s a good example:

Source: GitHub

Instead of listing all these documents, they’re helpfully linked, keeping the README informative yet brief.

An elegant way to interlink your README with other documentation is by utilizing a documentation platform. That way, you host the two categories in the same space.

Here’s how that works with our own platform, Archbee:

TURN STATIC DOCS INTO INSTANT ANSWERS

Build beautiful knowledge portals that are easy to navigate, search and share

SPRING 2026Easiest SetupENTERPRISE
SPRING 2026Easiest To UseENTERPRISE
SPRING 2026Best UsabilityENTERPRISE
SPRING 2026High PerformerENTERPRISE
UsersLove UsMILESTONE

Source: Archbee

Look at the left-hand table of contents—that’s all the documentation you can easily interlink with your README, all in the same location.

Visuals#

Humans are visual learners, and information is much easier to retain if presented through images, as opposed to solely text.

Why not apply this insight to your README?

If your README contains visuals, it’s almost guaranteed that readers will easily understand the content of your document.

For example, these visuals can demonstrate the project’s features so that users can see exactly how the software operates.

Flutter did this very well:

Source: GitHub

Flutter features hot reload, which allows users to see the outcomes of their code changes instantly. As soon as they edit the code, they can see the results on an accompanying screen.

Flutter communicated this feature better than any description by including a screenshot.

Support Information#

Your users will occasionally encounter problems, no matter how hard you’ve worked on your project. When that happens, you need to provide a way to assist them.

It doesn’t matter whether it’s a Slack channel or a Discord server—your README should note where users should turn to receive support.

Here’s ESLint’s solution:

Source: GitHub

Short and simple yet informative—users know exactly how to contact ESLint with their questions.

Although GitHub discussions and Discord servers are popular support solutions, there are a few other options.

ReLaXed took the following approach:

Source: GitHub

Other possible support platforms include GitHub issues, StackOverflow and Reddit.

You can choose whatever option suits your project most—just ensure the support information is in the README.

Project Roadmap#

This element isn’t a mandatory README section, but it certainly helps elevate your document.

By including a product roadmap, you communicate your project’s past and future progress.

Readers can consult the roadmap to see how your software has grown and what features they can expect in the future.

This section provides a helpful, concise overview of your project’s progression. The Monica roadmap is a good example:

Source: GitHub

In this text, you can find what Monica has accomplished so far, what they’re working on currently, and what’s next on the list.

Providing the project roadmap gives readers insight into your software’s direction. Users will know what to anticipate and can look forward to the upcoming functionalities.

Project Status#

Consistently and continuously working on a software project isn’t impossible, but it’s certainly challenging.

For example, if you’re working on multiple software, it’s advisable to focus on each software individually rather than tackle both simultaneously.

Breaks in software development aren’t unusual, which is why it’s crucial to always indicate the current status of your project.

Generally speaking, your project can be assigned one of the following statuses:

  • Completed
  • Active/In development
  • On hold
  • Abandoned

Whatever your situation, ensure your README clearly communicates the project status.

For example, here’s how isomorphic-git explained their project status:

Source: GitHub

Although their situation is more complex, the state of affairs is still effectively presented, and every reader will be fully informed about the project status.

Contribution Guidelines#

If you’d like your software to be open-source and want users to help develop the project further, it’s a good idea to list some basic contribution guidelines.

That way, all your contributors will know precisely how to assist your project. Furthermore, you’ll create a consistent, standardized process.

There won’t be a mish-mash of issues and pull requests; there will just be one set system.

For example, these are Joblint’s contribution guidelines:

Source: GitHub

These straightforward instructions are brief, but they’re everything contributors need to add to the project.

If your contribution guidelines are more extensive, consider creating a separate document and linking to it from your README.

GitHub hosts a specific document type for such situations: a CONTRIBUTINGfile.

Acknowledgments#

Software is rarely built by one person alone. Chances are, you aren’t the sole author of your project, and instead you had some help along the way.

If that is the case, it’s respectful to acknowledge those who helped your project come to life.

Imagine if they hadn’t been there to assist you—who knows what the software would look like now?

A README is a perfect opportunity to give credit where it’s due and let contributors know they’re appreciated.

Here’s how Nock phrased their acknowledgments:

Source: GitHub

Not only did Nock publicly list every contributor, they even uploaded photos for each patron.

Such effort shows the project’s appreciation for their assistance, and they clearly want to showcase their work as best they can.

License Information#

Coding is creative work, and creative work is, by default, protected by copyright.

However, it’s in your best interest to expose your code to other developers, so they can contribute to the project and help develop it.

The easiest way to balance this is to obtain an open-source license—a document that retains your copyright yet allows others to develop your code.

You should then include this license in your README so users are aware of the legal specifics regarding your software.

The main purpose of this part of the documentation is to communicate what users can and cannot do with your software project.

For example, here’s node-sqlite3’s license:

Source: GitHub

This screenshot certifies node-sqlite3’s license compliance, and readers can see all of the license details.

Conclusion#

For a README to be helpful, there are certain mandatory pieces of information the document should contain.

A noticeable, easily understandable project title at the top of the document is a must.

However, with no accompanying description to explain what the title signifies, your readers are likely to have a difficult time understanding it.

Consider composing a README checklist of necessary elements and comparing your current document with this requirement list.

You're good to go if you can check off most of the items there.

Otherwise, it might be prudent to update the README—your readers will definitely thank you.

Frequently Asked Questions

Yes—you do. Your README is the front door to your project: it explains what the software is, how to get started, and where to go for help or deeper docs.

What a solid README delivers:

  • Sets expectations: What the project is, who it’s for, what problems it solves (and any non‑goals).
  • Speeds onboarding: Clear requirements, install steps, and a copy‑paste Quick start reduce time‑to‑first‑success.
  • Cuts support noise: Answers common questions upfront and points to support channels.
  • Enables contribution: Explains how to file issues, open PRs, follow conventions, and where to find the roadmap/status.
  • Central source of truth: Links out to full documentation while keeping the overview concise and scannable.

At a minimum, include:

  • Project title and short description
  • Requirements (runtimes, versions, OS) and installation steps
  • Usage examples (copy‑paste friendly)
  • Links to full documentation
  • Support info (Discussions, Issues, chat, email)
  • Contribution guidelines (or a link to CONTRIBUTING)
  • License (name + link to the LICENSE file)

Nice‑to‑haves that boost clarity and adoption:

  • Table of Contents for quick scanning
  • Project status/roadmap
  • Tech stack (with version pins and links)
  • Visuals (screenshots/GIFs/diagrams)
  • Acknowledgments and credits

Practical tips:

  • Keep it brief but complete—link out to deeper docs rather than duplicating them.
  • Put a Quick start near the top.
  • Use consistent headings, code blocks, and badges for at‑a‑glance context.

Done well, your README improves discoverability, adoption, and maintainability—for users, contributors, and future‑you.

Because they’re your first impression—and often decide whether someone keeps reading or moves on.

What they should accomplish:

  • Title: Name the project clearly and hint at its domain or tech (e.g., CLI, React, .js). Avoid clever names with no context.
  • Short description (1–3 sentences): State what it does, who it’s for, and the core benefit in plain language.

A simple formula:

  • Title: Product + Type/Tech + Key purpose
  • Description: For [audience], [project] helps you [primary job] by [how it delivers the value].

Example:

Peaks.js — A lightweight JavaScript library for rendering and editing audio waveforms in the browser. For web‑audio developers, it makes scrubbing, segmenting, and annotating tracks fast and accessible.

Why this matters:

  • Searchability: Clear keywords improve discoverability in GitHub and search engines.
  • Expectation‑setting: Reduces mismatches and support questions.
  • Orientation: Readers quickly decide if it solves their problem before diving deeper.

Tips:

  • Add a concise tagline/subtitle for nuance.
  • Keep the description updated as the project evolves.
  • Consider badges (version, build, coverage) for instant context.

If people can’t install it, they can’t use it. Your README should take someone from zero to installed in minutes.

Cover the essentials:

  1. Prerequisites: Languages/runtimes, minimum versions, OS support, package managers, and system dependencies.
  2. Install paths: Package manager, binary, Docker, or from source—show common paths and link to full docs for edge cases.
  3. Copy‑pasteable commands: Concise, verified, and reliable.
  4. OS‑specific notes: Call out differences for macOS/Linux/Windows.
  5. Post‑install check: One command that confirms success.
  6. Uninstall/upgrade basics: Optional but appreciated.

Example structure:

# Prerequisites
- Node.js >= 18, npm >= 9 (macOS, Linux, Windows)

# Install (global)
npm install -g acme-cli

# Verify
acme --version

# From source
git clone https://github.com/acme/acme-cli
cd acme-cli
npm install && npm run build

# Windows note
# If PowerShell blocks scripts:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Keep the README lean and link to extended install docs for advanced scenarios (proxies, air‑gapped environments, GPU builds, corporate certificates). A small table of contents or per‑OS subheadings makes navigation even faster.

Visuals help people understand faster and remember more. They show what the software does—and how it feels to use—at a glance.

Use visuals to:

  • Demonstrate key features: Short GIFs or clips for core workflows and before/after moments.
  • Build mental models: Architecture or data‑flow diagrams clarify how pieces fit together.
  • Communicate status: Badges (build, coverage, version) provide instant signals.

Best practices:

  • Keep visuals current and place them near the relevant text.
  • Add captions to explain what to look for.
  • Write alt text for accessibility.
  • Optimize size (compress images; prefer short MP4/WebM over heavy GIFs when possible).
  • Support dark/light themes or use transparent backgrounds.
  • Link to full‑size images if detail matters, but keep inline assets lightweight.

Example (Mermaid diagram in Markdown):

graph TD
  User -->|HTTP| API
  API --> ServiceA
  ServiceA --> DB[(PostgreSQL)]

Goal: help readers grasp core concepts and workflows quickly, with minimal scrolling or guesswork.

Your license tells people exactly what they can do with your code—use, modify, distribute, and whether commercial use is allowed. Without one, the default is all rights reserved, which discourages adoption and contributions.

Include these basics:

  • A LICENSE file at the repo root (e.g., MIT, Apache‑2.0, GPL).
  • A short note in the README naming the license and linking to the full text.
  • SPDX identifier (e.g., MIT, Apache-2.0) for clarity and tooling.
  • Notices for exceptions: If parts use different licenses or bundle third‑party code, mention it and link to their terms (e.g., a NOTICE file).

Example snippet:

License: MIT
This project is licensed under the MIT License — see the LICENSE file for details.

Helpful resource: choosealicense.com

Clear licensing protects your rights, enables safe reuse, and makes it straightforward for teams to adopt and contribute to your project.

Documentation, technical writing tips and trends Blog

Join 5000+ people from around the world that receive a monthly edition of the Archbee Blog Newsletter.