Hash Generator

Compute MD5, SHA-1, SHA-256, SHA-384 and SHA-512 digests of any text instantly. Powered by the Web Crypto API and entirely client-side.

Hashed locally · nothing uploaded
Input
Hashes
MD5
SHA-1
SHA-256
SHA-384
SHA-512

How it works

A cryptographic hash function maps arbitrary input to a fixed-length string of bytes. The same input always produces the same digest, and even a single-character change produces a completely different result. This makes hashes ideal for verifying file integrity, deduplicating data and storing password verifiers (with a salt and a slow KDF).

This tool encodes your text as UTF-8 and runs it through five algorithms. SHA-1, SHA-256, SHA-384 and SHA-512 are computed with the browser's native crypto.subtle.digest() — the same primitives used for TLS. MD5 is not exposed by the Web Crypto API because it is broken, so it is computed by a small self-contained implementation bundled with the page. Everything runs on your device; the input is never transmitted.

Prefer SHA-256 or stronger for anything security-sensitive. Treat MD5 and SHA-1 as non-cryptographic checksums only — practical collision attacks exist for both.

Frequently asked questions

Is my text sent to a server?
No. All hashing happens locally in your browser. The SHA family uses the native crypto.subtle.digest() Web Crypto API, and MD5 is computed with a small in-page implementation. Your input never leaves your device.
Why is MD5 handled differently from the SHA hashes?
The Web Crypto API deliberately omits MD5 because it is cryptographically broken. This tool includes a self-contained MD5 routine so you can still generate digests for legacy checksums and file identifiers, but do not rely on MD5 (or SHA-1) for security.
Which algorithm should I use?
For integrity and security use SHA-256 or higher. MD5 and SHA-1 are fine for non-security checksums (e.g. cache keys, ETags) but are considered broken for anything requiring collision resistance.
Does the output change with encoding?
Yes. The text is encoded as UTF-8 before hashing, which is the standard used by virtually every other tool and library, so the digests match what you would get from openssl, Node.js or Python.