Lorem CSV Generator
Filler text in a table shape. Set the rows, the columns and the words per cell, name the headers, and take a CSV. It is seeded, so the same settings give you the same table every time, which is what makes it usable as a fixture and screenshottable in documentation. Up to a million rows.
A ten by three table is generated the moment the page loads. Change any field and it regenerates.
Why a seed makes the difference
A lorem generator that reshuffles on every keystroke is unusable for the two things people actually want filler data for.
- A test fixture. A test that asserts on a value needs the value to be the same next run. Random-per-run filler means either no assertions or a snapshot that fails constantly.
- A screenshot in documentation. Regenerate the file to update the doc and the whole screenshot changes, so every diff is noise and no reviewer can see what actually moved.
So the generator is seeded, and the seed is a control you can see and set. Same seed, same rows and columns, same table, every time and in every browser. Change the seed, or hit Regenerate, and you get a different table you can then pin by writing that seed down.
Worked example
Rows 4, columns 3, four words per cell, headers title, body, author, seed 42:
title,body,author
consequat velit id nostrud,ullamco veniam culpa sunt,dolore aute non pariatur
aliqua ex laboris cupidatat,eu sit magna irure,anim tempor deserunt qui
esse minim occaecat elit,laborum enim ad dolor,voluptate proident nulla est
adipiscing sed reprehenderit in,commodo mollit officia laboris,nisi consectetur ut duis
Set As sentences on and each cell becomes Consequat velit id nostrud. instead, capitalized and with a full stop, which is what you want when the filler is standing in for prose rather than for a label.
Header names that mean something
Type a comma-separated list into the header box and those become the column names. Anything you do not name falls back to col1, col2 and up, and a note tells you how many names you gave for how many columns.
That matters more than it sounds, because filler data is usually standing in for a real schema. A fixture with columns called title, body, author and slug exercises the same code path as your real content table; one with col1 through col4 does not, and every mapping bug survives the test.
The number of columns is set separately from the number of names, so you can name the first three of eight and let the rest be generic.
What filler data is actually for
- Testing a layout with realistic text volume. Three words per cell and forty words per cell produce very different tables, and a UI that looks fine on one breaks on the other. Set the words per cell to what your real data averages.
- Load-testing an import. A million rows of filler text is a real file with real bytes in it, and it will find the parser's limits without exposing any customer data.
- Filling a demo. A screenshot needs a table with something in it, and lorem ipsum is deliberately meaningless, so nobody reads it and mistakes it for a claim.
- Reproducing a bug without sharing data. A generator with a seed lets you describe a failing case as three numbers and a seed rather than by attaching a file you may not be allowed to send.
The one thing filler text will not do is stand in for structured data. If the code under test parses dates, validates emails or sums money, lorem ipsum in those columns tests nothing, and the full test data generator with its 33 field types is the page you want.
Limits, stated plainly
Up to a million rows and up to two hundred columns, with up to a hundred words per cell. A million rows of four-word cells across three columns is around 90 MB, so the practical limit is usually how long you want to wait for the browser to write the file rather than the row count itself.
Above a hundred thousand rows a note appears saying that generating and saving take a moment. It is not a warning that something is wrong, just an accurate statement about a large file.
Frequently Asked Questions
Will I get the same table if I come back tomorrow?
Yes, as long as the seed and the row, column and word counts are the same. The generator is a deterministic pseudo-random function of the seed, with no dependence on the clock or on your browser, so the same settings produce identical output anywhere.
How do I get a different table?
Change the seed, or press Regenerate, which picks a new one for you and shows it in the seed box. Write down whichever seed produced the table you liked and you can get it back exactly.
Can I name the columns?
Yes. Type a comma-separated list into the header names box. Any columns you do not name become col1, col2 and so on, and a note tells you how many names were given for how many columns.
What is the row limit?
A million. Not a marketing number: it is the same ceiling the full test data generator uses, and the page really will produce a million rows in your browser. Most tools of this kind stop between five thousand and a hundred thousand. Above a hundred thousand the page warns you that saving the file takes a moment, because it does.
Is it real Latin?
It is the standard lorem ipsum word pool, which is scrambled Latin from a Cicero text and has been the printing trade's filler for five centuries. It is deliberately not meaningful, which is the point: nobody skims it and mistakes it for content.
Can I get sentences rather than word soup?
Turn on "As sentences". Each cell is then capitalized and given a full stop, which reads as prose rather than as a tag list. Leave it off when the cells are standing in for labels or short field values.
Does anything I paste leave my computer?
No. There is no upload endpoint on this page and no network request in the code that does the work. JavaScript in your own tab reads the text, processes it and hands back the result. Nothing is stored between visits either, so reloading gives you an empty box again. You can confirm it by opening your browser's network panel and watching it stay quiet while you work.
Filler you can reproduce
Free, no account, nothing transmitted. Seeded, so the same settings give the same table.
Back to the generator