Result
This page has no server side at all. The table you paste is parsed by JavaScript inside your own browser, the chart is drawn on a canvas element on your machine, and the export file is assembled locally. Nothing is uploaded, stored or written to any log. You can disconnect from the network after the page has loaded and everything will still work — which is the simplest way to verify the claim yourself.
Facts and limits of this method
| Alphabet | a-z, A-Z — the 26 letters of the English alphabet in both cases |
|---|---|
| Unicode range | U+0041–U+005A and U+0061–U+007A — basic ASCII Latin |
| Not counted as a letter | Digits, spaces, punctuation, Cyrillic, emoji |
| Case | Uppercase and lowercase letters count equally, case does not affect the total |
| Accented letters | é, ñ, ü and other extended Latin letters outside a-z/A-Z are not counted |
| Speed | Recalculates on every keystroke, no delay, text never leaves the browser |
When it misleads you
- The tool only matches basic Latin letters using the pattern [a-zA-Z]. Extended Latin letters with diacritics — French é, è, ç, German ä, ö, ü, ß, Spanish ñ, á — are excluded from the count even though they visually look like ordinary Latin letters.
- Mixed words are counted partially: in "email-адрес" only the letters in "email" are counted, while "адрес" falls under the Cyrillic character count and the hyphen goes into "other characters".
- Abbreviations and Latin-script codes (URLs, brand names, HTML tags inside text) are counted the same as ordinary words — the tool has no notion of context, it just matches characters.
- Roman numerals (IV, XX, MCM) are actually made of the Latin letters I, V, X, L, C, D, M, so the tool correctly counts them as letters — it has no way to tell a Roman numeral apart from an ordinary word, since a regular expression sees the same characters either way.
How it is calculated
The text is checked character by character against the regular expression [a-zA-Z], which lists the 26 letters of the English alphabet in lower and upper case. Every match increases the counter by one.
The Latin share is the number of Latin letters divided by the total text length (every character, including spaces and punctuation), multiplied by 100.
"Other characters" is everything that did not match the Latin pattern: digits, punctuation, spaces, Cyrillic, characters from other alphabets and emoji. It is computed as the total length minus the Latin letter count.
Counting operates on JavaScript string code points, so accented letters outside the basic ASCII range (for example, é as a single composed code point) don't match [a-zA-Z] and end up in "other characters".
Questions and answers
Are accented letters like é or ü counted?
No, the pattern [a-zA-Z] covers only basic ASCII Latin. Accented letters are excluded and counted as "other characters" instead.
Does letter case matter?
No, uppercase and lowercase letters are counted the same way — "A" and "a" contribute equally to the total.
Is this useful for counting Latin script in mixed Russian-English text?
Yes, that's one of its main uses — the tool separates Latin letters from Cyrillic, digits and punctuation, which is handy for estimating the share of English-language inserts.
What falls into "other characters"?
Everything that isn't a Latin-alphabet letter: digits, spaces, punctuation, Cyrillic letters, accented letters, and emoji.
Is my text sent anywhere?
No. The whole count runs in your browser; the text is never transmitted anywhere.