Getting Started with ReStructuredText

A Comprehensive Guide for Beginners


ReStructuredText (RST) is a powerful markup language that is commonly used for writing documentation. It is widely used for Python documentation—both for the Python language itself and for Python libraries. It is easy to read, write, and understand, making it a great choice for documentation projects.

Understanding the Basics of ReStructuredText

The structure of an RST document is based on indentation. Each line of text is indented by a certain number of spaces, which determines its level in the document hierarchy. Indentation is used to create headings, lists, and other document structure elements.

Inline markup is used to add emphasis, links, images, and tables to a document. RST uses a simple syntax for inline markup, which makes it easy to use and understand.

How to use ReStructuredText

Basic Syntax

RST relies on a specific formatting approach. In order to create a paragraph, you must separate blocks of text with at least one blank line. Each line within the paragraph should also be indented by the same amount.

Text styles

Inline markup for font styles in RST is similar to MarkDown, and it provides a convenient way to format text.


To create a heading in RST, use the following syntax = , -, and ~ to create headings of different levels that are at least as long as the text.

They give structure to the document, which is used in navigation and in the display in all output formats.


RST supports ordered and unordered lists. You can create an unordered list with an asterisk * at the beginning of a paragraph and indent it properly.

The same goes for ordered lists; they can also be autonumbered using a # sign

To create a hyperlink in RST, use the following syntax:

`Link text <>`_

Advanced Features

RST also has advanced features for formatting and structuring text.


To create a code block in RST, use pipes and dashes to create tables.

Code blocks

To create a code block in RST, use the code-block directive to format code blocks.

.. code-block:: python
   def my_function():
       print("Hello, world!")


To create a code block in RST, use the image directive to add images, specifying the width and height in pixels using the width and height parameters. Also, it's important to use the alt parameter to add alternative text to each image, making sure that the text gives individuals using screen readers who may not be able to see the image.

.. image:: myimage.png
   :width: 400
   :height: 300
   :alt: Alternative text

Notes and Warnings

To create notes and warnings in RST, use note and warning directives to make a sentence stand out visually respectively.

.. warning::
    This is warning text. Use a warning for information the user must
    understand to avoid negative consequences.

.. note::
   This is note text. Use a note for information you want the user to
   pay particular attention to.

Advantages of using ReStructuredText

  1. One of the main strengths of RST is its flexibility. It can be used to create a wide range of documents, from simple README files to complex technical manuals. The language is also highly extensible, allowing developers to create custom directives and roles to suit the specific needs of their documentation project.

  2. Another key advantage of RST is its support for inline documentation. This feature allows developers to embed documentation directly within their code, making it easy to keep the documentation up to date as the code changes. This is particularly useful for open-source projects, where keeping the documentation in sync with the codebase is crucial.

  3. RST also has excellent support for cross-referencing and linking. This makes it easy to create links between different parts of the documentation, making it easier for readers to navigate and find the information they need. Additionally, RST supports the creation of tables of contents, indexes, and glossaries, making it easy to organize and structure large documentation sets.

  4. One of the most popular tools used to create RST documents is Sphinx, which is a documentation generator that can be used to create a wide range of output formats, including HTML, PDF, and e-books. Sphinx also includes several additional features, such as the ability to create searchable documentation, an interactive console for testing code snippets, and the ability to include mathematical equations.


In conclusion, RST is a powerful and flexible markup language that works well for making high-quality technical documentation. It's a great choice for both small and large documentation projects because of its flexibility, extensibility, and support for inline documentation. It is also a great choice for developers and technical writers because it is easy to use and has a lot of advanced features.

Also, using Sphinx as a documentation generator adds a lot of helpful features that can greatly enhance the quality of the final documentation.

In this article, we covered the basics of reStructuredText syntax and some of its advanced features. Hopefully, this will help you get started with writing your own documentation in reStructuredText.

If you have any questions or comments, feel free to leave them below.


  1. Sphinx Tutorial

  2. Create a Sphinx Project

  3. An Introduction to reStructuredText

  4. reStructuredText Primer