<?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="info" consensus="true" submissionType="IETF" 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> <email>kyzer.davis@outlook.com</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 160?>

<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 168?>

<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 four dash/hyphen <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>There also exist some algorithms that perform some pre-processing on the binary encoding of the UUID before encoding it as one or more of BaseXX Alphabets from the <xref target="alphabetTable"/> for very specific application use-cases.
The specifics about each algorithm are covered in their own documents but are included here for completeness and comparison purposes; see <xref target="best_practice_markup" format="title"/> and <xref target="best_practice_database_keys" format="title"/> for the real-world problems these solve within databases and other applications.</t>

<t>The <xref target="bitSwizzleTable"/> table compares these different algorithms.</t>

<texttable title="Comparison of UUID Pre-processing Algorithms" anchor="bitSwizzleTable">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Alphabet(s) and notes</ttcol>
      <c><xref target="NCNAME"/></c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/>, <xref target="Base58btc"/>, <xref section="5" sectionFormat="comma" target="RFC4648"/><br />Version and Variant extracted and placed at the start and end of the layout to "Bookend". 26, 23 and 22 character outputs for the different alphabets in use.</c>
      <c><xref target="Base62id"/></c>
      <c><xref target="Base62sort"/><br />130-bit post-processed UUID value by appending <spanx style="verb">0b10</spanx>, 22 characters after encoding</c>
</texttable>

<t><strong>Note:</strong> 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.
The standard Base32 alphabet (<xref section="6" sectionFormat="comma" target="RFC4648"/>) is not recommended for new UUID implementations because its alphabet does not preserve binary sort order; libraries currently providing this encoding need not deprecate it, but new implementations should use Base32hex or Base32 for Humans instead.
Base32hex (<xref section="7" sectionFormat="comma" target="RFC4648"/>) is recommended when sorting is required.
Base32 for Humans (<xref target="Base32human"/>) is recommended when both sorting and human readability are required.
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>Base36 is recommended when variable-length UUIDs are not a problem for the application.</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>Base52 is recommended when sorting is required, special characters and digits pose problems, and variable-length UUIDs are not a problem.</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>Base58 is recommended when sorting and human readability are required, and variable-length UUIDs are not a problem.</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><xref target="Base62ieee"/> is recommended when variable-length UUIDs are not a problem.
<xref target="Base62sort"/> is recommended when sorting is required and special characters or digits pose problems.</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>The standard Base64 alphabet (<xref section="4" sectionFormat="comma" target="RFC4648"/>) is not recommended for new UUID implementations; libraries currently providing this encoding need not deprecate it, but new implementations should use Base64url or Base64sort instead.
Base64url (<xref section="5" sectionFormat="comma" target="RFC4648"/>) is recommended for most use cases because it is safe for URLs, filenames and <xref target="best_practice_applications" format="title"/> use cases.
Base64sort (<xref target="Base64sort"/>) is recommended when lexicographical sorting that matches binary order is critical (for example, with UUIDv6 or UUIDv7).</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 symbols are not a concern.</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>For Large Language Model (LLM) applications, UUID encoding directly affects token consumption because each token maps to a variable number of characters and special characters often consume disproportionately more tokens.
Shorter encodings that avoid special characters generally consume fewer tokens and reduce inference costs; .</t>

<t>For a given application use case (database key, network transmission, logging, etc.), implementations <bcp14>SHOULD</bcp14> choose exactly one BaseXX encoding and <bcp14>MUST NOT</bcp14> mix different BaseXX encodings for the same purpose.
Mixing encodings breaks assumptions about encoded length and sort order and complicates comparison logic.
For example, if an application stores UUIDs as Base32 in a database, it should not also accept or produce Base62-encoded UUIDs for the same field.</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="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="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_llm_tokens"><name>LLM Token Efficiency</name>

