Password Strength Checker
Check password strength, entropy, and common weaknesses. All checks run locally in your browser.
Strength Check
- Length
- Lowercase Letters
- Uppercase Letters
- Digits
- Symbols
- Sequence
- Repeats
- Blocklist
- Keyboard Pattern
- Date
- Periodic
- Looks good! There are no clues for improvement at present.
Usage Instructions
Functional Features
- 100% local analysis, prioritizing privacy protection.
- Advanced detection: keyboard patterns, dates, periodic repetitions, sequences, repetitions, etc.
- Leet normalization for blacklist matching (e.g., Pa$$w0rd → password).
- Flexible policies: minimum length and character type requirements.
- One - click import/export of policy JSON.
- One - click analysis in the detector
Frequently Asked Questions
Entropy estimates the size of the search space based on the character set and length. If there is structure (patterns, words), the effective entropy will be lower even if the raw bits seem high.
- Sequential sequences, such as abcde or 12345.
- Long repetitions of the same character (e.g., aaaa).
- Matches common weak words/patterns in the custom blacklist.
- Keyboard runs or adjacent key sequences (e.g., qwerty, asdf).
- Date formats (e.g., YYYYMMDD, dd-mm-yyyy).
- Repeating substrings (e.g., abcabc, 121212).
- Perform Leet normalization before matching the blacklist (e.g., Pa$$w0rd → password).
Cracking time is only a rough estimate. Actual attacks use dictionaries, masks, and GPUs. Short and structurally obvious passwords are often much weaker than their apparent entropy.
- Prioritize using long random passphrases (more than 4 words) or passwords generated by a password manager.
- Avoid personal information, dates, and predictable structures.
- Use a password manager and enable multi - factor authentication (MFA) whenever possible.
- Do not reuse passwords; only change them when they are compromised.
How to Check Password Strength via Programming Languages
Here is a minimal example using well - established community libraries. You can choose according to your technology stack.
<!-- CDN -->
<script src="https://unpkg.com/[email protected]/dist/zxcvbn.js"></script>
<script>
const res = zxcvbn('P@ssw0rd!');
console.log(res.score, res.crack_times_display);
</script>
// npm i @zxcvbn-ts/core
import { zxcvbn } from '@zxcvbn-ts/core';
const result = zxcvbn('P@ssw0rd!');
console.log(result.score, result.guesses_log10);
composer require bjeavons/zxcvbn-php
<?php
require __DIR__ . '/vendor/autoload.php';
use ZxcvbnPhp\\Zxcvbn;
$zxcvbn = new Zxcvbn();
$res = $zxcvbn->passwordStrength('P@ssw0rd!');
echo $res['score'];
pip install zxcvbn
from zxcvbn import zxcvbn
res = zxcvbn('P@ssw0rd!')
print(res['score'], res['crack_times_display'])
go get github.com/nbutton23/zxcvbn-go
package main
import (
"fmt"
zxcvbn "github.com/nbutton23/zxcvbn-go"
)
func main() {
res := zxcvbn.PasswordStrength("P@ssw0rd!", nil)
fmt.Println(res.Score, res.Guesses)
}
# Add dependency
cargo add zxcvbn
use zxcvbn::zxcvbn;
fn main() {
match zxcvbn("P@ssw0rd!", &[]) {
Ok(estimate) => {
println!("score: {}", estimate.score()); // 0..4
if let Some(times) = estimate.crack_times() {
println!("offline: {:?}", times.offline_slow_hashing_1e4_per_second());
}
}
Err(err) => eprintln!("zxcvbn error: {err}"),
}
}
Note: These libraries provide strength and pattern estimations, which may slightly differ from the detection items on this page.