GlobalKit

Hash Generator

Hash text with MD5, SHA-1, SHA-256, SHA-384 and SHA-512 at once, as hex or Base64. The text is read as UTF-8 and never leaves your browser.

UTF-8 text, up to 500,000 characters. Nothing is sent to a server.

Applies to hex output only.

Your text is hashed in your browser and never leaves your device.

AlgorithmHashCopy
MD5Not safe for passwords or signatures
SHA-1Not safe for passwords or signatures
SHA-256
SHA-384
SHA-512

MD5 and SHA-1 have known collisions: different inputs with the same hash have been demonstrated. Do not use them for passwords, signatures or security checks. They are fine as a plain checksum or cache key.

A hash is not encryption. It cannot be decoded back into the original text; it can only be compared with the hash of a guessed text.

The same text gives the same hash only if every byte matches: line endings (LF vs CRLF), a trailing newline or space, and the text encoding (this tool uses UTF-8) all change the result.

How it works

A hash function takes any sequence of bytes and returns a fixed-size value, the digest. The same bytes always give the same digest, and a change of even one byte gives an unrelated-looking one. There is no key and no secret, so there is also nothing to decode: a digest cannot be turned back into the input.

The page turns your text into bytes (UTF-8, see below), hashes those bytes with five algorithms at once and shows each result as hex or Base64.

AlgorithmDigest sizeHex charactersBase64 charactersStatus
MD516 bytes3224Collisions demonstrated
SHA-120 bytes4028Collisions demonstrated
SHA-25632 bytes6444No such weakness known
SHA-38448 bytes9664No such weakness known
SHA-51264 bytes12888No such weakness known

How each is computed. Web Crypto does not offer MD5, so it is implemented in this page's code following RFC 1321: padding as in sections 3.1 and 3.2, 64 steps in four rounds as in section 3.4, with the constants derived from the sine function. The implementation is checked against the RFC's own test suite (appendix A.5) and against Node's MD5 on inputs around every padding boundary. SHA-1, SHA-256, SHA-384 and SHA-512 (FIPS 180-4) come from the browser's crypto.subtle.digest. Web Crypto is only available on secure pages (HTTPS) and is missing from very old browsers; where it is unavailable, the SHA rows say so and MD5 still works.

Text becomes bytes as UTF-8. Letters outside ASCII take more than one byte, and the digest depends on the exact bytes. The page does not trim whitespace, change line endings or apply Unicode normalization. A single unpaired surrogate cannot be written in UTF-8 and is replaced with U+FFFD before hashing.

Output. Hex is lowercase by default, with an uppercase option. Base64 is RFC 4648 section 4, with padding, of the raw digest bytes. Empty text is valid and gives the hash of zero bytes. Input can be up to 500,000 characters.

Examples

All values below are asserted in the tool's tests.

TextAlgorithmHex digest
(empty)MD5d41d8cd98f00b204e9800998ecf8427e
(empty)SHA-1da39a3ee5e6b4b0d3255bfef95601890afd80709
(empty)SHA-256e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
aMD50cc175b9c0f1b6a831c399e269772661
abcMD5900150983cd24fb0d6963f7d28e17f72
abcSHA-1a9993e364706816aba3e25717850c26c9cd0d89d
abcSHA-256ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
message digestMD5f96b697d7cb7938d525a2f31aaf161d0
abcdefghijklmnopqrstuvwxyzMD5c3fcd3d76192e4007dfb496cca67e13b

The MD5 rows are entries of the RFC 1321 test suite; the suite has seven, and the other two (the 62-character letters-and-digits string and the 80-digit string) are tested too. The tests also include the SHA-384 and SHA-512 hashes of abc.

One digest, two spellings. MD5 of abc is 900150983cd24fb0d6963f7d28e17f72 in lowercase hex, 900150983CD24FB0D6963F7D28E17F72 in uppercase hex and kAFQmDzST7DWlj99KOF/cg== in Base64. They are the same 16 bytes.

Why byte counts matter. The text ş is 2 bytes in UTF-8, not 1. The test string şğüİıß 😀 is six two-byte letters, a one-byte space and a four-byte emoji: 17 bytes, which is the number the Input size line shows. The same text in UTF-16 or Latin-1 would be a different byte sequence and a different hash.

Invisible differences. a + line feed + b is 3 bytes. With a carriage return before the line feed (Windows line ending) it is 4 bytes, and with a newline added at the end it is also 4 bytes. All three give different SHA-256 hashes. In the same way, é as one code point is 2 bytes and e followed by a combining accent (U+0301) is 3, so they hash differently even though they look identical.

Things to watch for

Frequently asked questions

Last updated: 10/11/2026

Related tools