Random Unicode Private-Use Character Generator

Choose one Unicode private-use code point from the BMP or supplementary private-use planes using injected randomness; no public meaning is assigned.

Description

Choose one Unicode private-use code point across the BMP and two supplementary private-use areas.

Private-use code points have no standardized character meaning; cooperating users define their interpretation. A font may assign a visible glyph to one, while another system may show a missing-character box or assign a different meaning. Private-use does not mean encrypted or confidential.1

This generator selects one of 137,468 code points across U+E000–U+F8FF, U+F0000–U+FFFFD, and U+100000–U+10FFFD. It returns that code point as the string value. Supplementary selections occupy two UTF-16 code units even though they are one Unicode scalar value.

When to use Random Unicode Private-Use Character Generator

Use it for private-use font fixtures, encoding round trips, or software tests that distinguish Unicode validity from standardized glyph identity.

How to use Random Unicode Private-Use Character Generator and understand its results

  1. Run with no inputs, or supply {} programmatically.
  2. Inspect value by its code point if it has no visible glyph, and record any private agreement or font mapping separately.
  3. Copy the complete string and check the intended downstream font or encoder. Run again for another independent selection.
offset = floor(randomDraw × 137468)

The helper walks the three inclusive ranges, subtracting each range’s size until the offset falls within it, then uses String.fromCodePoint.

Range sizes are 6,400, 65,534, and 65,534. With uniform input randomness, every code point has equal selection probability; the ranges themselves are not equally likely.

json
{
  "input": {},
  "randomDraw": 0.25,
  "output": {
    "value": "\udb9b\udd3f"
  }
}

Draw zero selects U+E000 and a draw just below one selects U+10FFFD. Plane-ending noncharacters U+FFFFE, U+FFFFF, U+10FFFE, and U+10FFFF are outside this repertoire. Invalid random draws are rejected.

Limitations and assumptions

The default source is Math.random; no seed input or cryptographic entropy guarantee is provided. Repeated runs may select the same result, and the distribution depends on the random source.

No private character definition, font, uniqueness allocation, registry, or compatible cross-system mapping is supplied. The returned code point may already be assigned by a private agreement in your environment.

Alternative or Complementary methods

Use the noncharacter generator for permanently reserved internal-use test values. A string-count tool can help inspect storage length, provided its count convention is stated.

References

  1. Private-Use Characters, Noncharacters and Sentinels FAQ — Unicode Consortium

Similar or alternative tools

Don't forget to set a bookmark for tool.io!
Privacy | Imprint | Cookies