sindresorhus/crypto-hash

Tiny hashing module that uses the native crypto API in Node.js and the browser

JavaScript

645

44 commits

updated Jul 25, 2026

See the code

README

crypto-hash

Tiny hashing module that uses the native crypto API in Node.js and the browser

Useful when you want the same hashing API in all environments. My cat calls it isomorphic.

In Node.js it uses node:crypto, while in the browser it uses window.crypto.

The browser version is only ~300 bytes minified & gzipped.

When used in the browser, it must be in a secure context (HTTPS).

This package is for modern browsers. Internet Explorer is not supported.

Install

npm install crypto-hash

Usage

import {sha256} from 'crypto-hash';

console.log(await sha256('🦄'));
//=> '36bf255468003165652fe978eaaa8898e191664028475f83f506dabd95298efc'

API

sha1(input, options?)

sha256(input, options?)

sha384(input, options?)

sha512(input, options?)

Returns a Promise<string> with a Hex-encoded hash.

In Node.js, the operation is executed using worker_threads. A thread is lazily spawned on the first operation and lives until the end of the program execution. It's unrefed, so it won't keep the process alive.

SHA-1 is insecure and should not be used for anything sensitive.

input

Type: string ArrayBuffer ArrayBufferView

options

Type: object

outputFormat

Type: string
Values: 'hex' | 'buffer'
Default: 'hex'

Setting this to buffer makes it return an ArrayBuffer instead of a string.

  • hasha - Hashing in Node.js made simple
browser
crypto
hash-functions
hashing
isomorphic
nodejs
npm-package
sha256

sindresorhus/crypto-hash

Tiny hashing module that uses the native crypto API in Node.js and the browser

JavaScript

645

44 commits

updated Jul 25, 2026

See the code

README

crypto-hash

Tiny hashing module that uses the native crypto API in Node.js and the browser

Useful when you want the same hashing API in all environments. My cat calls it isomorphic.

In Node.js it uses node:crypto, while in the browser it uses window.crypto.

The browser version is only ~300 bytes minified & gzipped.

When used in the browser, it must be in a secure context (HTTPS).

This package is for modern browsers. Internet Explorer is not supported.

Install

npm install crypto-hash

Usage

import {sha256} from 'crypto-hash';

console.log(await sha256('🦄'));
//=> '36bf255468003165652fe978eaaa8898e191664028475f83f506dabd95298efc'

API

sha1(input, options?)

sha256(input, options?)

sha384(input, options?)

sha512(input, options?)

Returns a Promise<string> with a Hex-encoded hash.

In Node.js, the operation is executed using worker_threads. A thread is lazily spawned on the first operation and lives until the end of the program execution. It's unrefed, so it won't keep the process alive.

SHA-1 is insecure and should not be used for anything sensitive.

input

Type: string ArrayBuffer ArrayBufferView

options

Type: object

outputFormat

Type: string
Values: 'hex' | 'buffer'
Default: 'hex'

Setting this to buffer makes it return an ArrayBuffer instead of a string.

  • hasha - Hashing in Node.js made simple
browser
crypto
hash-functions
hashing
isomorphic
nodejs
npm-package
sha256

Project health

Overall

3.6/10

Maintained

0/10

Code review

2/10
OpenSSF Scorecard

Latest release

4.0.1 · Dec 10, 2025

Releases this year

1

Significant stargazers

Kevin Mårtensson

1,684 followers · starred Mar 2018

Diego Rodríguez Baquero

520 followers · starred Apr 2019

Samy Pessé

3,147 followers · starred Mar 2018

Billie Hilton

222 followers · starred Nov 2018