Text hash inputs
Hashes UTF-8 text exactly as shown; leading and trailing spaces are included.
SHA-256 is a practical default; choose MD5/SHA-1 only for legacy comparisons.
Enter any UTF-8 salt or use Random for a 16-byte hex salt; blank means unsalted.
Choose prefix or suffix to match the published or agreed salt rule.
Toggle uppercase A-F only when matching an uppercase checksum.
{{ uppercase ? 'On' : 'Off' }}
# When Input (chars) Type Case Salt Digest Copy
{{ i+1 }} {{ formatWhen(r.ts) }} {{ r.input_len }} {{ r.hash_type }} {{ r.uppercase ? 'UPPER' : 'lower' }} {{ r.salt ? r.salt + ' (' + r.salt_position + ')' : '-' }} {{ r.digest }}
No saved digests yet
Use Save after reviewing the current digest to add it to the export ledger.
Profile field Value Copy
{{ row.label }} {{ row.value }}

            
Customize
Advanced
:

Introduction

Text hashes are useful when a short piece of text needs to be compared as exact data rather than reread as language. A command, configuration value, release note, identifier, token label, or message can be turned into a fixed-length digest that is easier to copy, store, and compare than the original text. The digest changes when the underlying bytes change, even when the sentence still looks the same to a reader.

The useful promise is repeatability. The same text, encoded the same way, passed through the same hash algorithm, with the same salt rule, produces the same digest. Change any of those pieces and the result changes. That makes hashes good at catching accidental edits, copy-and-paste changes, and mismatched checksum records, but it also makes ordinary-looking details matter. A trailing newline, a non-breaking space, a tab, or a visually similar Unicode character can be enough to break a match.

Common text hashing comparisons
Comparison type Useful for Important limit
Plain text hash Checking whether the same bytes were hashed under the same algorithm. Does not prove who created the text or whether the reference digest is trustworthy.
Digital signature Proving that a trusted private key approved a message or file. Needs a key, signature format, and trust chain; a plain digest is not enough.
HMAC Authenticating a message with a shared secret key. A salt is not a secret key and does not turn a plain hash into an HMAC.
Password hash Storing credentials with slow, purpose-built password hashing. Fast digest algorithms are the wrong tool for password storage.

Algorithm choice changes both the digest length and the security meaning. SHA-2 and SHA-3 are the normal choices when a new general-purpose digest is needed. MD5, SHA-1, and RIPEMD-160 still appear in older checksum lists and compatibility workflows, so they remain useful for reproducing old records, not as recommendations for new trust-sensitive designs.

Text and optional salt are combined, hashed, and shown as a fixed-length hexadecimal digest.

Salt is easy to misunderstand in plain text hashing. A salt is just extra text placed before or after the message before the hash runs. It changes the digest and can make repeated values less obvious, but it is not a password policy, an encryption key, or proof that a digest is safe to publish. Anyone verifying the digest needs the same salt text, the same position, and the same text encoding.

A digest is a fingerprint, not a recovery method. It cannot turn the digest back into the original text, and it cannot by itself prove authorship, permission, or intent. Higher-trust workflows use signatures, HMACs, authenticated distribution channels, or password-specific hashing systems depending on the risk.

How to Use This Tool:

The result updates from the visible text and settings. Keep the settings with the digest whenever another person or system needs to reproduce the same value.

  1. Replace the sample in Text to hash with the exact text you want to compare. Leading spaces, trailing spaces, tabs, and line breaks are included.
  2. Choose Hash type. SHA-2-256 is a sensible default for a new text fingerprint; choose MD5, SHA-1, or another family only when an existing record requires it.
  3. Open Advanced when you need a salt, a specific salt position, or uppercase hexadecimal output. Leave Salt blank for an ordinary unsalted digest.
  4. Use Random only when you also have a place to record the salt. It creates a 16-byte value shown as hexadecimal text, and verification fails unless that value is reused exactly.
  5. Check the summary before copying. It shows the algorithm, the text length in characters and UTF-8 bytes, the digest length, the salt state, the case setting, and the number of saved rows.
  6. Use Copy for the current digest, or Save after you confirm the run. Saved Digests keeps the timestamp, input character count, hash type, case, salt state, and digest for comparison.
  7. Open Digest Profile when a mismatch needs diagnosis. Compare Digest characters, Input bytes (UTF-8), Salt mode, and Hex casing before assuming the text itself is wrong.

