What placeholder text is for
Placeholder text fills a layout without ever being read. It has the shape of language — word lengths, sentence rhythm, paragraph mass — so a design behaves the way it will in production while carrying no meaning anyone can stop and argue about.
5 words → Lorem ipsum dolor sit amet. — exactly five, not about five: the closing sentence is trimmed to the count and re-punctuated
That exactness is the reason to generate rather than paste. A field capped at 140 characters, a card clamped to three lines, a summary budgeted at 50 words — each is a specific number, and guessing at it wastes the test. The other half of the choice is the source: Latin for the rhythm of English, German for length, Bangla for taller line boxes, pangrams and emoji for the glyph problems prose hides. Every batch after the first is composed in this tab, and no text is uploaded.
Why not just use real copy
Real copy gets read. Put a finished paragraph in a mockup and the review turns into a discussion of the wording, while the column width, the line height and the widow on line four all go unexamined.
Real copy in one language also hides how a layout fails in another. English words are short and evenly sized; German compounds overflow a fixed-width button, Bengali ascenders push line boxes taller than Latin ever does, and a single emoji occupies width no Latin glyph accounts for. Generating from those scripts on purpose surfaces the problem while it is still cheap to fix.
And exact counts are the real reason to reach for a generator rather than copying a paragraph from somewhere. A field capped at 140 characters, a card clamped to three lines, a summary column budgeted at 50 words — each of those is a specific number, and guessing at it wastes the test.
The twelve sources
Every source draws from a different pool, so the output stresses a different part of a layout. Latin and Occidental sit close to the rhythm of English; German brings length and diacritics; Bangla brings a script with taller line boxes and no letter case; pangrams, alphabet runs and emoji abandon prose entirely.
| Source | Language | What it is |
|---|---|---|
| Lorem ipsum | la | The scrambled Latin that typesetters have leaned on since the 1500s. |
| Cicero | la | Cicero's original Latin from De Finibus — the passage lorem ipsum was scrambled from. |
| Cicero (en) | en | The 1914 English translation of that same passage. |
| Li Europan lingues | ie | The Occidental sample text about the European languages. |
| Li Europan lingues (en) | en | The same sample, rendered in English. |
| Far far away | en | The blind-text fable, long a favourite of theme and template authors. |
| Werther | de | Goethe's Sorrows of Young Werther, for German diacritics and long words. |
| Kafka | de | The opening of The Metamorphosis, for German with very long compounds. |
| বাংলা (bn) | bn | Bengali prose, for checking Bengali typography, ascenders and line height. |
| Pangram | en | Whole pangrams, each using every letter of the alphabet at least once. |
| a-z A-Z 123 | en | Random runs of letters and digits, with no language behind them at all. |
| Emoji | en | Random emoji, for testing how a layout handles astral characters. |
The classic source is older than any software that renders it. A printer in the 1500s scrambled a passage from Cicero's De Finibus Bonorum et Malorum, written in 45 BC, into type specimens; Letraset put it on dry-transfer sheets in the 1960s and desktop publishing shipped it in the 1980s. That history is why the words look Latin but parse as nothing — which is the point, because a reader who cannot read the copy looks at the layout instead.
All twelve are public domain. The Latin and its translation predate copyright by centuries, Goethe died in 1832 and Kafka's Metamorphosis was published in 1915, and the remaining sources are either sample texts in long-standing public use or generated from characters. Nothing here needs attribution, and nothing here is stored or transmitted.
Every control, and what it changes
Six controls, and two of them constrain the others. Rather than listing every pairing, the generator applies one rule per interaction and disables the control it makes meaningless, with a hint saying why.
| Option | What it does | Reach for it when |
|---|---|---|
| Text source | Chooses which passage, phrase list or character pool the output is drawn from. | You are testing a font, a script, or a language you actually ship. |
| Measure by | Decides what the amount counts: words, characters, sentences or paragraphs. | The limit you are checking is expressed in one of those four units. |
| Amount | How many of the chosen unit to emit. The result lands on this number exactly, not near it. | Always — it is the number the whole tool is built around. |
| Paragraphs | Spreads the amount across this many paragraphs, dividing evenly and giving any remainder to the first. | You need the text broken into blocks rather than delivered as one run. |
| Start with the classic opening | Leads the very first sentence with the line the source is known for, and only that sentence. | The placeholder should be obviously recognisable as placeholder. |
| Wrap each paragraph in HTML | Emits one escaped paragraph element per block instead of plain text. | You are pasting into markup rather than into a design tool. |
Measuring in paragraphs already sets the paragraph count, so the split control goes quiet rather than silently doing nothing. Asking for fewer units than paragraphs — three words across ten paragraphs — produces three paragraphs rather than seven empty ones.
Pangrams, alphabet runs and emoji have no opening line, so the opener switch is disabled for them and says so. Where an opener does apply it is never broken by an inserted comma, because a recognisable line with punctuation dropped into the middle of it reads as a bug.
The defaults are lorem ipsum, 100 words spread across 3 paragraphs, the classic opening on, and plain text. Switching to HTML re-renders the passage you already have rather than generating a new one, so you never lose text you were about to copy.
How the text is composed
A prose source composes each sentence from its word pool: six to sixteen words drawn at random, a comma placed inside longer sentences about two times in five, a capital on the first letter and a full stop at the end. Bangla is handled on its own terms — it closes with a danda and is never capitalised, because the script has no letter case.
Counts are exact rather than approximate. Asking for words fills a paragraph with whole sentences until one more would overshoot, then trims that closing sentence to the remaining words and re-punctuates it. Asking for characters cuts precisely on the number, clipped final word and all — which is the whole point when what you are testing is a field that truncates at 140.
Characters are counted as characters, not as UTF-16 code units. One emoji is one character, and a cut never lands between the two halves of a surrogate pair, so the output is always well-formed text no matter where the limit falls.
Everything runs on your machine. The first batch is composed on the server so the page is never blank on arrival, every batch after that is composed in the browser, and no text is uploaded, logged or stored at any point.
When you will want it
Filling a mockup, a component library or a staging CMS, where the layout has to be reviewed before the copy exists. Paragraph mode with three to five paragraphs covers most of it.
Testing limits. Character mode gives you a string of precisely the length a field, a meta description or a preview clamp is budgeted for, and word mode does the same for a summary column.
Checking internationalisation and typography. Generate German for length, Bangla for line height and taller ascenders, emoji for astral characters, and an alphabet run when you want to see raw glyph coverage with no language in the way.
Frequently asked questions
asdf wrap, hyphenate and justify differently from real word lengths, so the line breaks you see are not the line breaks you will ship. Placeholder text is worth generating precisely because it is meaningless while still being shaped like prose.UTF-16 unit.