1---
2layout: "language"
3page_title: "uuidv5 - Functions - Configuration Language"
4sidebar_current: "docs-funcs-crypto-uuidv5"
5description: |-
6  The uuidv5 function generates a uuid v5 string representation of the value in the specified namespace.
7---
8
9# `uuidv5` Function
10
11`uuidv5` generates a _name-based_ UUID, as described in
12[RFC 4122 section 4.3](https://tools.ietf.org/html/rfc4122#section-4.3),
13also known as a "version 5" UUID.
14
15```
16uuidv5(namespace, name)
17```
18
19Unlike the pseudo-random UUIDs generated by
20[`uuid`](./uuid.html), name-based UUIDs derive from namespace and an name,
21producing the same UUID value every time if the namespace and name are
22unchanged.
23
24Name-based UUID namespaces are themselves UUIDs, but for readability this
25function accepts some keywords as aliases for the namespaces that were
26assigned by RFC 4122:
27
28| Keyword | Namespace ID | Name format |
29| ------- | ------------ | ----------- |
30| `"dns"` | `6ba7b810-9dad-11d1-80b4-00c04fd430c8` | A fully-qualified DNS domain name. |
31| `"url"` | `6ba7b811-9dad-11d1-80b4-00c04fd430c8` | Any valid URL as defined in [RFC 3986](https://tools.ietf.org/html/rfc3986). |
32| `"oid"` | `6ba7b812-9dad-11d1-80b4-00c04fd430c8` | An [ISO/IEC object identifier](https://oidref.com/) |
33| `"x500"` | `6ba7b814-9dad-11d1-80b4-00c04fd430c8` | [X.500 Distinguished Name](https://tools.ietf.org/html/rfc1779) |
34
35To use any other namespace not included in the above table, pass its assigned
36namespace ID directly in the first argument in the usual UUID string format.
37
38## Examples
39
40Use the namespace keywords where possible, to make the intent more obvious to
41a future reader:
42
43```
44> uuidv5("dns", "www.terraform.io")
45a5008fae-b28c-5ba5-96cd-82b4c53552d6
46
47> uuidv5("url", "https://www.terraform.io/")
489db6f67c-dd95-5ea0-aa5b-e70e5c5f7cf5
49
50> uuidv5("oid", "1.3.6.1.4")
51af9d40a5-7a36-5c07-b23a-851cd99fbfa5
52
53> uuidv5("x500", "CN=Example,C=GB")
5484e09961-4aa4-57f8-95b7-03edb1073253
55```
56
57The namespace keywords treated as equivalent to their corresponding namespace
58UUIDs, and in some special cases it may be more appropriate to use the
59UUID form:
60
61```
62> uuidv5("6ba7b810-9dad-11d1-80b4-00c04fd430c8", "www.terraform.io")
63a5008fae-b28c-5ba5-96cd-82b4c53552d6
64```
65
66If you wish to use a namespace defined outside of RFC 4122, using the namespace
67UUID is required because no corresponding keyword is available:
68
69```
70> uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
71ede1a974-df7e-5f17-84b9-76208818b2c8
72```
73
74When using raw UUID namespaces, consider including a comment alongside the
75expression that indicates which namespace this represents in a
76human-significant manner, such as by reference to the standard that
77defined it.
78
79## Related Functions
80
81* [`uuid`](./uuid.html), which generates pseudorandom UUIDs.
82