Advanced Password Strength Checker
Instantly test & create strong passwords with real-time feedback, strength meter, auto-generation, and copy functionality.
Strength: 0% (Very Weak)
- ❌ At least 8 characters
- ❌ Lowercase letter
- ❌ Uppercase letter
- ❌ Number (0–9)
- ❌ Special character (!@#$…)
About This Tool
Create and test passwords with instant feedback. See what makes a password strong based on length, character variety, and complexity, using a colorful gradient strength meter similar to best practices.
How to Use:
- Type or generate a password.
- View strength meter update in real-time.
- See requirement checklist update as criteria are met.
- Copy secure password with one click.
Pro Tips:
- Use passphrases over 12 characters for extra security.
- Include mixed case, numbers, and symbols.
- Avoid predictable words or patterns.
- Use a password manager to store strong passwords.
???? More Useful Tools
copyright>// const pwd = document.getElementById("password");
const toggle = document.getElementById("togglePassword");
const copyBtn = document.getElementById("copyPassword");
const genBtn = document.getElementById("genPassword");
const strengthBar = document.getElementById("strengthBar");
const strengthText = document.getElementById("strengthText");
const reqs = {
length: document.getElementById("req-length"),
lower: document.getElementById("req-lower"),
upper: document.getElementById("req-upper"),
number: document.getElementById("req-number"),
symbol: document.getElementById("req-symbol")
};
const updateStrength = () => {
const val = pwd.value;
let score = 0;
reqs.length.textContent = (val.length >=8 ? '✅ ' : '❌ ') + 'At least 8 characters';
reqs.lower.textContent = (/[a-z]/.test(val) ? '✅ ' : '❌ ') + 'Lowercase letter';
reqs.upper.textContent = (/[A-Z]/.test(val) ? '✅ ' : '❌ ') + 'Uppercase letter';
reqs.number.textContent = (/[0-9]/.test(val) ? '✅ ' : '❌ ') + 'Number (0–9)';
reqs.symbol.textContent = (/[^A-Za-z0-9]/.test(val) ? '✅ ' : '❌ ') + 'Special character (!@#$…)';
score += Math.min(5, Math.floor(val.length / 4));
score += /[a-z]/.test(val) ? 1 : 0;
score += /[A-Z]/.test(val) ? 1 : 0;
score += /[0-9]/.test(val) ? 1 : 0;
score += /[^A-Za-z0-9]/.test(val) ? 1 : 0;
const percent = Math.min(100, Math.floor(score * 100 / 9));
strengthBar.style.width = percent + '%';
let label = 'Very Weak', color = '#dc3545';
if(percent > 80){ label = 'Very Strong'; color = '#28a745'; }
else if(percent > 60){ label = 'Strong'; color = '#007bff'; }
else if(percent > 40){ label = 'Medium'; color = '#ffc107'; }
else if(percent > 20){ label = 'Weak'; color = '#fd7e14'; }
strengthBar.style.background = `linear-gradient(to right, #dc3545, #ffc107, #28a745)`;
strengthText.textContent = `Strength: ${percent}% (${label})`;
};
pwd.addEventListener("input", updateStrength);
toggle.addEventListener("click", () => {
pwd.type = pwd.type === "password" ? "text" : "password";
toggle.textContent = pwd.type === "password" ? "Show" : "Hide";
});
copyBtn.addEventListener("click", () => {
if(!pwd.value){ alert("Nothing to copy."); return; }
pwd.select(); document.execCommand("copy");
alert("Password copied!");
});
genBtn.addEventListener("click", () => {
const length = 12;
const chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+~";
let pass = "";
for(let i=0;i
updateStrength();
});
// ]]>