Paste the default output of our lorem ipsum generator into two different mockups and you get identical text. The tool contains no random number generator. Every designer who opens the page with the same slider settings sees the same paragraphs, in the same order, every time. That is a design decision with consequences, and this article walks through the implementation so you know exactly what you are pasting.
What the Word Bank Actually Contains
The generator draws from a fixed list of 59 entries defined on one line of the component. The list holds 58 unique words. The word dolor appears twice, once near the start and once in the middle, which is why a long paragraph can repeat it.
The bank is the classic scrambled Latin excerpt. It begins lorem, ipsum, dolor, sit, amet and ends anim, laborum. There is no sentence structure in the bank itself, only words.
The Selection Formula With No Randomness
The generation function is four lines long. It picks each word by position.
index = (i + words.length) % 59
At iteration i the output array already holds i words, so the expression reduces to 2i mod 59. Because 59 is odd, stepping by 2 visits every position in the bank before repeating. A paragraph of 150 words covers the full bank and then starts the same walk again.
The practical consequence is simple. Identical settings produce identical output, on every machine, forever. There is no seed to set and no reroll button.
Defaults, Ranges, and the 348-Character Paragraph
The page opens with 3 paragraphs of 50 words each. The paragraph slider runs from 1 to 10. The words per paragraph slider runs from 10 to 150 in steps of 10, which caps a single output at 1,500 words across 10 paragraphs.
At the default 50 words, one paragraph measures 348 characters and contains 49 distinct words. Punctuation is a single period at the end of each paragraph. The first paragraph gets its initial letter capitalized, and the rest do not.
The stats line above the output reports three counts live, paragraphs, words, and characters, so you can hit a character budget before pasting.
Edge Cases We Found Reading the Code
Three behaviors matter when you use the tool for layout work.
1. Default paragraphs are clones. All three 50-word paragraphs contain the same word sequence, because each paragraph restarts the same deterministic walk. Only the first paragraph is capitalized. Adjacent paragraphs in your mockup will look suspiciously identical to a careful reviewer.
2. No internal sentence breaks. Each paragraph ends with one period and contains no commas or sentence boundaries. Real body text has sentence length variation, so line breaks in your design will look more regular than they will in production.
3. Copy state resets on a timer. The copy button writes the full text to the clipboard and shows a confirmation for 1.5 seconds. Nothing is uploaded, because the component makes no network calls at all.
When Identical Placeholder Text Helps
Deterministic output is a feature in three situations.
- Regression screenshots. Automated visual tests need stable text. Random filler forces you to freeze seeds or disable tests, and this output needs neither.
- Character budgets. The stats line plus a fixed 348-character default paragraph let you size a text block before copy exists.
- Review consistency. Two reviewers looking at the same settings see the same layout, so feedback stays on spacing and hierarchy.
When Deterministic Placeholder Text Fails
Use real copy in these cases.
- Typography evaluation. Testing how your typeface handles ascenders, punctuation, and varied sentence lengths requires real sentences. This generator cannot produce them.
- Adjacent mockups. Because default paragraphs are clones, side-by-side blocks of placeholder text will match word for word. Change the words per paragraph slider to 40 and 60 to break the pattern.
- Content-sensitive layouts. If the design reacts to text length, such as truncation or read more links, placeholder text hides the failure cases.
The honest limitation is scope. This tool produces one style of filler from one 59-word bank. It offers no Cupcake or Corporate variants and no language options.
How to Use It Without Surprises
1. Set the paragraph count between 1 and 10 based on the layout regions you are filling.
2. Set words per paragraph between 10 and 150 to match your expected copy density.
3. Read the stats line and adjust until the character count fits the container budget.
4. Click copy, then paste within 1.5 seconds or ignore the confirmation, the clipboard write already happened.
5. If two filler blocks sit near each other, give them different word counts so the identical sequence is not visible.
Checklist
- [ ] You know the output is deterministic, not randomized.
- [ ] You checked the stats line against your character budget.
- [ ] You varied word counts between adjacent placeholder blocks.
- [ ] You switched to real copy before evaluating typography or truncation.
- [ ] You did not rely on this output for sentence structure, it has none.
Generate deterministic filler with the exact implementation described above on the [lorem ipsum generator page](/en/lorem-ipsum). If you measure different counts for the bank, or you have a layout case where identical paragraphs helped or hurt, send us the details and we will fold them into this analysis.