Skip to main content
iVentureTeam

password_meter

The password_meter widget scores a password against the policy your server actually enforces. It is the opposite of the password widget: it shows the value and rates it, rather than hiding it.

September 18, 2026Updated September 18, 20264 min read
Technical namepassword_meter
Field typeschar
Viewsform
Moduleauth_password_policy, not part of every database
Used in core0 uses in Odoo 19 Community or Enterprise. Unchanged in Odoo 20.
VersionsOdoo 19.0, Odoo 20.0
No-code setupNo. There is no Studio entry and no options.
Alternativespassword, char

What the password_meter widget does

On startup the component asks the server for the live password policy and builds its scoring rules from the answer:

onWillStart(async () => {
    const policy = await orm.call("res.users", "get_password_policy");
    this.state.required = new ConcretePolicy(policy);
});

It then renders a Meter component under the input that rates what the user types against that policy, alongside the module's standard recommendations.

Note the naming trap. The exported descriptor is called passwordField and its displayName is Password, identical to the unrelated password widget in the web module. Only the registration key tells them apart.

What this means for your team

This is for the one screen where a user sets their own password. It closes the gap between a policy that exists in configuration and a user who has no idea what it demands until the save is rejected.

The value is that the bar is honest: it is scored against your server's actual policy rather than a generic rule of thumb, so a green bar means the save will go through.

What it does not do is hide anything. If someone might be reading over the user's shoulder, that is a different widget, and the two do not combine on the same field.

Working examples

On a password field the user sets themselves:

<field name="new_password" widget="password_meter"/>

Do not expect this to mask. If you want masking instead, that is a different widget:

<field name="api_key" widget="password"/>

Two widgets called Password

Odoo ships two widgets whose displayName is Password, in different modules, doing opposite things.

password, in web, masks the input and adds a reveal button. It never scores anything.

password_meter, in auth_password_policy, shows the value in the clear and scores it against the server policy. It never masks.

Anything that lists widgets by display name, including Studio-style pickers and options helpers, will show two entries reading Password with no way to tell them apart. Check the registration key, not the label.

There is a practical consequence too: you cannot have both behaviors on one field. A field is rendered by exactly one widget, so a password input that is both masked and scored needs a custom widget that combines them.

One more detail worth knowing before you put this on a screen. The policy call happens in onWillStart, so it runs once when the field is first rendered. If an administrator changes the password policy while a user has the form open, the meter keeps scoring against the old policy until the view is reloaded.

Version compatibility

VersionStatusNotes
Odoo 19.0VerifiedVerified against the shipped 19.0 source.
Odoo 20.0VerifiedVerified against the 20.0 branch. No changes.

Unchanged between the two branches we checked.

What is changing in Odoo 20

No change. Diffing the password_meter registration between the 19.0 and 20.0 branches shows the same component, the same supported type and still no options.

Its namesake in web, the password widget, is also unchanged in Odoo 20, though Odoo 20 does start using that one on two res.users views where Odoo 19 used it nowhere.

Common problems and fixes

SymptomCause and fix
The widget does not exist on this databaseIt ships in auth_password_policy, which is not installed everywhere. Install auth_password_policy, or use the plain char widget.
The value is visible on screenWorking as designed. This widget scores, it does not mask. Use the password widget if you need masking. The two cannot be combined on one field.
The meter does not reflect a policy change an admin just madeThe policy is fetched once in onWillStart, when the field first renders. Reload the view.
Two widgets both appear as 'Password' in a pickerpassword and password_meter share the same displayName across different modules. Select by registration key: password for masking, password_meter for scoring.

Password_meter widget vs the alternatives

WidgetBest forKey difference
password_meterA user choosing a password against your server policyScores the value against the live policy and never hides it
passwordHiding a stored secret from a casual onlookerMasks with a reveal button and does no scoring
charOrdinary short textNo meter and no masking

The decision is simple: score or hide. Use password_meter where a user is choosing a password and needs to know whether it will be accepted. Use password where a stored secret is displayed and should not be casually readable. For a field that is neither, a plain char is correct.

Frequently asked questions

What is the difference between password and password_meter in Odoo?+
password masks the input and adds a reveal button. password_meter shows the value and scores it against the server's password policy. They live in different modules, share the display name Password, and cannot be combined on one field.
Where does the Odoo password strength meter get its rules?+
From the server. On startup it calls res.users.get_password_policy and builds its scoring from the returned policy, so the meter matches what your database will actually accept.
Does password_meter have options?+
No. It declares a component, the display name Password and supportedTypes: ["char"], nothing more. Strictness is configured in the password policy settings, not on the field.

Password policy nobody can satisfy?

A strength meter helps only if the policy behind it is sane. We tune Odoo's password and session rules so they pass an audit without generating a weekly queue of reset requests, and wire single sign-on where it fits.

Talk to an Odoo consultant

How this page was produced

Verified by reading addons/auth_password_policy/static/src/password_field.js on the 19.0 branch of a local clone of the official Odoo repository. The policy fetch is quoted from the component's setup. The duplicate display name was confirmed by comparing this descriptor's displayName with the one in addons/web/static/src/views/fields/password/password_field.js. The registration was diffed against the 20.0 branch, and usage counts come from scanning every XML file in Community, Enterprise and odoo/addons/base. Corrections welcome via our contact page.