Skip to content
Koit Academy

Free tool · no signup

Password generator

Built in your browser from real cryptographic randomness, with the strength shown as a number rather than a colour. Nothing is transmitted and nothing is stored.

Generated

    Strength

    Generated by crypto.getRandomValues in this browser. No request is made and nothing is written to this device.

    Settings

    Include

    How to use it

    How to use the Password Generator

    1. 01

      Set the shape

      Length, and which kinds of character to draw from. The entropy figure updates as you change them, so you can see what each choice is worth before you take it.

    2. 02

      Read the strength, not the colour

      Bits of entropy, and the time a realistic offline attack would need. A bar that turns green tells you nothing; a number you can compare does.

    3. 03

      Copy and store it somewhere

      A password you cannot remember is the point — that is what a password manager is for. Copy it, save it there, and close this page.

    What makes a password strong is not what most sites tell you

    The advice almost everyone has absorbed — a capital letter, a number, a symbol, change it every ninety days — was written for a threat model that no longer exists, and NIST formally withdrew most of it years ago. Composition rules do not measure strength. They measure compliance with a rule, and people satisfy rules in predictable ways: the capital goes at the front, the number and the symbol go at the end, and the result is a word with decorations that an attacker's software strips off in the first second.

    The thing that actually matters is entropy: how many equally likely possibilities the password was chosen from. It is measured in bits, each bit doubles the search, and it can be calculated exactly when — and only when — every character was picked independently at random. That last condition is why this tool does not force at least one digit into the output. The moment a generator guarantees a character class, it stops sampling uniformly and the real entropy drops below the number on the screen. A smaller honest number beats a larger invented one.

    Where the randomness comes from, and why it is the whole tool

    Every password here comes from crypto.getRandomValues, the browser's cryptographically secure random number generator, seeded by the operating system from sources an attacker cannot observe or reproduce. The alternative — Math.random — is designed for speed rather than secrecy. Its internal state can often be recovered from a modest number of outputs, and once recovered, every value it will ever produce is known. A generator built on it produces passwords that look identical to good ones and are not, which is the worst possible failure for a security tool because nothing about the output reveals it.

    There is deliberately no fallback in this page. If a browser somehow does not offer the secure API, the tool reports that and generates nothing at all rather than degrading to something weaker while the strength figure carries on claiming otherwise.

    The second detail that matters is how a random byte becomes a character. The obvious way is to take the byte modulo the size of the character pool, and it is subtly wrong: unless the pool divides evenly into 256, the first few characters of the pool come up slightly more often than the rest. The effect is small, but it is a real reduction in entropy and it makes the printed number an overstatement. This generator throws away any byte that falls outside the largest exact multiple of the pool size and draws again, which costs nothing noticeable and keeps the distribution flat.

    Reading the strength figure

    Two numbers are shown. The first is entropy in bits, calculated as the length multiplied by the base-two logarithm of the pool size — so a sixteen-character password drawn from every class this tool offers — 86 characters in all — carries about 103 bits. The second is what that means in time: how long an offline attack would take on average, assuming a trillion guesses a second against a fast unsalted hash.

    That assumption is deliberately unkind. A trillion guesses a second is the sort of rate a well-resourced attacker reaches with rented GPUs when a breached site stored its passwords with a fast hashing function it should not have used. Against a slow modern function such as bcrypt or Argon2 the same password survives many orders of magnitude longer, and against a live login form with rate limiting the offline attack never happens at all. The figure is a floor, not a forecast, and the reason to show it rather than a coloured bar is that a floor can be compared and a colour cannot.

    Look-alike characters, and when to leave them out

    Zero and capital O, and the digit one against lowercase l and capital I, are indistinguishable in many fonts and cause real transcription errors. Removing them helps exactly one situation: a password that a human being will read from a screen and type somewhere else, or dictate over a phone. It costs entropy, because the pool gets smaller, and the tool shows the new figure immediately so the trade is visible rather than assumed. If the password is going straight into a password manager and no human will ever read it, leave them in and take the extra bits.

    What to do with the password afterwards

    A password strong enough to be worth generating is one you cannot memorise, and that is the intended outcome rather than a side effect. It belongs in a password manager, which turns the problem of remembering many secrets into the problem of remembering one, and that one should be a passphrase you can actually recall. Generating several at once here is for the common case of setting up a service that needs more than one credential — copy them as a block, paste them into the manager, and close the tab. Nothing on this page persists after you do.

    The one habit worth more than any of this: never reuse a password across sites. Strength protects you against an attacker guessing. Uniqueness protects you against an attacker who already has one of your passwords from somewhere that was breached, and that is by far the more common way accounts are lost.

    Questions

    What people ask about the Password Generator

    Is anything sent anywhere?
    No. There is no network request in this page after it loads — no fetch, no analytics event when you generate, nothing. Passwords are produced by your own browser and exist only in the tab until you close it or press Reset. You can verify it: open your browser's developer tools, go to the Network tab, and generate as many as you like. Nothing appears.
    Is anything saved on this device?
    No. The invoice generator on this site deliberately remembers your own details, because retyping a bank account every month is the problem it solves. A password has no equivalent, so nothing here is written to storage at all — not the passwords, not the settings. Reload the page and it is as it was.
    Where does the randomness come from?
    From crypto.getRandomValues, the cryptographically secure generator built into every current browser and seeded by the operating system. It is not Math.random, which is fast, predictable once observed, and completely unsuitable for anything anyone has to keep. If your browser does not provide the secure API this tool refuses to generate rather than falling back to something weaker.
    What does the entropy number mean?
    It is how many bits of genuine unpredictability the password has, and it is the only honest measure. A password drawn from the full pool here — 86 characters — carries about 6.43 bits each, so sixteen of them is a shade under 103 bits. Every extra bit doubles the work an attacker has to do. It is calculated from the pool you actually selected, not guessed from the result — which is why this tool does not force "at least one digit": doing so would make the real number lower than the printed one.
    How is the crack time worked out?
    It assumes an offline attack at a trillion guesses a second against a fast, unsalted hash, which is the sort of rate a well-funded attacker reaches with rented GPUs when a site has stored passwords badly. It is deliberately the pessimistic case. Against a slow modern hash like bcrypt or Argon2 the same password holds out far longer, and against a site that rate-limits logins the question never arises. The figure is the time to search half the space, which is the average rather than the worst case.
    Should I exclude look-alike characters?
    Only if you are going to type the password by hand or read it aloud — 0 and O, 1 and l and I are the pairs that cause it. It costs a little entropy, and the tool shows you exactly how much, because the pool shrinks. If the password is going straight into a password manager, leave them in.
    Why generate several at once?
    Because setting up a new service usually means more than one credential, and copying them one at a time from a page that regenerates on every change is how people end up reusing one. The list is generated together and copies as a block.

    The long version

    This tool is one page of a 94-page book

    Lite guides to Claude, ChatGPT and Gemini in a single PDF, plus a side-by-side comparison cheat sheet.