<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-davis-uuidrev-alt-uuid-encoding-methods-00" category="std" consensus="true" submissionType="IETF" updates="9562" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="alt-uuid-encoding">Alternate UUID Encoding Methods</title>

    <author initials="K. R." surname="Davis" fullname="Kyzer R. Davis">
      <organization>Cisco Systems</organization>
      <address>
        <email>kydavis@cisco.com</email>
      </address>
    </author>
    <author initials="BGP." surname="Peabody" fullname="Brad G. Peabody">
      <organization></organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </author>

    <date year="2026"/>

    <area>ART</area>
    <workgroup>uuidrev</workgroup>
    <keyword>uuid</keyword> <keyword>encoding</keyword> <keyword>base02</keyword> <keyword>base10</keyword> <keyword>base16</keyword> <keyword>base32</keyword> <keyword>base36</keyword> <keyword>base52</keyword> <keyword>base58</keyword> <keyword>base62</keyword> <keyword>base64</keyword> <keyword>base85</keyword>

    <abstract>


<?line 163?>

<t>This document presents considerations and best practices for alternate Universally Unique Identifier (UUID) encoding methods observed in the industry.</t>

<t>This document updates RFC9562 to provide suggested alternate encoding methods, best practices and the various implementation considerations required for choosing the correct encoding for an application.</t>

<t>When selected correctly, these alternate UUID encodings perform better on the wire, in a database, or within various other application logics versus the unnecessarily verbose text representation from RFC9562.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://example.com/LATEST"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-davis-uuidrev-alt-uuid-encoding-methods/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Revise Universally Unique Identifier Definitions (uuidrev) Working Group mailing list (<eref target="mailto:uuidrev@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/uuidrev/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/uuidrev/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/uuid6/new-uuid-encoding-techniques-ietf-draft"/>.</t>
    </note>


  </front>

  <middle>


<?line 171?>

<section anchor="introduction"><name>Introduction</name>

<t>The original "hex-and-dash" (8-4-4-4-12) canonical format of UUIDs defined in <xref target="RFC9562"/> represents a 128-bit UUID value as a 288-bit text value.
Although this format is useful for human readability, it is verbose for storage, transmission, and application parsing.</t>

<t>Because of this, developers have long used alternate UUID encodings.
Many bespoke implementations—either within a single application or as one-off libraries—address shortcomings of the hex-and-dash form.
However, most applications, databases, and standard libraries expose UUIDs exclusively using the formats described in IETF documents.
If a feature is not specified by a well defined standard, implementers typically do not provide that feature and users do not see those capabilities.
Consequently, although alternate encodings have been used and reimplemented for many years, there is no single applicable standard and implementations are inconsistent.</t>

<t>During the revision process that produced UUIDv6, UUIDv7, and UUIDv8 for <xref target="RFC9562"/>, alternate encodings were a major topic of discussion.
The level of interest showed that a separate document focused on alternate encodings was needed.</t>

<t>This document describes the most common alternate UUID encoding methods observed in the field and discusses the advantages and disadvantages of each.
The latter half of the document presents best practices and considerations implementations should weigh when selecting, implementing, or defining new alternate UUID encodings not covered in <xref target="alt_encodings" format="title"/>.
These best practices are based on years of research, community feedback, and inspection of over 55 alternate-encoding implementations across 17 alphabets (see <xref target="examples" format="title"/>).</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<section anchor="conventions_definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

</section>
<section anchor="abbreviations"><name>Abbreviations</name>

<t>The following abbreviations are used in this document:</t>

<dl indent="14">
  <dt>UUID</dt>
  <dd>
    <t>Universally Unique Identifier <xref target="RFC9562"/></t>
  </dd>
  <dt>BaseXX</dt>
  <dd>
    <t>Base where XX references two numeric values with any leading 0 kept.
For example Base02, Base10, Base16, Base32, Base64, etc.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="alt_encodings"><name>Alternate UUID Encoding Methods</name>

<t><xref section="4" sectionFormat="comma" target="RFC9562"/> details that at its core, any given UUID is a 128 bit value which can be represented as Base02 (binary), Base10 (decimal/integer), Base16 (hex) and even a custom "hex-and-dash" string format; which is Base16 (hex) with a few extra dash characters added to create a unique UUID string format that is instantly recognizable.
Further, the section goes on to discuss other string formats that often use the Hex and Dash format or Integer format.</t>

<t>While these are the "well-known" UUID formats, a UUID is fundamentally a 128-bit value and can be represented using many BaseXX alphabets.</t>

<t>The large number of possible BaseXX alphabets, together with the considerations described in <xref target="best_practices"/>, makes it impractical to cover every alphabet variant in a single document.
Therefore, this document focuses on BaseXX alphabets that use US-ASCII (<xref target="RFC20"/>) and that are most commonly used in real-world implementations or were prototyped during the draft's preparation.</t>

<t>UUID library implementers <bcp14>SHOULD</bcp14> consider adding support for at least one alternate encoding described here and <bcp14>MAY</bcp14> support additional encodings, including ones not listed.
If you implement a BaseXX alphabet not covered in the sections below, consult the considerations in <xref target="best_practices" format="title"/>.</t>

<t>For a quick comparison of alphabets, see <xref target="alphabetTable"/>.</t>

<texttable title="Alt UUID Encoding Alphabet Comparison" anchor="alphabetTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Alphabet Order</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">0123456789ABCDEF</spanx> with dash <spanx style="verb">-</spanx> characters added</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">0123456789ABCDEF</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">ABCDEFGHIJKLMNOPQRSTUVWXYZ234567</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">0123456789ABCDEFGHIJKLMNOPQRSTUV</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">0123456789ABCDEFGHJKMNPQRSTVWXYZ</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&amp;&lt;&gt;()[]{}@%$#</spanx></c>
</texttable>

<t>Note: All UUID examples in this document are alternate encodings of <xref section="4" sectionFormat="comma" target="RFC9562"/>'s Example UUID starting from either Figure 2 (binary) or Figure 3 (integer).
Each section has a few example encodings; any UUID featured in RFC9562 can be found in the <xref target="test_vectors"/> table converted to the corresponding BaseXX alphabet encoding.</t>