If the digest looks wrong, look for pasted whitespace first, then recheck the algorithm and salt position. Those checks catch most text-hash mismatches faster than retyping the whole value.

Interpreting Results:

The digest value only has meaning with its settings. A 64-character hexadecimal string could be a SHA-256 digest, a SHA3-256 digest, or something else with the same output length. Keep the algorithm, salt text, salt position, case choice, and input length with the digest when you share or archive it.

A match proves that the same input was hashed under the same visible rules. It does not prove that the reference digest came from the right person, that the text is safe, or that MD5 or SHA-1 is acceptable for a new security-sensitive workflow. Verify the source of the reference digest before relying on the match.

How to read text hash outcomes
Outcome Read it as Verify next
Digest matches with the same algorithm and salt rule The compared byte sequence was the same under those rules. Check that the reference digest came from a trusted record or channel.
Only letter case differs The digest value is the same; only hexadecimal display changed. Use the case style required by the receiving system.
Digest characters differs from the reference The selected hash family or digest size is probably different. Compare Hash type and Algorithm family in Digest Profile.
Digest length matches but value differs The text, whitespace, salt text, or salt position probably differs. Compare Input characters, Input bytes (UTF-8), and Salt mode.
MD5 or SHA-1 reproduces an old checksum The legacy record was reproduced, not upgraded. Use the match for compatibility only, then choose SHA-2, SHA-3, HMAC, or signatures for new trust-sensitive work.

Saved rows are comparison records. They do not save the raw original text, but they can save salt values and digest outputs, so treat the saved ledger as sensitive when the salt or digest would reveal something about a private workflow.

Technical Details:

Cryptographic hash functions map messages of arbitrary length to fixed-size message digests. The output size is set by the selected algorithm, so SHA-256 always produces 256 bits and SHA3-512 always produces 512 bits. The hexadecimal display is twice the byte count because each byte is represented by two base-16 characters.

The exact input to the hash is the important object. Human-readable text must become bytes before it is hashed, and the profile reports both character count and UTF-8 byte count because those values diverge for many non-ASCII characters. The character é, for example, may look like one character while occupying more than one UTF-8 byte, and a visually similar composed or decomposed form can hash differently.

Plain text hashing does not normalize meaning. It does not trim spaces, ignore capitalization, treat Windows and Unix line endings as equivalent, or combine visually similar Unicode forms. That precision is helpful for exact comparisons, but it also means a digest mismatch can come from formatting rather than from an intentional content change.

Transformation Core

Salt is concatenated with the text before the selected hash algorithm runs. Prefix and suffix salt are different messages.

d = hex(H(t)) no salt d = hex(H(s||t)) prefix salt d = hex(H(t||s)) suffix salt

Here t is the exact UTF-8 text, s is optional UTF-8 salt text, H is the selected hash algorithm, and d is the displayed digest. The Uppercase output setting changes only the letters a through f in the hexadecimal display; it does not change the underlying digest bytes.

Supported hash algorithms and digest sizes
Hash type Algorithm family Digest bits Hex characters Best reading
MD5 Legacy digest 128 32 Reproduce older checksums; avoid where collision resistance matters.
SHA-1 SHA family 160 40 Reproduce older records; avoid for new security-sensitive use.
SHA-2-224 SHA family 224 56 Use when an outside record or policy names the 224-bit SHA-2 variant.
SHA-2-256 SHA family 256 64 General default for a new plain digest when no stronger requirement is given.
SHA-2-384 SHA family 384 96 Longer SHA-2 option for policies or peers that require it.
SHA-2-512 SHA family 512 128 Longest SHA-2 option in the available set.
SHA-3-224 to SHA-3-512 NIST SHA-3 224 to 512 56 to 128 Use when a SHA-3 digest is explicitly needed.
RIPEMD-160 RIPEMD 160 40 Compatibility option for systems that still name RIPEMD-160.

Digest length is a useful first diagnostic because it follows a simple rule: hexadecimal characters equal digest bits divided by four. A 64-character output is consistent with a 256-bit digest, but length does not identify the algorithm by itself. SHA-256 and SHA3-256 both produce 64 hexadecimal characters.

