Get AI summaries of any video or article — Sign up free
New Notion Feature! Native Progress Bar Crash Course thumbnail

New Notion Feature! Native Progress Bar Crash Course

Red Gregory·
5 min read

Based on Red Gregory's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.

TL;DR

Notion’s native progress bars can be created from any numeric property—either a database number field or a formula result—without custom UI.

Briefing

Notion’s latest update adds native progress bars—either a progress bar or a progress ring—so users can turn a numeric value into a visual indicator without building custom UI. The key shift is that progress visuals now live inside Notion’s native “number → bar/ring” formatting options, driven by a single number property (from a database field or a formula). That makes progress tracking faster to set up and easier to maintain, especially when the underlying logic already produces a percentage or a count.

The walkthrough starts with a habit tracker that uses five checkbox fields per day. A formula sums the checked values (true/false converted to 1/0) into a single count, then Notion’s display settings convert that number into a bar. Because the result is a raw count rather than a percentage, the “divide by” option is used to normalize the value against the total number of habits (five). The presenter also notes a common pitfall: converting to a percentage format doesn’t automatically mean the displayed value is a clean percentage—users can choose to hide the numeric output and keep only the bar for a cleaner look.

Next comes a more structured project manager example using two linked databases: one for projects and one for tasks. Tasks carry a status (not started, in progress, done) plus a deadline date, and a relation connects each task to its project. From that relationship, rollups compute completion rates by grouping tasks by status. Those rollup outputs are then fed into separate formula properties that convert each status share into a percentage suitable for progress bars. The formulas use a floor-based cleanup to avoid rounding up edge cases like 99.8% to 100%, which would prematurely show completion.

The tutorial then tackles capping progress at 0–100%. A date-range database calculates “today’s position” within a start/end window using date arithmetic (days between now and the start, divided by the total days in the range). Because real-world date ranges can be entirely in the past or future, the computed value can exceed 1 (over 100%) or drop below 0. An if-statement clamps the result: values under 0 become 0, values over 1 become 1, and everything else passes through. Once clamped, the value can be converted into a native progress bar.

Finally, a calendar-cover use case shows how to track progress within a single day. A formula checks whether the calendar date matches today; if it’s in the past, it returns a full 24-hour completion value, and if it’s in the future, it returns 0. For today, it converts the current time into a decimal hour fraction using minutes/60, then normalizes by dividing by 24 to produce a day-progress ratio. The result is a calendar where past dates show complete bars, while today’s bar advances as the day goes on.

Overall, the update turns progress visualization into a formatting choice backed by simple numeric outputs—counts, rollups, and time-based calculations—while still supporting the practical guardrails users need (rounding control and 0–100% clamping). That combination makes progress bars more approachable for everyday dashboards and more reliable for date- and status-driven workflows.

Cornell Notes

Native progress bars in Notion let users display a progress bar or progress ring directly from a number property. The workflow is: produce a numeric value via a database number field or a formula, then switch the property display to “bar” (optionally “divide by” to normalize counts into ratios). For percentages, formulas often use floor logic to avoid rounding up near-complete values (e.g., 99.8% becoming 100%). When calculations can exceed bounds, an if-statement clamps results to 0–1 so the bar never goes past 100%. The same approach powers habit trackers, project status rollups, date-range completion, and even “progress of today” in calendar views.

How does Notion’s native progress bar turn a raw count into a visual progress indicator?

A numeric property can be formatted as a bar or ring. If the number is a count (like “how many habits are checked” out of five), Notion’s progress-bar settings include a “divide by” option. Dividing by the total (five) normalizes the count into a ratio so the bar fills proportionally, without requiring the user to manually compute a percentage.

Why use floor instead of a standard round when generating percentage-based progress bars?

When percentage math produces values like 99.8%, a normal round could push it to 100%, making the bar look complete too early. Using floor(100 * value) / 100 forces the value to round down, preserving the intended “not quite done yet” state until the calculation truly reaches the threshold.

How do linked databases and rollups feed progress bars for project status tracking?

Tasks link to projects via a relation property. A project can then use rollups to aggregate task status into numeric shares (e.g., percent not started, percent in progress). Those rollup numbers are converted into percentage-formatted formula properties (often with floor cleanup) and then displayed as separate native progress bars, with each bar colored to match its status.

What’s the safest way to prevent progress bars from exceeding 100% when using date ranges?

Compute a ratio based on where “today” falls within a start/end window, then clamp it. An if-statement checks the ratio: if it’s less than 0, return 0; if it’s greater than 1, return 1; otherwise return the ratio. This guarantees the progress bar stays within 0–100% even when the date range is entirely in the past or future.

How can a progress bar represent progress within the current day on a calendar?

Use a formula that compares the calendar date to today. If the date is in the past, return a full-day value; if it’s in the future, return 0. For today, convert the current time into a fraction of the day by using hours plus (minutes/60), then normalize by dividing by 24. Formatting that ratio as a bar yields a calendar where today’s bar advances as time passes.

Review Questions

  1. In a habit tracker where there are 7 checkboxes, what would you set for the progress-bar “divide by” value, and why?
  2. What problem can occur if you use round() instead of floor() when converting a computed percentage into a progress bar?
  3. How would you modify the clamping logic if your date-range ratio could be negative due to time zone differences?

Key Points

  1. 1

    Notion’s native progress bars can be created from any numeric property—either a database number field or a formula result—without custom UI.

  2. 2

    Use the progress-bar “divide by” option to normalize counts (e.g., checked habits out of a fixed total) into a proportional bar.

  3. 3

    When generating percentage values, floor-based formulas help avoid rounding up near-complete values (like 99.8%) to 100%.

  4. 4

    Linked databases can drive progress bars: relations connect tasks to projects, rollups aggregate status, and formula properties convert those rollups into bar-ready numbers.

  5. 5

    For date-range progress, clamp computed ratios with if-statements so the bar never goes below 0% or above 100%.

  6. 6

    Time-based progress (like “progress of today”) can be modeled by converting current time into a day fraction and dividing by 24 hours before displaying as a bar.

Highlights

Native progress bars in Notion turn a single number into a bar or ring via property formatting—no extra widgets required.
Floor-based percentage cleanup prevents premature “complete” states caused by rounding up values just under 100%.
A simple if-statement clamp (below 0 → 0, above 1 → 1) keeps date-range progress bars accurate even when ranges fall entirely in the past or future.
Project dashboards can be built from relations + rollups: task statuses roll up into project-level progress bars with separate color-coded bars per status.
Calendar progress can be driven by time math: hours + minutes/60, normalized by dividing by 24, then displayed as a native bar.

Topics

Mentioned