<section anchor="Base32"><name>Base32</name>
<t>Base32 alphabets generally use 5 bits per character, producing a 26-character output when encoding a 128-bit UUID; padding may be present.
These alphabets include standards-based Base32 (<xref section="6" sectionFormat="comma" target="RFC4648"/>), Base32hex (<xref section="7" sectionFormat="comma" target="RFC4648"/>), Base32 for Humans <xref target="Base32human"/> (formerly known as Douglas Crockford's Base32), Z-Base-32 <xref target="ZB32"/>, and <xref target="GEOHASH"/>.</t>

<t>Base32 alphabets vary the most in character choice because implementers can be selective about which characters are included.
<xref target="best_practice_exclusions" format="title"/> and alphabet ordering (see <xref target="best_practice_sorting" format="title"/>) are important considerations and differ across implementations.</t>

<t>Base32 is often case-insensitive: lowercase letters are frequently treated the same as uppercase because the alphabet does not require distinct upper- and lower-case characters.
<xref target="best_practice_special" format="title"/> are rarely used with Base32, except for <xref target="best_practice_padding" format="title"/> or <xref target="best_practice_checksums" format="title"/> features, which can often be omitted.</t>

<t>Base32 is a strong choice when available.
Base32hex (<xref target="RFC4648"/>) and Base32 for Humans (<xref target="Base32human"/>) are recommended options for a 26-character UUID that works well for both machines and humans.
See <xref target="sampleBase32HexUUID"/> and <xref target="sampleBase32human"/> for examples.</t>

<t>Z-Base-32 <xref target="ZB32" format="title"/> makes many changes to the underlying alphabet to accommodate a specific use case and is not recommended for UUIDs.
Although <xref target="GEOHASH"/> is closer to Base32hex and excludes some characters like the Base32 for Humans alphabet, its removal of trailing zeros is an unusual behavior not used by other BaseXX alphabets and may make adoption difficult.</t>

<t>There are many other Base32 variants; consult <xref target="best_practices" format="title"/> when selecting an alphabet not listed here.</t>

<figure title="Example UUID encoded as Base32 Hex" anchor="sampleBase32HexUUID"><artwork><![CDATA[
V0EKVBJTTG8T19R502GCI7JBUO
]]></artwork></figure>

<figure title="Example UUID encoded as Base32 for Humans" anchor="sampleBase32human"><artwork><![CDATA[
Z0EMZBKXXG8X19V502GCJ7KBYR
]]></artwork></figure>

</section>
<section anchor="Base36"><name>Base36</name>
<t>Base36 alphabets are similar to Base32 but use about 5.1699 bits per character, reducing a 128-bit UUID to 25 characters.
Base36 typically uses digits <spanx style="verb">0–9</spanx> followed by uppercase <spanx style="verb">A–Z</spanx>, which affects case-sensitivity considerations (see <xref target="best_practice_sensitivity" format="title"/>).
Alphabet ordering matters: using an alphabet ordered as <spanx style="verb">A–Z0–9</spanx> would change sort order and is therefore uncommon.</t>

<t>Base36 also compresses leading null bytes (see <xref target="best_practice_compression"/>) which may be desirable to further reduce the size of the encoded UUID.</t>

<t>Base36 is reasonably available (<xref target="best_practice_availability"/>) but does not have concrete specifications outlined by a standards body.</t>

<t>See <xref target="sampleBase36"/> for an example.</t>

<figure title="Example UUID encoded as Base36" anchor="sampleBase36"><artwork><![CDATA[
EOSWZOLG3BSX0ZN8OTQ1P8OOM
]]></artwork></figure>

</section>
<section anchor="Base52"><name>Base52</name>
<t>Base52 uses the 52 alphabetic characters <spanx style="verb">A–Z</spanx> and <spanx style="verb">a–z</spanx>, producing a 23-character UUID at about 5.700 bits per character.</t>

<t>Although not widely used, Base52 has useful properties: it contains no special characters (<xref target="best_practice_special" format="title"/>) and excludes digits, avoiding issues with leading digits in some contexts.
Its ordering can be chosen to preserve desirable sort behavior (see <xref target="best_practice_sorting" format="title"/>).</t>

<t>Base52 also compresses leading null bytes (see <xref target="best_practice_compression"/>) which may be desirable to further reduce the size of the encoded UUID.</t>

<t>Base52 does not have concrete specifications outlined by a standards body, but it is reasonably easy to implement.</t>

<t>See <xref target="sampleBase52"/> for an example.</t>

<figure title="Example UUID encoded as Base52" anchor="sampleBase52"><artwork><![CDATA[
FraqvVvqUBoEOFXsPYOPwUm
]]></artwork></figure>

</section>
<section anchor="Base58"><name>Base58</name>
<t>Base58, used by <xref target="Base58btc"/> (and <xref target="Flickr"/>), is a popular alphabet and similar to Base32 for Humans in its character exclusions.
Base58 encodes a 128-bit UUID into a 22-character string (about 5.857 bits per character).
Base58 typically omits <xref target="best_practice_padding" format="title"/>, and most implementations follow the same alphabet, with the <xref target="Base58xrp"/> variant being a notable exception.</t>

<t>Base58 also compresses leading null bytes (see <xref target="best_practice_compression"/>) which may be desirable to further reduce the size of the encoded UUID.</t>

<t>Base58 <xref target="best_practice_availability" format="title"/> varies, but the format is well-known and commonly used for UUIDs in practice.</t>

<t>See <xref target="sampleBase58"/> for an example.</t>

<figure title="Example UUID encoded as Bitcoin's Base58" anchor="sampleBase58"><artwork><![CDATA[
B7wc88dU4e3NyJEj3e944DK
]]></artwork></figure>

</section>
<section anchor="Base62"><name>Base62</name>
<t>Base62 is the largest BaseXX alphabet that contains no special characters (<xref target="best_practice_special" format="title"/>).
Base62 encodes a 128-bit UUID as a 22-character string (about 5.954 bits per character).
During research the authors observed a number of libraries or discussions specifically using Base62 for UUIDs.</t>

<t><xref target="Base62ieee"/> (defined by the IEEE) is one implementation and <xref target="Base62sort"/> is a variant that preserves sort order.
Both variants use the same set of 62 characters but in a different order: <xref target="Base62ieee"/> orders the alphabet as <spanx style="verb">A–Za–z0–9</spanx> while <xref target="Base62sort"/> orders it as <spanx style="verb">0–9A–Za–z</spanx> to preserve lexicographic sort order (see <xref target="alphabetTable"/>).
Additionally, <xref target="Base62ieee"/> includes padding while <xref target="Base62sort"/> does not.</t>

<t><xref target="Base62ieee"/> also compresses leading null bytes (see <xref target="best_practice_compression"/>) which may be desirable to further reduce the size of the encoded UUID.</t>

<t>See <xref target="sampleBase62"/> for an example.</t>

<figure title="Example UUID encoded as IEEE's Base62" anchor="sampleBase62"><artwork><![CDATA[
HiLegqjbBwUc0Q8tJ3ffs6
]]></artwork></figure>

</section>
<section anchor="Base64"><name>Base64</name>
<t>Base64 alphabets require special characters (<xref target="best_practice_special" format="title"/>) to complete the 64-symbol set, so they typically do not use character exclusions.
Base64 encodes a 128-bit UUID into a 22-character string (6 bits per character), similar in length to Base58 and Base62.</t>

<t>Because symbols are involved, many other permutations exist and this document cannot cover them all; see <xref target="best_practice_usage" format="title"/> when selecting an alphabet.
The most common variants are the Base64 alphabet in <xref section="4" sectionFormat="comma" target="RFC4648"/>, Base64url in <xref section="5" sectionFormat="comma" target="RFC4648"/> and Base64sort (<xref target="Base64sort"/>) (also known as Base64lex).</t>

<t>Base64 is recommended when maximum compactness is desired without <xref target="best_practice_compression" format="title"/>.
For most use cases, Base64url (<xref section="5" sectionFormat="comma" target="RFC4648"/>) is encouraged because it is safe for URLs, filenames and <xref target="best_practice_applications" format="title"/> use cases.
When lexicographical sorting that matches binary order is critical (for example, with UUIDv6 or UUIDv7), consider <spanx style="verb">Base64sort</spanx> (<xref target="Base64sort"/>).</t>

<t>Base64 alphabets enjoy widespread availability (<xref target="best_practice_availability" format="title"/>) and are far more common than Base32 as per an analysis of RFC4648 alphabet usage in the wild <xref target="RFC4648_Usage_Report"/>.</t>

<t>See <xref target="sampleBase64"/> and <xref target="sampleBase64url"/> for examples.</t>

<figure title="Example UUID encoded using the Base64 alphabet (with padding)" anchor="sampleBase64"><artwork><![CDATA[
+B1Prn3sEdCnZQCgyR5r9g==
]]></artwork></figure>

<figure title="Example UUID encoded using the Base64 URL and Filename safe alphabet (with padding)" anchor="sampleBase64url"><artwork><![CDATA[
-B1Prn3sEdCnZQCgyR5r9g==
]]></artwork></figure>

<figure title="Example UUID encoded using the Base64 Lexicographically sortable and Filename safe alphabet (without padding)" anchor="sampleBase64sort"><artwork><![CDATA[
y0pEfbrg3S1bOF1VmGtfxV
]]></artwork></figure>

</section>
<section anchor="Base85"><name>Base85</name>
<t>Base85 encodes 4 bytes as 5 characters (about 6.409 bits per character), so a 128-bit UUID can be represented in 20 characters.
These alphabets include many special characters (<xref target="best_practice_special" format="title"/>), and provide the most compact textual representation among the alphabets discussed.
Common variants include Z85, <xref target="RFC1924"/> Base85, and ASCII85.</t>

<t>Some Base85 variants include compression techniques for certain byte sequences (see <xref target="best_practice_compression" format="title"/>).
Those techniques are not universal across all Base85 alphabets.</t>

<t>Z85 is the recommended Base85 variant for UUIDs when Base85 is desired.</t>

<t>See <xref target="sampleBase85"/> for an example.</t>

<figure title="Example UUID encoded as Base85 using Z85 alphabet" anchor="sampleBase85"><artwork><![CDATA[
{-iekEE4M)R!2>3:Stl>
]]></artwork></figure>

</section>
</section>
<section anchor="best_practices"><name>UUID Encoding Best Practices</name>

<t>There are several factors to consider when choosing an encoding for a UUID.
Requirements that matter for one application may be irrelevant for another; the authors have grouped the most important considerations into best-practice categories in the sections that follow.</t>

<t>Each section focuses on UUID-specific concerns, but many of the topics generalize to selecting alternate encodings for other data.</t>

<section anchor="best_practice_usage"><name>Usage</name>

<t>Understanding how a UUID will be used is the most important step when choosing an alternate encoding.
That analysis affects many of the considerations that follow.</t>

<t>For example, a UUID used as a logging prefix should be compact to reduce log size, while a UUID that must be read or spoken by humans should avoid characters that are easily confused.
Shorter encodings with character exclusions are preferable when values are recited by phone or written by hand to reduce transcription errors.</t>

<t>Datastores (see <xref target="RFC9562"/>) care about case sensitivity, alphabet ordering, and encoded length because these factors affect sorting, storage, and performance at scale.
UUIDs transmitted between machines benefit from extremely compact encodings to reduce bytes on the wire and improve behavior on limited-MTU or high-latency networks.</t>

<t>For resource-constrained devices such as IoT endpoints, prefer encodings that are computationally inexpensive to encode and decode.</t>

<t>The general statement by the authors is as follows: there is no single correct choice to cover every scenario.</t>

</section>
<section anchor="best_practice_length"><name>Maximum Character Length</name>

<t>The number of characters/symbols in a given encoding alphabet is directly correlated to the size of the alternate UUID encoding output.</t>

<t>As a starting point the encodings defined by RFC9562 are Binary, Integer, and Hex.
Base02 (Binary) version of a UUID is 128 characters in length consisting of 0s and 1s.
The Base10 (decimal/integer) version of a UUID is 39 characters consisting of characters 0 through 9 while the Base16 (Hex) version of a UUID shortens this to 32 characters by using characters 0 through 9 and A through F.</t>

<t>Base32 libraries tend to produce a UUID output of 26 characters in length and base64 drops the output UUID to 22 characters.</t>

<t>With this trend one may be tempted to simply pick the highest BaseXX encoding available and get the smallest encoding output possible however as the output encoding decreases, the base alphabet increases.
At a specific point both numeric values, upper and lowercase values may be present and any number of unique symbols can be present in the base alphabet.
The addition and ordering of these can have rippling effects that one must properly consider.
Further, some of these alphabets require unique math to properly apply to the fixed-length 128 bit UUID which may increase computational complexity in unfavorable ways along with padding to output a similarly fixed-length value.</t>

<t>Simply picking the biggest base alphabet to get the smallest encoding only works if the only consideration an implementation cares about is the actual size of the output UUID.</t>

<t>To glean the maximum size of a given BaseXX encoding with a 128-bit UUID, convert the binary form of UUID MAX from <xref section="5.10" sectionFormat="comma" target="RFC9562"/>.</t>

<t><xref target="lengthTable"/> details the maximum length of various BaseXX Encoding methods with UUID MAX, without padding present.</t>

<texttable title="Alt UUID Encoding Length Comparison" anchor="lengthTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Maximum Character Length</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>36</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>32</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>26</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>26</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>26</c>
      <c>Base36</c>
      <c>---</c>
      <c>25</c>
      <c>Base52</c>
      <c>---</c>
      <c>23</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>22</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>22</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>22</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>22</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>22</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>22</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>20</c>
</texttable>

</section>
<section anchor="best_practice_padding"><name>Padding Characters</name>

<t>Padding characters go hand in hand with the previous section involving the maximum character length of an output alternate UUID encoding.</t>

<t>The most common padding character is the equal sign (=) however it could theoretically be any character possible.
It is recommended to use the equal sign since it is the most well-known padding character among the various BaseXX encodings.</t>

<t>Further, this character is almost always in the least significant, right-most section of a given alternate UUID encoding.
The padding <bcp14>SHOULD</bcp14> stay in this position and moving the character can have ramifications for sorting.</t>

<t>For example, Base64sort (<xref target="Base64sort"/>) allows for either the equal sign (=) or tilde (~) as a padding character, but only the tilde is valid for sorting because the equal sign is lexicographically less than all other characters in the alphabet.</t>

<t>Since UUIDs defined by <xref target="RFC9562"/> are always 128 bits, padding <bcp14>MAY</bcp14> be omitted and the resulting output will always be the same length.</t>

<t><xref target="paddingTable"/> compares padding usage among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Padding Comparison" anchor="paddingTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Padding</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>N</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (=)</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (=)</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>N</c>
      <c>Base36</c>
      <c>---</c>
      <c>N</c>
      <c>Base52</c>
      <c>---</c>
      <c>N</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>Y</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (=)</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (=)</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>Y (= or ~)</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>N</c>
</texttable>

</section>
<section anchor="best_practice_checksums"><name>Checksum Characters</name>

<t>Some newer BaseXX encodings include checksum characters that are used to ensure the input/output encoding and decoding is working as expected.</t>

<t>The actual character and algorithm used vary among BaseXX implementations.</t>

<t>Including checksums increases both the maximum size of the output encoding and the computation requirements for encoding/decoding alternate UUID formats.</t>

<t>For alternate UUIDs transmitted among two machines it may be beneficial to include a checksum character to validate the given UUID has not been modified during transport before using it for various operations thus increasing the resiliency of the alternate UUID generation and parsing process.</t>

<t>For applications that simply care about generating UUIDs but do not need to parse, checksums <bcp14>MAY</bcp14> be omitted entirely.</t>

<t><xref target="checksumTable"/> compares checksum usage among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Checksum Comparison" anchor="checksumTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Checksums</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>N</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>Y (*,~,$,=,U,u)</c>
      <c>Base36</c>
      <c>---</c>
      <c>N</c>
      <c>Base52</c>
      <c>---</c>
      <c>N</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>Y (SHA256-based)</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>N</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>N</c>
</texttable>

</section>
<section anchor="best_practice_special"><name>Special Characters</name>

<t>After all of the alpha-numeric characters are used a BaseXX alphabet must resort to using special characters such as but not limited to underscore (_), hyphen (-), plus (+), forward slash (/), dollar sign ($), etc.
This usually occurs around 62 characters (ten digits 0-9, 26 lowercase English characters, 26 uppercase English characters) but may happen with earlier BaseXX alphabets when specific characters are excluded.</t>

<t>The inclusion of these characters decrease the overall size of the encoded UUID but have implications in regards to not just sorting and readability but often application usage.
For example Base64 as defined by <xref target="RFC4648"/> has two alphabets which change the special characters to ensure safe usage with URLs and Filenames.</t>

<t>Another example is the ability to double-click a UUID and copy the value.
When special characters are present the text highlight starts and stops between these characters.
In such a scenario, if this is important one should implement a BaseXX Alphabet with no such characters.</t>

<t>When evaluating a baseXX encoding, care must be taken to ensure the special characters are compatible with the desired use case.</t>

<t><xref target="specialTable"/> compares special character inclusions among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Special Character Comparison" anchor="specialTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Special Characters</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>Y (dash)</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>N</c>
      <c>Base36</c>
      <c>---</c>
      <c>N</c>
      <c>Base52</c>
      <c>---</c>
      <c>N</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (plus, forward-slash)</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y (dash, underscore)</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>Y (dash, underscore)</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>Y (numerous, see <xref target="alphabetTable"/>)</c>
</texttable>

</section>
<section anchor="best_practice_exclusions"><name>Character Exclusions</name>

<t>Newer BaseXX alphabets may exclude characters, retaining only one character from each group of visually similar characters.</t>

<t>This often occurs when multiple characters are similar in shape, which may lead to issues when humans are required to read the characters aloud or manually transpose the characters by hand.
Some characters may be excluded for other non-obvious reasons like avoiding potential vulgar words or other application-specific issues.</t>

<t>For example it may be advantageous to remove 0 as a possible option to eliminate the possibility of leading 0s in the output data which may lead to problems in specific use cases where leading 0s are not permitted or may be inadvertently removed by the application.</t>

<t>Finally, in some smaller BaseXX alphabets it is possible to exclude characters because they are not required to fill out the space.
The notable example is Base32hex defined by <xref section="7" sectionFormat="comma" target="RFC4648"/> which only uses A through V because the remaining slots are filled by numeric 0-9.</t>

<t>The following character groupings illustrate some of the problematic characters that are similarly shaped.</t>

<figure><artwork><![CDATA[
- 0, O, o
- 1, I, i, L, l
- 2, Z, z
- 5, S, s
- V, v, U, u
]]></artwork></figure>

<t>Unfortunately there is no consistent method for which character is omitted or removed.
Some BaseXX alphabets may remove the numeric characters while others may remove one or both of the English characters, often replacing them with symbols in larger BaseXX alphabets to fill the gaps.</t>

<t>Implementations should vet BaseXX alphabets with character exclusions thoroughly to ensure any possible inclusion of symbols does not cause problems while also verifying that sorting is not impacted if sorting is a requirement.</t>

<t><xref target="exclusionTable"/> compares character exclusions among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Character Exclusion Comparison" anchor="exclusionTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Character Exclusions</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>N</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>Y (Ii,Ll,Oo,Uu)</c>
      <c>Base36</c>
      <c>---</c>
      <c>N</c>
      <c>Base52</c>
      <c>---</c>
      <c>N</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>Y (0,I,O,l)</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>N</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>N</c>
</texttable>

</section>
<section anchor="best_practice_sensitivity"><name>Case Sensitivity</name>

<t>Case sensitivity becomes important when the alphabet includes more than 32 characters.
For alphabets at or below Base32 (for example, Base16), uppercase and lowercase characters are often treated interchangeably; for larger alphabets, uppercase and lowercase letters represent distinct values.</t>

<t>In most scenarios, uppercase letters are ordered before lowercase letters.
This ordering directly impacts sorting because many applications sort uppercase characters before lowercase characters.
Sorting is further covered in <xref target="best_practice_sorting" format="title"/>.</t>

<t>The BaseXX alphabet used also changes comparison logic: "aBc" does not necessarily equal "AbC" in all encodings.</t>

<t><xref target="sensitivityTable"/> compares case sensitivity among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Case Sensitivity Comparison" anchor="sensitivityTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Case Sensitive</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>N</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>N</c>
      <c>Base36</c>
      <c>---</c>
      <c>N</c>
      <c>Base52</c>
      <c>---</c>
      <c>Y</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>Y</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>Y</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>Y</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>Y</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>Y</c>
</texttable>

</section>
<section anchor="best_practice_sorting"><name>Sorting and Ordering</name>

<t>Lexicographical sorting of UUIDs is a very important factor to many applications and the ordering of the BaseXX alphabet directly impacts the sorting of the encoded UUID output such as those created by UUIDv6 and UUIDv7 where lexicographically sortable UUIDs are a key feature of the underlying algorithm.</t>

<t>The BaseXX alphabets generally consist of two or more of the following 4 components with optional omissions as defined by <xref target="best_practice_exclusions"/>:</t>

<figure><artwork><![CDATA[
1. Numeric Characters: 0-9
2. Uppercase Character: A-Z
3. Lowercase Characters: a-z
4. Symbols: underscore (_), hyphen (-), plus (+), forward slash (/), dollar sign ($), etc.
]]></artwork></figure>

<t>The ordering of these is traditionally Numeric, Uppercase, Lowercase and Symbols.
However for ordering purposes, some symbols may be placed at a different position to adhere to their position found in US-ASCII (<xref target="RFC20"/>).</t>

<t>A common sorting example is a symbol like the dash (-) character may sort before numbers while other special characters such as an underscore (_) will be sorted after the uppercase characters but before the lowercase characters if sorted via their ASCII values.</t>

<t>If an implementation would like to ensure the sort order of the encoded value remains the same as the Base02 (binary) or Base10 (decimal) value one should scrutinize the position of the underlying BaseXX alphabets, their ordering and the included symbols.</t>

<t><xref target="alphabetTrend"/> illustrate the ordering trends for some common BaseXX Alphabets that adhere to the US-ASCII character set and their ordering of the various components.</t>

<figure title="Alphabet Ordering Comparison" anchor="alphabetTrend"><artwork><![CDATA[
- Base10:      0123456789
- Base32hex:   0123456789ABCDEFGHIJKLMNOPQRSTUV
- Base36:      0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
- Base62sort:  0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
- Base64sort: -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
]]></artwork></figure>

<t><xref target="sortTable"/> compares binary sorting among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Sorting Comparison" anchor="sortTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Sorts the Same as Binary</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>Y</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>Y</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>Y</c>
      <c>Base36</c>
      <c>---</c>
      <c>Y</c>
      <c>Base52</c>
      <c>---</c>
      <c>Y</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>Y</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>N</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>Y</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>N</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>Y</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>N</c>
</texttable>

</section>
<section anchor="best_practice_compression"><name>Compressing Characters</name>

<t>Some BaseXX alphabets may use varying techniques for compressing null bytes (0x00), whitespace, or long runs of the continuous characters which can sometimes yield values smaller than what is cited in <xref target="best_practice_length"/>.</t>

<t><xref target="Base36" format="title"/>, <xref target="Base52" format="title"/>, <xref target="Base58" format="title"/>, and <xref target="Base62ieee" format="title"/> will trim leading zero characters before attempting to encode the data.</t>

<t><xref target="Base85" format="title"/> alphabets may employ a technique to compress a continuous four byte sequence of ASCII Space characters as the character lowercase y.</t>

<t><xref target="Base85" format="title"/> alphabets may also compress a continuous four byte sequence of ASCII Zero characters as the character lowercase z.</t>

<t>The leading zero compression technique can be observed in <xref target="test_vectors_nil_uuid"/> using NIL UUID input to illustrate the output featuring a much smaller value than the outputs found in other test vectors.</t>

<t>This variability may be desirable to produce even smaller UUIDs however this could also prove a problem if an application expects a UUID of a specific fixed-length value found in <xref target="best_practice_length"/>.</t>

</section>
<section anchor="best_practice_availability"><name>Encoding Availability</name>

<t>The BaseXX alphabet encoding availability may be the second greatest hurdle implementations navigate as they chose a viable alternate encoding for UUID.</t>

<t>For example, traditional Base64url safe sees far more standard implementations than Base32hex as per <xref target="RFC4648_Usage_Report"/> while even fewer have implemented Base62 or Base36 variants.</t>

<t>The ability to utilize a given encoding or provide a customized alphabet may be a limiting factor in implementations.
In this scenario implementors will need to write their own, leverage third-party libraries or select a viable alternative.</t>

<t>This is being addressed in some ways by standardizing documents such as <xref target="Base32human"/> or <xref target="Base64sort"/> but there are still many BaseXX alphabets that do not have concrete specifications outlined by a standards body.
Further, it takes time for a languages and applications to implement and adopt these standards and for the standards to be widely adopted by the community.</t>

</section>
<section anchor="best_practice_computation"><name>Computation</name>

<t>The various base encodings have more or less computational requirements based on the size of the alphabet, the total number of bits encoded per character, if checksums are involved, and if floating point math is required (e.g radix-xx computations).</t>

<t>For reference, Base02 uses 1 bit per character, Base10 uses about 3.322 bits per character, Base16 uses 4 bits per character, Base32 uses 5 bits, and Base64 uses 6 bits.
While non–power-of-two alphabets like Base36, Base58, or Base62 use approximately 5.169, 5.857, and 5.954 bits per character respectively, the computation is log<sub>2</sub>(XX) where XX is the alphabet length.</t>

<t><xref target="bitsTable"/> compares bits per character among the BaseXX encoding methods in this document.</t>

<texttable title="Alt UUID Encoding Bits Comparison" anchor="bitsTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Bits per Character</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>4.000</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>4.000</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>5.000</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>5.000</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>5.000</c>
      <c>Base36</c>
      <c>---</c>
      <c>5.169</c>
      <c>Base52</c>
      <c>---</c>
      <c>5.700</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>5.857</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>5.954</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>5.954</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>6.000</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>6.000</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>6.000</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>6.409</c>
</texttable>

</section>
<section anchor="best_practice_applications"><name>Application Specific</name>

<t>Some applications have very specific restrictions which may influence the alternate UUID encoding selection.
This section features a limited list compiling some known restrictions that implementations may consider while working with alternate UUID encodings.</t>

<section anchor="best_practice_uri_url_urn"><name>URI, URL, URN</name>

<t>Uniform Resource Identifiers (URIs) have a specific list of reserved characters defined by <xref section="2.2" sectionFormat="comma" target="RFC3986"/> which require percent encoding to be used.</t>

<t>It is advisable to avoid BaseXX alphabets that include these symbols.</t>

</section>
<section anchor="best_practice_dns"><name>DNS Record</name>

<t>Domain Name Systems (DNS) are case insensitive with the period or dot character (.) being a reserved symbol. <xref section="2" sectionFormat="comma" target="RFC9499"/></t>

<t>Thus BaseXX alphabets that utilize this character or use upper and lowercase values as defined by <xref target="best_practice_sensitivity" format="title"/> should be avoided.</t>

</section>
<section anchor="best_practice_markup"><name>XML, HTML, CSS</name>

<t>Extensible Markup Language (<xref target="XML"/>) namespaces cannot start with a leading numeric character.</t>

<t>While older versions of Hypertext Markup Language (<xref target="HTML"/>) had restrictions on element identifiers starting with a leading digit, HTML5 does not have any such restrictions.
The same goes for Cascading Style Sheet (<xref target="CSS"/>) selectors identifiers where older versions would have issues when identifiers start with digits.</t>

<t>Thus for XML, HTML, and CSS it is advantageous to use some advanced methods such as:</t>

<t><list style="symbols" spacing="compact">
  <t>Leveraging the alternate UUID encoding technique defined via <xref target="NCNAME"/> (UUID-NCName-32, UUID-NCName-58 or UUID-NCName-64) to ensure that the first digit is always an uppercase alphabet character.</t>
  <t>An alternative algorithm to the NCNAME method is to prefix a value like <spanx style="verb">b0100</spanx> or <spanx style="verb">b10</spanx> as seen in <xref target="Base62id"/> or <xref target="Base64uuid"/> to ensure the first character is always a letter.</t>
  <t>Utilize <xref target="Base52"/> which ensures the output UUID does not start with a special character or digit.</t>
  <t>Simply prefix the first non-digit/non-special character in the given alphabet.
For example, if uppercase A is available, prefix this character to satisfy the constraints.</t>
</list></t>

</section>
<section anchor="best_practice_database_keys"><name>Database Keys</name>

<t>Databases often have specific requirements for keys such as case sensitivity, sorting, and maximum length.</t>

<t>When using alternate UUID encodings as database keys, it is important to consider these requirements and select an encoding that meets them.</t>

<t>Database implementors should consider <xref target="Base62id"/> or <xref target="Base64uuid"/> when using alternate UUID encodings as database keys to ensure the first character is an uppercase alphabet character and the output is compact.</t>

<t>Base62id is preferred over Base64uuid due to the lack of special characters in the alphabet which can cause issues with sorting and other database operations.</t>

<t>It should also be noted that Base64uuid differs from Base64sort in that the hyphen character (-) in the first position of the alphabet is replaced with a dollar sign ($) as seen in <xref target="base64sortuuid"/>.</t>

<figure title="Comparison of Base64sort and Base64uuid Alphabets" anchor="base64sortuuid"><artwork><![CDATA[
Base64sort: -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
Base64uuid: $0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
]]></artwork></figure>

</section>
</section>
</section>
<section anchor="parsing"><name>Parsing</name>

<t>This document focuses on generating UUIDs via alternate formats rather than parsing UUIDs of alternate encoding formats.
The generic default for any existing <spanx style="verb">uuid_parse(uuid)</spanx> function <bcp14>SHOULD</bcp14> remain that of <xref section="4" sectionFormat="comma" target="RFC9562"/> hex-and-dash string format.</t>

<t>Implementors <bcp14>MAY</bcp14> provide parse functionality to parse UUIDs of alternate formats such as <spanx style="verb">uuid_parse(uuid, encoding="base64url")</spanx>.
The distribution (and naming) of the encoding algorithm among disparate systems is outside of the scope of this document.</t>

<t>In practice this is seldom an issue because most implementations that need to parse UUIDs are aware of the encoding format used by their peers.
For example, the sender and receiver of a Base64url-encoded UUID are often within the same application boundary.
It is uncommon for two different systems to exchange UUIDs in a way that requires the receiver to parse an alternate-format UUID back into binary; typically the receiver treats the received UUID as an opaque string.</t>

</section>
<section anchor="recommendations"><name>Recommendations</name>

<t><xref target="recommendationTable"/> below provides an at-a-glance set of recommendations for each BaseXX alphabet described in this document for new implementations looking to introduce alternate encodings with UUID.</t>

<t>While some rows state "Not Recommended", if a library is currently providing this alternate encoding; they may continue to do so without deprecating, removing or otherwise undoing existing functionality.</t>

<texttable title="General Guidance for Alternate UUID Encoding Recommendations" anchor="recommendationTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Recommendation</ttcol>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>Not Recommended with UUID. Leverage Base32hex or Base32 for Humans.</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>Recommended when sorting is required.</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>Recommended when sorting and human usage is required.</c>
      <c>Base36</c>
      <c>---</c>
      <c>Not Recommended with UUID. Leverage Base32hex or Base32 for Humans.</c>
      <c>Base52</c>
      <c>---</c>
      <c>Recommended when sorting is required, special characters/digits pose problems, and variable-length UUIDs are not a problem.</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>Recommended when sorting and human usage is required, and variable-length UUIDs are not a problem.</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>Recommended when variable-length UUIDs are not a problem.</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>Recommended when sorting is required and special characters/digits pose problems.</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>Not Recommended with UUID. Leverage Base64url or Base64sort.</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>Recommended for most use cases.</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>Recommended when sorting is required.</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>Recommended when symbols are not a concern.</c>
</texttable>

</section>
<section anchor="security_considerations"><name>Security Considerations</name>

<t>Section <xref target="best_practice_checksums" format="title"/> addresses the primary security-related concern in this document: data-integrity validation for UUIDs transmitted over the wire.</t>

<t>No additional security considerations are identified.</t>

</section>
<section anchor="iana_considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC9562">
  <front>
    <title>Universally Unique IDentifiers (UUIDs)</title>
    <author fullname="K. Davis" initials="K." surname="Davis"/>
    <author fullname="B. Peabody" initials="B." surname="Peabody"/>
    <author fullname="P. Leach" initials="P." surname="Leach"/>
    <date month="May" year="2024"/>
    <abstract>
      <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
      <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9562"/>
  <seriesInfo name="DOI" value="10.17487/RFC9562"/>
</reference>

<reference anchor="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC20">
  <front>
    <title>ASCII format for network interchange</title>
    <author fullname="V.G. Cerf" initials="V.G." surname="Cerf"/>
    <date month="October" year="1969"/>
  </front>
  <seriesInfo name="STD" value="80"/>
  <seriesInfo name="RFC" value="20"/>
  <seriesInfo name="DOI" value="10.17487/RFC0020"/>
</reference>

<reference anchor="RFC1924">
  <front>
    <title>A Compact Representation of IPv6 Addresses</title>
    <author fullname="R. Elz" initials="R." surname="Elz"/>
    <date month="April" year="1996"/>
    <abstract>
      <t>This document specifies a more compact representation of IPv6 addresses, which permits encoding in a mere 20 bytes. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="1924"/>
  <seriesInfo name="DOI" value="10.17487/RFC1924"/>
</reference>

<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>

<reference anchor="RFC9499">
  <front>
    <title>DNS Terminology</title>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
    <date month="March" year="2024"/>
    <abstract>
      <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
      <t>This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="219"/>
  <seriesInfo name="RFC" value="9499"/>
  <seriesInfo name="DOI" value="10.17487/RFC9499"/>
</reference>


<reference anchor="XML" target="https://www.w3.org/TR/2009/REC-xml-names-20091208/">
  <front>
    <title>Namespaces in XML 1.0 (Third Edition)</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="2009" month="December"/>
  </front>
</reference>
<reference anchor="HTML" target="https://html.spec.whatwg.org/">
  <front>
    <title>HTML Living Standard</title>
    <author >
      <organization>whatwg</organization>
    </author>
    <date year="2025" month="November"/>
  </front>
</reference>
<reference anchor="CSS" target="https://www.w3.org/TR/CSS2/syndata.html#value-def-identifier">
  <front>
    <title>Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="2011" month="June"/>
  </front>
</reference>
<reference anchor="NCNAME" target="https://datatracker.ietf.org/doc/draft-taylor-uuid-ncname/">
  <front>
    <title>Compact UUIDs for Constrained Grammars</title>
    <author initials="D." surname="Taylor" fullname="Dorian Taylor">
      <organization></organization>
    </author>
    <date year="2025" month="September"/>
  </front>
</reference>
<reference anchor="Base32human" target="https://github.com/douglascrockford/Base32">
  <front>
    <title>Base32 for Humans</title>
    <author initials="D." surname="Crockford" fullname="Douglas Crockford">
      <organization></organization>
    </author>
    <author initials="K." surname="Davis" fullname="Kyzer Davis">
      <organization></organization>
    </author>
    <date year="2026" month="April"/>
  </front>
</reference>
<reference anchor="ZB32" target="https://philzimmermann.com/docs/human-oriented-base-32-encoding.txt">
  <front>
    <title>human-oriented base-32 encoding</title>
    <author initials="Z." surname="O'Whielacronx" fullname="Zooko O'Whielacronx">
      <organization></organization>
    </author>
    <date year="2009" month="November"/>
  </front>
</reference>
<reference anchor="GEOHASH" target="https://github.com/vinsci/geohash/blob/master/Geohash/geohash.py">
  <front>
    <title>Geohash</title>
    <author >
      <organization>Geohash</organization>
    </author>
    <date year="2009" month="November"/>
  </front>
  <seriesInfo name="commit" value="3f0ce0b"/>
</reference>
<reference anchor="Base62ieee" target="https://ieeexplore.ieee.org/document/4737287">
  <front>
    <title>A secure, lossless, and compressed Base62 encoding</title>
    <author >
      <organization>IEEE</organization>
    </author>
    <date year="2008" month="November"/>
  </front>
</reference>
<reference anchor="Base62sort" target="https://onlinelibrary.wiley.com/doi/abs/10.1002/spe.408">
  <front>
    <title>A base62 transformation format of ISO 10646 for multilingual identifiers</title>
    <author initials="P.-C." surname="Wu" fullname="Pei-Chi Wu">
      <organization></organization>
    </author>
    <date year="2001" month="August"/>
  </front>
</reference>
<reference anchor="Base62id" target="https://github.com/sergeyprokhorenko/Base62id/">
  <front>
    <title>Base62id Encoding Specification for Binary UUIDs</title>
    <author initials="S." surname="Prokhorenko" fullname="Sergey Prokhorenko">
      <organization></organization>
    </author>
    <date year="2026" month="April"/>
  </front>
</reference>
<reference anchor="Base64sort" target="https://github.com/kyzer-davis/base64-sort-ietf-draft">
  <front>
    <title>A Sortable Base64 Alphabet</title>
    <author initials="K." surname="Davis" fullname="Kyzer Davis">
      <organization></organization>
    </author>
    <date year="2025" month="December"/>
  </front>
</reference>
<reference anchor="Base64uuid" target="https://github.com/sergeyprokhorenko/Base64UUID">
  <front>
    <title>The Base64UUID Encoding and Choice of Encoding for UUID</title>
    <author initials="S." surname="Prokhorenko" fullname="Sergey Prokhorenko">
      <organization></organization>
    </author>
    <date year="2026" month="April"/>
  </front>
</reference>
<reference anchor="Base58btc" target="https://github.com/bitcoin/bitcoin/blob/master/src/base58.cpp">
  <front>
    <title>Bitcoin Base58 Implementation</title>
    <author >
      <organization>Bitcoin</organization>
    </author>
    <date year="2008" month="November"/>
  </front>
  <seriesInfo name="commit" value="fae71d3"/>
</reference>
<reference anchor="Flickr" target="https://www.flickr.com/groups/api/discuss/72157616713786392/">
  <front>
    <title>manufacturing flic.kr style photo URLs</title>
    <author initials="" surname="Kellen" fullname="Kellen">
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
<reference anchor="Base58xrp" target="https://xrpl.org/docs/references/protocol/data-types/base58-encodings">
  <front>
    <title>base58 Encodings</title>
    <author >
      <organization>XRP Ledger</organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="Z85" target="https://rfc.zeromq.org/spec/32/">
  <front>
    <title>32/Z85</title>
    <author >
      <organization>iMatix Corporation</organization>
    </author>
    <date year="2013"/>
  </front>
</reference>
<reference anchor="RFC4648_Usage_Report" target="https://gitlab.com/julian.reschke/base-encodings-terminology/-/blob/main/classifcation.md?ref_type=heads">
  <front>
    <title>RFC4648 Alphabet Usage Report</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025" month="November"/>
  </front>
  <seriesInfo name="commit" value="de0a2760"/>
</reference>


    </references>

</references>


<?line 837?>

<section anchor="acknowledgements"><name>Acknowledgments</name>

<t>The authors gratefully acknowledge the contributions of</t>

<t><list style="symbols" spacing="compact">
  <t>Yulian Kuncheff for their work on the UUID Formatter test tool (https://uuidformattester.yuli.dev/) which was valuable in comparing various UUID encoding formats side-by-side.</t>
  <t>LiosK for early prototyping of various BaseXX Alphabets</t>
  <t>Sergey Prokhorenko for continuously ensuring we work on this document.</t>
</list></t>

<t>As well as all of those in the IETF community and on GitHub who contributed to the discussions which resulted in this document.</t>

</section>
<section anchor="changelog"><name>Changelog</name>

<t>draft-00:</t>

<t><list style="symbols" spacing="compact">
  <t>Initial Release</t>
</list></t>

</section>
<section anchor="test_vectors"><name>Test Vectors</name>

<t>The test vectors in the upcoming sections map the UUIDs found in RFC9562 Sections to their appropriate BaseXX Alphabet Encoding without padding.</t>

<t>All of the BaseXX Alphabets described in this document and others not described can be viewed at the online tool the Authors are using for prototyping and comparison: https://uuidformattester.yuli.dev/  (Source Code: https://github.com/daegalus/uuid-format-tester)</t>

<t>The NCNAME test vectors (UUID-NCName-32, UUID-NCName-58, and UUID-NCName-64) are direct copies from the appendix of <xref target="NCNAME"/>.</t>

<t>Each section also includes test vectors for <xref target="Base62id"/> and <xref target="Base64uuid"/> which are not included in the main body of the document but are included here for reference.</t>

<section anchor="generic-uuid"><name>Generic UUID</name>

<texttable title="UUID Test Vectors for RFC9562, Section 4" anchor="exampleUUID">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section 4</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">f81d4fae-7dec-11d0-a765-00a0c91e6bf6</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">f81d4fae7dec11d0a76500a0c91e6bf6</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">7AOU7LT55QI5BJ3FACQMSHTL6Y</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">V0EKVBJTTG8T19R502GCI7JBUO</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">Z0EMZBKXXG8X19V502GCJ7KBYR</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">EOSWZOLG3BSX0ZN8OTQ1P8OOM</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">FraqvVvqUBoEOFXsPYOPwUm</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">Xe22UfxT3rxcKJEAfL5373</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">HiLegqjbBwUc0Q8tJ3ffs6</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">7YBUWgZR1mKSqGyj9tVViw</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">+B1Prn3sEdCnZQCgyR5r9g</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">-B1Prn3sEdCnZQCgyR5r9g</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">y0pEfbrg3S1bOF1VmGtfxV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">{-iekEE4M)R!2&gt;3:Stl&gt;</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section 4" anchor="exampleUUIDprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">b7aou7lt55qoqoziauder427wk</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">B7wc88dU4e3NyJEj3e944DK</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">B-B1Prn3sHQdlAKDJHmv2K</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">N8JYxDHbz7rx9rGIw80uxC</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">Is6JyiUTkGo9S_$9286ajq</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_nil_uuid"><name>NIL UUID</name>

<texttable title="UUID Test Vectors for RFC9562, Section 5.9: Nil UUID" anchor="exampleUUIDvNIL">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section 5.9</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">00000000-0000-0000-0000-000000000000</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">00000000000000000000000000000000</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAAAAAAAAAAAAAAAAAAAAAAA</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">00000000000000000000000000</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">00000000000000000000000000</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">0</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">A</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">1</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">0</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">0</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAAAAAAAAAAAAAAAAAAA</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAAAAAAAAAAAAAAAAAAA</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">----------------------</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">00000000000000000000</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section 5.9: Nil UUID" anchor="exampleUUIDvNILprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">aaaaaaaaaaaaaaaaaaaaaaaaaa</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">A111111111111111______A</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">AAAAAAAAAAAAAAAAAAAAAA</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">Fa84QWiAxLXUJaHZmEVPEG</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">F$$$$$$$$$$$$$$$$$$$$$</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_max_uuid"><name>MAX UUID</name>

<texttable title="UUID Test Vectors for RFC9562, Section 5.10: MAX UUID" anchor="exampleUUIDvMAX">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section 5.10</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">77777777777777777777777774</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">VVVVVVVVVVVVVVVVVVVVVVVVVS</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">ZZZZZZZZZZZZZZZZZZZZZZZZZW</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">p777777777777777777777777p</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">GBIWTpZqojFGQPQPXtvbJAv</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">P8AQGAut7N92awznwCnjuQP</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">HxECNQWFdpvuJxIw3HPrmH</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">7n42DGM5Tflk9n8mt7Fhc7</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">/////////////////////w</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">_____________________w</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">zzzzzzzzzzzzzzzzzzzzzk</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">s8W-!s8W-!s8W-!s8W-!</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section 5.10: MAX UUID" anchor="exampleUUIDvMAXprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">p777777777777777777777777p</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">P8AQGAut7N92awznwCnjuQP</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">P____________________P</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">NNC6dn4GR1JETNQMfLl6qN</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">Izzzzzzzzzzzzzzzzzzzzz</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv1"><name>UUIDv1</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.1: UUIDv1" anchor="exampleUUIDv1">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.1</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">C232AB00-9414-11EC-B3C8-9F6BDECED846</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">C232AB00941411ECB3C89F6BDECED846</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">YIZKWAEUCQI6ZM6IT5V55TWYIY</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">O8PAM04K2G8UPCU8JTLTTJMO8O</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">R8SAP04M2G8YSCY8KXNXXKPR8R</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">BHW3F9QSZLQPYH8GTZ35HZ4UE</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">EddHArfCMSZGGUJvWdXrHHq</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">Qys2KsgsAKw9ZKupo76FCh</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">F4bpVC8trxK13yapr3UFrY</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">5uRfL2yjhnArtoQfhtK5hO</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">wjKrAJQUEeyzyJ9r3s7YRg</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">wjKrAJQUEeyzyJ9r3s7YRg</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">kY9f-8FJ3Tmnm8xfrgvNGV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">.znd(LOs.@V=F+O?P&lt;+y</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.1: UUIDv1" anchor="exampleUUIDv1prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">byizkwaeucqpmhse7nppm5wcgl</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">B6S7oX73gv2Y1iTENdXX8hL</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">BwjKrAJQUHsPIn2vezthGL</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">LUZjlZguf8iMDOiFU7pUve</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">I1Beg$_0FGvAE7bqjTnhW5</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv2"><name>UUIDv2</name>

<texttable title="UUID Test Vectors for DCE Security: UUIDv2" anchor="exampleUUIDv2">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>DCE Security UUID</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">000003e8-cbb9-21ea-b201-00045a86c8a1</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">000003e8cbb921eab20100045a86c8a1</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAH2GLXEQ6VMQBAACFVBWIUE</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">00007Q6BN4GULCG10025L1M8K4</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">00007T6BQ4GYNCG10025N1P8M4</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">5XJERAFS5KNNNG5WAM10H</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">KNcIMemTgumAjqCSfqp</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">2SMnXSegyRgxWPnMoHS</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">azPmOJmh9xNaNgM2sh</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">azPmOJmh9xNaNgM2sh</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAD6Mu5IeqyAQAEWobIoQ</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAD6Mu5IeqyAQAEWobIoQ</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">---2uBit7Tem-F-3LcQ7cF</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">000b++EF!YVh&lt;}dt87a(</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for DCE Security: UUIDv2" anchor="exampleUUIDv2prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">caaaah2glxepkeaiaarninsfbl</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">C11KtP6Y9P3rRkvh2N1e__L</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">CAAAD6Mu5HqIBAARahsihL</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">Fa84rLxnBVA2JNUzzkiHwn</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">F$$$EcmvZWuf70$$GPWgXW</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv3"><name>UUIDv3</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.2: UUIDv3" anchor="exampleUUIDv3">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.2</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">5df41881-3aed-3515-88a7-2f4a814cf09e</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">5df418813aed351588a72f4a814cf09e</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">LX2BRAJ25U2RLCFHF5FICTHQTY</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">BNQ1H09QTKQHB2575T582J7GJO</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">BQT1H09TXMTHB2575X582K7GKR</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">5K8PHACEYCDEGBDB1VWP0EAHQ</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">CKwZBXIbBzTOnGTcpOSLRtq</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">CbuPE286MB6RsDazcU7sUy</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">C1Rz9EB7xwwtaBE3hssbl8</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">2rHpz41xnmmjQ14tXiiRby</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">XfQYgTrtNRWIpy9KgUzwng</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">XfQYgTrtNRWIpy9KgUzwng</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">MUFNVIfhCGL7dmx9VJnkbV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">?1\tb3ped&gt;Lo2muJP&gt;R)</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.2: UUIDv3" anchor="exampleUUIDv3prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">dlx2braj25vivrjzpjkauz4e6i</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">D3dTNMAmevR4NFAakRDtLdI</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">DXfQYgTrtUVinL0qBTPCeI</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">IRPuPak8l8KDjbMTJxDqqE</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">GSx0X0Diop4NXbAoe0IE1T</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv4"><name>UUIDv4</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.3: UUIDv4" anchor="exampleUUIDv4">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.3</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">919108f7-52d1-4320-9bac-f847db4148a8</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">919108f752d143209bacf847db4148a8</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">SGIQR52S2FBSBG5M7BD5WQKIVA</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">I68GHTQIQ51I16TCV13TMGA8L0</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">J68GHXTJT51J16XCZ13XPGA8N0</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">8M8SCPFUGFIJ4QENJ0IG77QG8</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">DWDhSoKPZRoqkgBWaJcOckY</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">JyZVoFVQxQNmw2bsgr7D1R</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">EaqKcHGnV4iQSYo57bXn6o</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">2rHpz41xnmmjQ14tXiiRby</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">kZEI91LRQyCbrPhH20FIqA</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">kZEI91LRQyCbrPhH20FIqA</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">ZO37xpAGFm1QfEW6qo47e-</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">K=Y}zqQE&amp;OO2(xP*D!xe</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.3: UUIDv4" anchor="exampleUUIDv4prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">esgiqr52s2ezaxlhyi7nucsfij</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">E55CtqYNqva1mcmaa877eoJ</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">EkZEI91LRMgus-EfbQUioJ</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">K0oEsdooJG5kbywVjft3Au</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">HGZFYrJh4278igy3UQFJXc</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv5"><name>UUIDv5</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.4: UUIDv5" anchor="exampleUUIDv5">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.4</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">2ed6657d-e927-568b-95e1-2665a8aea6a2</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">2ed6657de927568b95e12665a8aea6a2</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">F3LGK7PJE5LIXFPBEZS2RLVGUI</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">5RB6AVF94TB8N5F14PIQHBL6K8</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">5VB6AZF94XB8Q5F14SJTHBN6M8</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">2RTO2O5WTBFMSYWZX7KHQ1Z8I</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">BFPTsrUJhwfXFHQeVflYshu</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">6nTLogGvw2vmQjtATLqvLq</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">BaXm0PEMkU5w7EKQaysNQO</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">1QNcqF4CaKvmx4AGQoiDGE</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">LtZlfeknVouV4SZlqK6mog</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">LtZlfeknVouV4SZlqK6mog</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">AhO_UTZbKciKsHO_e9uacV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">f4KPZ&gt;{GI&amp;MeK63Sii1(</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.4: UUIDv5" anchor="exampleUUIDv5prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">ff3lgk7pje5ullyjgmwuk5jvcj</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">F2K15VFLUBD326h169SNPjJ</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">FLtZlfeknaLXhJmWorqaiJ</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">H0VhGlmNXgTHGeRqD3DcUU</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">FipaKxuHSLXtMW8aLcfePX</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv6"><name>UUIDv6</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.5: UUIDv6" anchor="exampleUUIDv6">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.5</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">1EC9414C-232A-6B00-B3C8-9F6BDECED846</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">1EC9414C232A6B00B3C89F6BDECED846</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">D3EUCTBDFJVQBM6IT5V55TWYIY</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">3R4K2J1359LG1CU8JTLTTJMO8O</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">3V4M2K1359NG1CY8KXNXXKPR8R</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">1TM3WVVTP7XVNZXA2TV43IJWM</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">liRiaXmgJTfBQppyCovyGu</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">4oVbpzb8BpnTH1mg11dmWd</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">6FuGgfRpa7N6YbrlxT6FQ</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">w5k6WVHfQxDwORhbnJw5G</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">HslBTCMqawCzyJ9r3s7YRg</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">HslBTCMqawCzyJ9r3s7YRg</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">6g_0I1BePk1nm8xfrgvNGV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">9)3YwbpWEeV=F+O?P&lt;+y</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.5: UUIDv6" anchor="exampleUUIDv6prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">gd3euctbdfkyahse7nppm5wcgl</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">GrxRCnDiX4mxSq8bFQjT3_L</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">GHslBTCMqsAPIn2vezthGL</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">GWDoX3DScmUiFyjHO1pLJW</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">FTmJ4B7mdf$AE7bqjTnhW5</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv7"><name>UUIDv7</name>

<texttable title="UUID Test Vectors for RFC9562, Section A.6: UUIDv7" anchor="exampleUUIDv7">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section A.6</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">017F22E2-79B0-7CC3-98C4-DC0C0C07398F</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">017F22E279B07CC398C4DC0C0C07398F</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AF7SFYTZWB6MHGGE3QGAYBZZR4</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">05VI5OJPM1UC7664RG60O1PPHS</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">05ZJ5RKSP1YC7664VG60R1SSHW</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">36TWI214QWJ7MGSVQ83NM8WF</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">BrKaFlCsyjaiCYuzuWvtun</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">BihbxwwQ4NZZpKRH9JDCz</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">CzFyajyRd5A9oiF8QCBUD</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">2p5oQZoHTv0zeY5yG21K3</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AX8i4nmwfMOYxNwMDAc5jw</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AX8i4nmwfMOYxNwMDAc5jw</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">-MwXsbakUBDNlCkB2-RtYk</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">0E(rMD9zXlN8E+*3&lt;O!N</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section A.6: UUIDv7" anchor="exampleUUIDv7prefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">haf7sfytzwdgdrrg4bqgaoompj</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">H3RrXaX7uTM6qdwrXwpC6_J</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">HAX8i4nmwzDjE3AwMBzmPJ</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">FcxAExHzEpSVJEpfkUXQYJ</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">F0UmAXTQ0wktY3r$kB0naE</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_uuidv8"><name>UUIDv8</name>

<texttable title="UUID Test Vectors for RFC9562, Section B.1: UUIDv8" anchor="exampleUUIDv8time">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section B.1</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">2489E9AD-2EE2-8E00-8EC9-32D5F69181C0</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">2489E9AD2EE28E008EC932D5F69181C0</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">ESE6TLJO4KHABDWJGLK7NEMBYA</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">4I4UJB9ESA7013M96BAVD4C1O0</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">4J4YKB9EWA7013P96BAZD4C1R0</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">25VHD0YEN79F79OO0TV0BAE9S</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">skNtHBdXlnQCRPhYqjxSkQ</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">5WhDz2zW6g9mHu7EP9hoVq</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">BG6ufXDWs4d4Dd5uoJIAi0</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">16wkVN3MiuTu3Tvke980Yq</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">JInprS7ijgCOyTLV9pGBwA</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">JInprS7ijgCOyTLV9pGBwA</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">87bdfHvXYV1DmIAKxd50k-</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">b-g=/f5?(&gt;J(:6b{k%{w</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section B.1: UUIDv8" anchor="exampleUUIDv8timeprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">iese6tljo4lqa5sjs2x3jdaoai</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">I22HpMAy5M181AjPFG7eLXI</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">IJInprS7i4A7JMtX2kYHAI</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">Gh4ovtlXgG1ON4DKQNdPn6</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">FZXTahAi9D$7v8BhMqZN6$</spanx></c>
</texttable>

<texttable title="UUID Test Vectors for RFC9562, Section B.2: UUIDv8" anchor="exampleUUIDv8name">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>RFC9562, Section B.2</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">5c146b14-3c52-8afd-938a-375d0df1fbf6</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">5c146b143c528afd938a375d0df1fbf6</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">LQKGWFB4KKFP3E4KG5OQ34P36Y</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">BGA6M51SAA5FR4SA6TEGRSFRUO</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">BGA6P51WAA5FV4WA6XEGVWFVYR</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">5G8XXKU1AQGT02ZJGR8PA3EUU</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">CIhPGFswaUyeIiUVKFQScIW</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">CNV2iY4mKiTS1uw8RxapEH</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">CxumvfWqhqp4Kq4BkCGR1s</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">2nkclVMgXgfuAgu1a26Hri</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">XBRrFDxSiv2TijddDfH79g</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">XBRrFDxSiv2TijddDfH79g</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">M0Gf42lHXjqIXYSS2U6vxV</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">tOH@/jw}7nLzRq84E%t?</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for RFC9562, Section B.2: UUIDv8" anchor="exampleUUIDv8nameprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">ilqkgwfb4kkx5hcrxlug7d67wj</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">I3aR2J7aw1BJj4jJvfuWTXJ</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">IXBRrFDxSr9OKN10N8fv2J</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">INshC24rV2DOUHBbMGbh5y</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">GR45gJE499zOD9CpoCwUjq</spanx></c>
</texttable>

</section>
<section anchor="test_vectors_microsoft_uuid"><name>Microsoft UUID</name>

<t>The following UUID <spanx style="verb">00000013-0000-0000-c000-000000000000</spanx> is for <spanx style="verb">Microsoft.Azure.Portal</spanx> and ensures this specification also includes non IETF/DCE variants of UUIDs.</t>

<texttable title="UUID Test Vectors for Microsoft.Azure.Portal" anchor="exampleMicrosoftUUID">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Microsoft.Azure.Portal</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c><spanx style="verb">00000013-0000-0000-c000-000000000000</spanx></c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">0000001300000000C000000000000000</spanx></c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAAEYAAAAABQAAAAAAAAAAAA</spanx></c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">000004O000001G000000000000</spanx></c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c><spanx style="verb">000004R000001G000000000000</spanx></c>
      <c>Base36</c>
      <c>---</c>
      <c><spanx style="verb">41Y09GGWTDKLN13WMO74</spanx></c>
      <c>Base52</c>
      <c>---</c>
      <c><spanx style="verb">KGlWYrtEyPFBiZpPts</spanx></c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c><spanx style="verb">2anhPihXPV7NXZKLC7</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c><spanx style="verb">fjupi4ia0Gz3Pwu9y</spanx></c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c><spanx style="verb">VZkfYuYQq6ptFmkzo</spanx></c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAEwAAAADAAAAAAAAAAA</spanx></c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c><spanx style="verb">AAAAEwAAAADAAAAAAAAAAA</spanx></c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c><spanx style="verb">----3k----2-----------</spanx></c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c><spanx style="verb">0000j00000ZYjum00000</spanx></c>
</texttable>

<texttable title="UUID-NCName, Base62id, Base64uuid Test Vectors for Microsoft.Azure.Portal" anchor="exampleMicrosoftUUIDprefix">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Output</ttcol>
      <c>UUID-NCName-32</c>
      <c><spanx style="verb">aaaaaaeyaaaaaaaaaaaaaaaaam</spanx></c>
      <c>UUID-NCName-58</c>
      <c><spanx style="verb">A111Mo9hVUdmNWqcCExF__M</spanx></c>
      <c>UUID-NCName-64</c>
      <c><spanx style="verb">AAAAAEwAAAAAAAAAAAAAAM</spanx></c>
      <c><xref target="Base62id"/></c>
      <c><spanx style="verb">Fa84R2HvcuS2kQOPfUIAE4</spanx></c>
      <c><xref target="Base64uuid"/></c>
      <c><spanx style="verb">F$$$$I$$$$$B$$$$$$$$$$</spanx></c>
</texttable>

</section>
</section>
<section anchor="examples"><name>Example UUID Base Encoding Tools, Libraries, and resources</name>

<t>The following list of libraries, tools, code, packages and other resources is for illustrative and research purposes.</t>

<t>Neither the authors or IETF endorse any of these libraries or guarantee their contents safe and harmless.</t>

<t>Install, download or use this software at your own risk.</t>

<section anchor="base32-base"><name>Base32, Base</name>

<figure><artwork><![CDATA[
- https://github.com/chilts/sid
- https://www.jsdelivr.com/package/npm/uuid-encoder
- https://github.com/jetify-com/typeid
- https://docs.crunchybridge.com/api-concepts/eid
- https://hackage.haskell.org/package/ron-0.12/docs/RON-UUID.html
- https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abencl_system_uuid.htm
]]></artwork></figure>

</section>
<section anchor="base32-hex"><name>Base32, Hex</name>

<figure><artwork><![CDATA[
- https://github.com/rs/xid
]]></artwork></figure>

</section>
<section anchor="base32-crockford"><name>Base32, Crockford</name>

<figure><artwork><![CDATA[
- https://github.com/ulid/spec
- https://codeberg.org/prettyid/python
- https://ptrchm.com/posts/based-uuid/
- https://github.com/martinheidegger/uuid-b32
- https://docs.rs/fast32/latest/fast32/
- https://uuid.ramsey.dev/en/stable/rfc4122/version7.html
- https://crates.io/crates/crockford-uuid
- https://rymc.io/blog/2024/uuidv7-typeids-in-diesel/
- https://docs.rs/rusty_ulid/latest/rusty_ulid/
]]></artwork></figure>

</section>
<section anchor="base32-ncname"><name>Base32, NCNAME</name>

<figure><artwork><![CDATA[
- https://www.rubydoc.info/gems/uuid-ncname
]]></artwork></figure>

</section>
<section anchor="base36"><name>Base36</name>

<figure><artwork><![CDATA[
- https://github.com/paralleldrive/cuid2
- https://www.jsdelivr.com/package/npm/uuid-encoder
- https://duncan99.wordpress.com/2013/01/22/converting-uuid-to-base36/
- https://github.com/salieri/uuid-encoder
- https://stackoverflow.com/questions/62059588/shortening-a-guid
- https://gist.github.com/fabiolimace/508dd2dd9d32fd493b31a5f386d5d4bc
- https://classic.yarnpkg.com/en/package/base36-uuid
]]></artwork></figure>

</section>
<section anchor="base58"><name>Base58</name>

<figure><artwork><![CDATA[
- https://github.com/cbschuld/uuid-base58
- https://www.linkedin.com/pulse/advantages-using-base58-unique-identifier-databases-lucian-ivanov
- https://github.com/AlexanderMatveev/go-uuid-base58
- https://packagist.org/packages/cbschuld/php-uuid-base58
- https://classic.yarnpkg.com/en/package/uuid58
- https://blog.schochastics.net/posts/2024-08-24_short-uuids/
- https://www.jsdelivr.com/package/npm/uuid-encoder
]]></artwork></figure>

</section>
<section anchor="base62"><name>Base62</name>

<figure><artwork><![CDATA[
- https://github.com/boundary/flake
- https://github.com/segmentio/ksuid
- https://www.jsdelivr.com/package/npm/uuid-encoder
- https://grokipedia.com/page/Base62
- https://repost.aws/questions/QUPyiPyPsTTz6bnss1nQLoiQ/is-qldb-document-id-a-globally-unique-uuid
- https://hexdocs.pm/base62_uuid/readme.html
- https://github.com/lucasmichot/uuid62
]]></artwork></figure>

</section>
<section anchor="base64"><name>Base64</name>

<figure><artwork><![CDATA[
- https://github.com/elastic/elasticsearch/blob/main/server/src/main/java/org/elasticsearch/common/UUIDs.java#L23
- https://github.com/chilts/sid
- https://github.com/twitter-archive/snowflake
- https://github.com/ppearcy/elasticflake/blob/master/src/main/java/org/limberware/elasticflake/Base64.java
- https://www.mongodb.com/docs/manual/reference/method/ObjectId.createFromBase64/
- https://firebase.blog/posts/2015/02/the-2120-ways-to-ensure-unique_68
- https://www.jsdelivr.com/package/npm/uuid-encoder
- https://base64-uuid.com/
- https://rcfed.com/Utilities/Base64GUID
- https://toolslick.com/conversion/data/guid
- https://guidgenerator.com/
- https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/abencl_system_uuid.htm
]]></artwork></figure>

</section>
<section anchor="base85"><name>Base85</name>

<figure><artwork><![CDATA[
- https://stackoverflow.com/a/772984
- http://codehardblog.azurewebsites.net/encoding-uuid-based-keys-to-save-memory/
- https://gist.github.com/Higgs1/fee62d230bd87257e0b0
- https://www.npmjs.com/package/pure-uuid
- https://cjhaas.com/2013/11/12/php-base85-encode-128-bit-integer-guiduuid/
- https://webpowered.tools/textcodec/
]]></artwork></figure>

</section>
</section>


  </back>

<!-- ##markdown-source:
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
sDD1TdF+cPuEaeoocHuF6XGD3StMjwS3T5jup7nDwGV/CNw2YRotIraB2ytM
9xEwBxfglktkascJVOBVF0JT1Qgv/KMIV2nr59WPxw7hWkr5P1/JJ0gBu4Xr
4US0XbjWpEKm/aSW1nf9hxvp6mVWfWxV6ztgRAjX2s9RnyCMaHr57SVsiKRA
2uKJ4JHSdiatf1japiKOBz5Y2tbYJxbxH/45QtrW9nxefdjtN123fTKvEYPd
b7pu+3R3gttqum77PEWC2ydt59sGO48Ct1fa1svXT735y7vxVqu3W+1W314O
bkrL18CNh0rbVqHUrpcWdr5ZFKXVh76q6G+LdmsLuP2m67paabafavJ8ubhZ
X6/SVy1zdhWAdoTpqmfEy3oj2xtp06JemNn52mSY3wpun7RNRH0+YQkzafs1
6rMf3DZp+xH1mW4Dt1faWoWn2J8C/wkCi+KeyNSOlbbYa4szwz+KuD18X24X
t4fvnu3ithVFRUEQ+2zZZiUn65l6J3VT7TXbjdGdlntv7oARZctG0l8YRgS9
/B7SNkhSWFeHr0sFZS1CXKY+L2lL8VTwLuEISVsR02KpDIZsMZPKxFKpaiVW
TlcKsWItV76sVqqXhcwxTmIODqEhMITlB+XFbq+kfb5+uX0qVR8q7evcSyN3
3cs+ZrO9p+frzzmJ7wutUiOZuRXrhYdW5aFw07vr9W4a94XPOYk7hW6plcw0
ANxzt/JcuO03+/3bVqfwOSdx+eopXSu2uy937dbzVaHee0lnr14yD1UfER8s
aauyfFUyR5VG96Vef7hZPsl98+oq6N05WNK2N5Z4a42t0u2q+HK7mBv5XK0y
CUA7XNLWMoP5Y6Vgm+vbVHojzc30Q818PhBcWPhkF53Rnbh5m+gl0zbao4l9
m53cbwW3T9Ku3m7N0k37oapsPjY3RTNt5Z87n3cSfxLcNkk7fS6OYoXaTbo3
02eF9cgcL5v1zzuJ4x+6fHp3b8X/8fhL7S/3f2/97S+bILAozpk6Us4Cp7pg
TPCPImQHG/VjupKUxfB9PptYSl6fz2fZ1XCsvfrx2OUwznXzRj+fHi/F55Ta
qzblfr8wuQvM8B6HMaegK6t1rYtL5cOe1IMg9gjZu4eXN+1lvBgV1MblvVp7
yM8flsoOGFFCNlVWxj9/Tdbqy1I1P3h/6+mTp2wYRohUfnsRG6AmLl/FSPkq
HixfLytVwclYosZx1Oc4v3FaKcSGg0ExJqYUKTYQkyn0G2eyUiE3LEipI+Qr
B4fQEBjC8oPyYneQ3/hKrN/1q+3cY6NdLpUqtcfy07Vf5hzlN863c+Vmpv5w
V6kDZmL2LtUo3O42jHf5jfO9XLmdqT83GbhmqlVoRIPbJ1+z/Ztqp1TrZm+b
zWY9+1RqpJIh2+5w+XrbHF43lFlvvJiV3t4r3dG7T/MOgtsnX8VuQ+93lfGm
M14/tfSGcdXdAW6vfJU+WrP7m9mkuG5KzXFDtEKiege4sMg5EtwBfuPLXGOR
vVbeN6V2qfpkDK6NdhDkMX7jz4Db4TcWF2XVzveUWawWS98N2/lhbRu4Q/zG
g7/8pVr70/Pj5G/fZbuQl07DsxdmmuJu+erlVIwTin8UuTpEt/BEHGtrZT5V
JFWSTF3VrdHgCLlaSaVu7VbuudhKm53pciI2U8rXr8fJ1QqnnKv3a2B+HWli
qSHRfICv2Lxb6+XHknjTfPj4mKpXK30HjC2+4upwtnx5WozyyZ9/rreexv2n
MIwQifywXN1GRVyepiPlafpH7FUxeJdwhDzNyqNMqlBIxdKSIsfS2VQ2VihI
+Zg4ykiFVGY4ShaVI+QpB4fQEBjC8oPyYrdXnt71xXKndCNmH8TOXaV2VcvW
riu9q3bvc/ZqudlOXSWL7d5t+6osZvPZXrYg3uTrN5+zV8vtHoLr9Rs9Cq4P
4G7z9dvP2avZ20LrqlSpPlcuq/XyZTn1+NRKVktXfsZ7sDyt3K5eyv3rQfmj
d6/Xe8P5ffeuY3/aXq0MFq2qWMg1yrmOdSl9DB/y1kPIrjlYnlZSnY9itZxf
r1a2VK6mJ5Y10AoHgguLGNG8mn9kUmt9NntrpzJ2X1U7g+3Y7ZOn/VH7edwz
7Wbn6Xq+Kd6OHz5W+uft1U+C2yZPGw+15uP1aFKp3+Xl2br4eKNPB5+3V/+e
+l/2ID1X5F/vDHG2uGn92jkLAotilumj7VWRccT0H0WuytpaHJjSm5hdqkvz
7WP+NpUWHxklp7768dghVy/Tcq/ZKM2UZSfTrJWkaefSvpOvAzO8W65ecgp6
eFT1u+R7udeqKEEQe+Tqdae1aEnTgla4vXwbNHo368v39+oOGBFytd5dJ/vJ
S9WYZ5r9QclQktfVVC8MI0Qqv4e96qMmLl8zkfI18yPyNR28SzhCvhZTxVSy
MMrHsqKcimXSYjJWHEjD2KiQycuDTCpTkApHyFcODqEhMITlB+XFbq987dav
252s2BVr5W65nm3ky5fZp/bt9ePn8pyuc4X6Va993c6mrlO5XuUxle416qXC
3efynG4QXL9308umblK5fuUlle63AFzzc3lOhUahW2nVHuq165tMu9q8SV7X
8/l23S91Dpavl0+Xk65x23rpGO/TcflJuhneD6dBl+vB8vVm8/Jo1B7b63Zz
thIH1tjMX6Y6AWiHy9eq9H47vKrrjxm13X02svlBX88ZB4L73eXr9KV6XUzd
ddqbysBsTa7EZO36/fN5Tp8Et02+vtyn8+t5qV6bpdqj6lPu3cjklc/nOd3+
8vz9471d/df7e/F03fq3yz+tQ27CKKaZOVq+phlH/MMkECvWWH03s6IlKh/S
Wpts1Ly+GFoj9e3Vj8cO+VrNZiv2+3PzfSmlZsOZJBXyecW4Cczwbvla5RTU
GC+sWHU0aD+oIRB75Ott0qhasmHc1LPTwWb1+Day06XFDhgR8vWq/lJ7Nm8m
GTFfUMeb9EO7dtMfhmGESOX3kK8+auLyNRspX7M/Il+jynIOlq+iIudy2bwc
U4oiCNlcYRArZpVUTIRfpYKkSDlJPEK+cnAIDYEhLD8oL3Z75WstfVe/zbdu
qtm7636tVa6+dMGQfaw/+HS3g+VrtlPOlR5rxUyvXGhma6lM6xoM2bvcbWEn
uG3yNfsI4F4AXL9caCO47g0Yss1cIxrcPvkqdnr34n32qVeuNbrPTy/9/O1V
O/VS8OupB8vXcq3Vs8yHm8lq1K9dtZXHkfZsTYIb6mD5mtN7d8a4vlyJy1n7
zS717t6XdxG5+QfK17LUnyVb1cb0IbvKV2/b0sZqtrcHSPfJ11S7OXyvZSrS
7XK2zpTqbUO9rEcq5wfJ1zv7RRspU/3RWDxmui/a+21uZnzefv0kuG3ytTS5
//rQexncDtVb6+r+q1JcSMPP26+jDChhv36rX/9rQ7nNpbuqmjrIH5w9Wr5m
GEfM/lHk62iU1sbT/PxNyWL9+dt4tlpMs2/L4RHytSbeprKPtbuH8mVazE1S
uWK32Xo7Tr7WOAVJd/3JzezJMN8l9Uj5epV8nNS1WbM/7l3Vlc77Zfpy+PCw
A0aUX1idS7frxVX3rm83ngrS3XCktPphGCFS+T3kq4+auHzNRcrX3I/I12zw
LuEI+ZqqVjD3qBLDRKRYDjObfiSfiYNDaAjsB/OZLtPVh0qvfFm7eWyXfzyf
Kd3J3Io3qXS2eFdP/Xg+U/ox04DNA+CaAO6H85lSvUb66fGx18r3H5sv/ZLY
e8ykr2+ePln0qqkdFYTY+KY3Krfn803FWG7qkfrqQfI1YzwO5h+DQnmu965S
s3EqJc+e5G3g9srXXG1RH486cynfzD0PTG3dy9VCEcjD5esqO809PV6N2uvL
1X1nMtBvVtlQ/cHh8vXK0sq9SuNdWlV+i3ymT4LbJl9z469JzCxpTVO/RT5T
8Sz9vBrMn6rKcflMuaPla5ZxxNwfRb6O5bSyGNoDeTTdSJ/MZ6qb605Fv1T7
mdm6+14Y1NpvvfSRcdc6pyCr9Ol8pvrTpdFPX3aHswe1tnm7uk/N724iYqY7
5WtvdpMp52fy6Oej8plyv4d89VETl6/5SPma/xH5mgveJRwhX5OpfE0Uq2Is
XywnY/lKJR0rFiqZ2GUlif/Lp4uFYypzODiEhsAQlh+UF7v9+Uy1fLf23Ht5
KucaV/V6Nd2ul57LLy+dz1XmJLOP19n7m1Yj9VDJ53KZTj2XvE+1Wlefq8xJ
Zl9usp3bbiv1TMA9ArhOqtu9+lxlTjrXe7oWU5n2002+Ue8+tgvpZqPwFEhU
Odx+NW+lmlaxNm+SWnlefCyelvYiMo/hIPlaVieD9WrVzjRfXua3navizWUl
lI5/RPz1o7aR3jYdOVsqGmqt0K6UHy4PBRfhH55njfaLcdVbJj+U5+ymLqZu
Qx0vjshn6hfUjD5bjRr3z+vmqnFZGmbfPl+Z80lwW/OZGqu+NZCmYBE1tcq0
LMY69vPnK3OS1VOzcVn86GvNQvUv/5b+2/2fQrUaUUwzf7R8zTGOmP+jyNeJ
NMpbo439sZLHsmmOM4P3sWQYs/kR9utVumP2pX5+0Wvk3uWV2V/NK7mvx9mv
V5yCPi7fqunSqlH+mLWOtF9rw3Wpur76qM67jzfV+Wj60G8/74IRJV+TD7NS
v9dOrqb2c9r8eVpO6lKEmyhEKr+HfPVRE5evhUj5Wvi8fC3/WD2OmCkUq8XS
ZUysgpAtVMF+LYANCnR2ma3liqlCqnJMnwkODqEhMITlB+XFbq98rXarud7d
zX3m9qpUvny6qd/d5pvVRvn5c/HXzHXm4aZcrHZL+WQq3SjmyqXHy0wldf+5
+GvmJvN8C+CeCLgWgntBcJ3PxV/F7OPVZfK52swXa/ni/X2y95gsl6pFf17u
wfLVmjbtq7Lc1/R2pdOaPL+/rbvTrUmqe+Vr9mly+SF+POXGxdnVIl9tFSfG
4w/4h+u5xah/+WRl5MylnF0YN9clNdTe4HD/cG41fWymG+qit0j3llOlWEg+
b8dun3y9udbnZjevvo0r95ve3WNxXi+vPh9//SS4bfK1kAeD6mrZf35MXc6u
S7drOZucfj7+OoiNf0mMsn8//fXm9CI3+Db9l28h2R/FNAvkWOHjZGzZqaIo
/FFkrKrAKtjam5HR3qWs9WaJ6/SbLBnSETlO16J4NW+UNtkGcMHSW6tWzyt3
/eNynK45FWVK+ZuG3Renz1elI3Oc6pOMsbS1/rieum9mLm/bTbmlR7ZK2yFj
X/o9aVJSi5c/55eF8qTx/tLMhfpMbCGX317Obqeo46Toj2UJD1OZ3CCViaWH
WZCi0kiOFdMFKZbOZ+WkPEqNjmt9yMEhNASGsPygvNjtzxJu39afauXM7W2t
la5mbuvZ+3Y600p/svVhuV7KNbKpbqmUrXUy3VKuV613urXOJ1sfIrhWNvWE
4B4zT6Vcv1p/fKo9frL1YbZe6PdvH1Kldr2XFF9u6p1Cq5SuBiIhh2cJX09a
9Zq1kh42yrX68Hhba3eH10G3z+FZws1HUX3OzG7VXje1WBU6a2lePbThQ4SV
ul7MlqOn98n7PHP7nilPK/VOyjoQXISVqk+H2mNj3B+PFqXxIiWJuStT3Qpu
b5ZwuWPWLtdddSn21DdZvhxd5X+g9eEnwW2Too1kfZQRtav+2/t1/7nbFR9y
yx9ofWjfX/0j8bb6ntfvPjrvhUz1X+y/B4FFskU8SvRoKSr+4aSo9j4dr0aD
zHS6zk6G5lpbjPNyLr86wlK9Tksd8SYvrVLlm7fM281ytHjq9Y+zVK85FZnF
+9tmKtksjJbikZbqddOaVMSM+She3j9clQeN+mCSjUz225Ep3MlkxzfVTLH4
cX9ZrMyNyurhgFaIlFx+Dynqoyhs1qQOTcMyRuzkqWDHJn6V923Cds0jQ9OM
FT/XjTcwS6U97QuH4R6GKkXp1XlhvPSxMJV4Cw+C1F5JO2X3qE88cowdWylF
dGbW4RdsW57AOqMlFf/k6DXSuPvgg5KicQned4QX+6CZONyLzcDxRyuRXeIO
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
AOYp9iu/NAEA

-->

</rfc>

