bcrypt.js

A zero-dependency, pure JavaScript implementation of bcrypt for hashing and verifying passwords in Node.js and the browser.

Library
npm
v3.0.3
3,797 stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
55 /100 Fair
Development Activity 40
Maintenance 20
Community 60
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
74 /100 Good
Architecture 72
Code Quality 68
Innovation 70
Learning Curve 85

bcryptjs is a pure JavaScript port of the bcrypt password-hashing algorithm, built to be a drop-in, dependency-free alternative to the native C++ bcrypt binding for Node.js. It works anywhere JavaScript runs, including browsers, by relying on the Web Crypto API or Node’s crypto module for secure randomness, with a pluggable fallback for other environments.

The library exposes both synchronous and asynchronous (promise or callback-based) APIs for generating salts, hashing passwords, and comparing hashes, while remaining wire-compatible with hashes produced by the original bcrypt implementation. Because it ships as an ECMAScript module with a UMD fallback and TypeScript type definitions, it drops into modern bundlers, older CommonJS projects, and browser-only builds without a native compilation step.

What You Get

  • Synchronous and asynchronous APIs (hashSync/hash, compareSync/compare) supporting promises or Node-style callbacks
  • Configurable salt generation via genSalt/genSaltSync with an adjustable cost factor (rounds)
  • Zero runtime dependencies, with automatic use of the Web Crypto API or Node’s crypto module for secure random bytes, plus a setRandomFallback hook for constrained environments
  • Cross-format compatibility, correctly hashing and comparing against $2a$, $2b$, and $2y$ prefixed hashes produced by other bcrypt implementations
  • TypeScript type declarations and both ESM and UMD builds for use in Node.js, bundlers, and directly in browsers
  • A small CLI (bcrypt <input> [rounds|salt]) for quick command-line hashing

Common Use Cases

  • Hashing user passwords before storing them in a database during signup or password-change flows
  • Verifying a submitted login password against a stored bcrypt hash
  • Hashing credentials in browser-based or edge/serverless environments where native Node.js addons aren’t available
  • Replacing the native bcrypt package in projects where native compilation (node-gyp) is problematic in CI or deployment

Under The Hood

Architecture — The entire library lives in a single ~1,150-line index.js module (Blowfish cipher core, base64 codec using bcrypt’s custom alphabet, and the public salt/hash/compare API) with no internal package boundaries; execution flows from genSalt(Sync) (builds a $2b$<rounds>$<salt> string using randomBytes, sourced from the Web Crypto API with a Node crypto fallback and a user-settable setRandomFallback) into hash(Sync)/compare(Sync), which run the Blowfish-based Eksblowfish key schedule directly in JS; async variants chunk the round computation and yield to the event loop via MAX_EXECUTION_TIME-bounded slices with an optional ProgressCallback, avoiding blocking Node’s single thread on high cost factors. Tech Stack — Zero runtime dependencies; the module is authored as a native ES module ("type": "module") with a companion umd/ build generated at publish time by scripts/build.js via the esm2umd transpiler and reformatted with Prettier, giving consumers both an ESM entry (index.js) and a UMD/CommonJS entry (umd/index.js) plus hand-maintained .d.ts type declarations (types.d.ts) copied into both output paths; a bin/bcrypt script exposes the same API as a one-off CLI. Code Quality — tests/index.js is a flat array of self-registered test functions (no framework) that assert against assert/assert.strictEqual/assert.deepEqual, including a cross-check against the native bcrypt npm package (bcrypt-nodejs/C++ binding) as a devDependency to confirm hash format and comparison compatibility across $2a$, $2b$, and $2y$ prefixes; there is no formal linter beyond Prettier --check, and the source relies on var-based ES5-style internals despite being distributed as ESM, reflecting its long maintenance history since 2013. API Design — The public surface intentionally mirrors the native Node bcrypt package’s function names and call signatures (hashSync, hash, compareSync, compare, genSalt(Sync)) so it acts as a drop-in substitute, supports both promise-based and Node-style callback usage on every async function, and documents defaults (10 rounds) so most callers can call bcrypt.hash(password, 10) with no further configuration.

Used by 51 apps in this directory

TypeScript
62%
Other

Flowise

AI Development · Automation · Developer Tools

55,521

Drag-and-drop visual builder for AI agents, RAG pipelines, and multi-agent systems—deploy anywhere in minutes.

View details
75
Repo Health
77
Technical
63
Dependency
Built with
TypeScript 62%
JavaScript 27%
Updated 2 months ago
TypeScript
54%
MIT

FormBee

Forms Surveys

769

A self-hostable form backend that accepts HTML form submissions and routes them to email, Telegram, Discord, webhooks, and automation platforms — without writing any server-side code.

View details
41
Repo Health
48
Technical
70
Dependency
Built with
TypeScript 54%
SCSS 25%
HTML 19%
Updated 1 months ago
TypeScript
97%
Other

Formbricks

Analytics · Design Tools · Forms Surveys

13,138

Open-source experience management platform for in-app, website, email, and link surveys — privacy-first and fully self-hostable.

View details
93
Repo Health
81
Technical
66
Dependency
Built with
TypeScript 97%
Updated 1 weeks ago
TypeScript
98%
Other

Hexabot

AI Development · Automation

1,160

Build and run agentic workflows across channels with YAML, tools, and RAG

View details
76
Repo Health
76
Technical
65
Dependency
Built with
TypeScript 98%
Updated 1 months ago
TypeScript
99%
MIT

GraphQL Hive

Developer Tools · Devops · Monitoring

483

Open-source GraphQL schema registry and observability platform with breaking change detection, federation support, and CI/CD integration for teams of any size.

View details
90
Repo Health
81
Technical
68
Dependency
Built with
TypeScript 99%
Updated 1 weeks ago
TypeScript
93%
Apache 2.0

InsForge

Databases · Developer Tools

13,176

The all-in-one, open-source backend platform purpose-built for AI coding agents — giving your agent database, auth, storage, edge functions, a model gateway, and compute to ship full-stack apps end-to-end.

View details
86
Repo Health
81
Technical
72
Dependency
Built with
TypeScript 93%
Updated 6 days ago
Vue
50%
GPL 3.0

IT-Tools

Developer Tools

40,954

A unified collection of 88 web-based developer utilities — from JSON formatting to subnet calculation — all self-hostable, keyboard-searchable, and offline-ready.

View details
60
Repo Health
74
Technical
63
Dependency
Built with
Vue 50%
TypeScript 48%
Updated 1 weeks ago
TypeScript
100%
MIT

JobSync

AI Assistants · Productivity

1,445

The self-hosted job search assistant that tracks applications, reviews resumes with AI, and auto-discovers matching roles from Greenhouse, Lever, and Ashby boards — all while keeping your data on your own server.

View details
84
Repo Health
79
Technical
70
Dependency
Built with
TypeScript 100%
Updated 1 weeks ago
TypeScript
77%
Other

Joplin

Note Taking

56,853

The privacy-first, open-source note-taking app with end-to-end encrypted sync, AI assistance, and a powerful plugin ecosystem across every platform.

View details
93
Repo Health
87
Technical
60
Dependency
Built with
TypeScript 77%
JavaScript 14%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers