It's certainly not as 1337 as creating the implementation yourself, but why not do the old-timey thing and take a gander at the official documentation of the .NET BCL and see what it offers in terms of UTF-8 parsing. Hoopla, look what's that... TryParse(ReadOnlySpan<byte> source, out Guid value, out int bytesConsumed, char standardFormat = '\0')