Text hash change rules
Change Digest value changes? Reason
Text characters, spaces, line breaks, or Unicode form changes Yes The message bytes are no longer the same.
Hash type changes Yes A different hash function maps the message to a digest.
Salt is added, removed, or edited Yes The salt becomes part of the message before hashing.
The same salt moves from prefix to suffix Yes Concatenation order changes the message bytes.
Uppercase output changes No Only the rendered hexadecimal letters change case.

Plain hash functions are intentionally fast. That speed is useful for checksums and repeated comparisons, but it is the wrong property for password storage, where attackers can try many guesses. Password storage needs purpose-built schemes such as Argon2id, scrypt, bcrypt, or PBKDF2 with tuned work factors and per-password salts.

Limitations and Privacy Notes:

The digest calculation runs in the browser after the page has loaded. Normal page-loading requests are separate from the text you enter, and the entered text is not required to leave the browser for the hash calculation.

Changed fields can be reflected in the address bar so the same settings can be revisited. Do not share the address bar after entering confidential text or salt unless you intentionally want those values in the link.

Saved digest rows remain in browser storage on the current device. The saved ledger stores settings, salt text when present, lengths, timestamps, and digest output; it does not store the raw original text. Clear the saved rows through browser or site data controls if those comparison records should not remain on the device.

Use this for exact text fingerprints, compatibility checks, and digest comparisons. Do not treat a plain digest as encryption, a signature, HMAC authentication, malware analysis, or password storage.

Worked Examples:

Default SHA-256 fingerprint

Keep Text to hash as The quick brown fox jumps over the lazy dog, leave Salt blank, and use SHA-2-256. The Digest value is d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592, with Input characters at 43 and Digest characters at 64.

Salt position comparison

For customer-4471 with SHA-3-256 and salt stage, prefix salt hashes stagecustomer-4471 and gives b255686c5195d660a33ab9d7d8704fbf357e791b3625ec48ff34f5db27375160. Suffix salt hashes customer-4471stage and gives 437896a064a5a391eeb5da7590a8d38093d1b91c7c02379b3a71538959f4ef58. Both outputs have 64 Digest characters, so the value change comes from Salt mode, not digest size.

Hidden newline mismatch

Hashing api-key-prod with SHA-2-256 gives 7932f43b4531d71770d1cb7341c686cb96650bfafab01a086b69181c487801ec. Hashing the same visible text with a trailing newline gives 7925a3081bc8af2c0a848d580697088fbe8e517b5ba95e665318d9ea04a1b618. Digest Profile reveals the cause because Input characters changes from 12 to 13.

Legacy checksum reproduction

If an old record names MD5 for build-2026-05-31, the digest is ffc0214d9ce7a1c8930c4ac6617e850c and Digest characters is 32. That can confirm the old record was reproduced, but it should not be used as the algorithm choice for a new security-sensitive reference.

FAQ:

Why did my digest change when the text looked the same?

The usual causes are hidden whitespace, a line ending, a visually similar Unicode character, the wrong Hash type, a different Salt, or the same salt in the wrong position. Compare Input characters and Input bytes (UTF-8) first.

Does uppercase output change the hash?

No. Uppercase output changes only the display casing of hexadecimal letters. The digest bytes stay the same.

Which hash type should I choose?

Use SHA-2-256 for a new general-purpose text fingerprint unless a policy or reference says otherwise. Use legacy choices such as MD5 or SHA-1 only to reproduce an existing checksum.

Does saving a row store my original text?

No. Saved rows store lengths, timestamp, hash type, case, salt details, and the digest. They do not store the raw text, but saved salts and digests can still be sensitive.

Why does the address bar change after I edit fields?

The page keeps changed settings in the address bar so a state can be revisited. If the text or salt is private, avoid sharing that link.

Can this protect passwords?

No. Password storage needs a slow password-hashing scheme with a work factor, memory or iteration settings, and per-password salt handling. A fast text digest with optional concatenated salt is not enough.

Glossary:

Digest
The fixed-length fingerprint produced from the selected text, algorithm, and salt rule.
Salt
Extra text concatenated before or after the original text before hashing.
UTF-8
A common text encoding where one visible character may use one or more bytes.
Hexadecimal
Base-16 text using digits 0-9 and letters a-f to display binary digest bytes.
Collision resistance
The difficulty of finding two different messages that produce the same digest.
Preimage resistance
The difficulty of finding an original message that matches a known digest.
HMAC
A keyed message authentication code that combines a hash function with a shared secret key.

References: