How to Build a Progress Percentage Formula in Notion
🔍 WiseChecker

How to Build a Progress Percentage Formula in Notion

You want to show a progress percentage in a Notion database, such as the completion rate of tasks in a project or the fill rate of properties in a contact list. Notion does not have a built-in progress bar widget, but you can create one using a formula property. This article explains how to build a formula that calculates a percentage from two or more numeric values, how to format the result as a percentage, and how to display it in a database view.

Key Takeaways: Progress Percentage Formula in Notion

  • Formula property with division and multiplication: Use round(completed / total 100) / 100 to get a decimal and then format it as a percentage in the property settings.
  • Count properties for task completion: Use prop("Completed Tasks") / prop("Total Tasks") when each count is a Rollup or Formula property from a linked database.
  • Format property as Percent: After entering the formula, change the Number Format dropdown in the formula editor to Percent to display the value with a percent sign.

How a Notion Progress Percentage Formula Works

A progress percentage formula in Notion calculates the ratio of completed items to total items and displays it as a percentage. The formula uses standard arithmetic operators: division (/) and multiplication (). The result is a decimal number that you then format as a percentage in the property settings.

The formula requires at least two source properties. One property holds the completed count, and the other holds the total count. These properties can be Number properties, Rollup properties that aggregate counts from a linked database, or Formula properties that compute counts from other conditions.

To avoid division by zero errors, wrap the division in an if statement that checks if the total is zero. The complete formula pattern is:

if(prop("Total Tasks") > 0, prop("Completed Tasks") / prop("Total Tasks"), 0)

After entering the formula, set the Number Format to Percent. The value will display as a percentage with two decimal places by default. You cannot add a custom progress bar visual in formula properties, but you can use the percentage value to create a progress bar in a database view using the Gallery layout or a third-party widget.

Steps to Build a Progress Percentage Formula in Notion

Follow these steps to create a progress percentage formula in any Notion database. The example uses a project database where each project has a linked Tasks database with a Checkbox property for completion.

Method 1: Using Manual Number Properties

This method works when you enter the completed and total counts manually or use formulas that generate those numbers.

  1. Open your database and add two Number properties
    Create one Number property named “Completed Tasks” and another named “Total Tasks.” Enter the numeric values for each row manually or via a Rollup.
  2. Create a new Formula property
    Click the plus icon in the database header, select Formula, and name it “Progress.”
  3. Enter the formula
    In the formula editor, type: if(prop("Total Tasks") > 0, prop("Completed Tasks") / prop("Total Tasks"), 0)
  4. Set the Number Format to Percent
    Click the Number Format dropdown in the formula editor and select Percent. The value will now display as a percentage.
  5. Test with sample data
    Enter 5 in Completed Tasks and 10 in Total Tasks. The Progress property should show 50%.

Method 2: Using Rollup from a Linked Database

This method is ideal when you have a parent database (Projects) linked to a child database (Tasks) where each task has a Checkbox property.

  1. Link the Tasks database to Projects
    In the Projects database, add a Relation property that points to the Tasks database. Then add a Rollup property that counts the total tasks. Set the Rollup source to the relation, the property to the Checkbox (or any property), and the aggregation to Count All.
  2. Create a second Rollup for completed tasks
    Add another Rollup property. Use the same relation, select the Checkbox property, and set the aggregation to Count Values. This counts only checked tasks.
  3. Add the Formula property
    Create a Formula property named “Progress.” Enter: if(prop("Total Tasks") > 0, prop("Completed Tasks") / prop("Total Tasks"), 0)
  4. Format as Percent
    Change the Number Format to Percent. The progress percentage now updates automatically when tasks are checked or unchecked.

Method 3: Using Conditional Formulas for Weighted Progress

If tasks have different priorities or weights, you can calculate weighted progress.

  1. Add a Number property for weight
    In the Tasks database, add a Number property named “Weight” and assign values such as 1, 2, or 3.
  2. Create a formula for weighted completion
    Add a Formula property in Tasks: if(prop("Done"), prop("Weight"), 0). This returns the weight if the task is done, or 0 if not.
  3. Rollup the total weight and completed weight
    In the Projects database, create two Rollup properties: one that sums the Weight property (total weight) and one that sums the Weighted Completion formula (completed weight). Use aggregation Sum.
  4. Build the progress formula
    Create a Formula property: if(prop("Total Weight") > 0, prop("Completed Weight") / prop("Total Weight"), 0). Set Number Format to Percent.

Common Mistakes and Limitations When Building Progress Formulas

Division by zero error

If the total property is zero, the formula returns an error. Always wrap the division in an if statement that checks if the total is greater than zero. Use the pattern shown in the steps above.

Rollup aggregation returns incorrect count

When using Rollup to count tasks, ensure the aggregation is set to Count All for total and Count Values for completed. If you use Count All for completed, it will count all tasks, not just the checked ones.

Percentage shows as decimal instead of percent

If the result shows as 0.5 instead of 50%, you did not set the Number Format to Percent. Open the formula editor, click Number Format, and select Percent. You can also multiply the result by 100, but the Percent format is cleaner and avoids rounding issues.

Formula does not update after changing source data

Notion formulas update automatically when the source properties change. If the formula uses a Rollup, the Rollup may take a few seconds to refresh. Refresh the browser or close and reopen the database if the percentage does not update immediately.

Progress bar visual not available in formula

Formula properties cannot display a visual progress bar. To show a progress bar, use the percentage value in a Gallery view with a progress bar widget from a third-party tool like Indify or Notionify, or use a custom formula with repeated characters (e.g., "█".repeat(round(prop("Progress") 10))) but that only works in inline database views and has limited accuracy.

Notion Progress Formula Methods Compared

Item Manual Number Properties Rollup from Linked Database Weighted Progress Formula
Data source Manually entered numbers or simple formulas Child database with Checkbox or Status properties Child database with Checkbox and Weight properties
Automation Manual entry required Fully automatic when tasks are updated Fully automatic with weighted calculation
Complexity Low Medium — requires Relation and Rollup High — requires additional formulas and Rollups
Use case Simple lists or standalone databases Project management with linked tasks Projects with prioritized or weighted tasks

You can now build a progress percentage formula in any Notion database using manual numbers, Rollups from linked databases, or weighted calculations. Start by adding a Formula property and entering the division formula with an if statement to handle zero totals. For a more advanced setup, try using the round function to control decimal places: round(prop("Completed") / prop("Total") 100) / 100 gives two decimal places before formatting as a percent.