Random Character Generator

A random letter, digit or symbol — with an even chance for every one.

Your characterPicked locally
Character types
Custom alphabet and copy format
Copy format

This random character generator picks letters, digits or symbols one at a time, or many at once. Everything happens in your browser, and each character is shown large enough to read aloud.

What is a random character generator?

A random character generator picks individual characters from a set you choose, with every character equally likely. It is a tool for drawing, not for building — the output is meant to be read one character at a time.

Random character vs random string

The two sound identical and are used for entirely different things.

A random string generator joins characters into a single value: a token, an identifier, a row of test data. A random character generator hands you the characters separately, because you are going to read them out, write them on a board, or hand one to each person in a room.

Both draw from the same engine on this site. What differs is the shape of the answer.

Letters, digits and symbols

Most people arriving here want a letter, which is why a–z is the only type switched on by default. A random letter generator is the common case; the other toggles are there when you need them.

Turning on digits or symbols simply widens the pool. This random character generator does not weight any type, so enabling A–Z alongside a–z makes every capital exactly as likely as every lowercase letter.

Your own alphabet

The toggles cover the usual sets. When you need something else — vowels only, the four card suits, a handful of team names reduced to initials — type the characters into the custom field and nothing outside them is picked.

Duplicates in what you type are collapsed first. Entering aab does not makea twice as likely, because a fair draw is the one guarantee this tool will not bend.

Picking fairly

Why "random enough" is not enough

If you are choosing who goes first, or which letter a team must use, the draw has to be even. A random character generator that quietly favours part of the alphabet is not a fair draw, however random the output looks.

A byte holds 256 possible values, which 26 does not divide into evenly. Mapping bytes to letters with a modulo operation gives each of the letters a to v ten of the 256 values and each of w, x, y and z only nine, so the first twenty-two letters come up eleven percent more often. Rejection sampling discards the twenty-two leftover values and draws again, giving every letter nine of 256 and an equal chance.

A byte holds 256 values, and 26 does not divide into it evenly. A modulo shortcut hands the 22 left over to a–v, so those letters come up 11% more often.Bar lengths are exactly proportional: 10 and 9 of 256. The same mechanism is covered in more depth on the random string generator page.

Eleven percent sounds small. Across a term of classroom draws, or a tournament of tie-breaks, it is the difference between fair and not.

Where the randomness comes from

Characters come from crypto.getRandomValues(), the browser's cryptographic random source, which draws on hardware noise and timing jitter collected by the operating system.

Mapping those bytes onto your character set uses rejection sampling: values that would land unevenly are discarded and redrawn. That is what keeps every character equally likely.

The cost is a few extra draws that get thrown away. It is invisible in use, and it is the difference between a random character generator you can defend and one that merely looks random.

Why not Math.random()

Math.random() is seeded and deterministic. Recover the seed and every subsequent value is predictable, which matters more than it sounds if anyone has a reason to game the draw.

It is never used anywhere on this site, including here where the stakes are usually nothing more than who picks a topic first. A random character generator has no reason to reach for it when the cryptographic source costs the same.

With or without repeats

Allowing repeats

By default each pick is independent, so the same letter can appear twice. That is not a flaw — it is what genuine randomness looks like, and forcing every draw to differ would make the result less random, not more.

Drawing eight letters from an alphabet of 26 gives roughly a 70% chance that at least two match. A random character generator that never repeated would be quietly lying about that.

Requiring unique characters

Sometimes you genuinely need every character to differ: dealing a different letter to each student, or assigning distinct labels. The no-repeats switch makes this random character generator sample without replacement, which guarantees it.

Under the hood the available set is shuffled and the first few are handed back, so the result is still an even draw. It is dealing from a shuffled deck rather than rolling a die repeatedly.

When you ask for more than exist

Thirty different letters cannot come from a 26-letter alphabet. Rather than failing, the count is capped at what the set allows and the ceiling is shown next to the switch.

Turning on digits and capitals raises that ceiling, since the pool grows with every type you enable.

What people use this for

Classroom and learning

Drawing a letter for handwriting practice, spelling games, or "name something starting with". A random character generator earns its place here because the single-character view is deliberately large, so it reads from the back of a room.

Word games and puzzles

Setting a starting letter, dealing out tiles, or generating constraints for a writing exercise. Turn on no-repeats when each player needs a different letter.

Raising the count deals a whole rack at once. A random character generator set to seven letters with repeats allowed behaves much like drawing tiles from a bag.

Fair selection and tie-breaks

Deciding an order, breaking a draw, or picking without anyone being able to argue the result was steered. This is the case where the fairness section above actually matters, and the reason this random character generator was built on the same engine as the security tools.

For numeric draws, the PIN generator gives digits in a fixed length, and the random code generator groups characters into readable blocks.

Frequently asked questions

How do I pick just one random letter?

Leave the count at one and keep only the a–z toggle on. The generator picks a single character and shows it on its own, large enough to read across a room.

Is the pick actually fair?

Yes. Every character in your set has exactly the same chance. Selection uses rejection sampling rather than a modulo operation, which would quietly favour the earlier letters of the alphabet by about 11%.

Can I get the same letter twice?

By default yes, because each pick is independent and repeats are what real randomness looks like. Turn on “no repeats” when you need every character to be different, as when dealing out letters to a group.

What happens if I ask for more unique characters than exist?

The count is capped at the size of your character set, since 30 different letters cannot come from a 26-letter alphabet. This random character generator adjusts the number for you and shows the ceiling.

Can I use my own alphabet?

Yes. Enter any characters in the custom field and only those are used. Repeated characters in your input are collapsed, so every distinct character keeps an equal chance.

How is this different from the random string generator?

This random character generator returns separate characters meant to be read one by one. The random string generator joins them into a single value for use as a token, an identifier or test data.

Does it work offline?

Yes. Everything runs in your browser, so once the page has loaded it keeps working with the network disconnected. Nothing you pick is sent anywhere or stored.

Are these characters safe to use in a password?

They come from the same cryptographic source as everything else here, so the randomness is sound. The password generator is still the better fit, because it guarantees a mix of character types and reports the resulting strength.

More free generators

Like this random character generator, every tool here runs locally in your browser, with no account and no limits.

Methodology

Last updated

How characters are selected

Each character comes from crypto.getRandomValues() through rejection sampling, so every entry in the active set is equally likely. Math.random() is never used.

With no-repeats enabled the set is shuffled with a Fisher-Yates pass driven by the same source, and the first N characters are taken. Nothing this random character generator produces is stored, transmitted or logged.

Why no entropy figure is shown

Other tools on this site report entropy because their output is meant to resist guessing. A character drawn for a classroom exercise is not a secret, and printing a bit count beside it would give this random character generator a purpose it does not have.

If you do need that number, the random string generator shows it for the same character set.

Shared engine, separate tool

Character selection reuses the same charset building and sampling code as the random string generator, so a fix in one benefits both. What makes this a random character generator rather than a second string tool is everything around that engine: the interface, the defaults and the shape of the output.