rembrembdocs

Skip to main content

Bun home pagelight logodark logo

[Runtime

](../../../index.md)[Package Manager

](../../../pm/cli/install/index.md)[Bundler

](../../../bundler/index.md)[Test Runner

](../../../test/index.md)[Guides

](../../index.md)[Reference

](https://bun.com/reference)[Blog

](https://bun.com/blog)[Feedback

](../../../feedback/index.md)

The Bun.password.hash() function provides a fast, built-in mechanism for securely hashing passwords in Bun. No third-party dependencies are required.

const password = "super-secure-pa$$word";

const hash = await Bun.password.hash(password);
// => $argon2id$v=19$m=65536,t=2,p=1$tFq+9AVr1bfPxQdh6E8DQRhEXg/M/...

By default, this uses the Argon2id algorithm. Pass a second argument to Bun.password.hash() to use a different algorithm or configure the hashing parameters.

const password = "super-secure-pa$$word";

// use argon2 (default)
const argonHash = await Bun.password.hash(password, {
  memoryCost: 4, // memory usage in kibibytes
  timeCost: 3, // the number of iterations
});

Bun also implements the bcrypt algorithm. Specify algorithm: "bcrypt" to use it.

// use bcrypt
const bcryptHash = await Bun.password.hash(password, {
  algorithm: "bcrypt",
  cost: 4, // number between 4-31
});

Use Bun.password.verify() to verify a password. The algorithm and its parameters are stored in the hash itself, so re-specifying configuration is unnecessary.

const password = "super-secure-pa$$word";
const hash = await Bun.password.hash(password);

const isMatch = await Bun.password.verify(password, hash);
// => true

See Docs > API > Hashing for complete documentation.

Was this page helpful?

Suggest editsRaise issue

[

Get the current Bun version

Previous

](../version/index.md)[

Generate a UUID

Next

](../javascript-uuid/index.md)