Cipher Identifier

Found a suspicious string in a CTF puzzle, a log file or an old document and can’t tell whether it’s Base64, hex, binary, Morse code or something else? Paste the text and the identifier runs character-set and structure checks to rank the most likely encodings and ciphers. A good first step before reaching for dedicated decoders.

How the cipher identifier works

  1. 1

    Paste the ciphertext

    Any length. Very short strings (< 20 chars) give weaker signals; longer text enables stronger classification.

  2. 2

    Character-set analysis

    Distribution of letters, digits and symbols narrows the candidates (all hex, all base64 alphabet, all uppercase Latin, etc.).

  3. 3

    Signature matching

    Length rules (even hex, base64 blocks of 4, 32/40/64 hex characters for hashes), separators (dots for JWT, dots and dashes for Morse) and well-known prefixes (eyJ, $2b$) are checked against known signatures.

  4. 4

    Ranked guesses

    All matching candidates are ranked by confidence and shown as percentages, so you know which decoder to try first.

Detection heuristics

Clue Likely cipher / encoding
Only A-Z a-z 0-9 + / =, length multiple of 4 Base64
Only 0-9 a-f, even length Hex
Only 0-1, 8 or more digits Binary
Only dots, dashes, slashes and spaces Morse code
Uppercase Latin letters only, 5+ letters Caesar or substitution cipher
20+ Latin letters, no spaces Monoalphabetic cipher
Mixed-case Latin letters Plain text, probably not a cipher
Three dot-separated segments, starts with eyJ JWT token
Starts with $2a$, $2b$ or $2y$ bcrypt hash
Exactly 32 hex characters MD5 hash
Exactly 40 hex characters SHA-1 hash
Exactly 64 hex characters SHA-256 hash

Giveaways beyond characters

  • Base64: blocks of 4, = padding at the end, includes + and /.
  • Caesar or substitution: uppercase Latin letters, no digits. The frequencies are those of the plaintext, just shifted.
  • Morse: dots, dashes, slashes and spaces only.
  • JWT: three segments separated by dots, usually starting with eyJ.
  • Hashes (MD5/SHA): fixed-length hex (32 chars for MD5, 40 for SHA-1, 64 for SHA-256). Not reversible, the identifier flags this so you don’t try to “decode”.
  • Binary: long runs of 0 and 1, often grouped in eights.

Limits of automated identification

  • Short inputs (<10 chars): confidence is low across the board. Could be anything.
  • Custom XOR with a one-time pad: indistinguishable from random without the key. The identifier will return no match.
  • Multiple layers: a common CTF trick is Base64 → reverse → Caesar → hex. Peel one layer at a time.
  • Non-English source language: the Latin-letter checks still apply, but “plain text” is only a guess; the identifier does not do language detection.

Confidence scoring

Each candidate carries a fixed confidence based on how specific its signature is. Above 80%: probable. 50-80%: plausible. Below 50%: long shot. Multiple matches usually mean either a short input or a hybrid cipher.

Frequently Asked Questions

Every cipher identification technique relies on statistical regularities, and statistics need enough data to be reliable. Under 20 characters, many ciphers look identical; 50+ characters give solid signals.

It only suggests the most likely scheme. Decoding happens in the dedicated decoder tools, and some decodings need a key you have to supply.

Check the character set first (what letters/symbols appear), then the length and structure. If it’s still unclear, try common-suspect decoders (Base64, hex, Caesar) one by one, on a CTF, frequency + guessing usually cracks it within a handful of attempts.

Probably not as a named match: it returns no candidates or a low-confidence guess. Compare the alphabet and structure of your ciphertext against the heuristics table above to reverse-engineer simple homemade schemes.

Related Tools