progressbar
Odoo's Progress Bar widget: five options in 19, an undocumented numeric trick, and a development branch that quietly deletes most of them for Odoo 20.
| Studio name | Progress Bar |
|---|---|
| Technical name | progressbar |
| Field types | integer, float |
| Views | form, list, kanban |
| Also registered as | kanban.progressbar |
| Module | web, present in every Odoo database |
| Used in core | 23 occurrences across 11 modules, including product_margin, hr_recruitment_skills, project, hr_skills, website_slides, mass_mailing |
| Versions | Odoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0, Odoo 16.0 |
| No-code setup | Yes, via Odoo Studio (Enterprise): the Progress Bar widget on Integer or Decimal fields |
| Alternatives | percentage, gauge, percentpie, project_task_progressbar |
What the Progress Bar field does
What this means for your team
Setting it up in Odoo Studio (no code)
What Studio cannot do here
Supported options in Odoo 19
| Option | Type | What it does |
|---|---|---|
max_value | field name or number | Field holding the maximum, shown as value / max. Undocumented: a numeric constant also works, the prop is typed String or Number. Without it the value reads as a percentage of 100. The only option that survives into Odoo 20.(default: 100) |
editable | boolean | Allows inline editing of the current value. On regular views the record must also not be readonly; the kanban variant waives that check. Removed on the Odoo 20 development branch. |
edit_max_value | boolean | With editable, redirects inline editing to the max field instead of the current value. Never both at once. Removed on the Odoo 20 development branch. |
current_value | field name | Displays a different field as the bar's value, for example showing the raw count while the bar tracks a computed percentage. Removed on the Odoo 20 development branch. |
overflow_class | string | Bootstrap background class applied when the value exceeds the max. Removed on the Odoo 20 development branch in favor of standard decorations.(default: bg-secondary) |
readonly | boolean | Undocumented veto read in extractProps: forces the bar inert even when editable is set. Distinct from the field's readonly state. Also gone in the Odoo 20 redesign. |
editable and edit_max_value compose, they do not add. extractProps derives two flags: the current value is editable when editable is set and edit_max_value is not; the max becomes editable when both are set. So edit_max_value redirects the single editing slot to the denominator, and there is no configuration in which users edit both numbers inline.
Working examples
The readonly veto, the kanban variant, and other source details
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 20.0 | In development | Not released. The development branch keeps only max_value and moves colors to decorations; see below. |
| Odoo 19.0 | Verified | All six option rows verified against the shipped source. |
| Odoo 18.0 | Verified | Option-identical to 19, verified in the 18.0 source. |
| Odoo 17.0 | Verified | Widget present with the same registry name. Not re-verified line by line for this page. |
| Odoo 16.0 | Verified | Widget present with the same registry name. Not re-verified line by line for this page. |
Upgrade note. 16 through 19 views carry over unchanged; 18 and 19 sources are option-identical, verified. The planning item is Odoo 20: four of five options disappear, so any view leaning on editable, edit_max_value, current_value or overflow_class belongs on your migration review list now.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| Bar always shows a percentage | No max_value option, so 100 is assumed. Set max_value to a field name or a number. |
| Editable option does nothing on the form | The record or field is readonly, or an options-level readonly veto is set. Clear the readonly state; on kanban the variant ignores record readonly by design. |
| Users edit the max instead of the value | edit_max_value redirects the single editing slot to the denominator. Remove edit_max_value to edit the current value again. |
| Bar past 100 percent went gray | Overflow swaps to overflow_class, default bg-secondary. Set overflow_class: 'bg-danger' or clamp the computed value. |
| Typed 7.9 into an integer bar, got 7 | Integer fields floor the parsed input. Use a float field if decimals matter. |
| Value shows 1.2k instead of the exact number | Idle display is human-readable; focus switches to the raw value. Click into the input, or accept the compact display. |
| Editing options stopped working on the Odoo 20 branch | The redesign removed editable, edit_max_value, current_value and overflow_class. Rely on field readonly and decorations; re-check after release. |
Progress Bar field vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
progressbar | Completion and target tracking in lists and kanban cards | Value against a max with optional inline editing; percentage of 100 by default |
percentage | A stored fraction shown as a percent | Formats the number only, no bar |
gauge | A single KPI with a target on dashboards | Radial dial, heavier visual weight |
percentpie | Share-of-whole at a glance | Circular fill instead of a linear bar |
project_task_progressbar | Task progress in Project | Project-specific derivative of this widget |
Frequently asked questions
What does the progressbar widget do in Odoo?+
How do I make an Odoo progress bar editable?+
Can max_value be a fixed number instead of a field?+
What happens when the value exceeds the maximum?+
How do I show a progress bar in Odoo Studio?+
Why can users edit the bar on kanban cards but not in the list?+
How is the progressbar changing in Odoo 20?+
Dashboards where progress is visible before anyone asks?
Editable bars on the right views, targets from real fields, overflow rules that flag trouble: this widget rewards precise configuration, and punishes guesswork after Odoo 20. We build measurement-grade Odoo views on 16 through 19 and track the 20 redesign so you do not have to.
Book a free consultation