Unicode Generator: Random Characters, Ranges, Code Points
Generate random Unicode characters, letters, numbers and text from chosen blocks and scripts, list code point ranges, keep or remove characters by block, and increment or decrement code points. Printable characters only by default. Nothing is uploaded.
Skips unassigned, control, format and separator code points.
About the Unicode generator
This tool generates random Unicode characters, letters, numbers and text, lists code point ranges, filters text by block and shifts code points, all in your browser. Pick an operation, adjust its settings and the result appears at once, ready to copy or download as a UTF-8 text file. Everything runs on this page: nothing is uploaded, and your text never leaves your device.
Operations
Generate
Random Unicode draws characters from the blocks and planes you tick, such as Greek and Coptic, Cyrillic, Hebrew, Arabic, Devanagari, Hiragana, Katakana, CJK Unified Ideographs, Hangul Syllables, the emoji blocks, Mathematical Alphanumeric Symbols, Box Drawing and Arrows, or the whole of planes 0, 1 and 2. With Printable characters only on, unassigned code points, controls, format characters, private-use characters and separators are skipped, so every character you get is visible. Random letters picks letters from the scripts you choose, Random numbers builds numbers from the decimal digits of one script each (Arabic-Indic, Devanagari, Thai, fullwidth and many more) or from any numeric character, and Random text writes sentences of random "words" in one script, with that script's full stop and comma.
Ranges
Code point range lists every character from a first to a last code point, written as U+0041, 0x41 or plain hex. A range holds up to 65,536 code points, the size of one plane. Surrogate code points U+D800 to U+DFFF are never output on their own, because they only exist as halves of a UTF-16 pair.
Change text
Extract or remove a range keeps only the characters inside the ticked blocks and any custom ranges you type, such as U+0041-U+005A, U+0030, or removes them instead. Increment code points and Decrement code points move every character forward or back by a step: with a step of 1, HAL becomes IBM. Shifting skips the surrogates and wraps around from U+10FFFF to U+0000. Both can leave spaces and line breaks alone.
How randomness works
Random characters come from the browser's cryptographic random number generator, and each character of the chosen blocks is equally likely. A large block such as CJK Unified Ideographs therefore dominates a mix with a small one such as Arrows. Press Generate again for a fresh draw with the same settings. One run produces at most 100,000 characters, and typed text is limited to 1,000,000 characters.
Why output may vary by browser
Whether a code point is assigned, and which script it belongs to, comes from the Unicode data built into your browser's JavaScript engine. A newer browser knows more recently added characters, and fonts decide how they look: a character your fonts lack shows as an empty box but is still copied correctly.
Related tools
To see the binary, hex or decimal bytes of the characters you generate, paste them into Text to Binary. The HTML Encoder and Decoder turns them into numeric entities for web pages, and the Text Case Converter changes the case of generated letters.
Open-source credits
- The generator is implemented in-house for this site and uses no third-party library.
- Block names and bounds follow the Unicode Standard's code charts (Blocks.txt). Character properties such as letter, decimal digit, script and unassigned come from the Unicode property escapes (
\p{…}) of the JavaScript regular expression engine, defined in ECMA-262. - Random draws use the browser's Web Crypto API with rejection sampling, so no character is favoured.
Frequently asked questions
Why do some generated characters show as empty boxes?
The character is valid and assigned, but none of the fonts installed on your device has a glyph for it, so the browser draws a placeholder box. Copying still copies the correct code point, and it will display wherever a font that covers the block, such as Noto, is available.
Which code points count as printable in the random Unicode generator?
Letters, combining marks, numbers, punctuation and symbols count as printable. Unassigned code points, control characters, format characters such as the zero-width space, private-use code points, surrogates and the space and line separators are skipped while the option is on.
Why are surrogate code points never generated?
U+D800 to U+DFFF are reserved for UTF-16, where a high and a low surrogate together encode one character above U+FFFF. On their own they are not characters, cannot be encoded in UTF-8 and would turn into replacement characters, so ranges and code point shifts skip over them.
How does incrementing code points wrap around?
Each character moves by the step through the 1,112,064 Unicode scalar values, which are all code points except the surrogates. Stepping past U+10FFFF continues at U+0000, and decrementing below U+0000 continues at U+10FFFF, so a shift by any step can always be undone by the opposite shift.
Do random numbers mix digits from different scripts?
Not with the decimal digits kind. Each number takes all of its digits from a single set of ten, such as Arabic-Indic, Devanagari or fullwidth, and a number longer than one digit never starts with zero. The any-number kind instead draws freely from every numeric character, including fractions, Roman numerals and circled numbers.