NWD Password Input (Strength Meter) is the password field Bubble was always missing. Built to replace the native password input, it brings a live strength meter, configurable password policies, and a show/hide toggle together in one polished component. Fully customizable through 60+ properties, giving you complete control over every visual and behavioral detail.
Elements1
Fields60
States10
Events1
Actions3
No data collectedThis plugin does not collect user data.
Minimum and maximum length, lowercase, uppercase, number and special character, each one switched on or off independently. The rule list updates as the user types, and the policy can drive the field's validity or stay purely informative.
Live Strength Meter
Five levels, from Very weak to Very strong, each with its own label and color. The score comes from the password itself, independently of the rules you required, so neither measure hides the other.
Visibility Toggle
An optional eye icon lets the user reveal what they typed, reachable by keyboard and announced as Show or Hide password, with the icon, size and color under your control.
Complete Styling Control
Over 60 properties covering the input, the visibility toggle, the floating rule panel and the strength meter, with panel animations, glass effects and every visual state under your control.
Accessible Experience
An accessible label and description read by screen readers, the strength level announced as the user types, and reduced motion respected.
Workflow Ready
Read the password, its strength and which rules are still pending from exposed states, set it or clear it from any workflow with Set value and Reset, and react to value changed.
In detail
Smart Password Rules
Live strength meter with multiple levels, each with its own label and color
Configurable policies, such as minimum and maximum length, letter case, numbers, and special characters
Policy checklist that updates as the user types
Choose whether pending policies make the input invalid
Fully Customizable
60+ properties for complete visual and behavioral control
Show/hide password toggle with custom icon styles
Input icon library with filled and outline versions
Floating panel with display modes, animation types, and modern glass effects
Seamless integration with native Bubble styles while preserving a consistent appearance across browsers and matching your app design
Smooth User Experience
Smooth animation types with smart directional positioning that adapts beautifully to any screen
Browser autocomplete support for new and current passwords
Handles required and invalid states with customizable styling that integrates with Bubble styles
Screen reader ready, with an accessible label and description, and reduced motion support
Workflow Friendly
Exposed states for the value, strength percent and label, and active, completed, and pending policies
Required field validation with touch-aware invalid state
Focus action that can be triggered from anywhere for full workflow control
Reset action with flexible behavior that integrates with native Bubble actions or custom workflows
Set value action that can be triggered from anywhere, for writing a password your app generated to satisfy your policy, with control over how it behaves when the input is disabled
Value changed event for seamless Bubble integration
Reliable & Production-Ready
Built with lightweight CSS and JavaScript for fast, reliable performance
Designed around practical use cases and real Bubble development needs
Tested in real-world applications before being released publicly
Created to extend Bubble with functionality and customization beyond what native Bubble elements typically offer
How to use 6
01
Insert the element on the page
Place NWD Password Input wherever the password should be typed. It behaves like a native input: size it and position it with Bubble's own layout.
02
Set the password policy
In PASSWORD POLICY > # Rules, switch on the requirements you want and set Minimum length. Leave Maximum length at 0 for no upper limit.
Pending policies make the input invalid? decides whether an unmet rule makes the field invalid, or whether the list is only guidance. Turn it off when the policy is advisory and your own workflow decides what to accept.
03
Write the rule labels
Each rule has its own label in # Labels. The `{n}` in the length labels is replaced by the number you set, so "At least {n} characters" reads "At least 8 characters" to the user.
04
Choose where the rules appear
In FLOATING PANEL, pick when the panel opens: on focus, on focus until every rule is met, or never. Then pick where it opens. The automatic positions flip the panel when there is no room below.
05
Tune the strength meter
STRENGTH METER has one label and one color per level. The five bands are fixed at 0-20, 21-40, 41-60, 61-80 and 81-100 percent, and the plugin picks the band from the typed password.
06
Read the result in your workflows
Use the exposed states to drive the rest of the page: value for the password itself, is valid to enable a submit button, and strength percent or strength label to show your own feedback elsewhere.
INPUT 11
The password policy and the strength meter are independent measures. A password can satisfy every rule you required and still score low on strength, or score high and fail a rule. Use Pending policies make the input invalid? to decide which of the two gates your form.
General
Input placeholder
text
Text displayed in the input while it has no value.
defaultEnter your password...
optional
Input placeholder color
color
Color of the placeholder text.
default#AAAAAA
Browser autocomplete
dropdown
Tells the browser whether to suggest a new password or fill a saved one.
new-passwordtells the browser this is a password being created, so it offers to generate one instead of filling the saved one. Use it in sign-up and change-password forms.
current-passwordtells the browser this is an existing password, so the password manager offers to fill it. Use it in sign-in forms.
offasks the browser not to interfere. Browsers do not always honor it, and turning autocomplete off on a password field is usually worse for the user than leaving it on.
defaultnew-password
Input icon
Display input icon?
yes/no
Controls whether the input icon is displayed.
defaultno
Input icon class
dropdown
Icon displayed in the input.
locka filled padlock.
lock outlinea padlock drawn in outline.
keya filled key.
key outlinea key drawn in outline.
shielda filled shield.
shield outlinea shield drawn in outline.
shield checka filled shield with a check inside.
shield check outlinethe same shield and check, in outline.
defaultlock outline
Input icon size
number
Icon size in pixels. When empty, it is calculated from the input font size.
defaultno default
optional
Input icon color
color
Color of the input icon.
default#AAAAAA
Visibility toggle
Display visibility toggle?
yes/no
Shows the eye icon that reveals or hides the password.
defaultyes
Visibility toggle icon class
dropdown
Eye icon style. Each style has an open and a crossed-out version.
eye outlinean eye drawn in outline.
eye thinthe same eye with a thinner stroke.
eye bolda heavier stroke, for small sizes or low contrast.
eye filleda solid eye.
defaulteye outline
Visibility toggle icon size
number
Eye icon size in pixels. When empty, it is calculated from the font size.
defaultno default
optional
Visibility toggle icon color
color
Eye icon color.
default#AAAAAA
PASSWORD POLICY 18
Rules
Minimum length (0 = off)
number
Minimum number of characters. Use 0 to disable this policy.
default8
Maximum length (0 = off)
number
Maximum number of characters. Use 0 to disable this policy.
default0
Require lowercase letter?
yes/no
Requires at least one lowercase letter.
defaultyes
Require uppercase letter?
yes/no
Requires at least one uppercase letter.
defaultyes
Require number?
yes/no
Requires at least one number.
defaultyes
Require special character?
yes/no
Requires at least one special character (any character that is not a letter, number or space).
defaultyes
Pending policies make the input invalid?
yes/no
When enabled, a filled password is only valid when all active policies are met.
defaultyes
Labels
Policy title
text
Title shown above the policy list.
defaultPassword must contain:
optional
Minimum length label
text
Minimum length policy label. {n} is replaced by the minimum length.
defaultAt least {n} characters
optional
Maximum length label
text
Maximum length policy label. {n} is replaced by the maximum length.
defaultUp to {n} characters
optional
Lowercase label
text
Lowercase policy label.
defaultOne lowercase letter (a-z)
optional
Uppercase label
text
Uppercase policy label.
defaultOne uppercase letter (A-Z)
optional
Number label
text
Number policy label.
defaultOne number (0-9)
optional
Special character label
text
Special character policy label.
defaultOne special character (! @ # ...)
optional
Appearance
Policy title font color
color
Policy title color. When empty, uses the element font color.
defaultno default
optional
Policy icon class
dropdown
Icon pair used for completed and pending policies.
check / circlea check for the rules already met, an empty circle for the ones still pending.
check circle / circlea check inside a circle for met rules, an empty circle for pending ones.
check / xa check for met and an x for pending. States the failure instead of leaving it open, which reads harsher while the user is still typing.
check / dota check for met and a dot for pending, the quietest of the four.
defaultcheck / circle
Pending policy color
color
Icon and text color of pending policies.
default#AAAAAA
Completed policy color
color
Icon and text color of completed policies.
default#2EB872
FLOATING PANEL 6
General
Panel display mode
dropdown
Defines when the strength and policy panel is shown.
on focusthe rule panel opens when the field receives focus and closes when it loses focus.
on focus until validthe same, except the panel stops opening once the password satisfies every active rule. Useful when the list has served its purpose and would only add noise.
neverthe panel never opens. Use it when you show the rules yourself, from the exposed states.
defaulton focus
Panel position
dropdown
Preferred or forced opening direction of the floating panel relative to the input.
auto-topopens above the field, and flips below when there is no room.
auto-bottomopens below the field, and flips above when there is no room.
topalways above, even when it overflows the visible area.
bottomalways below, with the same caveat.
defaultauto-bottom
Animation type
dropdown
Opening animation of the floating panel.
nonethe panel appears with no animation.
dropfalls into place from above.
elasticovershoots slightly and settles.
expandgrows from the field's edge.
fadefades in, the quietest option.
popscales up quickly from the center.
slideslides in from the field's side.
zoomscales from small to full size.
defaultfade
Appearance
Panel bg color
color
Background color of the floating panel.
default#FFFFFF
Panel border color
color
Border color of the floating panel.
default#DEDEDE
Glass effect
dropdown
Intensity of the glassmorphism effect on the floating panel.
nonea solid background, using the panel color as it is.
subtlea barely perceptible blur of what is behind.
lighta light blur.
mediuma moderate blur, the usual choice when the page behind has imagery.
stronga heavy blur.
intensethe heaviest blur, where almost nothing behind stays readable.
defaultnone
STRENGTH METER 14
General
Display strength meter?
yes/no
Shows the strength bar and label in the panel.
defaultyes
Strength title label
text
Title displayed above the strength bar, next to the strength level.
defaultPassword strength
optional
Strength title font color
color
Font color of the strength title.
default#AAAAAA
Strength bar track color
color
Color of the empty bar segments.
default#EEEEEE
Very weak (0-20%)
Very weak label
text
Strength label for 0-20%.
defaultVery weak
optional
Very weak color
color
Strength color for 0-20%.
default#FF6666
Weak (21-40%)
Weak label
text
Strength label for 21-40%.
defaultWeak
optional
Weak color
color
Strength color for 21-40%.
default#FF9F43
Fair (41-60%)
Fair label
text
Strength label for 41-60%.
defaultFair
optional
Fair color
color
Strength color for 41-60%.
default#F5C542
Strong (61-80%)
Strong label
text
Strength label for 61-80%.
defaultStrong
optional
Strong color
color
Strength color for 61-80%.
default#66CC88
Very strong (81-100%)
Very strong label
text
Strength label for 81-100%.
defaultVery strong
optional
Very strong color
color
Strength color for 81-100%.
default#2EB872
INPUT BEHAVIOR 9
Disabled state
This input is disabled?
yes/no
Disables the component, preventing any interaction.
defaultno
Input bg color (disabled)
color
Input background color when disabled.
default#F4F4F4
Input border color (disabled)
color
Input border color when disabled.
default#CACACA
Input font color (disabled)
color
Input font color when disabled.
default#CACACA
This color applies to the password the user typed, not to the placeholder. A disabled field with nothing in it keeps the placeholder color you set in INPUT > # General.
Required state
This input is required?
yes/no
Marks the field as required and enables input validation.
defaultno
Input bg color (invalid)
color
Input background color when invalid (required with no value).
default#FFF8F8
Input border color (invalid)
color
Input border color when invalid (required with no value).
default#FF6666
Focused state
Input bg color (focused)
color
Input background color when focused.
default#FFFFFF
Input border color (focused)
color
Input border color when focused.
default#30B3FE
ACCESSIBILITY 2
Accessible label
text
Name read by screen readers. When empty, uses the placeholder or the visible label.
defaultno default
optional
Accessible description
text
Hint read by screen readers after the name. Empty for none.
defaultno default
optional
States 10
Values the element exposes for the rest of the page to read.
value
text
Current password.
strength (%)
number
Password strength from 0 to 100.
strength (label)
text
Label of the current strength range.
active policies
textlist
Labels of all active password policies.
completed policies
textlist
Labels of the password policies already met.
pending policies
textlist
Labels of the password policies not met yet.
is clickable
yes/no
Whether the input accepts interaction.
is required
yes/no
Whether the input is required.
is valid
yes/no
Whether the value is valid, considering the required state and the active policies.
is focused
yes/no
Whether the input is focused.
Events 1
Where a workflow can start.
value changed
event
Triggered when the password is confirmed with a different value, when leaving the input, pressing Enter or resetting the element.
Actions 3
What a workflow can tell the element to do.
Reset no params
Clears the password, hides it again and resets the touched state.
Focus no params
Focuses the password input.
Set value 2 params
Writes a password into the field from a workflow and refreshes the strength meter, the policy list and the exposed states.
Apply even when disabled?
yes/no
Yes applies the value even while the element is disabled. No makes the action do nothing in that state.
defaultno default
Value
text
The password to write into the field; an empty value clears it. The strength meter, the rule list and the exposed states are all recalculated from it. This exists for the case where your app generates a password that satisfies the policy configured above, which the browser's own generator cannot know. It is not meant for storing a password and writing it back later.
defaultno default
optional
FAQ 6
Does the plugin store or send the password anywhere?
No. Everything happens in the browser: the value, the strength calculation and the policy check never leave the page. The password only goes somewhere when your own workflow sends it.
How is the strength percentage calculated?
From the typed password itself, independently of the policy you configured. Length is worth up to 60 points, 3 per character up to twenty characters, except that the counted length is also capped at twice the number of distinct characters, so `aaaaaaaa` does not score like a long password. Variety is worth the other 40, with 10 points for each class present: lowercase, uppercase, number and special character. That is why a password can be strong and still fail a rule you required, or meet every rule and still score low.
Can I use the policy only as guidance, without blocking submission?
Yes. Turn off Pending policies make the input invalid? and the rule list keeps updating as the user types, while the field stays valid. Your workflow then decides what to accept.
What is the difference between active, completed and pending policies?
Active lists the rules you switched on. Completed lists the ones the current password already satisfies, and pending the ones it does not. The three are text states, so you can show them anywhere on the page.
Why is there a Set value action but no default value field?
Because the two do different things with a secret. A default value is an expression that lives in the page definition and is evaluated on every load, which means your app has to be holding the password in plain text to have something to put there. Set value is an explicit, momentary action, and it exists for one case: your app generates a password that satisfies the policy you configured here, which the browser's own generator cannot know about. If what you want is the field to start with the password the person already has, that is the password manager's job: set Browser autocomplete to current-password and the browser fills it, without your app ever seeing it.
Why does the visibility toggle matter for accessibility?
Because a password that cannot be seen is a password that gets mistyped, and the error is invisible to the person typing. Letting the user reveal what they wrote is a recommended practice, and the toggle can be switched off when your context forbids it.