What does a SHA3-256 hash generator do?
A SHA3-256 generator hashes your text with the 256-bit SHA-3 function from FIPS 202 and returns a 64-character hex digest. It's the SHA-3 counterpart of SHA-256: same output size, same security targets, but built on the Keccak sponge, which makes it immune to length-extension attacks. Encoding is UTF-8, output is lowercase.
Paste text, click Generate, copy the result. Nothing is trimmed, so a trailing newline from a copied line changes the digest.
SHA3-256 vs Keccak-256
If you work anywhere near Ethereum, this is the section that matters. Ethereum adopted Keccak before NIST finished standardizing it. The final standard changed one detail: before padding, FIPS 202 appends two extra bits (01) to separate the SHA3 hash functions from the SHAKE functions. The permutation is identical, but the padded input differs, so every output differs.
| Input | SHA3-256 (this tool) | Keccak-256 (Ethereum) |
|---|---|---|
abc |
3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 | 4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45 |
hello world |
644bcc7e564373040999aac89e7622f3ca71fba1d972fd94a31c3bfbf24e3938 | 47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad |
In the code the difference is a single byte: SHA-3 pads with 0x06, original Keccak with 0x01. Solidity's keccak256(), Ethereum addresses and function selectors all use the Keccak column. If you're checking those, this tool will give you a "wrong" answer; that's expected. The SHA3-256 column is what you get from OpenSSL's -sha3-256, Python's hashlib.sha3_256, Node's createHash('sha3-256') and PHP's hash('sha3-256', ...).
The SHA3-256 value for abc is also NIST's published example value, so it doubles as a quick self-test for any implementation.
Verify a value someone sent you
- Make sure you have the exact text that was hashed, including case, spacing and line endings.
- Paste it here and click Generate.
- Compare against the expected digest, ignoring letter case.
- If it doesn't match, run it through OpenSSL to rule out a whitespace problem in the browser copy:
printf '%s' 'abc' | openssl dgst -sha3-256
- If OpenSSL matches you but not the sender, they may be using Keccak-256 or a different text encoding.
Why choose SHA3-256 at all?
SHA-256 is still unbroken, and NIST hasn't deprecated it. SHA3-256 is worth reaching for in a few situations:
- Designs that would otherwise need HMAC for safety. Because the sponge never outputs its 512-bit capacity, a digest can't be extended the way SHA-256's can. For a standardized keyed MAC on SHA-3, NIST defines KMAC in SP 800-185, the SHA-3 family's answer to HMAC.
- Post-quantum standards. ML-KEM (FIPS 203), NIST's lattice-based key-encapsulation standard, uses SHA3-256 as its hash function H, alongside SHA3-512 and the SHAKE functions. Implementers checking intermediate values need exactly this function.
- Diversity. Systems that already hash with SHA-2 sometimes use SHA-3 for a second, independent check, so a single algorithmic break doesn't defeat both.
On the cost side, there's no SHA-3 in the browser's Web Crypto API and fewer CPUs accelerate it, so SHA-256 is usually faster in practice.
Parameters at a glance
SHA3-256 uses a 1,088-bit rate (136 bytes absorbed per Keccak-f[1600] permutation) and a 512-bit capacity, giving 128-bit collision and 256-bit preimage resistance. SHAKE256 runs on exactly the same rate and capacity; it only differs in its padding bits and in letting you choose the output length. Try the SHAKE256 generator to see how that changes the output.
For the SHA-2 equivalent, use the SHA-256 hash generator. If you need SHA-3 at a higher security level, the SHA3-512 generator doubles the output. To authenticate a message with a shared secret today, the HMAC generator works with SHA-256 and any server that supports it.
Last updated