Explaining to a stakeholder why a policy fails
A live demonstration that a policy-compliant password is weak, and a non-compliant one is strong, changes the conversation faster than a citation.
Estimates password strength: entropy, crack time and common-pattern feedback.
—Estimates password strength: entropy, crack time and common-pattern feedback.
CorrectHorseBatteryStaple
~94 bits — centuries to crack (offline)
Length and randomness dominate strength.
Higher entropy = exponentially more guesses required.
Your input is sent to YAS infrastructure because the tool requires server-side processing or public network queries. Input is not stored.
curl -X POST "https://yas.sh/api/v1/tools/password-strength" \
-H "Content-Type: application/json" \
-d '{"input":"Tr0ub4dor&3"}'const res = await fetch("https://yas.sh/api/v1/tools/password-strength", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"input": "Tr0ub4dor&3"
}),
});
const data = await res.json();import requests
r = requests.post("https://yas.sh/api/v1/tools/password-strength", json={"input":"Tr0ub4dor&3"})
data = r.json()| Field | Type | Required | Description |
|---|---|---|---|
| input | string | Yes | Password to evaluate |
{ "result": { "score": 3, "length": 11, "entropyBits": 58.4, "crackFast": "4 days", "crackBcrypt": "102k years", "feedback": ["..."] } }Entropy estimate, crack-time (fast hash & bcrypt), and actionable feedback (zxcvbn-flavored).
400 VALIDATION_ERROR — invalid input or unsupported option.413 PAYLOAD_TOO_LARGE — input exceeds the 64 KB limit.429 RATE_LIMIT_EXCEEDED — rate limit exceeded (60 req/min).Strength estimation does not count character classes. It searches for the cheapest way an attacker could generate the candidate: dictionary words with common substitutions, names, dates, keyboard walks (qwerty, 1qaz2wsx), repeats and sequences. Each recognised pattern is assigned the number of guesses required to reach it, and the total is the product along the cheapest decomposition — the approach popularised by Dropbox's zxcvbn.
This is why P@ssw0rd123! scores badly despite satisfying every complexity rule ever written: it decomposes into a dictionary word, a predictable substitution set and a common suffix, costing an attacker a few thousand guesses. Meanwhile a five-word random phrase with no capitals scores well because no pattern shortens the search.
A live demonstration that a policy-compliant password is weak, and a non-compliant one is strong, changes the conversation faster than a citation.
Test candidate thresholds against realistic user passwords to find a bar that blocks the genuinely weak without rejecting reasonable choices.
Service account passwords chosen years ago by a human are usually the weakest link in an otherwise modern system.
The pattern breakdown shows exactly which part of a password an attacker gets for free, which is more instructive than a score.
What this tool deliberately does not do, and where it will disagree with other implementations.