<t>Large Language Models (LLMs) process text using tokens: sub-word or character-level units whose boundaries depend on the model's tokenizer.
Because UUID alternate encodings mix digits, uppercase letters, lowercase letters, and sometimes special characters in patterns that rarely appear in natural language, tokenizers often split them into many small tokens.
Greater token consumption translates directly to higher inference cost, increased latency, and reduced effective context-window utilization.</t>

<t>Tokenizer behavior varies substantially across vendors and model families.
The token counts below were measured using the following tokenizers, which were current when this document was prepared:</t>

<t><list style="symbols" spacing="compact">
  <t><eref target="https://platform.claude.com/docs/en/build-with-claude/token-counting">Anthropic</eref>: Claude OPUS 4.6</t>
  <t><eref target="https://platform.openai.com/tokenizer">OpenAI</eref>: GPT5.x &amp; O1/3</t>
  <t><eref target="https://docs.x.ai/developers/rest-api-reference/inference/other#tokenize-text">xAI</eref>: grok-4.20-0309-reasoning</t>
  <t><eref target="https://ai.google.dev/api/tokens">Google</eref>: Gemini 3.1 Pro Preview</t>
  <t>Generic: ceil(character_length / 4), the common "1 token ~= 4 characters" heuristic</t>
</list></t>

<t><strong>Note:</strong> The token counts in <xref target="tokenTableMax"/> use the MAX UUID from <xref target="test_vectors_max_uuid"/> which consists largely of repeating characters.
Repeating characters compress very aggressively in Byte-Pair Encoding based tokenizers, so these values represent a best-case (minimum token) scenario.
<xref target="tokenTableExample"/> uses the Example UUID from <xref target="test_vectors_generic_uuid"/> whose mixed characters are more representative of typical UUIDs.
Real-world token counts will more closely resemble the latter.</t>

<t><xref target="tokenTableMax"/> details the token count for the MAX UUID across various BaseXX Encoding methods and tokenizers.</t>

<texttable title="Alt UUID Encoding Token Count: MAX UUID" anchor="tokenTableMax">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Anthropic</ttcol>
      <ttcol align='left'>OpenAI</ttcol>
      <ttcol align='left'>xAI</ttcol>
      <ttcol align='left'>Google</ttcol>
      <ttcol align='left'>Generic</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>21</c>
      <c>10</c>
      <c>10</c>
      <c>13</c>
      <c>9</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>7</c>
      <c>4</c>
      <c>2</c>
      <c>9</c>
      <c>8</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>10</c>
      <c>9</c>
      <c>9</c>
      <c>27</c>
      <c>7</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>27</c>
      <c>13</c>
      <c>13</c>
      <c>14</c>
      <c>7</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>15</c>
      <c>13</c>
      <c>13</c>
      <c>14</c>
      <c>7</c>
      <c>Base36</c>
      <c>---</c>
      <c>10</c>
      <c>10</c>
      <c>10</c>
      <c>27</c>
      <c>7</c>
      <c>Base52</c>
      <c>---</c>
      <c>21</c>
      <c>15</c>
      <c>15</c>
      <c>16</c>
      <c>6</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>18</c>
      <c>14</c>
      <c>14</c>
      <c>16</c>
      <c>6</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>20</c>
      <c>15</c>
      <c>12</c>
      <c>13</c>
      <c>6</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>22</c>
      <c>17</c>
      <c>17</c>
      <c>19</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>4</c>
      <c>4</c>
      <c>4</c>
      <c>4</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>4</c>
      <c>3</c>
      <c>3</c>
      <c>4</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>12</c>
      <c>11</c>
      <c>6</c>
      <c>12</c>
      <c>6</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>20</c>
      <c>20</c>
      <c>20</c>
      <c>21</c>
      <c>5</c>
</texttable>

<t><xref target="tokenTableExample"/> details the token count for a typical UUID (<xref target="test_vectors_generic_uuid"/>) across various BaseXX Encoding methods and tokenizers.</t>

