iKit
Guide · 10 min read ·

Bacon Ipsum, Cat Ipsum & Hipster Ipsum: When to Use Them (2026)

Bacon Ipsum, Cat Ipsum and Hipster Ipsum swap Latin for themed filler. Here is when a themed generator helps a mockup, and when it quietly wrecks one.

Bacon Ipsum, Cat Ipsum & Hipster Ipsum: When to Use Them (2026)

Bacon Ipsum, Cat Ipsum and Hipster Ipsum: When Themed Filler Beats Latin

Every designer eventually gets the same feedback: "the client kept asking what the Latin means." Themed placeholder text — Bacon Ipsum, Cat Ipsum, Hipster Ipsum — was invented for that exact meeting. It swaps Cicero's Latin for a word bank people can read. Sometimes that is a real improvement. Sometimes it is the fastest way to lose an hour of a design review to jokes about brisket.

TL;DR

  • Themed ipsum replaces the Latin word bank with meat, cats, or artisanal-coffee vocabulary.
  • Use it when you need stakeholders to read the layout, not skim past it.
  • Avoid it for layout stress-testing: themed word banks are short and uniform.
  • Bacon Ipsum ships a free JSON API with type, paras and format parameters.
  • Never let themed filler reach production — it is far more visible than Latin.

What is Bacon Ipsum?

Bacon Ipsum is the best-known themed generator, and the one with a documented API. The idea is trivial and that is the point: keep the shape of Lorem Ipsum — sentence-ish runs of comma-separated words, no capitals worth reading — and swap the vocabulary.

Where themed ipsum generators came from

The themed-ipsum wave started around 2011 as a joke between agency designers and never stopped. The pattern is now a genre: pick a subculture, harvest 200 nouns, publish a button. Cat Ipsum leans on purring, knocking things off tables and sudden 3 a.m. sprints. Hipster Ipsum runs on cold-brew, vinyl and reclaimed timber. Corporate Ipsum recycles synergy and value-add. Cupcake Ipsum is exactly what it sounds like.

They all solve the same social problem rather than a technical one. Latin filler tells a reviewer "ignore this text." Themed filler tells a reviewer "this text is a joke, but you can see how long it is." Those are different signals, and which one you want depends entirely on the meeting.

How the Bacon Ipsum JSON API works

Bacon Ipsum publishes a REST endpoint that returns an array of paragraphs. It takes four parameters worth knowing: type, paras (defaults to 5), sentences (which overrides paras), and formatjson, text or html.

curl "https://baconipsum.com/api/\
?type=meat-and-filler&paras=2&format=text"

The JSON response is a plain string array, which is why it shows up in so many "learn to fetch" tutorials:

const url =
  "https://baconipsum.com/api/?type=all-meat&paras=3";
const paras = await fetch(url).then((r) => r.json());
document.querySelector("#mock").innerHTML =
  paras.map((p) => `<p>${p}</p>`).join("");

If you are eyeballing that response by hand, paste it into the iKit JSON Decoder rather than squinting at an escaped one-liner in a terminal.

all-meat vs meat-and-filler

The type parameter is the interesting design decision. all-meat returns pure theme vocabulary. meat-and-filler mixes the theme with ordinary Latin filler, which produces text that reads as placeholder at a glance but still carries the joke. For mockups, meat-and-filler is almost always the better choice: it restores some of the word-length variety that a pure themed word bank throws away.

Generator Word bank flavour Best fit
Bacon Ipsum Cuts of meat, BBQ terms Food, restaurant, delivery
Cat Ipsum Cat behaviour, absurdist Pets, consumer, playful
Hipster Ipsum Craft, artisan, lifestyle DTC brands, cafés, retail
Corporate Ipsum Business jargon B2B SaaS, enterprise decks

When themed filler beats Lorem Ipsum

When you need stakeholders to actually read the mockup

This is the strongest case. Nielsen Norman Group has been blunt about the downside of fake copy in prototypes: placeholders are convenient early, but they create problems once the real content has different characteristics. What NN/g describes is a layout problem. There is a parallel social problem, and themed filler is a decent patch for it.

Latin filler is invisible. Reviewers' eyes slide off it, so they comment on the only thing they can parse: colour, spacing, the logo. Readable filler pulls attention back into the content blocks. A stakeholder who reads "smoked brisket ribeye tri-tip" and asks "wait, is that the headline or the subhead?" has just given you the feedback you actually wanted.

Tone-matching a pitch deck to the brand

