๐ Password Generator¶
Live at: aguidetocloud.com/password-generator/ Built: April 2026 Cost: $0 โ 100% client-side JavaScript, zero API calls Accent colour: Fuchsia
#D946EFCSS namespace:.pwgen-*Body class:page-password-generator
What It Does¶
A world-class password generator and strength checker that creates unbreakable passwords, passphrases, PINs, and custom recipe-based passwords. Includes a real-time strength analyser with breach database checking via Have I Been Pwned's k-anonymity API. Everything runs 100% in the browser โ no passwords are ever sent to any server.
Think of it like 1Password's generator + Bitwarden's strength checker + EFF's Diceware โ all in one free tool with no sign-up, no ads, and no data collection.
Why This Tool Exists¶
The Problem¶
- Most online password generators are ad-laden and suspicious โ users don't trust them
- Built-in browser generators are basic โ no passphrase mode, no strength feedback
- 1Password and Bitwarden lock generators behind account creation
- Existing tools give misleading strength scores โ length-based, not entropy-based
- No tool combines generation + checking + breach lookup + educational passphrase builder in one place
- Enterprise users need policy-compliant passwords (Word-Number-Word-Symbol) but have no easy generator
Our Differentiator¶
| Feature | 1Password | Bitwarden | Ours |
|---|---|---|---|
| Generation modes | 2 (Random, Memorable) | 2 (Password, Passphrase) | 5 (Random, Passphrase, PIN, Pronounceable, Recipe) |
| Strength checker | โ None | Basic | Advanced (entropy + pattern detection + HIBP breach check) |
| Recipe/template mode | โ | โ | โ
Word-0000-Word-! patterns |
| Breach database check | โ | โ | โ HIBP k-anonymity (privacy-safe) |
| Crack time estimates | โ | Basic | 3-tier (online, offline, GPU cluster) |
| Pattern detection | โ | โ | โ Keyboard, sequential, leet speak, dates, repeats |
| Word list | Unknown | EFF (7,776) | EFF Diceware (7,776 words, loaded from JSON) |
| Percentile comparison | โ | โ | โ "Stronger than ~95% of passwords" |
| Sign-up required | โ Free trial | โ Account | โ None |
| Cost | $2.99/mo+ | Free (limited) | Free forever |
Architecture¶
Files¶
content/password-generator/
_index.md # Front matter + 8 FAQ items
layouts/password-generator/
list.html # Template โ 3 tabs, JSON-LD, tool-hero
static/css/
password-generator.css # 24 KB โ .pwgen-* namespace, fuchsia accent
static/js/
password-generator.js # 61 KB โ all logic, CSPRNG, strength analysis
static/data/password-generator/
wordlist.json # 76 KB โ 7,776 EFF diceware words
Dependencies¶
- Zero CDN dependencies โ pure vanilla JS
- Web Crypto API โ
crypto.getRandomValues()for CSPRNG - Web Crypto subtle โ
crypto.subtle.digest('SHA-1')for HIBP hash - HIBP API โ
api.pwnedpasswords.com/range/(k-anonymity, only 5-char hash prefix sent)
State Management¶
const S = {
mode: 'random', // Current generation mode
password: '', // Current generated password
passwordVisible: true, // Eye toggle state
checkVisible: false, // Check tab eye toggle
wordList: null, // Loaded EFF word list (7,776 words)
wordListIsFallback: false, // True if JSON fetch failed
history: [], // Last 20 passwords (session-only)
ppWords: [], // Current passphrase builder words
ppWordCount: 5, // Default word count
genCounter: 0, // Async race prevention counter
bulkPasswords: null // Last bulk generate results
};
Features โ Tab by Tab¶
Tab 1: ๐ Generate¶
5 generation modes:
| Mode | How it works | Entropy source |
|---|---|---|
| ๐ฒ Random | Chars from pool (upper/lower/num/sym) | length ร log2(poolSize) |
| ๐ Passphrase | Random words from EFF list | wordCount ร log2(7776) โ 12.9 bits/word |
| ๐ข PIN | Digits only (4-12) | length ร log2(10) |
| ๐ฃ๏ธ Pronounceable | CV syllable structure (onset+nucleus+coda) | syllables ร log2(33ร5ร14) |
| ๐งพ Recipe | User-defined pattern templates | Token-based calculation |
Quick-start presets: - ๐ฆ Banking โ 20 chars, all character types - ๐ฑ Phone PIN โ 6-digit PIN - ๐ง Memorable โ 4-word passphrase - ๐ถ WiFi โ 12 chars, no symbols
Other features:
- One-click copy with โ feedback
- Regenerate button (๐ฒ)
- Show/hide toggle (๐๏ธ)
- Dark/light readability preview (๐/โ๏ธ)
- Strength meter bar with animated fill + glow on Very Strong
- Crack time estimate (offline, 100B guesses/sec)
- Percentile comparison ("Top 2%")
- Bulk generate 10 โ copy all or download .txt
- QR code export โ opens /qr-generator/ with password pre-filled
- Password history (last 20, session-only)
- Keyboard shortcuts: Enter = regenerate
- Word count hint (โ ๏ธ < 5 words, โ
5+ words)
Tab 2: ๐ Check My Password¶
Real-time analysis as you type: - Score ring (SVG, 0-100) with animated stroke - Strength label (Very Weak โ Very Strong) with colour - Percentile ("Stronger than ~95% of passwords") - 3-tier crack time estimates: - Online (1K/sec, rate-limited) - Offline fast hash (100B/sec, MD5-class) - GPU cluster (1T/sec) - Character composition bars (length, upper, lower, numbers, symbols, unique)
Pattern detection (warnings): - Common password database (40+ entries) - Keyboard patterns (qwerty, asdfgh, 1qaz2wsx, etc.) - Sequential characters (abc, 321) - Repeated characters (aaa) - Date patterns (2024, 12/25/2024) - Leet speak substitutions (p@ssw0rd โ password) - Low character variety
HIBP breach check: - Uses k-anonymity โ only first 5 chars of SHA-1 hash sent - Shows "Found in X,XXX data breaches!" or "Not found โ " - Graceful fallback if offline/blocked
Privacy badge: "Your password is analysed locally โ never sent to our servers"
Tab 3: ๐งฉ Word Builder¶
Interactive passphrase construction: - Word chips โ click any word to reroll just that one - Pop animation on rerolled chips - Add/Remove word buttons (min 2, max 12) - Copy full passphrase button - Reroll All button
Options: - Separator: hyphen, space, dot, underscore, none - Capitalise each word - Append random number - Append random symbol
Entropy breakdown table: - Word count, word list size, entropy per word - Total entropy (bits) - Crack times (online, offline, GPU) - Equivalent random character count
Recipe Mode โ Pattern Reference¶
| Token | Output | Entropy |
|---|---|---|
Word |
Random capitalised word from EFF list | ~12.9 bits |
0 |
Random digit (0-9) | ~3.3 bits |
! |
Random symbol from 13-char set | ~3.7 bits |
A |
Random uppercase letter | ~4.7 bits |
a |
Random lowercase letter | ~4.7 bits |
C/c |
Random consonant (upper/lower) | ~4.4 bits |
V/v |
Random vowel (upper/lower) | ~2.3 bits |
| Any other char | Literal (kept as-is) | 0 bits |
Built-in presets:
| Name | Pattern | Example output |
|---|---|---|
| Word-NUM-Word-SYM | Word-0000-Word-! |
Scrabble-4776-Sulphuric-? |
| WordSymWordNums | Word!Word0000 |
Plausibly^Mandolin2267 |
| Words-with-Nums | Word-Word-Word-00 |
Giddily-Shady-Matted-87 |
| Syllables | Cvcc0-Cvcc0-Cvcc0! |
Xayk4-Mupt4-Rimz2# |
Strength Analysis Algorithm¶
Entropy Calculation¶
For Random mode:
entropy = length ร log2(poolSize)
where poolSize = sum of: lowercase(26), uppercase(26), digits(10), symbols(33)
For Passphrase mode:
entropy = wordCount ร log2(wordListSize) // 7776 โ ~12.9 bits/word
+ log2(1000) if number appended
For Pronounceable mode:
syllables = ceil(length / 2.6)
entropy = syllables ร log2(33 ร 5 ร 14) // onset ร nucleus ร coda
+ syllables ร 1 if mixed case
+ log2(10 ร length) if numbers
Pattern Penalties¶
| Pattern | Penalty |
|---|---|
| Common password (exact match) | Entropy capped at 5 bits |
| Keyboard pattern found | Entropy ร 0.3 |
| Sequential characters (per instance) | Entropy ร (1 - 0.15 ร count) |
| All same character (unique=1) | Entropy capped at 10 bits |
| Very low variety (unique โค 3) | Entropy ร 0.25 |
| Repeat โฅ 3 chars (general) | Entropy ร 0.6 |
| Date-like pattern | Entropy ร 0.7 |
| Leet speak โ common password | Entropy ร 0.3 |
Score Mapping¶
| Entropy range | Score range | Label |
|---|---|---|
| 0-28 bits | 0-20 | Very Weak |
| 28-36 bits | 20-40 | Weak |
| 36-60 bits | 40-60 | Fair |
| 60-80 bits | 60-80 | Strong |
| 80+ bits | 80-100 | Very Strong |
Percentile Mapping¶
Based on breach database studies (~50% of real passwords score <20):
| Score | Percentile |
|---|---|
| 0 | Top 100% |
| 20 | Top 50% |
| 40 | Top 25% |
| 60 | Top 10% |
| 80 | Top 2% |
| 100 | Top 1% |
Pronounceable Algorithm¶
Uses syllable structure: Onset + Nucleus + Coda
- Onsets (33): b, c, d, f, g, h, j, k, l, m, n, p, r, s, t, v, w, z, br, ch, cl, cr, dr, fl, fr, gr, pl, pr, sh, sl, sp, st, tr
- Nuclei (5): a, e, i, o, u
- Codas (14): (emptyร9), n, m, s, l, r โ ~64% open syllables for natural rhythm
This produces genuinely speakable passwords like "frulumtomajugo", "prenjemnawosin", "vizuchakuremef".
SEO¶
- JSON-LD schemas: WebApplication + FAQPage (from baseof seo-jsonld partial) + BreadcrumbList
- 8 FAQ items covering: safety, strength meter, passphrases, storage, strong passwords, offline use, crack time, word list
- Pagefind searchable block with keywords
- Meta description optimised for "free password generator" intent
Integration Checklist (for future session)¶
Items NOT done yet (deferred to a dedicated integration session):
- [ ] Add to
data/toolkit_nav.toml(prev/next nav) - [ ] Add to
baseof.htmlbody class chain (page-password-generator) - [ ] Add to
data/tool_colours.toml(โ ๏ธ#D946EFhue 292ยฐ is 8ยฐ from AI News 300ยฐ โ may need adjustment) - [ ] Add card to
/free-tools/page - [ ] Add to nav dropdown under appropriate category
- [ ] Add to homepage toolkit section
- [ ] Bump
tool_countinhugo.toml - [ ] Bump
cache_versioninhugo.toml - [ ] Add SWA cache route for
/data/password-generator/*instaticwebapp.config.json - [ ] Run full smoke test after deploy
- [ ] Add counter entry to
data/tool_counters.toml
Maintenance¶
- Word list: Static EFF diceware list โ no updates needed unless EFF publishes a new version
- Common passwords: Consider expanding the 40-entry set periodically from breach database releases
- HIBP API: Free, no auth, no rate limits for the range API. If they change the API, update the
checkHIBP()function - Staleness: ๐ข Low โ pure client-side tool with no data dependencies