Create GUID / UUID in JavaScript?

I’m trying to create globally-unique identifiers in JavaScript. I’m not sure what routines are available on all browsers, how “random” and seeded the built-in random number generator is, etc…

The GUID / UUID should be at least 32 characters and should stay in the ASCII range to avoid trouble when passing them around.

UUIDs (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDentifier), according to RFC 4122, are identifiers with a certain uniqueness guarantee.

The best way to generate them, is to follow implementation instructions in the said RFC, use one of the many community vetted open source implementations.

A popular Open Source tool for working with UUIDs in JavaScript is node-uuid

Note that just randomly generating the identifiers byte by byte, or character by character, will not give you the same guarantees as a conforming implementation. Also, very important, systems working with compliant UUIDs may choose not to accept randomly generated ones, and many open source validators will actually check for a valid structure.

An UUID must have this format:


Where the M and N positions may only have certain values. At this time, the only valid values for M are 1, 2, 3, 4 and 5, so randomly generating that position would make most results unacceptable.