If you are pitching a barbecue chain, Bacon Ipsum in the mockup is a two-second signal that you thought about the client's world. It costs nothing and it lands. The same logic makes Hipster Ipsum reasonable for a coffee roaster and Corporate Ipsum genuinely funny in an enterprise dashboard demo — as long as the room is the kind of room that finds that funny.

Quick internal demos and component libraries

Themed filler is good for the throwaway tier: Storybook stories, a Figma frame you will delete tomorrow, a screenshot for Slack. Its readability is an asset when the audience needs to grasp a component's structure in three seconds. For measuring how much filler a block actually needs, drop a sample into the iKit Word & Character Counter and size the paragraph against your real content budget instead of guessing.

When themed ipsum is the wrong choice

Why Lorem Ipsum is better for layout stress-testing

Themed word banks are small, English, and tonally uniform. "Bacon" and "brisket" and "pancetta" are all short. That produces suspiciously even text blocks — the exact failure mode you are supposed to be hunting for.

Latin filler is not perfect either, but its word lengths vary more widely and it contains nothing your eye can anchor on, which is what you want when the question is "does this grid hold." When the question is "does this grid hold under pressure", neither is enough: you want deliberately hostile filler, with 30-character compound words and a paragraph that is one sentence long.

The i18n gap: filler in English under-tests every other locale

Here is the failure mode neither Latin nor bacon catches. Per the W3C's guidance on text size in translation, IBM's published expansion rates for English-to-European translation get dramatically worse for short strings — the shorter your source label, the more it grows.

English source length Average expansion
Up to 10 characters 200–300%
11–20 characters 180–200%
21–30 characters 160–180%
Over 70 characters 130%

A nav item that reads "Views" in English can triple in Italian. No themed generator will surface that, because every themed generator ships short English nouns. If localisation is on your roadmap, test with pseudolocales instead: Android's English (XA) pseudolocale accents the base text, expands it, and brackets each message unit specifically to expose layout breakage, as documented in the Android pseudolocales guide. That is a real test. Bacon is a vibe.

The accessibility footnote nobody mentions

Filler text is usually left inside an en document even though it is not English. WCAG Success Criterion 3.1.1 requires the page language to be programmatically determinable, and MDN's reference on the lang attribute is explicit that the point is letting assistive technology pick the right pronunciation. A screen reader hitting "lorem ipsum dolor sit amet" in an en document produces gibberish.

Themed ipsum is, ironically, better behaved here — it is genuinely English words, so lang="en" is honest. It is a small point, but if you demo prototypes to accessibility reviewers, it is one fewer distraction.

How to generate themed placeholder text without an API

A word-bank generator in twenty lines

Every ipsum generator is the same three steps: a word bank, a random sentence assembler, a paragraph assembler. Here is the whole idea, no dependencies:

const bank = [
  "bacon", "brisket", "pancetta", "short ribs",
  "pork belly", "capicola", "tri-tip", "jowl",
];
const pick = (a) => a[(Math.random() * a.length) | 0];
const sentence = (n = 8) => {
  const w = Array.from({ length: n }, () => pick(bank));
  return w.join(" ").replace(/^./, (c) => c.toUpperCase())
    + ".";
};
const para = (n = 4) =>
  Array.from({ length: n }, () => sentence()).join(" ");

Swap the array and you have Cat Ipsum. That is the entire genre. If you need the output as snake_case keys or CONSTANT_CASE fixtures for seed data, run it through the iKit Case Converter rather than writing another regex.

Why an offline generator beats a network call

Three reasons, in order of how often they bite:

  • Availability. A prototype that fetches filler at runtime breaks on a plane, in a locked-down corporate network, or the day the free API rate-limits you.
  • Review overhead. In any organisation with a dependency review process, "we call a third-party endpoint to get fake text" is a conversation you do not want to have.
  • Privacy. Filler generation has no business leaving your machine. This is the same argument iKit makes for every tool it ships: the iKit Lorem Ipsum Generator runs entirely in the browser, so nothing about your project — not even how much placeholder text you needed — hits a server.

Keeping filler out of production

Themed filler is louder than Latin, which cuts both ways. It is more embarrassing when it ships, but also easier to catch. Add your word bank's most distinctive token to the same pre-release grep you use for TODO and FIXME:

grep -rInE "bacon ipsum|cat ipsum|lorem ipsum" dist/ \
  && echo "filler text found — fix before release"

Wire that into CI and the whole class of problem disappears. Drafting the copy that replaces it is a separate job, and one worth doing in a plain Markdown editor where you can see the real word count before it lands in the design.

References

Related on iKit

Related posts