Custom Hex Generator

Generate a cryptographically random hex value with full control over its shape: any digit length (not just fixed presets), upper/lower/mixed case, an optional "0x" or "#" prefix, and an optional grouping separator every N digits. Uses crypto.getRandomValues for the underlying randomness. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-26

Overview

Introduction

This tool generates a random hex value the way you'd actually want to use one in practice: any length you specify, in the case you want, with an optional prefix and digit grouping, not just a handful of fixed-length presets.

All of the underlying randomness comes from the Web Crypto API's crypto.getRandomValues, the same cryptographically secure source this site's other random generators use.

What Is Custom Hex Generator?

A configurable random hex string generator: you choose the digit length, a case mode (upper, lower, or mixed), an optional "0x" or "#" prefix, and an optional grouping separator inserted every N digits.

Unlike this site's simpler Random Hex Value Generator (fixed 8/16/32/64-digit buttons only), every one of those dimensions here is independently adjustable.

How Custom Hex Generator Works

The tool requests enough random bytes from crypto.getRandomValues to cover the requested digit length, converts them to hex, and trims to the exact length requested.

Case is then applied: upper/lower simply transforms the whole string, while mixed draws an additional random byte per character to independently decide that character's case. Finally, an optional prefix is prepended and, if a grouping size is set, "-" separators are inserted every N digits.

When To Use Custom Hex Generator

Use this any time you need a random hex value in a specific shape, a 0x-prefixed value for code, a #-prefixed value for a CSS-adjacent context, or a grouped value formatted like a product key or hardware identifier.

For a quick, no-configuration random hex value at one of the common power-of-two lengths, this site's simpler Random Hex Value Generator may be faster to use.

Often used alongside Hex to FakeHex Converter.

Features

Advantages

  • Full control over length, unlike fixed-preset generators, useful for any length your use case actually needs.
  • Uses cryptographically secure randomness (crypto.getRandomValues) throughout, including for the mixed-case decision.
  • Grouping and prefix options make it easy to match a specific formatting convention without manual post-processing.

Limitations

  • This is a client-side, browser-based generator; it has no persistence or tracking of previously generated values, so it cannot guarantee global uniqueness across uses.
  • Extremely large requested lengths are still limited by practical browser memory and rendering constraints.
  • Mixed case has no cryptographic significance of its own; it exists purely for appearance/formatting variety.

Examples

A grouped, 0x-prefixed value

Input

length=8, case=upper, prefix=0x, groupEvery=4

Output

0xA1B2-C3D4

8 random hex digits are generated, uppercased, split into groups of 4 with a "-" separator, and given a "0x" prefix. The exact digits shown here are just one possible random result for these settings.

A plain lowercase value with no prefix or grouping

Input

length=16, case=lower, prefix=none

Output

a1b2c3d4e5f60718

16 random hex digits, all lowercase, with no prefix or separators. As with any random generator, the exact digits will differ on every run.

Best Practices & Notes

Best Practices

  • Match the prefix option to where the value is headed: "0x" for source code, "#" for a CSS-adjacent context, "none" for a plain identifier.
  • Use grouping to make longer values easier to read or transcribe manually, similar to how product keys or hardware IDs are often formatted.
  • Don't rely on this (or any client-side generator) for global uniqueness guarantees; use it for randomness, not for collision-free identifiers across a large system.

Developer Notes

Randomness comes entirely from crypto.getRandomValues: one call sized to the requested digit length for the hex digits themselves, and (only in "mixed" case mode) a second call sized to the same length to decide each character's case independently. The component follows this site's useHasMounted pattern so the randomly generated value is only computed after client hydration, avoiding a server/client mismatch.

Custom Hex Generator Use Cases

  • Generating a 0x-prefixed random hex literal for source code or test fixtures
  • Generating a #-prefixed random value alongside CSS color tooling
  • Generating a grouped, product-key-style random hex string for display or demo purposes

Common Mistakes

  • Assuming the grouping separator counts toward the requested digit length; it doesn't, it's added on top.
  • Expecting "mixed" case to affect digits 0-9; only the hex letters A-F have a case to randomize.
  • Relying on this generator for guaranteed uniqueness across a large system; it provides randomness, not a uniqueness guarantee.

Tips

  • Set groupEvery to 0 (or leave it blank) to disable grouping entirely and get one continuous run of digits.
  • Use the Regenerate button to get a fresh random value without changing any of your configured options.

References

Frequently Asked Questions