How to Create a Progress Bar in Notion

Notion - Progress bar

Table of contents

Visual progress bars offer a quick snapshot of a process’s status, improve aesthetics, and provide a subtle source of motivation. They’re not really a native Notion feature, but we can achieve them by combining special characters with a few Notion functions—and the result looks great.

https://vimeo.com/441429597
Click the PLAY button to watch the video

Required functions

To create progress bars, we’ll use these three functions.

slice(text, number, number)

The slice() function returns a segment (or part) of the text we provide. This function needs at least two parameters, though we can optionally use three:

  1. Original text we’re going to extract a part from.
  2. Starting point, where the first character is 0.
  3. End point (optional)

Example 1: slice("La Colmena Tecnológica.", 3, 10) → “Colmena”

Example 2: slice("La Colmena Tecnológica.", 11, 22) → “Tecnológica”

Whitespace also counts as a character. Unlike the start point, the end-point parameter does not include the character, so to include the final character you must set the position to the one right after it.

round(number)

The round() function rounds a given decimal number to the nearest integer.

Example 1: round( 3.2 )3

Example 2: round( 3.5 )4

format(value)

The format() function converts a given number or date into a text string.

Example: format( 20 )"20"

Percentage property

To visualize your progress, you first need to calculate it as a percentage in a separate property.

For each project in your database, you may have one property for the total units required to complete it, then another property for the units currently completed.

In a Progress % property, we divide the completed units by the total units:

Notion - Redondeo
Table with a property formatted as a percentage

prop("Unidades completadas") / prop("Unidades totales")

Here you can see how to remove unsightly decimals in a formula that returns a percentage.

Notion - remove decimals from a percentage formula
With percentage rounding

round(100 * prop("Unidades completadas") / prop("Unidades totales")) / 100

Special characters to create our progress bar

The progress bar will include special characters to represent completed and incomplete segments. While you can choose whatever you like, here are a few suggestions:

  • Shaded blocks → ▓░
  • Stars → ★☆
  • Circles → ●○
Notion - Progress bar
Table with a progress bar property

With the Progress % property created and the special characters chosen, we can now create the progress bar. Create a new Formula property, name it Progress, and then add this formula:

Code with shaded characters

slice("▓▓▓▓▓▓▓▓▓▓", 0, round(prop("Progreso %") * 10)) + slice("░░░░░░░░░░", 0, 10 - round(prop("Progreso %") * 10)) + " " + format(round(prop("Progreso %") * 100)) + "%"

Code with star characters

slice("★★★★★★★★★★", 0, round(prop("Progreso %") * 10)) + slice("☆☆☆☆☆☆☆☆☆☆", 0, 10 - round(prop("Progreso %") * 10)) + " " + format(round(prop("Progreso %") * 100)) + "%"

Code with circle characters

slice("●●●●●●●●●●", 0, round(prop("Progreso %") * 10)) + slice("○○○○○○○○○○", 0, 10 - round(prop("Progreso %") * 10)) + " " + format(round(prop("Progreso %") * 100)) + "%"

You just need to replace the symbols in the formula with the ones you like best.