profiling_qweb_view
The profiling_qweb_view widget renders a stored profiling result as annotated QWeb source, with the time and query count for every directive written into the gutter.
September 18, 2026Updated September 18, 20264 min read
| Technical name | profiling_qweb_view |
|---|---|
| Field types | text |
| Views | form |
| Module | web, present in every Odoo database |
| Used in core | 1 use in Odoo 19, in odoo/addons/base/views/ir_profile_views.xml. Unchanged in Odoo 20. |
| Versions | Odoo 19.0, Odoo 20.0 |
| No-code setup | No. This is a developer tool behind the profiling feature. |
| Alternatives | json, code |
What the profiling_qweb_view widget does
What this means for your team
Working examples
What the numbers in the gutter actually mean
Version compatibility
| Version | Status | Notes |
|---|---|---|
| Odoo 19.0 | Verified | Verified against the shipped 19.0 source. |
| Odoo 20.0 | Verified | Verified against the 20.0 branch. No changes. |
Unchanged between the two branches we checked.
What is changing in Odoo 20
Common problems and fixes
| Symptom | Cause and fix |
|---|---|
| The screen is blank or the editor never appears | The field value is not the JSON structure the profiler produces. The widget parses it on setup and cannot recover from another shape. Use the widget only on a profiling result field. For arbitrary JSON, use the json widget. |
| Numbers change when a block is folded | Working as designed. A collapsed line aggregates its whole subtree; an expanded one reports only itself. Fold a block deliberately when you want its total, and expand it to attribute the cost. |
| Annotations take a moment to appear when scrolling | The annotation pass re-runs on every Ace render and is debounced by 100 milliseconds. Expected on large templates. Let the view settle. |
| An xpath from this screen does not match one in a server log | The widget inserts explicit [1] indexes into the profiler's xpaths before rendering. Compare structurally rather than as strings. |
Profiling_qweb_view widget vs the alternatives
| Widget | Best for | Key difference |
|---|---|---|
profiling_qweb_view | Reading a stored QWeb profile line by line | Read-only, purpose-built for the profiler's output format |
| json | Seeing the raw profile structure | Prints the JSON instead of annotating the template |
| code | Reading a template without profiling data | Editable, and no timing or query annotations |
Frequently asked questions
What does the Odoo profiling_qweb_view widget show?+
Why do the numbers change when I collapse a line?+
Does profiling_qweb_view have options?+
Odoo is slow and nobody can say where?
A profile turns 'the system is slow' into a named template, a directive and a query count. We run the profiling, read what it says and fix the queries behind it, rather than adding hardware and hoping.
Request a performance audit