Compute cryptographic and checksum digests from text or files. SHA-1/2 and HMAC use the browser's Web Crypto API; MD5, SHA-3 and CRC32 run in pure JavaScript. Everything stays on your machine — files are read locally and never uploaded.
Enter a secret key to compute an HMAC over the input above.
or drop them here — hashed in a background Worker, never uploaded.
{{batchFiles.length}} file{{batchFiles.length===1?'':'s'}} selected{{humanSize(batchTotalSize)}} total
{{manifestEntries.size}} entr{{manifestEntries.size===1?'y':'ies'}} parsed from the manifest.
Hashing {{batchProgress.index}} of {{batchProgress.total}}: {{batchProgress.fileName}}{{batchProgress.fileSize!=null ? ' ('+humanSize(batchProgress.fileSize)+')' : ''}}…
{{r.error}}
MD5 and SHA-1 are broken for collision resistance — fine as non-security checksums, unsafe for signatures or deduplication of untrusted data.
SHA-256 / SHA-384 / SHA-512 are the SHA-2 family and remain the practical default for integrity and fingerprints.
SHA-3 (Keccak) uses a different internal construction from SHA-2, giving a hedge against structural attacks on SHA-2.
CRC32 is an error-detection checksum, not a cryptographic hash — trivial to forge but great for catching accidental corruption.
HMAC combines a hash with a secret key to prove a message came from someone who holds that key.
File hashing runs in a background Worker so hashing several large files doesn't freeze the tab, with per-file progress and a Cancel button. crypto.subtle.digest() has no incremental/streaming API, so progress is reported per file (file N of M), not as a byte-level bar within one file's own digest — showing that would be a fake number, not a real one.
Manifest verification checks each hashed file's SHA-256 against a pasted sha256sum-format list (<hex> filename per line) and flags matches, mismatches, files missing from the manifest, and manifest entries with no matching file.
All hashing happens locally, including inside the Worker. Nothing you enter, drop, or paste as a manifest here is transmitted, logged, or stored.