Text repeater — repeat text or words multiple times
Type or paste any text, set how many times to repeat it and pick a separator, then copy the result. Numbering and a trailing separator are optional. Everything runs on your device — nothing you type is ever uploaded.
How it works
Each repetition is built first, then all of them are joined together:
Repetitions are added one at a time, and the running length is checked after every one. The moment adding the next repetition would push the output past 500,000 characters, the loop stops — so a request that is too big always yields as many whole repetitions as fit, never a copy cut off partway through. A separate, independent guard also stops the loop after 100,000 repetitions even if the text and separator are both empty, which is the one case where the character cap would never trigger on its own.
Numbering is applied before joining, not after. With numbering on, the prefix "12. " is part of each unit's own length, so it counts toward the character total exactly like the rest of the text — a numbered list of three-digit repetitions reaches the cap sooner than the same count of un-numbered ones.
Separator reference
All five choices use the exact same text × 3 example so you can compare them directly:
| Choice | Joins with | "ab" ×3 |
|---|---|---|
| New line | \n | ab
ab
ab |
| Space | " " | ab ab ab |
| Comma + space | ", " | ab, ab, ab |
| Nothing | "" | ababab |
| Custom | whatever you type, e.g. " | " | ab | ab | ab |
A custom separator can be any string, including one made only of whitespace, or left empty (which behaves exactly like "Nothing"). It is not restricted to a single character.
Worked examples
1. Filling test data for a form or spreadsheet
Set the text to a single sample row like test@example.com, choose New line, and repeat it 50 times to get 50 identical rows to paste into a form or a spreadsheet column while you test validation, pagination, or a bulk-import path.
2. A numbered checklist template
Text: Check item, separator New line, numbering on, count 10, produces 1. Check item through 10. Check item — a blank-numbered list ready to have the real item text typed in after each prefix.
3. An ASCII divider or spacer line
Text: =, separator Nothing, count 40, produces a 40-character rule ======================================== for a plain-text document, a code comment banner, or a chat message.
4. Spacing out a short phrase for emphasis
Text: yes, separator Space, count 5, produces yes yes yes yes yes — useful for casual social-copy emphasis in moderation. See the FAQ below on why this is not a spam tool.
Use cases & limitations
Where this is genuinely useful
- Test data. Generating N identical rows, emails or IDs to paste while testing a form, an import, or pagination.
- Dividers and spacers. A precise-length rule made of a repeated character, for plain-text documents, code comments, or terminal output.
- Checklist and template scaffolding. A numbered skeleton to fill in by hand afterward, without retyping the numbering yourself.
- Building a delimiter-separated list from one repeated value, using the comma or a custom separator.
What this tool does not do
- It does not vary the text between repetitions beyond the optional numeric prefix. Every copy is otherwise identical — this is not a random or Lorem-Ipsum-style generator. For placeholder paragraphs of varied filler text, see the Lorem Ipsum generator instead.
- Output is capped at 500,000 characters and 100,000 repetitions, whichever is hit first, so the tab never freezes on an oversized request. See the FAQ for exactly how the cap behaves.
- It is not a bulk-messaging or spam tool. It has no ability to send anything anywhere — it only produces text for you to copy — and using generated repeated text to spam a platform is against nearly every platform's terms.
- No multi-line ASCII art layout. It repeats a single line or character; it does not lay out a picture across multiple lines.
Frequently asked questions
What does the Text Repeater actually do to my input?
It takes the text in the box and joins that many copies of it together using the separator you picked. Turn on numbering and each copy is prefixed “1. ”, “2. ” and so on before the copies are joined; turn on the trailing-separator option and the separator is placed after the last copy too. Everything happens the moment you type or change an option — there is no submit button and no server round-trip.
How do the separator choices differ (new line, space, comma, nothing, custom)?
New line places each repetition on its own line, which is what you want for a list or a spreadsheet paste. Space joins them into one line with a single space between each. Comma + space (", ") is built for a comma-separated value list. Nothing concatenates every copy with no character between them at all, useful for ASCII dividers. Custom lets you type any string — including something like " | " or "---" — and use that exact string as the join, or leave it empty for the same effect as “nothing”.
What does numbering each repetition do, and does the prefix count toward the character total?
It writes “1. ”, “2. ”, “3. ” and so on in front of every repetition, in the order they appear — the same prefix style as a numbered list. Yes, the digits and the “. ” are real characters in the output, so they count toward both the character count shown below the tool and the 500,000-character cap. A three-digit index like “100. ” is five characters longer than the bare text, which matters if you are right at the cap.
Why is there a cap on how much text can be generated?
Repeating a long piece of text tens of thousands of times can produce a string of tens of millions of characters, which is enough to make a browser tab stutter or become unresponsive while it lays that text out. To keep the tool instant, output stops growing once it reaches 500,000 characters. The cap always lands on a whole repetition — you never get a copy cut off halfway through — and a note above the output tells you exactly how many of the requested repetitions made it in. There is a second, independent guard too: even with empty text and no separator, the loop stops at 100,000 repetitions rather than spin indefinitely.
What does "add a trailing separator" actually change?
By default the separator only goes between repetitions, so three copies joined by a comma read “a, a, a” with nothing after the last one. Turning this on places the separator after the final repetition as well — “a, a, a, ” — which is useful when every value in a target format needs a trailing delimiter, such as pasting a value into every cell of a spreadsheet row or building a list where a closing divider is expected. It is off by default because in most everyday uses a trailing separator just reads as a stray extra character.
Is there a limit to how many times I can repeat something?
The count field accepts up to 100,000, which is also a hard internal ceiling that applies even if the text and separator are both empty — a case where the character cap alone would never kick in. In practice the 500,000-character output cap is reached first for anything but very short text, and the note above the output always says which limit stopped it and how many repetitions actually made it into the result.
Is my text uploaded or saved anywhere?
No. Repeating text is pure string handling — there is no reason for it to ever leave your browser, and it doesn’t: there is no server call anywhere in this tool, nothing is written to a database, and closing or reloading the tab clears everything. What you type never leaves your device.
Should I use this to post the same message repeatedly on social media or forums?
No — please don’t. Posting identical or near-identical content repeatedly is spam under almost every platform’s own terms of service and can get an account suspended, regardless of what generated the text. This tool exists for legitimate repeated-content needs: filling test data, building dividers, drafting a numbered checklist, or padding out a layout mockup — not for flooding a comment section or a chat.
Can I use this to generate ASCII dividers or simple ASCII art?
Yes — set the separator to “nothing” and repeat a single character like “=”, “-” or “*” as many times as you need for a horizontal rule of an exact width, or repeat a short pattern like “=-” to build a simple repeating border. It won’t lay out a multi-line picture for you, but for single-line dividers and repeating patterns it is a fast way to get an exact, predictable length.