UUID Tools
App · Utilities · 3 actions
Make and read the identifiers that keep records from colliding, with UUID Tools. Get one unique ID or a batch of a hundred, as a plain random ID, one that sorts by when it was made so it works as a database key, or one that carries its own timestamp. Build a repeatable ID from a name - the same customer, domain or order number always gives the same ID, from any workflow, with no lookup table to keep - which is how two systems that share no IDs can still agree on one. And read an ID back to see which kind it is and, when it carries one, the moment it was made. Every ID is a standard UUID. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Generate a repeatable ID | Turn a name into an ID that comes out exactly the same every time. |
| Generate unique IDs | Get an identifier nothing else will ever share - one, or up to a hundred in a single step. |
| Inspect an ID | Read an ID back and find out what it is: which kind, and - when it is a kind that carries one - the exact moment it was made and the machine that made it. |
Generate a repeatable ID
Turn a name into an ID that comes out exactly the same every time. Give it a web address, a domain, an email address or an order number and you get one ID for that thing - from any workflow, on any day, with no lookup table to keep. That is what makes it the way to line up records across two systems that have no ID in common: both sides work it out from the same name and land on the same ID. No API key required.
Inputs
- Name
nametextRequired - The text the ID is built from. Use whatever identifies the thing: a web address, a domain, an email address, an order number. Any characters are fine, including slashes and spaces. The same name always gives the same ID, so keep it exact - 'Acme' and 'acme' are two different names.
- Kind of name
namespacetextRequired - Names of different kinds are kept apart, so the domain 'acme.com' and the web address 'acme.com' get different IDs. Pick the one that fits, and use the same one every time you build an ID for this thing.One of:
ns:URL(A web address),ns:DNS(A domain name),ns:OID(An object identifier (OID)),ns:X500(An X.500 directory name),custom(Something else - I have my own namespace ID). Default:ns:URL. - Your namespace ID
namespace_idtext - Only needed when you chose 'Something else' above. The namespace ID the other system uses, so the IDs you build here come out identical to theirs.
- Version
versiontext - Version 5 is the one to use. Choose version 3 only when you have to match IDs a system already made that way.One of:
v5(Version 5 - the standard choice),v3(Version 3 - only to match a system that already uses it). Default:v5.
Outputs
idtext- The ID, in the standard lower-case hyphenated form. This is the value to store and to pass on.
nametext- The name this ID was built from, exactly as it was sent.
namespacetext- The namespace it was built in, either one of the four standard names or the ID you supplied.
versionnumber- Which version was used: 5 or 3.
Example output
{
"id": "4f9c6a1b-0d52-5a37-b8e4-77c1f0a6d925",
"name": "https://acme.example.com/orders/1042",
"namespace": "ns:URL",
"version": 5
}Generate unique IDs
Get an identifier nothing else will ever share - one, or up to a hundred in a single step. It can be plainly random, sortable so newer IDs file after older ones in a database, or time-based so the moment it was made can be read back out of it. Every one is a standard UUID, so anything that takes a UUID or a GUID will take these. No API key required.
Inputs
- Kind of ID
id_kindtextRequired - What the ID should be like. Random suits almost everything. Sortable is worth it when the IDs will be database keys and you want newer rows to file after older ones; time-based is for when you want to read the creation time back out of the ID later.One of:
random(Random - the usual choice (version 4)),sortable(Sortable - newer IDs sort after older ones (timestamp-first)),time_based(Time-based - carries the time it was made (version 1)). Default:random. - How many
countnumber - How many IDs to make at once, up to a hundred. Ask for the whole batch here rather than running the step in a loop: it is one request instead of a hundred.From 1 to 100. Default:
1.
Outputs
countnumber- How many IDs came back.
idtext- The ID, ready to use. When you asked for more than one, this is the first of them.
idslist- Every ID that was made, in the order they came back. Loop over this when you asked for a batch.
Example output
{
"count": 1,
"id": "9f1c2a5e-7b3d-4e8a-95c6-2d0f4b8e1a73",
"ids": [
"9f1c2a5e-7b3d-4e8a-95c6-2d0f4b8e1a73"
]
}Inspect an ID
Read an ID back and find out what it is: which kind, and - when it is a kind that carries one - the exact moment it was made and the machine that made it. The step fails if the value is not an ID at all, which makes it the way to check that something arriving from a form or another system really is one before the rest of the workflow leans on it. No API key required.
Inputs
- ID
idtextRequired - The ID to read. Write it however the system that gave it to you did - curly braces, capitals, a 'urn:uuid:' prefix or no hyphens at all are all understood.
Outputs
created_attext- When the ID was made, as an ISO 8601 timestamp in UTC. Only a time-based (version 1) ID carries this; for every other kind it is empty.
idtext- The ID in its standard lower-case hyphenated form, whatever spelling went in. This is the one to store, so two systems writing the same ID differently still match.
machine_addresstext- The network address of the machine that made it, e.g. '02:42:ac:12:00:02'. Only a time-based (version 1) ID carries this; for every other kind it is empty.
numbertext- The same ID written as one very large number, which some databases store instead of the hyphenated text. It stays text here because the number is bigger than a spreadsheet or a browser can hold without rounding it.
varianttext- Which ID layout it follows. Almost every ID in use says 'DCE 1.1, ISO/IEC 11578:1996'; anything else points at an ID built by hand or by an older Microsoft tool.
versionnumber- Which version the ID is: 4 for random, 1 for time-based, 5 or 3 for repeatable, 0 for the all-zeroes placeholder.
version_nametext- The same thing in words, e.g. 'Version 4 - random'. This is the field to show a person.
Example output
{
"created_at": "2019-12-05T04:49:57.961296Z",
"id": "b01eb720-171a-11ea-b949-73c91bba743d",
"machine_address": "73:c9:1b:ba:74:3d",
"number": "234103610387309579079392911688732406845",
"variant": "DCE 1.1, ISO/IEC 11578:1996",
"version": 1,
"version_name": "Version 1 - made from the time and the machine that made it"
}