When working with unique identifiers in Python, I often need to convert strings to UUID objects. This conversion is crucial for database operations, API development, and ensuring data integrity in applications.
In this article, I’ll show you multiple ways to convert a string to a UUID in Python, based on my decade of experience working with Python applications.
Let us get into the topic.
What is a UUID?
UUID (Universally Unique Identifier) is a 128-bit value designed to uniquely identify information without central coordination. A typical UUID looks like this: 550e8400-e29b-41d4-a716-446655440000.
UUIDs are perfect for distributed systems where you need to generate unique identifiers without a central authority.
Read Convert Multiline String to Single Line in Python
Convert String to UUID in Python
Now, I will explain to you some important methods to convert a string to a UUID in Python.
Method 1 – Use the uuid Module’s UUID Class
You can quickly create universally unique IDs in Python using the uuid module included in the standard library.
import uuid
# String representation of a UUID
uuid_string = "550e8400-e29b-41d4-a716-446655440000"
# Convert string to UUID object
uuid_obj = uuid.UUID(uuid_string)
print(uuid_obj)
print(type(uuid_obj))Output:
550e8400-e29b-41d4-a716-446655440000
<class 'uuid.UUID'>I executed the above example code and added the screenshot below.

This method works perfectly for properly formatted UUID strings. The uuid.UUID() constructor takes the string and converts it to a UUID object.
Check out Convert String To Object In Python
Method 2 – Convert Different String Formats to UUID
Sometimes, you’ll encounter UUIDs in different formats. The uuid.UUID() constructor is flexible and can handle various string representations:
import uuid
# Standard UUID with hyphens
uuid_standard = "550e8400-e29b-41d4-a716-446655440000"
# UUID without hyphens
uuid_no_hyphens = "550e8400e29b41d4a716446655440000"
# UUID with curly braces
uuid_braces = "{550e8400-e29b-41d4-a716-446655440000}"
# UUID with URN format
uuid_urn = "urn:uuid:550e8400-e29b-41d4-a716-446655440000"
# Convert all formats to UUID objects
print(uuid.UUID(uuid_standard))
print(uuid.UUID(uuid_no_hyphens))
print(uuid.UUID(uuid_braces))
print(uuid.UUID(uuid_urn))Output:
550e8400-e29b-41d4-a716-446655440000
550e8400-e29b-41d4-a716-446655440000
550e8400-e29b-41d4-a716-446655440000
550e8400-e29b-41d4-a716-446655440000I executed the above example code and added the screenshot below.

Using uuid.UUID() ensures reliable parsing and compatibility across various UUID representations.
Read Convert String to Function in Python
Method 3 – Convert Hexadecimal Strings to UUID
If you have a hexadecimal string representation of a UUID, you can convert it using the hex parameter:
import uuid
# Hexadecimal string without any formatting
hex_string = "550e8400e29b41d4a716446655440000"
# Convert hexadecimal string to UUID
uuid_obj = uuid.UUID(hex=hex_string)
print(uuid_obj)Output:
550e8400-e29b-41d4-a716-446655440000I executed the above example code and added the screenshot below.

This is particularly useful when working with database systems that store UUIDs as raw hexadecimal strings.
Check out String with Comma to Float in Python
Method 4 – Convert UUID String with Error Handling
In real-world applications, we often need to handle invalid UUID strings gracefully:
import uuid
def string_to_uuid(uuid_string):
try:
return uuid.UUID(uuid_string)
except ValueError:
print(f"Invalid UUID string: {uuid_string}")
return None
# Valid UUID string
valid_uuid = "550e8400-e29b-41d4-a716-446655440000"
print(string_to_uuid(valid_uuid))
# Invalid UUID string
invalid_uuid = "not-a-valid-uuid"
print(string_to_uuid(invalid_uuid))Output:
550e8400-e29b-41d4-a716-446655440000
Invalid UUID string: not-a-valid-uuid
NoneThis approach is essential for applications where user input might contain invalid UUID strings.
Read How to Convert a String to Base64 in Python
Method 5 – Convert Bytes to UUID
If you’re working with binary data, like when retrieving UUIDs from a database, you might need to convert bytes to a UUID:
import uuid
# Example of bytes representation of a UUID
# (This would typically come from a database or binary file)
uuid_bytes = b'\x55\x0e\x84\x00\xe2\x9b\x41\xd4\xa7\x16\x44\x66\x55\x44\x00\x00'
# Convert bytes to UUID
uuid_obj = uuid.UUID(bytes=uuid_bytes)
print(uuid_obj)
print(uuid_obj.hex)Output:
550e8400-e29b-41d4-a716-446655440000
550e8400e29b41d4a716446655440000This method is particularly useful when working with databases like PostgreSQL that store UUIDs in binary format.
Check out Convert String to List in Python Without Using Split
Real-World Example: User Registration System
Let’s look at a practical example. Imagine you’re building a user registration system for a U.S.-based e-commerce platform:
import uuid
from datetime import datetime
class UserRegistration:
def __init__(self):
self.users = {}
def register_user(self, email, username, state="California"):
# Generate a new UUID for the user
user_id = uuid.uuid4()
# Store user data with UUID as key
self.users[str(user_id)] = {
"email": email,
"username": username,
"state": state,
"registration_date": datetime.now()
}
return str(user_id)
def get_user(self, user_id_string):
try:
# Convert string back to UUID for validation
user_id = uuid.UUID(user_id_string)
return self.users.get(str(user_id), None)
except ValueError:
print(f"Invalid user ID: {user_id_string}")
return None
# Usage
registration = UserRegistration()
# Register a new user
new_user_id = registration.register_user("john.doe@example.com", "johndoe")
print(f"New user registered with ID: {new_user_id}")
# Retrieve user with valid ID
user = registration.get_user(new_user_id)
print(f"Retrieved user: {user}")
# Try to retrieve user with invalid ID
invalid_user = registration.get_user("not-a-valid-uuid")
print(f"Result with invalid ID: {invalid_user}")In this example, we’re using UUIDs to uniquely identify users in our system. The register_user method generates a new UUID, while the get_user method converts a string back to a UUID to validate it before lookup.
Read Convert Scientific Notation String to Float in Python
Handle UUID Versions
UUIDs come in different versions, each with specific generation algorithms. When converting strings to UUIDs, you might want to validate the version:
import uuid
def convert_and_validate_uuid(uuid_string, expected_version=4):
try:
uuid_obj = uuid.UUID(uuid_string)
if uuid_obj.version == expected_version:
return uuid_obj
else:
print(f"UUID version mismatch: expected {expected_version}, got {uuid_obj.version}")
return None
except ValueError:
print(f"Invalid UUID string: {uuid_string}")
return None
# UUID v4 (random)
uuid_v4 = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
print(convert_and_validate_uuid(uuid_v4, 4))
# UUID v1 (time-based)
uuid_v1 = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
print(convert_and_validate_uuid(uuid_v1, 1))
# Try to validate v4 as v1
print(convert_and_validate_uuid(uuid_v4, 1))This validation is important when your application expects specific UUID versions for different purposes.
I hope these methods help you effectively convert strings to UUIDs in your Python applications. Converting between string representations and UUID objects is a common task in many applications, from web services to database operations.
Remember that UUIDs are designed to be globally unique, making them perfect for distributed systems where centralized ID generation isn’t feasible. In my experience, using UUIDs has saved me from countless synchronization headaches, especially in cloud-based applications.
If you found this article helpful, you might also be interested in learning more about working with strings and data types in Python.
- Convert String to Tuple in Python
- Convert String to Path in Python
- Convert String to Array in Python

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.