Hash generator

SHA-256 and SHA-1 via Web Crypto, or MD5 as a checksum only. Nothing is uploaded.

Docify's hash generator digests UTF-8 text (TextEncoder) or raw file bytes (File.arrayBuffer) in your browser. SHA-256 and SHA-1 use crypto.subtle.digest. MD5 is RFC 1321 in JavaScript — checksum only, not a password hash. Output is hex. Nothing is uploaded.

Text (UTF-8)
Digest

Hash output will appear here as hex...

How it works

  1. Hash is a button, not as-you-type. Empty text is rejected.
  2. Text is encoded with TextEncoder (UTF-8). A file is hashed from File.arrayBuffer() — raw bytes, not a data URL. The whole file is read into memory.
  3. SHA-256 and SHA-1 call crypto.subtle.digest with those FIPS 180-4 names. SHA-1 is collision-broken and is not for signatures or passwords. There is no SubtleCrypto fallback.
  4. MD5 is RFC 1321 in JavaScript (not SubtleCrypto). It is a legacy checksum only. Uppercase reformats the stored digest (toUpperCase() on the hex). Copy writes that hex. Not HMAC, bcrypt, or a file verifier.

FAQ

Does this generator upload anything?
No. Hashing runs in your browser. The page does not send the text or file bytes to a server.
How are SHA-256 and SHA-1 computed?
Both use crypto.subtle.digest with the FIPS 180-4 names "SHA-256" and "SHA-1". Text is encoded with TextEncoder (UTF-8). A file is hashed from File.arrayBuffer() — the raw bytes, not a data URL. SHA-1 is collision-broken and is not a signature or password scheme. crypto.subtle exists only in a secure context (HTTPS or localhost).
Why is MD5 labeled checksum-only?
SubtleCrypto has no MD5. This page implements RFC 1321 in JavaScript. MD5 collisions are practical, so the hex is a legacy fingerprint or cache key — not integrity, not a password hash, and not HMAC.
Is this HMAC, bcrypt, or a file verifier?
No. There is no keyed MAC, no salt, no password KDF, and no comparison against a stored digest. Output is lowercase hex unless Uppercase is checked. Empty text is rejected; an empty file hashes zero bytes.

Related