What this generator builds, and why hand-typed filler misleads
The page holds the short list of Latin words that centuries of typesetters have reused, picks from it at random, and joins 8 to 16 of them into a sentence with a capital at the front and a period at the end. As many sentences as you ask for make a paragraph, and the paragraphs are separated by a blank line. Nothing is fetched and nothing is stored: every press of Regenerate produces a fresh block in your own browser.
The reason to use Latin rather than something you type yourself is that hand-made filler lies about the shape of the text. A row of asdf asdf asdf gives every word the same length, so the ragged right edge of a column comes out unnaturally even and you never see the awkward break that a real ten-letter word will cause. Repeating one paragraph five times is worse, because every card in the grid ends up exactly the same height and the layout looks stable when it is not. The Latin list has mostly short words with a scattering of long ones, which is close enough to English prose that line breaks, hyphenation and the last line of a paragraph behave plausibly.
Pasting real marketing copy fails for the opposite reason. The moment there are readable sentences on the screen, the review turns into an argument about the words, and nobody looks at the leading again.
Which mode, format and size to pick
- Latin Lorem Ipsum: the default, and the right choice for any interface that will ship in a European language.
- Chinese filler: random common characters with full-width punctuation. Latin badly misrepresents a CJK block, which has no spaces between words and breaks lines between characters, so use this when you are checking line height and measure in a Chinese, Japanese or Korean layout.
- Plain text: design tools, slide decks and documents, where the app applies its own formatting.
- Markdown: a CMS field, a README, an MDX file. Tick Add a "## Lorem Ipsum" heading when you also need a heading to style.
- HTML: paragraphs already wrapped in
<p>for a static prototype or an email template. - JSX: the same paragraphs inside a fragment, ready to paste into a React component without reformatting.
- Sizes worth memorizing: 1 paragraph of 1 sentence for a card subtitle or a hero deck, 1 by 2 for a list item, 3 by 4 for a typical article intro, and 15 by 6 when you want a long scroll to test sticky headers and a table of contents.
How to fill a mock-up or a component
- Decide roughly how long the real copy will be, then set the paragraph and sentence counts a little above it. Designing against the shortest plausible text is how layouts break in production.
- Pick the output format for wherever the text is going: plain text for a design tool, JSX for a component, Markdown for a content file.
- Press Copy and paste it in. The output box is read-only, so select a single paragraph by hand when you want less than the whole block.
- Press Regenerate once per card or column rather than pasting the same block into each one, so the grid gets uneven heights and you find the alignment bug now instead of after launch.
- Leave one real string in the design: an actual product name, an actual price, an actual date. Those are the values that overflow, and filler will never tell you.
How to stress test a layout with it
- Start at the length you expect, confirm the component looks right, then raise the sentence count until the text is three times as long. A container with a fixed height will clip, and a card with a
min-heightbut nooverflowrule will spill over its neighbor. - Now go the other way: 1 paragraph of 1 sentence. Short text exposes collapsed cards, a footer that rides up the page and buttons that no longer line up across a row.
- Narrow the browser to about 360px. Latin words are short, so if they already break badly here, a real German compound noun or a long URL certainly will.
- Switch to Chinese filler and look again. CJK glyphs are full width and sit on a taller visual line, so a row that fitted in Latin often needs more line height.
- Replace the filler with the longest real string you can find before you call the component done.
Getting the text where you need it
The Copy button puts the formatted block on your clipboard exactly as shown, including the blank lines between paragraphs and the tags if you chose HTML or JSX. The box itself is read-only, but you can still select part of it by hand when you only want one paragraph.
- Figma and other design tools: paste into a text layer with the layer in edit mode, otherwise the paragraph breaks are dropped. Fixed size text boxes need to be set to auto height first or the block is clipped silently.
- Code editors: paste JSX or HTML and let the formatter reindent it. If your editor is set to format on paste, the fragment will be reflowed to your line width automatically.
- A CMS or rich text field: choose Markdown or plain text. Pasting HTML into a rich text editor usually produces escaped tags shown as literal text.
- iPhone and iPad: tap Copy here, then press and hold in the destination field and tap Paste. iOS asks for permission the first time one app reads another app’s clipboard.
- Android: press and hold and choose Paste. Gboard keeps a clipboard history under the keyboard toolbar if you copied something else in between.
- Desktop: Ctrl+V on Windows and Linux, Cmd+V on Mac. Use Ctrl+Shift+V or Cmd+Shift+V to paste without formatting when the destination is trying to be helpful.
The same job in editors, code and word processors
Placeholder text is built into more tools than people expect, and reaching for the one already in front of you is usually faster than a round trip through a browser tab.
VS Code and any editor with Emmet expands lorem in an HTML file when you press Tab. A number sets the word count and the abbreviation composes with the rest of Emmet, so one line gives you a whole block:
lorem -> 30 words
lorem10 -> 10 words
p*3>lorem20 -> three <p> elements, 20 words eachJavaScript and TypeScript projects that already have a fake data library get filler from the same import, which is the right answer for seed scripts and test fixtures:
import { faker } from '@faker-js/faker'
faker.lorem.paragraphs(3, '\n\n')
faker.lorem.sentences(4)Python has the same idea in the Faker package, and paragraphs() returns a list rather than one string:
from faker import Faker
fake = Faker()
"\n\n".join(fake.paragraphs(nb=3))LaTeX ships the classic passage as a package, where \lipsum[1-3] prints the first three paragraphs of the canonical text rather than a random one:
\usepackage{lipsum}
\lipsum[1-3]Microsoft Word has hidden it in the autotext functions for years: type =lorem(3,4) on an empty line and press Enter for three paragraphs of four sentences, or =rand(3,4) for the same structure in English. The exact wording varies by Word version and language, so check what you get before you build a template around it. In design tools the feature is generally a plugin rather than something built in, and the available plugins change often enough that it is worth searching the current plugin directory rather than trusting a name you read somewhere.
Limits, privacy and honest caveats
What leaves your browser: nothing. The words are assembled on your device with Math.random() and the result is never uploaded, logged or stored. Nothing you type into the text area is sent anywhere either. That also means Math.random() is the wrong source for anything that needs to be unguessable, so never reuse this output as a password, token or test key.
Filler in an alt attribute is an accessibility bug. WCAG 2.1 asks for text alternatives that serve the same purpose as the image. Latin pasted into an alt, aria-label or page title is read aloud word by word by a screen reader, which is worse than an empty alt="" on a decorative image. The same applies to a lang attribute: a page marked lang="en" full of Latin or Chinese filler will be pronounced with the wrong voice.
It hides content-shaped problems. Lorem Ipsum has no links, no numbers, no names and no empty state. It will not tell you that a user with no bio leaves a hole in the card, that a price of 1,299.00 breaks the column alignment, or that a real headline is twice as long as the space you gave it. Filler is for typography and grid work; content design needs real or realistic strings.
The Chinese mode makes characters, not words. It draws from a pool of common characters at random, so the output is unreadable to a Chinese speaker by design. It is fine for measuring layout and wrong as sample data for search, sorting, translation work or anything a reviewer is meant to read.
Make sure it does not ship. Filler escapes into production regularly, most often through a meta description, an image caption or a seeded database row. Grep the repository for lorem as part of your release checklist, and check the rendered page source rather than only the screen.
Frequently asked questions
What does Lorem Ipsum actually mean?
Almost nothing, and that is the point. The passage is garbled Latin usually traced back to Cicero, De finibus bonorum et malorum, written in 45 BC. The famous opening starts mid-word: "Lorem" is what is left of "dolorem" in the original line "Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet". Words have been cut, shuffled and invented over centuries of typesetting, so the result looks like language without reading as language.
Why use placeholder text at all instead of real copy?
Because real copy pulls attention to what the words say rather than how the page behaves. Filler text lets you check line length, line height, paragraph spacing, widows and how a column reflows at phone width, without anyone in the room starting an argument about the headline. It is also simply available: you can test a layout before the copywriter has written a word.
Is it true that designers should never use Lorem Ipsum?
That argument has real force but it is usually stated too strongly. Filler text hides the fact that a real product name is 34 characters, that a real address block runs to five lines, or that half your users have no bio at all. Use Lorem Ipsum for typography and grid work, where only the shape of the text matters, and switch to real or realistic content before you sign off on any component whose length, tone or empty state is part of the design.
How much text does each setting produce?
Each generated sentence is 8 to 16 Latin words picked at random, so a paragraph of 4 sentences runs roughly 32 to 64 words. The default of 3 paragraphs by 4 sentences gives you somewhere around 100 to 190 words. If you need an exact count, generate a little more than you think you need, paste it into a character and word counter, and trim.
Why does the text not start with "Lorem ipsum dolor sit amet"?
This generator shuffles the classic Latin word list rather than reproducing the fixed historical passage, so every sentence is new and no paragraph is guaranteed to open with the familiar phrase. If a reviewer expects that opening, or you want the block to be instantly recognizable as placeholder, type the words at the top of the first paragraph yourself and leave the generated text beneath.
What is the Chinese filler mode for?
Latin text is a poor stand-in for Chinese, Japanese or Korean layout. CJK characters are full width, there are no spaces between words, and lines break between characters rather than at word boundaries, so a Latin paragraph badly misrepresents how dense the same block will look. The Chinese filler mode produces random common characters with full-width punctuation so you can judge line height, measure and wrapping in a CJK interface.
Which output format should I choose?
Plain text for design tools, slides and documents, where the app supplies its own formatting. Markdown for a CMS, a README or an MDX file. HTML when you want paragraphs already wrapped in p tags for a static prototype. JSX when you are pasting straight into a React component, since the output comes wrapped in a fragment and drops in without further editing.
Does Lorem Ipsum hurt SEO if it reaches production?
There is no specific penalty aimed at Latin filler, but a published page whose visible text is placeholder gives a search engine nothing meaningful to match a query against, and it can be treated as thin content. The bigger risk is leakage: filler regularly ends up in a meta description, an alt attribute or a social preview card, where it is quoted back at readers long after the page itself was fixed.
Is the text different every time, and can I reproduce it?
Every press of Regenerate draws new random words, so you will not get the same block twice and there is no seed field to force a repeat. If a test or a screenshot needs stable text, copy one result and keep it in the repository as a fixture instead of generating fresh filler each run. The randomness comes from the ordinary Math.random(), which is right for placeholder text and wrong for anything security related.
Can I use the generated text in commercial work?
Yes. The output is randomly ordered fragments of a Latin text from antiquity, generated in your own browser, and nothing about it is claimed or licensed by this site. Treat it as scaffolding rather than content: the only rule worth enforcing is that it does not survive into a release, which is easiest if you search the codebase for "lorem" as part of your launch checklist.
Sources
- W3C, Web Content Accessibility Guidelines (WCAG) 2.1 (success criterion 1.1.1 Non-text Content, on text alternatives that serve an equivalent purpose).
- W3C, CSS Text Module Level 3 (line breaking and word separation, including why text without spaces breaks between characters).
- MDN, Math.random() (the randomness this page uses, and its explicit warning against cryptographic use).
- The attribution of the passage to Cicero, De finibus bonorum et malorum, is the account given by Richard McClintock and repeated by the long-standing Lorem Ipsum reference sites. Emmet abbreviations, the Faker libraries, the LaTeX lipsum package and the Microsoft Word autotext functions are documented by each project and can change between versions.
More tools
When a field has a character limit and you need to know exactly what you pasted, the word and character counter counts the block for you. For the other half of a realistic fixture, the UUID generator gives you identifiers that look like the real thing instead of id: 1.
Related tools
- Word Counter & Character Count
Count words, characters with and without spaces, sentences and paragraphs as you type.
- UUID Generator (v4 and v7)
Generate UUID v4 (random) or UUID v7 (time-ordered) identifiers in bulk and copy them with one click.
- JSON Formatter and Validator
Pretty-print or minify JSON in your browser with 2-space, 4-space or tab indentation.
- Color Converter (HEX, RGB, HSL)
Convert colors between HEX, RGB and HSL instantly, with a built-in color picker, live prev…
Privacy: the text is generated entirely in your browser with Math.random(). Nothing is sent to a server, stored or logged, and the tool has no analytics event of its own beyond the standard page view.
