Index of coincidence
Classic cryptanalysis statistic on the letters in a file. Helps tell natural-language text from a well-mixed cipher or random data.
Runs on your device. The file is never uploaded.
Index of coincidence counts the letters a to z in a file and reports the chance that two drawn at random match. Above 0.06 it reads as English, below 0.045 as flat, and between the two as inconclusive. Digits and punctuation are ignored, and a flat value fits base64 or a hash as well as a cipher.
Questions
What does the number mean?
It is the probability that two letters drawn from the text at random are the same letter, computed as the sum over each letter of n times n minus 1, divided by N times N minus 1. English text runs near 0.067 because some letters are far more common than others. A well-mixed cipher or random letters runs near 0.038, which is 1 over 26. The value is reported to four decimal places.
How should I read the verdict?
Above 0.06 the report calls it close to natural-language English. Below 0.045 it calls it close to uniform or random over the alphabet, consistent with a well-mixed polyalphabetic cipher or random letters. In between, it says the result is inconclusive and leaves it there rather than guessing. Those thresholds are conventions, not decisions: a short sample moves the statistic a long way.
What is counted?
Only the letters a to z, after the file is decoded as text and lowercased. Digits, spaces, punctuation, newlines and accented or non-Latin characters are all ignored and do not count toward the total. The output tells you how many letters were analysed, which is the number to check before you trust the result.
Why did I get "fewer than 2 letters found"?
Because the file held no letter-bearing text after decoding. That is what you get from a binary, from a base64 or hex blob with no letters in range, or from a file in an encoding that did not decode to Latin letters. The statistic needs at least two letters to have a denominator at all.
Does a low value prove I have a Vigenere cipher?
No. A low value says the letter frequencies are flat, which fits a polyalphabetic cipher, and equally fits random letters, base64 text, a hash written out in letters, or a language whose letter distribution differs from English. A high value likewise does not prove plaintext English, only that the frequencies are lumpy the way natural language is.
What do I run next?
If the value looks like English, the text might be a simple substitution or transposition, so try Caesar brute force and the classical cipher tools. If it looks flat, split the text into columns by a candidate key length and measure each column here: a periodic cipher shows English-like values once the period is right. Byte frequency and Entropy analysis answer the same shape of question over bytes rather than letters.