Generators
Tools that produce identifiers and test values on demand. All generation happens in your browser, so nothing is ever transmitted.
- Mock Data GeneratorDefine the fields you need and generate up to 1,000 rows of realistic fake data as JSON, CSV or SQL insert statements. Everything is generated in your browser, so nothing is uploaded and no real personal data is involved.
- UUID GeneratorGenerate UUIDs in your browser, either random v4 or time-sortable v7. Choose how many you need and copy them individually or all at once.
- Password GeneratorGenerate strong random passwords in your browser, with the actual entropy in bits shown rather than a vague strength meter. Nothing is transmitted or stored.
- Random Number GeneratorGenerate random numbers in any range, as integers or decimals, with an option for no repeats. Draws come from the browser cryptographic random source rather than Math.random.
- QR Code GeneratorGenerate a QR code for a URL, text or Wi-Fi network and download it as PNG or SVG. Everything happens in your browser, so nothing is uploaded and the code never expires.
- Cron Expression Generator and ParserWrite a cron expression and see the next times it will actually run. Every field is validated, and schedules that can never fire are flagged.
- Wheel SpinnerPaste a list of names or numbers and spin the wheel to pick one at random. The winner is drawn before the wheel moves, so the animation cannot influence the result.
Choose a generator
Use the password generator for credentials, the UUID generator for identifiers, and the random number generator for draws, dice and test values. All three draw from the browser's cryptographic random source with rejection sampling, so every outcome is equally likely.
Use the mock data generator to fill a table or a fixture file, the QR code generator to turn a link or a Wi-Fi credential into something scannable, the cron expression tool to check when a schedule will actually fire, and the wheel spinner when a group needs to watch the draw happen.
Where the randomness comes from
Everything random here is drawn from crypto.getRandomValues, the browser's cryptographically secure generator, and squeezed into the range you asked for with rejection sampling rather than a modulo, so no value in the range is more likely than another. For a password that is a security property; for a raffle it is simply fairness.
The generator most code reaches for first, Math.random, is a different thing entirely: fast, predictable from a handful of outputs, and explicitly ruled out for cryptographic use by the language specification. A tool that uses it for a password is not obviously broken, which is exactly the problem.
Generated data should be safe to ship
Fixtures are only useful if running the suite cannot reach a real person, so the mock data generator draws phone numbers from the block reserved for fiction, email addresses and URLs from the RFC 2606 example domains, and IP addresses from the documentation ranges that are not routed.
That is also the argument against the tempting alternative of copying production data and scrubbing the names. Removing identifiers does not de-identify a dataset, and the scrubbed copy is still production data living somewhere with weaker access control. Generating from the schema gives you the right shape with no provenance at all.
Some of these generate a specification, not a value
A cron expression and a QR code are not random outputs; they are artefacts that some other system will interpret later, and the useful question is whether that interpretation matches what you meant. This is why the cron tool lists the next run times rather than only parsing the fields, and why the QR generator reports the version and error correction level it chose.
Check them against reality before they ship. Read the run dates for the day-of-month and day-of-week case that trips everyone up, and scan a printed code with two or three different phones before ordering a thousand copies.
