# UUID Generator — Examples

> Concrete walkthroughs: generate a v4 UUID, 100 v7 for a migration, a v1, a v5 from the DNS namespace, a v5 with a custom namespace, and the NIL UUID.

Source: https://www.jpkc.com/db/en/tools/uuid/examples/

Back to overview: [UUID Generator](https://www.jpkc.com/db/en/tools/uuid/) · Open the live tool: [www.jpkc.com/tools/uuid/](https://www.jpkc.com/tools/uuid/)

This page shows the **UUID Generator** through concrete walkthroughs. The UUID values shown are examples — yours will differ every time (except for v5 and NIL). Exactly how each version works is covered in the [manual](https://www.jpkc.com/db/en/tools/uuid/manual/).

## Example 1: Generate a single v4 UUID

Goal: quickly get a random identifier for a new record.

1. The **v4 Random** tab is already active on load.
2. Leave **Number of UUIDs** at `1`.
3. Click **Generate UUID(s) v4**.

**Result:** the result field shows a random UUID such as `f47ac10b-58cc-4372-a567-0e02b2c3d479`. The clipboard button copies it. Click **Generate** again and you get a completely different UUID — v4 is purely random.

## Example 2: 100 v7 UUIDs for a migration

Goal: generate a batch of time-sortable keys at once, for instance to give existing records new primary keys.

1. Open the **v7 Time-ordered** tab.
2. Set **Number of UUIDs** to `100`.
3. Click **Generate UUID(s) v7**.

**Result:** the field fills with 100 UUIDs, one per line. Because v7 carries a leading timestamp, the values all start similarly and rise slightly — they are roughly ordered by creation time. The copy button grabs the whole block to paste into, say, a SQL script or a CSV. This sortability makes v7 nicer for database indexes than random v4 (see [tips](https://www.jpkc.com/db/en/tools/uuid/tips/)).

## Example 3: A v1 UUID without a MAC address

Goal: produce a classic time-based identifier and confirm no hardware identifier is in it.

1. Open the **v1 Time-based** tab.
2. Leave **Number of UUIDs** at `1`.
3. Click **Generate UUID(s) v1**.

**Result:** you get a v1 UUID. The timestamp part sits at the front, while the trailing **node part is generated randomly** here — so the tool does not expose your MAC address, unlike some classic v1 implementations. For new projects v7 is usually still the better time-based choice; v1 is mainly useful when an existing system requires it.

## Example 4: A deterministic v5 UUID from a domain

Goal: derive a stable, reproducible identifier from a domain name.

1. Open the **v5 Name-based** tab.
2. Set **Namespace** to `DNS` (the default).
3. In **Name**, enter `example.com`.
4. Click **Generate UUID v5**.

**Result:** you always get the same UUID — for `example.com` in the DNS namespace that is `cfbff0d1-9375-5685-968c-48ce8b15ae17`. Generate it tomorrow or on another machine and you get exactly the same value. That is the whole point of v5: a reliable key you can recompute from the same name at any time, without having to store it.

## Example 5: v5 with a custom namespace

Goal: derive UUIDs in a project-specific namespace, separate from the standard ones.

1. On the **v5 Name-based** tab, set **Namespace** to `Custom UUID` — the **Custom Namespace UUID** field becomes active.
2. Enter a valid namespace UUID there, e.g. one previously generated with v4: `f47ac10b-58cc-4372-a567-0e02b2c3d479`.
3. In **Name**, enter the value to derive, such as `user:42`.
4. Click **Generate UUID v5**.

**Result:** you get a v5 UUID specific to your project: the same name `user:42` yields a different UUID in your custom namespace than in the DNS namespace. If you mistype the namespace UUID (wrong length or invalid characters), the tool rejects it with "Invalid namespace UUID format." — the input must match the `8-4-4-4-12` format exactly.

## Example 6: Copy the NIL UUID

Goal: quickly grab the null placeholder `00000000-0000-0000-0000-000000000000`.

1. The **NIL UUID** sits permanently in the card footer.
2. Click the small copy button right beside it.

**Result:** the NIL UUID is on the clipboard. It is handy when a schema requires a UUID but you deliberately want to express "none yet" — for instance as a default value or a placeholder in tests. It is not "generated"; it is always the same constant.

---

More on each version and option is in the [manual](https://www.jpkc.com/db/en/tools/uuid/manual/), strategy and pitfalls in the [tips & tricks](https://www.jpkc.com/db/en/tools/uuid/tips/). Jump straight in with the [tool](https://www.jpkc.com/tools/uuid/).

