Two generators: identifiers and QR codes. Both compute their output in this browser from code you can read, which is the whole reason they are grouped together — a generator that calls a server is a generator that has seen what you generated.
crypto.getRandomValues() in your browser. The QR matrix is built by a local encoder written for this site — not fetched as an image from a third-party service. Open your network tab while you use either one and watch: no request is made.Most of the tools on this site transform something you already have. Generators are different: they create a value, and the value is often sensitive precisely because it is new — a WiFi password you are about to share, a contact card for a real person, a primary key that will identify a row forever.
That makes the usual free-tool bargain a bad one. A QR generator that renders the image server-side necessarily receives the payload first. For a link to your homepage that costs nothing. For WIFI:T:WPA;S:MyNetwork;P:hunter2;; it means your network credentials have been posted to a stranger's log file. Both generators here avoid the question by never making the request.
A UUID is a 128-bit identifier you can mint anywhere, without coordinating with a database or a central service, and still reasonably expect to be unique. That property is what makes offline-first and distributed systems workable: a client can create a record, give it an ID and sync it later without a round trip to find out what its key should be.
| Version | What it encodes | Use it when |
|---|---|---|
| v4 | 122 random bits and nothing else | Almost always. It leaks no timestamp, no machine identity and no ordering. |
| v1 | A 60-bit timestamp, a clock sequence and a node ID | Only when something downstream reads the creation time back out of the ID. |
| NIL | All zeros | As a deliberate "no value" sentinel in a UUID-typed column. |
One detail worth knowing about v1 in a browser: there is no stable hardware address available to a web page, so the node field is random rather than a real MAC. RFC 4122 §4.5 requires the multicast bit to be set in that case, which this generator does — a randomly-generated node ID can then never be mistaken for, or collide with, a genuine network card.
A v4 UUID has 122 random bits, or about 5.3 × 10³⁶ possible values. Reaching a 50% chance of a single collision takes roughly 2.7 × 10¹⁸ of them — at a billion per second, about 85 years. You can treat them as unique.
That guarantee rests entirely on the randomness being real. UUIDs built from Math.random(), which some libraries still do, have far less effective entropy and have caused duplicate keys in production. This generator uses the browser's cryptographic RNG, the same source used for key material.
A QR code is just a payload plus error correction, arranged in a grid. The two knobs that matter are version, which sets the grid size from 21×21 up to 177×177, and error-correction level, which decides how much of the code can be obscured and still scan. They trade against each other: the same grid holds less data as you ask for more redundancy.
Capacity at error-correction level M, as computed by this site's own encoder:
| Version | Grid | Digits | Alphanumeric | Bytes / UTF-8 text |
|---|---|---|---|---|
| 1 | 21 × 21 | 34 | 20 | 14 |
| 10 | 57 × 57 | 513 | 311 | 213 |
| 25 | 117 × 117 | 2,395 | 1,451 | 997 |
| 40 | 177 × 177 | 5,596 | 3,391 | 2,331 |
And the cost of redundancy, at the largest version 40 grid:
| Level | Recoverable damage | Bytes |
|---|---|---|
| L | ~7% | 2,953 |
| M | ~15% | 2,331 |
| Q | ~25% | 1,663 |
| H | ~30% | 1,273 |
Level M is the right default for anything that will be read off a screen or a clean print. Go to Q or H for codes that will be printed small, stuck on something that gets handled, or overlaid with a logo in the middle — the redundancy is what lets a scanner recover from the part you covered up.
No. Both generators compute their output in the page. UUIDs come from crypto.getRandomValues() in your browser, and the QR matrix is encoded by a local script rather than fetched as an image from a service. Nothing is transmitted and nothing is stored on a server.
Most free QR generators build the image on their own server, which means the payload travels to them. For a plain URL that is harmless. For a WiFi QR code it hands over your network password, and for a contact card it hands over someone's personal details. Encoding locally removes that step entirely.
Version 4 for almost everything — it is 122 random bits and carries no information about when or where it was made. Choose version 1 only if something downstream needs to read the creation timestamp back out of the identifier.
At the largest size, version 40, the limit is 7,089 digits, 4,296 alphanumeric characters or 2,953 bytes at the lowest error-correction level. Higher error correction trades capacity for damage tolerance: the same version 40 code holds only 1,273 bytes at level H.
The generator produces up to 1,000 per batch and you can run as many batches as you like. There is no account, no quota and no rate limit, because there is no server involved to meter.
Other tools that produce or inspect machine-readable values: