Hash & ID Generator
Hash text or a file with MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512 (optionally HMAC), verify a checksum, or generate UUIDs, ULIDs and nanoids in bulk.
Settings
Hex · lowercase
How to Use Hash & ID Generator in 3 Steps
Hash text or a file
Type text or drop any file (up to 50 MB) — MD5, SHA-1, SHA-256, SHA-384 and SHA-512 are computed at once with the browser’s Web Crypto. Add an HMAC key to get keyed hashes; paste an expected checksum into Verify against and the matching algorithm lights up green (or red).
Generate IDs
Switch to IDs: UUID v4 for random identifiers, UUID v7 or ULID when you want them to sort by creation time, nanoid for short URL-safe tokens, or a numeric code. Set how many (up to 1,000) and the format; paste a v7 / ULID into the decode box to read its timestamp.
Copy or export
Click any row to copy that value, or use Copy for all of them. Download as text, JSON or CSV.
Hash & ID Generator — Frequently Asked Questions
Is MD5 safe to use?
For checksums (did my download arrive intact?) and non-security fingerprints, yes. For passwords, signatures or anything an attacker could tamper with, no — MD5 and SHA-1 are broken for collision resistance; use SHA-256 or better, and for passwords use a dedicated slow hash (bcrypt, scrypt, Argon2) on the server.
How are the hashes computed?
SHA-1/256/384/512 and HMAC use the browser’s native crypto.subtle; MD5 is a small built-in implementation (Web Crypto deliberately omits it), checked against the RFC 1321 test vectors. Files are read into memory and hashed in one call — fine up to the 50 MB limit.
UUID v4 or v7?
v4 is 122 random bits — use it when ordering doesn’t matter. v7 puts a millisecond timestamp in the first 48 bits, so ids generated later sort later: much friendlier for database indexes and logs. ULID is the same idea in a shorter, case-insensitive base32 form. All three are generated with crypto.getRandomValues.
How random are nanoids and short ids?
They use crypto.getRandomValues with rejection sampling, so every character is uniformly random — no modulo bias. A 21-character nanoid (the default) has the same collision resistance as a UUID v4; the length box lets you trade length for safety.
Why can’t I see the file’s hash while typing?
Dropping a file replaces the text — the hash is of the file’s bytes, not its name. To hash text again, clear the box or press Reset.
Is my code uploaded anywhere?
No. Formatting and minifying run in JavaScript inside your browser tab. The formatter libraries are downloaded once from a CDN; your code never leaves the page.