Generate random letters A–Z with full control: bulk output up to 500, vowels/consonants filter, no-duplicates mode, frequency weighting, and one-click copy for code and games.
This random letter generator produces letters from the English alphabet (A–Z) with full control over case, quantity, filtering, and uniqueness. It covers every use case competitors don't: frequency-weighted generation that mirrors real English text, no-duplicate mode for drawing tiles like Scrabble or Boggle, and bulk output up to 500 letters with flexible separators for copy-pasting directly into code.
If you need random letters inside a program rather than a browser tool, here's the idiomatic approach in the languages you're most likely to be using.
import random, string
# Single random letter
letter = random.choice(string.ascii_uppercase)
# 10 unique letters (no duplicates)
letters = random.sample(string.ascii_uppercase, 10)
# Vowels only
vowels = random.choice('AEIOU')
# Frequency-weighted (simplified)
import random
POOL = 'EEEEEEEEEEEETTTTTTTTTAAAAAAAAAOOOOOOOO' \
'IIIIIIIINNNNNNNNSSSSSSSSHHHHHHHHRRRRRRR'
letter = random.choice(POOL)
import java.util.Random;
Random rng = new Random();
// Single random uppercase letter
char letter = (char)('A' + rng.nextInt(26));
// Lowercase
char lower = (char)('a' + rng.nextInt(26));
// 10 unique letters (shuffle approach)
List<Character> all = new ArrayList<>();
for(char c='A'; c<='Z'; c++) all.add(c);
Collections.shuffle(all);
List<Character> picked = all.subList(0, 10);
// Vowels only
String vowels = "AEIOU";
char v = vowels.charAt(rng.nextInt(5));
// Single random letter const letter = String.fromCharCode( 65 + Math.floor(Math.random() * 26) ); // N unique letters (no duplicates) const all = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ']; const shuffle = a => a.sort(()=>Math.random()-0.5); const unique = shuffle(all).slice(0, 10); // Vowels only const vowels = 'AEIOU'; const v = vowels[Math.floor(Math.random()*5)]; // Cryptographically random (for security use) const buf = new Uint8Array(1); crypto.getRandomValues(buf); const secure = String.fromCharCode( 65 + (buf[0] % 26) );
# Single random uppercase letter
cat /dev/urandom | tr -dc 'A-Z' | head -c 1
# 10 random letters (with repeats)
cat /dev/urandom | tr -dc 'A-Z' | head -c 10
# 10 unique letters
echo {A..Z} | tr ' ' '\n' | shuf | head -10
# Lowercase
cat /dev/urandom | tr -dc 'a-z' | head -c 1
When frequency weighting is enabled, letters are drawn proportionally to their occurrence in typical English text. E is the most common letter (~13% of all letters in English prose) and Z is the rarest (~0.07%). This matters when you need generated letters to look natural — e.g. for NLP test fixtures, readable Lorem Ipsum variants, or linguistic simulations.