<texttable title="Alt UUID Encoding Token Count: Example UUID" anchor="tokenTableExample">
      <ttcol align='left'>Encoding</ttcol>
      <ttcol align='left'>Variant</ttcol>
      <ttcol align='left'>Anthropic</ttcol>
      <ttcol align='left'>OpenAI</ttcol>
      <ttcol align='left'>xAI</ttcol>
      <ttcol align='left'>Google</ttcol>
      <ttcol align='left'>Generic</ttcol>
      <c>Base16</c>
      <c><xref section="4" sectionFormat="comma" target="RFC9562"/></c>
      <c>26</c>
      <c>25</c>
      <c>21</c>
      <c>33</c>
      <c>9</c>
      <c>Base16</c>
      <c><xref section="8" sectionFormat="comma" target="RFC4648"/></c>
      <c>22</c>
      <c>22</c>
      <c>15</c>
      <c>29</c>
      <c>8</c>
      <c>Base32</c>
      <c><xref section="6" sectionFormat="comma" target="RFC4648"/></c>
      <c>22</c>
      <c>17</c>
      <c>16</c>
      <c>19</c>
      <c>7</c>
      <c>Base32</c>
      <c><xref section="7" sectionFormat="comma" target="RFC4648"/></c>
      <c>20</c>
      <c>18</c>
      <c>17</c>
      <c>22</c>
      <c>7</c>
      <c>Base32</c>
      <c><xref target="Base32human"/></c>
      <c>21</c>
      <c>18</c>
      <c>16</c>
      <c>22</c>
      <c>7</c>
      <c>Base36</c>
      <c>---</c>
      <c>22</c>
      <c>17</c>
      <c>17</c>
      <c>18</c>
      <c>7</c>
      <c>Base52</c>
      <c>---</c>
      <c>20</c>
      <c>14</c>
      <c>15</c>
      <c>14</c>
      <c>6</c>
      <c>Base58</c>
      <c><xref target="Base58btc"/></c>
      <c>17</c>
      <c>15</c>
      <c>14</c>
      <c>18</c>
      <c>6</c>
      <c>Base62</c>
      <c><xref target="Base62ieee"/></c>
      <c>20</c>
      <c>14</c>
      <c>16</c>
      <c>17</c>
      <c>6</c>
      <c>Base62</c>
      <c><xref target="Base62sort"/></c>
      <c>21</c>
      <c>16</c>
      <c>15</c>
      <c>16</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref section="4" sectionFormat="comma" target="RFC4648"/></c>
      <c>20</c>
      <c>16</c>
      <c>14</c>
      <c>18</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref section="5" sectionFormat="comma" target="RFC4648"/></c>
      <c>20</c>
      <c>16</c>
      <c>14</c>
      <c>18</c>
      <c>6</c>
      <c>Base64</c>
      <c><xref target="Base64sort"/></c>
      <c>21</c>
      <c>16</c>
      <c>14</c>
      <c>17</c>
      <c>6</c>
      <c>Base85</c>
      <c><xref target="Z85"/></c>
      <c>19</c>
      <c>15</c>
      <c>14</c>
      <c>16</c>
      <c>5</c>
</texttable>

<t>Key takeaways:</t>

<t><list style="symbols" spacing="compact">
  <t>The commonly cited "1 token ~= 4 characters" heuristic severely underestimates real token costs for UUIDs. The generic column predicts 5-9 tokens, but official tokenizers return 14-33 tokens for a typical UUID, a 2-4x underestimate.</t>
  <t>Higher-base encodings (Base52+) generally produce fewer tokens than lower-base encodings (Base16, Base32) for typical UUIDs because the shorter character length outweighs the added alphabet complexity. For example, Base16 with hyphens costs 21-33 tokens across vendors while Base58-Base85 range from 14-19.</t>
  <t>Removing the hyphens from the standard Base16 UUID representation saves 4-7 tokens depending on the vendor (e.g., xAI: 21 to 15, Google: 33 to 29 for the example UUID).</t>
  <t>Base64 standard variants (<xref target="RFC4648"/> Section 4 and 5) are exceptionally efficient for repetitive inputs (3-4 tokens for MAX UUID) but converge with other high-base encodings (14-20 tokens) for typical UUIDs.</t>
  <t>Token counts vary substantially across vendors for the same input; for example, the standard Base16 UUID representation ranges from 21 tokens (xAI) to 33 tokens (Google) for the same UUID. Applications sensitive to token costs should measure with their target model's tokenizer.</t>
