Ein Universally Unique Identifier (UUID) ist ein Standard für Identifikatoren, der in der Softwareentwicklung verwendet wird. Er ist von der Open Software Foundation (OSF) als Teil des Distributed Computing Environment (DCE) standardisiert. Die Absicht hinter UUIDs ist, Informationen in verteilten Systemen ohne großartige zentrale Koordination eindeutig kennzeichnen zu können.
Ein UUID besteht aus einer 16-Byte-Zahl, die in fünf Gruppen unterteilt wird. In ihrer Normalform sieht eine UUID so aus:
Obwohl die Eindeutigkeit für generierte UUID nicht garantiert ist, ist die Gesamtzahl der eindeutigen Schlüssel mit 2128 oder 3,4028 · 1038 so groß, dass die Wahrscheinlichkeit der Erzeugung zwei gleicher UUIDs gegen null geht. Daher können UUIDs beliebig ohne zentrales Kontrollorgan erzeugt und zur Kennzeichnung eingesetzt werden, ohne Gefahr zu laufen, dass eine gleiche UUID für etwas anderes verwendet wird. Mit UUID markierte Informationen können somit später in einer einzigen Datenbank zusammengeführt werden, ohne Bezeichnerkonflikte auflösen zu müssen.
Die am weitesten verbreitete Implementierung des UUID-Standards ist Microsofts Globally Unique Identifier (GUID).
UUID sind als Teil des Standards ISO/IEC 11578:1996 “Information technology – Open Systems Interconnection – Remote Procedure Call (RPC)” und als separater Standard ISO/IEC 9834-8:2005 dokumentiert. Die IETF hat das auf UUID basierende RFC 4122 veröffentlicht.
Das originale (Version 1) Generierungsschema für UUID war, die UUID-Version mit der MAC-Adresse des Computers, der die UUID generiert, und der Anzahl der 100-Nanosekunden-Intervalle seit Beginn des Gregorianischen Kalenders aneinander zu hängen. In der Praxis ist der eigentliche Algorithmus komplizierter. Dieses Schema wurde kritisiert, weil es nicht ausreichend „dicht“ sei; es gibt sowohl die Identität des generierenden Computers als auch den Zeitpunkt, zu dem er es tat, preis.
Mehrere andere Algorithmen zur Generierung wurden entwickelt und flossen in den Standard ein, so ein Schema, welches nur auf Zufallszahlen basiert (Version 4 UUID), und Schemata, in denen die UUID aus einer URL über MD5- (Version 3 UUID) oder SHA-1- (Version 5 UUID) Hashes hergeleitet wird.
Die Release 5.0 von Java stellt eine Klasse zur Verfügung, die 128-bittige UUID generiert. Die API-Dokumentation für die java.util.UUID-Klasse verweist auf ISO/IEC 11578:1996. Auch viele andere Sprachen stellen fertige Routinen zur Generierung von UUID bereit.