# JavaScript: How to Create a Random GUID or UUID

> Generate a UUID in JavaScript using crypto.randomUUID(), the uuid npm library for older browsers, or Node.js's built-in crypto module on the server

**URL:** https://sentry.io/answers/how-do-i-create-a-guid-uuid/

---

## The Problem

A universally unique identifier (UUID) is a 36-character-long alphanumeric string used to identify resources. A UUID is represented as hexadecimal digits in five groups separated by hyphens, for example, `c75f7c66-e858-47d6-bb82-7ea5547c800c`. Globally unique identifier (GUID) is another name for this type of identifier.

A computer generates a UUID by creating a very large, random number. The probability of a duplicate being created is extremely small. It can be useful to quickly assign a unique ID for a record in a database, an ID that will be unique across multiple database tables or databases. 

How do you create a UUID?

## The Solution

You can use the [Web Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Crypto) that's accessed through the global [`crypto`](https://developer.mozilla.org/en-US/docs/Web/API/crypto_property "crypto") property. It's a `Crypto` object that has a [`randomUUID()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID) method that returns a randomly generated UUID. It uses a cryptographically secure number generator.

```javascript
const uuid = crypto.randomUUID();
console.log(uuid); // '398de222-5bf9-4754-8e3e-011a55307014'
```

This method can only be used in [secure contexts](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts), which includes pages delivered over HTTPS or served locally using URLs such as `http://127.0.0.1` and `http://localhost`.

It has good [browser support](https://caniuse.com/getrandomvalues). If you need it to work in browsers that don't support it or in non-secure contexts, you can use the [`uuid` library](https://www.npmjs.com/package/uuid). You can also use this library in server-side JavaScript.

```javascript
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
```

In Node.js, you can use the [`randomUuid()`](https://nodejs.org/api/crypto.html#cryptorandomuuidoptions) method of the Node.js [`crypto` module](https://nodejs.org/api/crypto.html#nodecrypto-module-methods-and-properties).

These methods generate a UUID compliant with [RFC 9562](https://www.rfc-editor.org/info/rfc9562/), the current UUID standard, which obsoletes the older [RFC 4122](https://www.rfc-editor.org/rfc/rfc4122.txt). Existing UUIDs generated under RFC 4122 remain fully valid, since RFC 9562 only adds new UUID versions and clarifications.

---

*Source: [sentry.io/answers/how-do-i-create-a-guid-uuid/](https://sentry.io/answers/how-do-i-create-a-guid-uuid/)*