</list></t>

</section>
<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">b10</spanx> as seen in <xref target="Base62id"/> 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"/> when using alternate UUID encodings as database keys to ensure the first character is an uppercase alphabet character and the output is compact.</t>

</section>
</section>
</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://datatracker.ietf.org/doc/draft-crockford-davis-base32-for-humans/">
  <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://datatracker.ietf.org/doc/draft-brown-davis-base64-sort/">
  <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="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 900?>

<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"/> which are not included in the main body of the document but are included here for reference.</t>

<section anchor="test_vectors_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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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 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>
</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>

    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="BGP." surname="Peabody" fullname="Brad G. Peabody">
      <organization></organization>
      <address>
        <email>brad@peabody.io</email>
      </address>
    </contact>
    </section>

  </back>

<!-- ##markdown-source:
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
3LvLtc7uGqf9fqfaz9duSjm50zypnDZur8hl1C0TqIzrlyF1juzZIHwIg4C7
UatEQE+51sVT4+zhoVN9yNfuyHtOK2eNx5vE91D63+4twariy7iqVeaqVpmp
WmVxbWDOHX2GFX4BORGmgmRKBXopky/XaolaGGxBroSFMvgAlFwKCSP25iBL
i0SkVH2MUJ9z//1f/6f2zKLhlJgCwfhch6tPz1wqKCCnhxjdxS3LxS8yhohQ
T9YRgvvX5InUY8rGjCT2OIcsdCiSErmHrgHFkg1kQZgvZRMCx+db3uWROthP
NKDGxVqZemb8ohLHj7abHhgigxVazIkj449g2iYwVzpXTL8FlqDb1ByypBEN
89K1o1zB0d81blxyssJ1DLAivFoB8wmgrAIRi1w9jAa7RFg14oGk5MtCkikH
yzTEZBSfI/JooecaJMGPpPz5GrdECibDiESEBmERgE3a0MwxyA+akoikjS9V
uFfEN4HD+b0xCVJmAgIWmteh0q3buurdP12ddwqN3kPu6bJ61b/Od6tXVxdJ
O7e81aYtCzu1xI2iEjOK4AuP56GVAs0FZIjA2tnuIKT1rMDn9+eIdVQQrCOC
BMZz2c6u5HIJGxvG64senMIFbCumGaY4qmhosoxbeBs8jnmTh+jpw3JZBbQK
kt5IdU4R4RjJfKCXHoTFGmUXYNO8WVRF0h3HT03hG4XxFN1kUhCw0ZYk0dR1
gk3NjJchpn6aNCOd6WnBZiEb15d0O9scjGjJyv2P29OA1Y9vS6p+0sxqgT3A
pxVi5eukwTu3VCBTSYRDrTSyuCTzmDs7qY27JRNI2PAled2Gb9vK69vd2+tt
w2pdtR+c7uNVd3E7S9juMLQttntJFrd7lW/3KtvuoG1zVSocaNunmiyteyK+
A2L8zK25h4LbF0ckUzsmzUO6Pk2M8vlBYH1nGA4M51hSvm6iSivJssBNWA7Q
Pucm1VIlgZsc+KAD6Y/WnLOLNUkXmTooIqYO1RoEq9rXaP2sHD6dS3sO08nT
aAYa5ZBAIGQjUTtX96UxYPw/cedWY28LC90EbfiNWJl0uwaJ+UhFQZ4Vj2YI
6T2+KYKEw98WoPHRZt5su/3wtq2u27aNymJYraq3Ra1wuTptvRS0WrF4dJa0
basbty2tVmRetlJV2MBlLq/LTF6XZabc0RQyINWoJ5TE1n5P+ZjhL16za2kR
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
TQACrzqULnXDT3T4IwhDZe3PcxiPD4RhPR/++Up+ohTwsTDcnojWC8O2Ui1e
3+v15fnD7aly/DRr3XVbnTiMhKX+fQRijAJAOPr54lHh6FcH/IBwzMdKZXcQ
jm32k074xX92EI7tDT/PIew2W4brfopRwtzOMlz30/sQ3FrLcN3PfSK4TcJx
vm6w8yRwG4Vjp3Fy358/vVov7c5197r74L4NTutvz5EbtxWO3Wr9ulP33Mpl
TVYW7+aiab5419014DZbhstW8/L6vq3O37zT5cmicNy1Z8cRaDtYhmZRPupc
lPojY1ozqzO30p4MK2vBbRKO2aSfTxiaTDh+TfrZDG6dcHxP+pmuA7dRODrV
+/SfIr+iwJI4JjK1XYUjtiEV87r/CNJx+325Xjpuv3vWS8duEhVFQWwyFS+b
ZdUsdm7yp63+5fXF6Nwov17GYSSs9e8lHaMkgJlS+Ip8VDaiXHzLf14y1jP5
6F3SDpKxKRfkegPsxFoRkw3zrWa6UWhW07V2uXHUaraOqsVdfKYcHEJDYAgr
DErEbqNkfDx5Oruvt26b1yflp4vySb90Vyr17x9PPuczvap26xe54pncqd52
m7fV0/55v396cVX9nM/0ptqrd3PFCwD32Gs+Vs8eLh8ezro31c/5TBvH94V2
7br3dH7dfTyudvpPhdLxU/G2FSLcrSVjS1WP6/aoedF76nRuT9/u1Qf7+Pj1
OXLjtpLxeuXIZ87YqZ8tak9n3tyqlNvNSQTa9pKxXRzM75pV116e5QsrZW4X
btv245bg4sKi5N2MzuXVy8Ss2651PZq4Z6XJ1VpwmyTj4uXMrp9e37a01fvq
tGYXnMrjzed9pp8Et04yTh9ro3S1fVroz8xZdTmyx2+Xnc/7TDPvprp/fuVk
/n73a/uXq791//rLKgosiVvmd5SLwKkOGRP8owjFwUp/ny4UzRu+zmcTR6uY
8/mstBiOjecwHh/5T8u9ivVQKYzf5Me83m9dqg8P1cl5ZIY3+E85BR073RNT
ftPe3UknCmKDUDy/fXoxnsbeqKpfHF3p7dvK/PZNi8OILfPvIxIjq8/loZwo
D+Wt5eFRsxWk3lDjcw2p7OBGLWjV9HAwqKXlvKakB3Iuj27UYkmplodVJb+D
POTgEBoCQ1hhUCJ2W7lRj+XO+UPrunx3cd2o15vtu8b9SVhG7ORGrVyXG5fF
zu15swOYyaXz/EX17GPD8yM3aqVfblwXO4+XDNxlvlu9SAa3SR6WHk5bN/V2
r3R2eXnZKd3XL/K5mO20vTw8uxyeXGiz/tib1V9em73Ra0izjYLbJA/l3oX5
0NPGq5vx8r5rXljHvQ/AbZSHynt3dnU6m9SWl8rl+EJ2YqL1A3BxEbEjuC3c
qEflC690or2u6tf11r01OLGuoyB3caN+BtwHblTZa+hupa/N0u104Xx4XRm2
14Hbxo06+OWXVvtPj3eTv35X3WpF2Y/PXpxRyh/LQ5FTMU4o/1Hk4BC9pBN5
bCy1+VRTdEWxTd10RoMd5GAznz9zu+XHWrdg30zfJvJlXvv6dTc52OSUc/x6
AszvRpk4ekyUbuE6tc+XZuOuLp9e3r6/T/XjhRmHEVveT8nBdavO5V8hUf4V
fsQelKN3STvIv5I6Kuar1Xy6oGhqulDKl9LVqlJJy6OiUs0Xh6NcTdtB/nFw
CA2BIawwKBG7jfLv/EFu3NRP5dKtfHPebB+3S+2TZv/4uv85e7BxeZ0/ztWu
+2fXxw25VCn1S1X5tNI5/Zw92LjuI7j+w0WfgnsAcGeVztnn7MHSWbV7XG+2
HptHrU7jqJG/u+/mWvXjMKPcWv41zxZPjYeTQeO9f2V2+sP5Ve/8xv20Pdgc
eN2WXC1fNMo3zpHyPrytOLcxu2Fr+dfM37zXWo3KcrFwlUarMHGcgVHdElxc
JMj28fy9mF+as9nLdb7oPuj6zWA9dpvk38Po+nHct93Lm/uT+ap2Nr59X5if
twc/CW6d/Lu4bV/enYwmzc55RZ0ta3en5nTweXvwb/n/yx0U5pr627klz7zT
7m83B1FgSQyysLM9KDOOWPijyEHVWMoDW3mRS2/6m/3yPn+ZKt57USvrz2E8
PpCDRwW1f3lRn2lvN8XLdl2Z3hy55+pJZIY/loNHnIJu73TzPPfa6HebWhTE
Bjl4ctP1usq0alTPjl4GF/3T5dHraysOI7bMv5c9GFp9Lg+LifKw+CPysJBM
KtvJw1q+ls9VR5V0SVbz6WJBzqVrA2WYHlWLFXVQzBerSnUHecjBITQEhrDC
oETsNsrDXufk+qYk9+R2o9folC4qjaPS/fXZyd3n0mpOytXOcf/65LqUP8mX
+827fKF/0alXzz+XVnOK4B76p/1S/jRffmg+5QsPXQB3+bm0mupFtdfstm87
7ZPT4nXr8jR30qlUrjthKbG1PDy6P5r0rLPu0431Oh037pXT4dVwGnVBbi0P
T1dPd1b77np5fTlbyANnbFeO8jcRaNvLw5byejY87ph3Rf2692iVKoMHs2xt
Ce5fLg+nT62TWv785nrVHNjdybGca5+8fj6t5pPg1snDp6tCZTmvd9qz/PWo
dV9+tYoV7fNpNWe/Pn5/f71u/fvVlby/7P589KdlzG2WxCiLO8vDAuOIf5j8
Us0Z6692SXZk7V1ZGpOVXjG9oTPSX57DeHwgD1ulUtN9fbx8fVPys+FMUaqV
imadRmb4Y3nY4hR0MfacdGs0uL7VYyA2yMOznNVyVMs67ZSmg9Xi7mXkFupe
HEZsmX8veRhafS4PS4nysPQj8jCpymJreShrarlcqqhprSaDUCxXB+laScun
ZfhWqSqaUlbkHeQhB4fQEBjCCoMSsdsoD9uF885ZpXvaKp2fPLS7jdZTDwzF
u85tSDfaWh6Wbhrl+l27Vuw3qpeldr7YPQFD8bx8Vv0Q3Dp5WLoDcE8A7qFR
vUZwvVMwFC/LF8ngNslD+aZ/JV+V7vuN9kXv8f7poXJ2fJ1/qob1wK3lYaPd
7Tv27elkMXpoH19rdyPj0ZlEN8DW8rBs9s+tcedtIb/Nrl/cev/89e08am1u
Lw8bysMs121dTG9Li0rr7FpZOZfX6wN8m+Rh/vpy+NouNpWzt9myWO9cW/pR
J0H53VIenrtPxkibmneWd1fsPRmvZ+WZ9Xn78JPg1snD+uTq623/aXA21M+c
46uvWs1Thp+3D0dFUJp++9Y5+fcL7axc6Ol6fiv/aGlneVhkHLH0R5GHo1HB
GE8r8xethIXFL+PZwpuWXt6GO8jDtnyWL921z28bRwW5PMmXa73L7stu8rDN
KUg5f5iczu4t+1XRd5SHx7m7SceYXT6M+8cd7eb1qHA0vL2Nw4gt8+8lD0Or
z+VhOVEeln9EHpaid0k7yMN8q4m5Ls00Jr6ky5hJ8yP5MxwcQkNgP5g/c1Ro
3Tb7jaP26d1148fzZwo3xTP5NF8o1c47+R/PnyncFS+A2AHcJYD74fyZfP+i
cH931+9WHu4unx7qcv+uWDg5vf9kzaGh3+ggdMan/VHjej5fNa23VSdBH9xS
Hhatu8H8fVBtzM3+cX42zufV2b26DtxGeVhue53x6GauVC7LjwPbWPbL7VgE
bXt5uChNy/d3x6Pr5dHi6mYyME8XpVg6+fby8NgxGv3mxauyaP4e+TOfBLdO
HpbHX3Mn+YbWneZ/j/yZ2kHhcTGY37e03fJnyjvLwxLjiOU/ijwcqwXNG7oD
dTRdKZ/Mn+nYy5umeaQ/FGfL3mt10L5+6Rd2jBt2OAU59U/nz3Tuj6yHwlFv
OLvV26uX46v8/Pz0Pg4jtsy/lzwMrT6Xh5VEeVj5EXlYjt4l7SAPc/lKW5Zb
crpSa+TSlWazkK5Vm8X0UTOH/1UKteoulRYcHEJDYAgrDErEbnP+TLvSaz/2
n+4b5YvjTqdVuO7UHxtPTzefq7TIle5OSlen3Yv8bbNSLhdvOuXcVb7bPf5c
pUWu9HRaujnrdfOPBNwdgLvJ93rHn6u0KJT79ydyvnh9f1q56PTurquFy4vq
fSQxYnv70D5T2kbTWb0oevPRe/fu31wvIW6+pTxs6JPBcrG4Ll4+Pc3Pbo5r
p0fN9yi0HeKH7+2V8rK6UUv1mqW3q9fNxu3RtuAS/KXzknX9ZB3333Lv2mNp
1ZHzZ7EGATvkzzxU9aI5W4wurh6Xl4uLo/qw9PL5SotPglubP3OxeHAGyhQs
jkujOW3I6Rv38fOVFrnWvn1xVHt/MC6rrV9+Lvz16k+x3PskRlnZWR6WGUes
/FHk4UQZVZzRyn1fqGPVtsfFwetYsazZfAf78LhwYz8oDxWvf1F+VRf2w2Le
LH/dzT485hT0fvTSKtQXF433WXdH+7A9XNZby+P31rx3d9qaj6a3D9ePCTBi
y/x7ycPQ6nN5WE2Uh9XPy8PGj9VXyMVqrVWrH6XlFgjFagvswyrYeEAXR6V2
uZav5pu7lOVzcAgNgSGsMCgRu43ysNVrlfvnp1fFs+N64+j+tHN+VrlsXTQe
Pxc/LJ4Ub08btVavXsnlCxe1cqN+d1Rs5q8+Fz8snhYfzwDcPQHXRXBPCO7m
c/FDuXR3fJR7bF1Wau1K7eoq17/LNeqtWjhvc2t56Ewv3eOG+mCY182b7uTx
9WXZm65NYtwoD0v3k6N3+f2+PK7Njr1Kq1ubWHc/4C/tlL3Rw9G9U1SLR2rJ
s05P6nqsGnx7f2l5Mb27LFzoXt8r9N+mWq2ae1yP3SZ5eHpizu1eRX8ZN69W
/fO72rzTWHw+fvhJcOvkYbUCBsvx28PjXf5odlI/W6ql3PTz8cNBevxrdlT6
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

-->

</rfc>

