[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Type](https://evolu.dev/docs/api-reference/common/Type) › createId

```ts
function createId<B>(
  deps: RandomBytesDep,
): [B] extends [never] ? string & Brand<"Id"> : string & Brand<"Id"> & Brand<B>;
```

Defined in: [packages/common/src/Type.ts:1770](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Type.ts#L1770)

Creates a random [Id](https://evolu.dev/docs/api-reference/common/Type/variables/Id). This is the recommended default.

Use [createIdFromString](https://evolu.dev/docs/api-reference/common/Type/functions/createIdFromString) for deterministic mapping of external IDs or
[createIdAsUuidv7](https://evolu.dev/docs/api-reference/common/Type/functions/createIdAsUuidv7) when you accept timestamp leakage for index
locality.

### Example

```ts
const id = createId(deps);
const todoId = createId<"Todo">(deps);
```