Lorem Ipsum Generator

Ask for 250 words and get exactly 250 — or the unscrambled Cicero it all came from.

Runs locally

Choose how much you need and press the button

Runs entirely in your browser — open DevTools and check the Network tab

Placeholder text is a solved problem, so the only things left to get right are the details everybody else skips. Ask for a word count here and you get that word count, not the nearest sentence boundary above it. Ask for the source text and you get the actual passage from Cicero rather than the corrupted version the printing trade has been passing around since the 1960s. Everything is assembled in this tab, so there is no request to wait for and no upper limit imposed by somebody else’s server.

Cicero, 45 BC, and the word that got cut in half

The filler text has a real source, and it is older than printing. It comes from De Finibus Bonorum et Malorum — On the Ends of Good and Evil — a treatise on ethics that Cicero wrote in 45 BC, specifically sections 1.10.32 and 1.10.33. The passage argues that nobody seeks pain for its own sake, and it happens to contain the phrase dolorem ipsum quia dolor sit amet. Read that slowly and the resemblance stops being a coincidence.

The phrase everybody knows is not in the original at all. Lorem is not a Latin word and never has been: it is the back half of dolorem, sliced across the middle by whoever first set the passage as a specimen and started somewhere other than the beginning of a word. That single detail explains why so much of the standard text looks almost-but-not-quite Latin. The version in general circulation has been retyped, abbreviated and misremembered so many times that words like eiusmod, incididunt and ullamco have entered it, none of which exist in Latin.

The trail was reconstructed in the 1980s by Richard McClintock, a Latin scholar at Hampden-Sydney College, who noticed that the least Latin-looking word in the specimen, consectetur, was rare enough to search for in classical literature — and found it in Cicero. Before that, the text was widely assumed to be meaningless. This page carries both versions on purpose. The Classic filler setting gives you the scrambled trade vocabulary that clients and colleagues expect to see; the Cicero setting gives you the passage as written. Handing someone the real thing when they asked for the familiar thing would be its own kind of wrong answer.

Exactly the number you asked for

Most generators build placeholder text one whole sentence at a time and stop as soon as they have passed the number you typed. Ask for 250 words and you get 263, because the sentence that took you over the line had to be finished. That is fine when you are filling a page and nobody is counting, and useless the moment the number is the point — a meta description budget, a card component that must not wrap to a fourth line, a database column with a length limit, a translation cost estimate quoted per word.

Here the last sentence is sized to land on the total. If forty-one words remain and the generator would normally write a sentence of eighteen, it writes eighteen; when seven words remain it writes a seven-word sentence and closes it properly rather than truncating mid-clause and leaving you a fragment without a full stop. The result reads slightly differently from the sentences before it, which is a visible and honest side effect of the guarantee rather than a flaw. The same applies to sentences and paragraphs: pick the unit, name the number, get that many.

The counters above the output are computed from the text that is actually on screen, not from the request that produced it. That distinction does more work than it looks like it does. A generator that echoes back the number you typed will keep saying 250 even on the day its own splitting logic breaks, and you will believe it, because the number agrees with what you asked for. Counting the output means the display and the text can disagree — and if they ever do, you will see it immediately.

Which format to paste, and what the markup costs you

Plain text is the default because it is the format that survives everything. It pastes into a design tool, a spreadsheet cell, a code editor and a word processor without carrying anything with it, and a blank line marks each paragraph break, which is the one convention every editor on earth already understands. If you are going to reflow the text by hand anyway, this is the one to take.

The HTML setting wraps each paragraph in a p element and does nothing else. No class attributes, no wrapper div, no inline styles, no data attributes. That restraint is deliberate: placeholder markup that arrives with its own class names has a strong tendency to outlive the placeholder text, and six months later somebody is looking at a stylesheet rule for a class that only ever existed to prop up filler copy. If your framework needs different tags, changing p to li or td afterwards is one find-and-replace; unpicking a nest of divs somebody else invented is not.

What neither setting will do is add non-breaking spaces, smart quotes or soft hyphens. Those characters look identical to their plain equivalents in almost every editor and behave completely differently when the layout gets narrow, and finding an invisible one that has survived into production copy is a genuinely unpleasant afternoon. If you want to test how your layout handles them, put them in deliberately — you should not inherit them from a filler generator without being told.

Latin filler tells you nothing about Chinese type

Latin placeholder text is a measuring instrument calibrated for Latin script, and using it to judge a page that will hold Chinese, Japanese or Korean gives you confident, precise, wrong answers. The average English word runs about five letters and every space is a line-break opportunity, so Latin text produces a ragged right edge with fairly large steps. Chinese has no interword spaces and can break after almost any character, so the same column of text produces an edge that is nearly flush. A layout that looks balanced in Latin filler can look cramped and grey once real Chinese copy lands in it, and nothing in the filler stage warned you.

