Paste an expected hash to check the input against it (constant-time comparison, ignores case).
SHA-* hashes are computed by the browser's crypto.subtle.digest. MD5 and CRC-32 run in plain JavaScript here (MD5 and CRC-32 are not safe for security; use only for integrity / fingerprinting).
Quick start
How to compute a hash
Paste text or drop a file, pick a format, copy the digest — all in your browser.
Step 1
Provide input
Paste text to see every algorithm at once, or switch to File and drop a file. File mode streams reads and shows progress.
Step 2
Pick algorithm and format
For files, choose the algorithm (SHA-256 by default). Set output to hex lower / hex upper / base64 depending on where you'll paste it.
Step 3
Copy or verify
Copy the digest, or paste an expected hash into the Verify panel for a constant-time match check.
In-depth guide
Complete guide to text and file hashing
This tool computes MD5, SHA-1, SHA-256, SHA-384, SHA-512 and CRC-32 hashes for any text or file, locally in your browser. SHA-* digests use the native SubtleCrypto API; MD5 and CRC-32 are computed with an inline JavaScript implementation because Web Crypto deliberately omits them.
Which algorithm to pick
SHA-256 / SHA-512 — default modern choice for anything security-adjacent (commit IDs in Git for SHA-1 → SHA-256, container image digests, JWT signatures, CSP integrity).
MD5 — broken for security but ubiquitous for legacy integrity (Linux ISO checksums, old package managers, S3 ETags for unmultipart objects).
SHA-1 — also broken for collision-resistance, still appears in Git object IDs and many legacy tools.
CRC-32 — error-detection only. Designed to catch random transmission flips, not attacker-crafted forgeries.
Text vs File mode
In Text mode we show all six algorithms at once because the input is small. Swap to File mode for big inputs and pick the algorithm — the browser streams the file into memory and hashes once.
Note that file mode hashes the raw bytes including any BOM, trailing newline or CRLF line endings. If you compare a "text" digest to one produced by shasum on a file, make sure the byte content matches exactly (including the trailing newline).
Verifying a download
Open the Verify panel and paste the expected hash from the publisher (release notes, SHA256SUMS file, package manifest). We do a constant-time comparison so timing attacks can't leak prefix matches.
Verification ignores case (hex digests are commonly published in either case) and accepts any of the six algorithms — paste the hash, we'll match it against the computed column.
Output formats
Switch the Format dropdown for:
hex (lower) — default; matches shasum / md5sum.
hex (upper) — common in Windows / PowerShell output.
base64 — for Subresource Integrity (sha256-…), HTTP Digest header, SAML signatures, etc.
Frequently asked questions
Which algorithm should I use?
For security (signing, password storage prep, certificates) use SHA-256 or SHA-512. For non-security integrity checks (file fingerprints, change detection) MD5 and SHA-1 are widely deployed but cryptographically broken. CRC-32 is for transmission-level corruption checks only — never security.
Is MD5 really insecure?
Collisions can be produced in seconds — two distinct files with the same MD5 hash. That means MD5 is unsafe for any context where an attacker can craft inputs (signatures, password storage, certificates). It is still useful for matching against legacy checksums (Linux ISOs, GitHub release MD5s).
How big a file can I hash?
Everything happens in your browser. In practice browsers can handle a few hundred MB comfortably; multi-GB files will eventually run out of memory because Web Crypto needs the whole file in memory for SHA-*.
Why are the digests different on the file vs text version of the same content?
The file is hashed as its raw bytes including any trailing newline / encoding markers (BOM, CR/LF). Text mode UTF-8-encodes whatever you type. The byte streams differ, so the hashes do too.
Can I get base64 output for HTTP integrity headers?
Yes — set the Format dropdown to base64. For Subresource Integrity (SRI) prefix the SHA-256 / 384 / 512 base64 digest with 'sha256-' / 'sha384-' / 'sha512-'.
Is the Verify panel safe against timing attacks?
Yes — comparison is constant-time (no early exit on first mismatched character), so an observer can't infer how many leading characters match by looking at response timing.
Does the file ever leave my device?
No. We use Web Crypto in your browser. There is no upload, no network round trip — open DevTools and watch the Network panel to confirm.
Keep exploring
More tools you'll like
Hand-picked utilities that pair well with the one you're on — all
free, client-side, and zero-signup.