TextBench Guide

How to count characters, words and SMS parts, and how to write a Ukrainian name in Latin for a passport

TextBench keeps one text box and eight tools around it: a counter with platform limits and SMS parts, transliteration by the official Ukrainian rules, case, fancy fonts, typography, Markdown with HTML and PDF export, line tools and a compare. This guide explains what each number means and which rule turned a letter into what.

By the fof.lol team · Updated · 10 min read

Open TextBench

One text box for every tool

Type, paste or open a .txt file in the box on the left (on a phone, at the top). The tabs above it — Counter, Transliteration, Case, Fancy fonts, Typography, Lines and Compare — all work with the same text, so it is never lost when you switch. Every tab has its own address (#/count, #/translit, #/case, #/fonts, #/typo, #/lines, #/diff): bookmark the one you need, and the page remembers the last one you opened.

Tools that change the text (case, line tools, Put into the text box) can always be undone: press Ctrl+Z (Cmd+Z on a Mac) or the arrow under the box, and Ctrl+Shift+Z or Ctrl+Y to redo. Typing is undone in bursts, as in a text editor. Copy takes the whole text in one press, Save .txt downloads it.

Characters, words and reading time

  • Characters are what people count: an emoji or a letter with an accent is one character, even if the computer stores it as two units. Without spaces leaves out spaces, tabs and line breaks.
  • Words are runs of letters and digits; a hyphen or an apostrophe inside keeps a word whole, so «м’ясо», «Івано-Франківськ» and «don’t» are one word each.
  • Sentences end with ., !, ? or … before a space, or with a blank line. Abbreviations such as «т. зв.» or «e.g.» add a sentence, so treat the number as an estimate.
  • Paragraphs are separated by blank lines; Lines are the non-empty lines.
  • Reading time assumes 200 words a minute and Speaking time 130: good for a talk, a video script or a podcast intro.

Most frequent words lists the top twelve, ignoring case. With Skip short common words on, words such as «і», «на», «що», «the» and «and» are left out, so the words that really carry the text come to the top: handy for checking keywords or a word you repeat too often.

Limits of X, Telegram and Instagram

WhereLimitHow it counts
X (Twitter) post280Latin, Cyrillic and punctuation count 1; emoji and Chinese, Japanese or Korean characters 2; every link 23, however long
Telegram message4096UTF-16 units: an emoji takes two
Telegram photo caption1024the same; 4096 with Telegram Premium
Instagram bio150characters
Instagram caption2200characters
Meta description160Google cuts the search snippet by width, roughly at 155–160 characters

The bar turns orange after 90% of a limit and red when you are over; the line beside it says how many characters are left or how many to cut.

How many SMS my message takes

An SMS carries 140 bytes. In the GSM-7 alphabet (Latin letters, digits, common punctuation and a few accented letters) each character takes 7 bits, so one message holds 160 characters. As soon as the text has one character outside that alphabet — any Cyrillic letter, an emoji, the guillemets «», the apostrophe ’ or a long dash — the whole message switches to UCS-2, two bytes per character, and holds only 70.

A longer message is split into parts, and each part loses a few characters to a header that tells the phone how to put them back together: 153 per part in GSM-7 and 67 in UCS-2. So 160 Latin letters are one SMS, 161 are two, and 71 Cyrillic letters are already two. The characters ^ { } [ ] ~ \ | € take two places in GSM-7, and an emoji takes two in UCS-2; neither is ever split between parts.

The counter shows the number of parts, the encoding, how many characters are left in the current part and, for UCS-2, the exact characters that caused the switch. Two buttons help to fit into fewer messages: Plain quotes, dashes and spaces replaces «» “” ’ — … and non-breaking spaces with their plain versions, and Write in Latin (passport rules) transliterates the text. Operators may still bill differently, and some phones replace characters on their own, so the count is what the standard says, not a promise of your bill.

Ukrainian in Latin for a passport

Passport rules follow Resolution No. 55 of the Cabinet of Ministers of Ukraine of 27 January 2010, «Питання упорядкування транслітерації українського алфавіту латиницею». It is used for passports, driving licences and other documents, for place names and for road signs. IN CAPITALS gives the same result in capital letters, as in a passport or on a bank card.

LettersLatinExample
г, ґh, gБогдан — Bohdan, Ґалаґан — Galagan
и, іy, iДмитро — Dmytro, Іванків — Ivankiv
ж, х, ц, ч, ш, щzh, kh, ts, ch, sh, shchХарків — Kharkiv, Щербухи — Shcherbukhy
є, ї, й, ю, я at the start of a wordye, yi, y, yu, yaЄнакієве — Yenakiieve, Їжакевич — Yizhakevych, Юрій — Yurii
є, ї, й, ю, я elsewhereie, i, i, iu, iaОлексій — Oleksii, Миколаїв — Mykolaiv, Наталія — Nataliia
згzghЗгурський — Zghurskyi, Розгон — Rozghon
ь and the apostrophenot writtenТернопіль — Ternopil, Мар’їне — Marine

Under the result, Letter by letter shows every letter with its Latin and colours the ones that followed a special rule: the start of a word, the middle of a word, «зг», and the soft sign or apostrophe that disappeared. Hover or tap a letter to read the rule. A word starts after a space, a hyphen or punctuation, so in «Івано-Франківськ» the second part starts a new word too; an apostrophe does not start a word, so «Мар’їне» gives Marine, not Maryine. Letters that are not Ukrainian (ё, ъ, ы, э) are left as they are and marked red.

The resolution is about Ukrainian names. A name already written in your old passport or in another document can differ; for a new document the service usually follows the resolution, and keeping the spelling of an earlier document is a separate request. Check that letters and spaces match exactly before you buy a ticket.

ISO 9 and why passport Latin has no way back

Passport Latin loses information: «i» may have been і, ї or й, «ia» may be я or ія, «sh» may be ш or сх. So nobody can turn Yurii back into Ukrainian with certainty, and TextBench does not pretend to.

ISO 9 (ISO 9:1995, the same as system A of GOST 7.79) gives every Cyrillic letter its own Latin letter with diacritics: щ is ŝ, ж is ž, я is â, ї is ï, ґ is g̀. Libraries and scientific texts use it, and because nothing is lost, ISO 9 → Cyrillic turns such text back exactly. It works only for text in ISO 9: ordinary English or passport spelling turned «back» this way gives nonsense.

Case and fancy fonts

UPPER CASE, lower case, Title Case (every word with a capital), Sentence case (a capital at the start of every sentence and line, the rest small) and iNVERT cASE change the whole text. The styles for code and file names — camelCase, snake_case, kebab-case and CONSTANT_CASE — work line by line and split words on spaces, punctuation and existing capitals, so parseHTTPResponse becomes parse_http_response. With Cyrillic to Latin first on, «Нова пошта» becomes novaPoshta, safe for any file system or programming language.

Fancy fonts are not fonts at all. Unicode has mathematical letters (bold, italic, script, gothic, double-struck, monospace), letters in circles and squares, full-width letters and small capitals; they look like styled text, so they paste into an Instagram bio or a caption anywhere. Each style has its own copy button. Be honest with yourself about the costs:

  • these sets exist only for Latin letters and digits. Cyrillic letters stay as they are, and the card says how many were left unchanged;
  • lines — strike-through, underline, double underline, overline and slash — are combining marks added after each letter, so they work for Cyrillic too;
  • screen readers read such symbols letter by letter as «mathematical bold capital A» or skip them, and search does not find the words. Keep the important words, such as your name or what you do, in ordinary letters.

Typography: quotes, dashes, spaces

The Typography tab shows the corrected text with every change highlighted, and each rule has its own switch and counter:

  • Quotes: straight quotes become «guillemets», and quotes inside quotes become „these“, as Ukrainian typography wants. Choose “” ‘’ for English text.
  • Dash: a hyphen with spaces around it (or a double hyphen) between words becomes a dash — with a non-breaking space before it, so the dash never starts a line. Hyphens inside words, as in «Івано-Франківськ», stay.
  • Apostrophe: the typewriter ' between letters becomes ’.
  • Non-breaking spaces after one- and two-letter words and short prepositions (в, у, з, на, від, для…), between groups of digits (1 000 000), between a number and the word after it (5 км, 2026 року) and after № and §, so they do not hang at the end of a line.
  • Three dots become one ellipsis character …, and double spaces inside lines and spaces at the ends of lines are removed.

Yellow marks what changed (hover or tap it to see what was there before), a red bar marks something removed, and a dot under a gap is a non-breaking space. Copy result copies the corrected text and Put into the text box replaces your text with it; undo brings the old one back. On a very long text only the first 20,000 characters are highlighted, but both buttons take the whole text.

Markdown: preview, HTML and PDF

The Markdown tab shows the text of the box as a formatted document: headings (#), bold and italic, lists, task lists (- [ ]), quotes, tables, code blocks, links and pictures, in the GitHub flavour of Markdown. The buttons above the preview add the marks for you around the selection: heading (press again for a smaller one), bold (Ctrl+B), italic (Ctrl+I), strike-through, code, link (Ctrl+K), the three kinds of lists, a quote, a code block, a table and a dividing line; a second press takes a mark off again. Every change can be undone. Show an example fills the box with a sample to start from.

  • Print or save as PDF sends only the document to the printer, in light colours, with the first heading as the title; choose «Save as PDF» in the print window to get a file.
  • Save .html makes a complete page with its own styles (light and dark), which opens in any browser without the internet; Save .md saves the Markdown itself. File names come from the first heading.
  • Copy formatted puts headings, lists and tables on the clipboard as formatting, so they paste into Google Docs, Word or a letter; Copy HTML copies the code, which HTML code also shows.
  • Every new line is a line break keeps single line breaks, as chats do; Table of contents puts a list of the headings at the top. Headings get anchors, so links such as [see](#route) work.

Safety. Markdown may contain HTML, and HTML from a stranger can carry a script that steals or changes what is on the page. So before anything is shown, copied, saved or printed, TextBench cleans the HTML with DOMPurify: scripts, event handlers such as onerror, javascript: links, frames, forms, inline styles and anything that could cover or restyle the page are removed. Pictures from other sites are not loaded in the preview (the site would learn that you are reading), but they stay in a saved .html file. In a very long document the preview shows the first 80,000 characters or so; printing, saving and copying always take all of it.

Lines and compare

The Lines tab works on lists: emails, names, keywords, product codes. Trim extra spaces, Remove empty lines and One empty line at most tidy a pasted list; Join into one line glues it with a space, a comma, a semicolon or nothing, and Mend broken lines in paragraphs repairs text copied from a PDF or an email, where every line ends with a break but blank lines still separate paragraphs. Remove duplicate lines keeps the first copy of each (with or without case). Sort A → Z follows the Ukrainian alphabet — Г before Ґ, Е before Є, И before І and Ї — and sorts numbers by value, so 2 comes before 10; English sorts as usual. Shuffle uses the browser’s cryptographic generator, and Number the lines adds 1., 2., 3. to every non-empty line.

Compare takes the text box as the old version and a second box as the new one. By words marks added words in green and removed ones in red inside the text, for edits of a contract or an article; By lines shows changed lines with + and −, and folds long unchanged stretches, for lists and code. Swap exchanges the two versions.

Privacy and the draft

All the work is done by your browser; the text is never sent anywhere, never put into the page address and never shared through a link. So TextBench suits contracts, personal data and unpublished posts. While you type, a draft of both text boxes is kept in this browser’s storage (localStorage), so the text is still there after a reload; nobody else can see it, and Clear (press twice) deletes the text and the draft together. A text longer than two million characters is not kept as a draft.

The page and its few scripts are cached the first time you open them, so TextBench also works offline and can be installed as an app. The only request besides the page itself is the privacy-friendly site analytics that fof.lol uses everywhere: it carries no text and drops everything after # in the address.

Limitations

  • Counts are close, not legal. Platforms change their rules, and X, for example, counts some emoji sequences differently. When a limit really matters, leave a few characters to spare.
  • Sentences are found by punctuation, so abbreviations and initials add sentences that are not there.
  • Transliteration follows the resolution for Ukrainian; it does not know how a particular person or company chose to spell their name.
  • Fancy fonts show only the first 1,000 characters (the copy button takes the whole text) and do not exist for Cyrillic.
  • Long texts are counted in the background, so typing never freezes; a megabyte takes a moment, and comparing two very different long texts word by word may give up and suggest comparing by lines. Files up to 20 MB can be opened.

Frequently asked questions

How do I write my name in Latin for a passport?

Type it on the Transliteration tab with Passport rules chosen: for example, Згурський Юрій becomes Zghurskyi Yurii. IN CAPITALS gives the spelling as printed in a passport.

Why does my SMS in Ukrainian take two messages already at 71 characters?

Cyrillic switches the whole message to the UCS-2 encoding, which fits 70 characters into one SMS and 67 into each part of a longer one. Latin text fits 160.

Can I turn Latin back into Ukrainian?

Only from ISO 9, where every letter has its own sign. Passport spelling loses information (і, ї and й can all become «i»), so it cannot be turned back reliably.

Will fancy fonts work in my Instagram bio?

Yes for Latin letters and digits: they are ordinary Unicode characters. Cyrillic stays as it is, except for strike-through and underline. Remember that screen readers and search handle them badly.

Is my text saved anywhere?

Only in this browser, as a draft, until you press Clear. It is never sent to fof.lol or anywhere else.

Is it safe to open someone else’s Markdown file?

Yes. Before the preview shows anything, DOMPurify removes scripts, event handlers, javascript: links, frames, forms and styles, and pictures from other sites are not loaded. The cleaned HTML is also what gets saved, copied and printed.

How do I turn Markdown into a PDF?

Open the Markdown tab, press Print or save as PDF and choose «Save as PDF» as the printer. Only the document is printed, without the rest of the page.

Does it work without the internet?

Yes. Once the page has been opened, every tool works offline, and you can add TextBench to the home screen as an app.

Try TextBench now

Paste a text and see its characters, words and SMS parts, or write a name in Latin for a passport with every letter explained.

Open TextBench

Related tools