The vertical metrics diverge just as far. Latin type sits on a baseline with ascenders and descenders, and a line height of about 1.5 is comfortable. CJK characters fill a square em box with no descenders and much higher ink coverage per character, so the same 1.5 reads as tight and dense; Chinese body text usually wants somewhere between 1.7 and 1.9. Punctuation is a third mismatch: full-width marks occupy a whole character cell, and the rules for what may not start or end a line are far stricter, so the two scripts do not even break in the same places.

The practical advice is short. Use Latin filler to check structure — the grid, the spacing between blocks, whether a heading and its paragraph belong to each other. Do not use it to make decisions about type size, line height, column width or how much copy will fit, because every one of those will change when the real text arrives. If you need a CJK-shaped placeholder, use text in the script the page will actually carry, and if you need to measure existing copy, a character counter will tell you what a word counter cannot.

What greeking is for, and when it misleads you

The technique is called greeking, and it long predates the web: printers set nonsense specimen text so that a client looking at a type sample would judge the type rather than read the words. That is still the whole argument for it. Show a stakeholder a layout containing real sentences and the meeting becomes about the sentences. Show them a layout containing Latin and they finally look at the thing you asked them to look at.

It stops working in three situations, and all three are common. Content that is mostly short strings — navigation, buttons, table headers, form labels — is misrepresented by flowing paragraphs, because the hard problem there is the longest single label, not the average. Anything with real structure, such as a product page with a price and stock status and three badges, needs stand-in content with the same shape; a paragraph of Latin where the price goes tells you nothing. And any interface where the text carries the meaning — an error state, an empty state, a confirmation dialogue — has to be designed with something close to the real wording, because the wording is the design.

There is also a failure mode with no design consequences at all and considerable professional ones: filler that ships. Lorem ipsum has appeared in printed annual reports, on billboards, in app store listings and in the footer of live e-commerce sites, and it is invariably found by somebody other than the team that shipped it. It survives because it is quiet — it looks like text, so it does not trip a spell-check or an empty-field warning, and reviewers skim past it exactly as they were trained to. If you have any way of grepping your build output for the word lorem before release, use it.

Everything is produced inside this tab

Pressing Generate contacts nothing. The vocabulary travels with the page you have already downloaded, so the text is assembled locally and lands in the same frame as the click. Two thousand words takes no longer than twenty. The caps on this page exist to keep the output readable, not to ration anything — there is no meter running on our side, so pressing the button a hundred times in a row costs exactly what pressing it once costs.

If you would rather check than believe, view-source is the quickest route: the word list is sitting in the page bundle, which is not something a page that fetched its text from elsewhere could show you. The more conclusive route is your browser’s network panel — filter it down to fetch and XHR, then hold the button. Nothing arrives. Every response from this site carries a Content-Security-Policy header confining it to its own origin, and that limit is applied by the browser rather than by us, so it survives our own mistakes.

Offline behaviour falls out of the same design. The page is cached after a first visit, and no step in producing the text reaches outward, so it keeps working on a plane or in a tunnel. Words are drawn by rejection sampling over the browser’s cryptographic entropy source instead of taking a modulo of a fast pseudo-random generator, which means no entry in the vocabulary is quietly favoured. For filler copy the distinction is academic, and saying so plainly beats dressing it up: the routine already existed for this site’s password generator, and deliberately writing a sloppier one would have been more work than reusing it.

Frequently asked questions

Is Lorem Ipsum real Latin?

The version everyone uses is not. It descends from a real passage of Cicero, but centuries of retyping have introduced words such as eiusmod, incididunt and ullamco that do not exist in Latin, and the word order no longer forms sentences that mean anything. Switch the Text setting to Cicero and you get the genuine passage, which is real Latin and does mean something.

Why does the classic text begin in the middle of a word?

Because lorem is the second half of dolorem. Whoever first cut the specimen out of Cicero started partway through a word, and the truncated form has been copied ever since. It is the clearest single piece of evidence that the text has a real source rather than being invented nonsense.

Can I get exactly 500 words rather than roughly 500?

Yes — choose Words as the unit and type 500. The final sentence is sized so that the total lands exactly on your number, which is why it is sometimes shorter than the ones before it. The word count shown above the output is measured from the generated text itself, so you can check it rather than take our word for it.

Why does the Cicero setting give me the same text every time?

Because shuffling it would defeat the purpose. That setting exists to show the passage as Cicero wrote it, in his order; randomising the words would just produce a second scrambled version, which is what the Classic setting already gives you. If you want variation, switch back to Classic filler.

Should I use Latin filler in a Chinese-language layout?

Only for checking structure. Chinese has no interword spaces, breaks lines at almost any character, fills a square em box, and generally wants a looser line height than Latin text does. Type size, line height and column width all need to be judged against text in the script the page will actually carry.

Is it safe to leave this text on a page that goes live?

It is safe in the sense that nothing here is tracked or attributed, and awkward in every other sense — placeholder copy reaches production more often than anyone expects, because it looks enough like text to pass a skim. Searching your build output for the word lorem before release costs nothing and catches it.

Where do the words come from if there is no server?

The vocabulary ships with the page, and your browser assembles the text from it locally. That is why the result is instant, why nothing caps how often you may press the button, and why it carries on working with networking switched off entirely.