Lorem Ipsum Generator
Generate placeholder text by paragraphs, sentences, words, or an exact character budget — entirely on this device.
Do it offline:$ npx lorem-ipsum 3 paragraphs
How to use it
- Pick a unit — paragraphs, sentences, words, or characters — and a count; each unit shows its range, up to 200 paragraphs, 1,000 sentences, 10,000 words, or 100,000 characters.
- Choose plain text, HTML, or Markdown. Switching format never rewrites the passage — the same blocks are re-serialized in the new syntax.
- Keep the classic Lorem ipsum opening on, or switch it off to enter the corpus elsewhere. Sprinkle adds headings and lists between paragraphs — available for the paragraphs unit in HTML or Markdown.
- Press Generate — or ⌘/Ctrl + Enter — for a fresh passage. Growing the count extends the current text instead of replacing it.
- Copy the result, download it as .txt, .html, or .md, or use Share — the link holds your settings plus the seed and rebuilds this exact text.
Placeholder text for mockups, wireframes, and templates — pick paragraphs, sentences, words, or an exact character budget, and the passage appears instantly, generated in your browser. Take it as plain text, HTML paragraphs, or Markdown, whichever your target wants. A shared link reproduces the identical passage on any device, because the link carries the generator's seed. Nothing you generate is uploaded anywhere.
How it works
The generator walks a fixed corpus of sixteen classical lipsum sentences, emitting whole sentences in a seeded rotation — it never recombines words at random. A seeded number generator picks where each pass through the corpus starts and how it strides, so long runs keep varying instead of looping.
Each press of Generate mints a new seed, and the seed fully determines the result: one unit, count, and seed always rebuild byte-identical text. Share embeds that seed in the link — a colleague opening it sees precisely the passage you saw.
In characters mode a word joins the output only when it fits whole, joining space included, and the fill stops at the first word that does not. The corpus is pure ASCII, so the character count equals the UTF-8 byte count exactly.
Examples
unit = sentences · count = 2 · start with Lorem onLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.The canonical opening pair. While the Lorem start is on, these two sentences begin every run regardless of the seed — that guarantee is the toggle's whole job.
unit = paragraphs · count = 3 · format = HTML · seed = 42<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p>
<p>Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur. At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident.</p>
<p>Similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat. At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus.</p>Three paragraphs serialized as HTML, ready for a template. Lengths differ because the seed draws three to seven sentences per paragraph; seed 42 always rebuilds this exact markup.
unit = characters · budget = 160 · format = plainLorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quisAn SMS-length budget: the fill stops at 153 of 160 characters because the next whole word would not fit. On the page the chip reads: Filled 153 of 160 characters — whole words only.
Every example on this page is executed against the same engine that powers the tool, on every build.
Gotchas worth knowing
Whole words only, even at the edge
A 160-character budget can return 153: a word joins only when it fits entirely, space included. Below five characters with the Lorem start on nothing fits — the output is empty and a note says why.
Latin stays left-to-right in RTL layouts
Filler for an Arabic or Hebrew mockup must still read as Latin: the output pane is explicitly marked left-to-right, so punctuation sits as it will in your layout.
HTML copies in both clipboard flavors
Copying while HTML is selected writes markup and plain text together: rich editors paste formatted paragraphs, code editors paste the tags. Without dual-write support the copy falls back to plain text.
Ten thousand words stays instant
The words cap — about 68,000 characters — still generates instantly and renders through a windowed list, so scrolling stays smooth at every allowed size.
Shared links carry the seed
Share puts unit, count, options, and the current seed into the link fragment; whoever opens it regenerates the identical passage locally — the text itself never travels.
Common errors
Count must be a whole number of at least 1.- Zero, negative, and fractional counts are refused with your settings left untouched; the check exists because restored links are validated like any other untrusted input.
Paragraphs are capped at 200 in this browser tool — need more, run: npx lorem-ipsum 200 paragraphs- Every unit states its cap — 200 paragraphs, 1,000 sentences, 10,000 words, 100,000 characters — sized to stay immediate. Past a cap the refusal names an npx command for the oversized job; nothing is silently truncated.
No whole word fits in 4 characters — the output is empty.- A note rather than an error: with the classic start on the first word needs five characters, so a budget of four holds no whole word. Raise the budget and text appears.
FAQ
What does lorem ipsum mean?
Nothing as a whole — it is scrambled Latin opening with a fragment of dolorem ipsum, "pain itself", from Cicero's De finibus bonorum et malorum. That is what makes it useful filler: it looks like language yet carries no meaning.
How do I get the same placeholder text again later?
Use Share while the passage is on screen: the link stores your unit, count, options, and that passage's seed, and opening it rebuilds the identical text on any device. Generate replaces the seed each press, so save the link first.
Why did I get 153 characters when I asked for 160?
The character budget fills with whole words — a word joins only when it fits completely, so most budgets land a few characters short. The text never ends in a chopped word, and a chip states the exact fill.
Keyboard shortcuts
- ⌘/Ctrl + Enter
- Generate a fresh passage (mints a new seed).
- ⌘/Ctrl + S
- Download as .txt, .html, or .md to match the format.
- ⌘/Ctrl + C
- Copy the whole output when nothing is selected.
- ⌘/Ctrl + Shift + C
- Copy the output even while a selection exists.
- t
- Cycle the color theme.
- ? or ⌘/Ctrl + /
- Open the shortcut help dialog.
- Esc
- Close the open dialog.