New Notion Feature! Native Progress Bar Crash Course
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.
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?
Why use floor instead of a standard round when generating percentage-based progress bars?
How do linked databases and rollups feed progress bars for project status tracking?
What’s the safest way to prevent progress bars from exceeding 100% when using date ranges?
How can a progress bar represent progress within the current day on a calendar?
Review Questions
- In a habit tracker where there are 7 checkboxes, what would you set for the progress-bar “divide by” value, and why?
- What problem can occur if you use round() instead of floor() when converting a computed percentage into a progress bar?
- How would you modify the clamping logic if your date-range ratio could be negative due to time zone differences?
Key Points
- 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
Use the progress-bar “divide by” option to normalize counts (e.g., checked habits out of a fixed total) into a proportional bar.
- 3
When generating percentage values, floor-based formulas help avoid rounding up near-complete values (like 99.8%) to 100%.
- 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
For date-range progress, clamp computed ratios with if-statements so the bar never goes below 0% or above 100%.
- 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.