U+0000 → U+10FFFF
KYO360 KEYGEN
BITS OF ENTROPY
Pick a mode to start.
Runs entirely in this tab.
No network. No storage.

Core sets

Scripts & symbols (mixable)

Rules

0 = off

Words are drawn from the built-in list with uniform, unbiased sampling. Entropy counts only the words — the case and padding options add little and are there for policy checkboxes, not strength.

Straight from crypto.getRandomValues — every byte is independent, so entropy is exactly 8 × the byte count regardless of how it is encoded.

Output

Alphabet size
Per character
Total entropy
Median time to crack

Generated

Hover or tap a character to inspect its code point.
Paste-safety preview — first result, escaped per context

Green in the table means the raw value needs no escaping in that context — safe to paste as-is. Anything else shows the form you should actually write.

Alphabet in use — every glyph that can appear
SHA-256 of each result
How this works

Every random value comes from crypto.getRandomValues, the browser's CSPRNG. Indexes into an alphabet use rejection sampling — a 32-bit draw is discarded and redrawn whenever it falls in the biased tail — so each glyph is exactly equally likely. Math.random is never called.

Entropy is reported as length × log₂(alphabet). Turning on require one from every set or the anti-pattern rules shrinks the space slightly; the figure shown is then a ceiling, not a promise. No character used twice is computed exactly as log₂ of the falling factorial.

Time-to-crack assumes the attacker knows your exact settings and searches half the space. It says nothing about phishing, keyloggers, or password reuse — the ways passwords actually get taken.

Nothing here is transmitted, logged, or written to storage. Refreshing the page destroys everything. Your clipboard, however, is not cleared for you.

Copied