A text repeater is a tool that takes a piece of text and outputs it duplicated N times. The output can use different separators (newline, space, comma, custom) and optional features like numbered lines.
Yes, completely free. There is no signup, no paid tier, no upsell. The site is funded by display advertising via Adsterra.
Yes — every tool is mobile-responsive. Type or paste on your phone, generate, copy with one tap, and share directly to any app that accepts text.
Yes. Anything you generate is your own work. The Lorem Ipsum text we provide is public-domain Latin text from Cicero, free to use in any commercial design.
Generating a long message and sending it to one friend is not what WhatsApp's spam detection targets. What gets accounts banned is sending the same message to many different recipients quickly, or using third-party automation tools. Use the tool for fun in your existing chats; don't mass-broadcast.
Yes — every tool has a "Download .txt" button that saves the output as a plain text file.
Yes — the "Share link" button generates a URL with your text, count, and separator pre-filled. Send the URL to someone and they'll see the same configuration when they open it.
Browsers slow down or freeze when handling extremely large strings (~10+ million characters). The limits we use (100K reps, 10 MB output) keep the experience smooth on any device. For larger outputs, use a script in Python or shell.
No. The repeater runs entirely in your browser's JavaScript — your input is never uploaded to our server. You can verify this in your browser's Network tab.
Not yet, but it's on the roadmap. The codebase is small (~80 KB total) so an offline PWA version would be easy to add. Email us if you want this feature.
Type your text in the main repeater, set the count to 10,000, choose a separator (New line stacks it vertically, Space keeps it on one line), and tap Copy. Paste into WhatsApp. Very large pastes can lag older phones — if it stutters, lower the count or send in batches.
Paste one or more emoji into the text box, set how many repeats you want, and copy the result. The emoji repeater is built for this and has a one-tap copy button for mobile.
Choose the New line separator. Each repetition goes on its own line to form a vertical column. Space or None keep everything on a single line instead.
Set the count to 1,000, choose the Custom separator, and enter a comma and a space. The line repeater and sentence repeater both handle this cleanly.
Turn on Dynamic tokens and put a token in your text: {i} for a counter, {id} for a zero-padded counter, {rand} for a random number, {time} for an incrementing clock. Item {i} becomes Item 1, Item 2, Item 3. You can also switch on "Number each line" for a simple 1. 2. 3. prefix.
In the main repeater, set Font style to Invisible. Your text is replaced with the Braille-blank character (U+2800), which sends as real content but shows nothing. Copy and paste it anywhere. See the invisible & blank text guide for details.
Most chat apps trim leading and trailing spaces, then block the send because the message is empty. A blank Unicode character like U+2800 isn’t classified as whitespace, so it survives trimming and the message goes through looking blank.
Generate a single invisible character with the Invisible font style and paste it into the name or bio field. Because the field contains a real character, the platform accepts it, but it displays as empty.
It’s the Braille Pattern Blank — a Braille cell with no raised dots. It’s a normal printable character with no visible shape, which makes it the most reliable way to create text that looks empty but still counts as content.
Yes. Set Font style to Invisible, choose the New line separator, and set your count for a tall block of empty lines. Keep it reasonable — bulk blank messages still count as spam to messaging platforms.
A normal space (U+0020) is whitespace and gets trimmed by most apps. A zero-width space (U+200B) has no width but is often stripped too. The Braille blank (U+2800) is neither — it’s a printable character that happens to draw nothing, which is why it’s the most dependable for blank text.
Use the stress test generator. It fills to an exact byte size — 1 KB, 10 KB, 100 KB, 1 MB, or 10 MB — padding the final repetition so you hit the target precisely.
Use the character repeater and watch the live character count, or the stress test generator for an exact byte size. 65,535 is the TEXT column limit in MySQL — generate that plus one to confirm your column rejects or truncates cleanly. More in the testing guide.
Write one row as a template, use the New line separator so each repetition is its own row, and click Download .csv. Turn on Dynamic tokens to give each row unique values.
Enable Dynamic tokens and use {i} or {id} in your text: user_{id},{rand},active repeated 25,000 times produces user_00001, user_00002, and so on, each with a random value. Download as .csv when done.
Yes — alongside Download .txt there’s a Download .csv button. Each line of output becomes one quoted CSV row, safe to open in Excel or import into a database.
Choose the Custom separator and type your delimiter — a comma, a pipe, a tab (\t), or anything else. This lets you build delimited records directly.
There’s no fixed spec limit, but browsers get sluggish handling multi-megabyte strings in a single input, and clipboard behavior varies by OS. Our tools cap output at 10 MB / 100K reps to stay smooth; past that, generate in code.
Generate strings at the exact edge — 255, 1024, 65535 characters — with the character repeater, paste them into the field, and watch for truncation or errors. Then try one character more. The testing guide walks through common cases.
Set Letter case to Random for per-character upper/lower mixing, or use Dynamic tokens ({rand}, {uuid}) to vary each line. Useful for fuzzing how software handles input.
Set Font style to Bold, Italic, Fraktur, or Upside-down. These map your letters to Unicode look-alikes, so the styling survives copy-paste into apps that don’t normally allow custom fonts.
Choose the Upside-down font style. Your text is flipped and reversed (Hello becomes ollǝH), then repeated as many times as you set.
Pick the Bold or Italic font style. The output uses mathematical Unicode characters, so it stays bold or italic when pasted into chats and bios — no formatting menu needed.
Styled text uses special Unicode characters. If a device or app lacks a font covering those characters, it shows a "tofu" box instead. Newer phones render them fine; very old devices may not.
Not currently. The available styles are Bold, Italic, Fraktur, Upside-down, and Invisible. Zalgo (stacked combining marks) isn’t supported yet — let us know if you’d like it added.
A standard Discord message allows 2,000 characters; full Nitro raises it to 4,000. Bot messages are always capped at 2,000. Everything counts — letters, spaces, punctuation, URLs, and emoji.
A single Telegram message holds up to 4,096 characters; longer text is split into multiple messages. Media captions are limited to 1,024 characters.
A standard post is 280 characters. X Premium subscribers can post up to 25,000 characters, though only the first 280 show before a "Show more" cut-off. Limits change, so check current terms before relying on an exact number.
The main repeater generates large outputs in a background Web Worker with a progress bar, so the page stays responsive. Above about 10 million characters it stops to protect your browser — reduce the count or generate in code for more.
Speed and privacy. Client-side generation is instant with no round trip, and your text never leaves your device. It also means the tool keeps working even when our server only hosts static files.
The live counter shows characters (UTF-16 code units), words, and lines. Emoji and some symbols are multiple code units, so a single emoji may count as 2 — the same way many other counters and databases measure length.
Choose the None or Space separator rather than a custom one with extra spaces, and trim trailing spaces from your input before repeating. That keeps the output clean.
The main repeater does everything — counts, separators, tokens, fonts. The specialty tools (word, line, sentence, character, emoji, WhatsApp, Lorem Ipsum, stress test) are the same engine pre-tuned for one job with tailored examples. Start with the main repeater and switch if a specialty tool’s defaults match your task.
The word repeater repeats a single word or short phrase; the line repeater repeats a whole line and defaults to stacking each copy on its own line. They share the same engine — pick the one whose defaults match your input.
The sentence repeater repeats a full sentence and keeps punctuation and spacing intact, with separators suited to prose. Good for filling a paragraph or testing how text wraps.
Use the character repeater to repeat a single character — like “a” 1,024 times — for exact-length strings when testing fields or padding. It shows a live character count and allows up to 1,000,000 repeats.
The Lorem Ipsum repeater generates classic placeholder text (public-domain Latin) for design mockups, so you can fill a layout without writing real copy.
The WhatsApp repeater is the same engine with a mobile-first layout and one-tap copy, tuned for pasting into chats. Use it on your phone; the result is identical to the main tool.
Eight specialty repeaters plus the main tool. See the tools hub for all of them.
New line (stacks copies vertically), Space, None (no gap), or Custom, where you type any text — a comma, a bullet, or a symbol — to place between copies.
Choose Custom and type \t. The tool converts \t to a real tab, which is handy for tab-delimited output.
Yes. Choose Custom and paste an emoji or symbol (like • or —) as the separator; it’s placed between every copy.
Choose Custom and enter \n\n. Two newlines put an empty line between each repetition.
The \n shortcut is only converted to a newline inside the Custom separator field. If you typed \n into the main text box, it stays literal — press Enter in the text for line breaks, or use the New line separator.
Choose the None separator. Copies run together with nothing in between.
Tick “Number each line” to prefix each copy with 1. 2. 3. and so on. For zero-padded or custom numbering, use the {id} or {i} token instead.
Not directly — numbering and {i} both start at 1. As a workaround, generate with tokens and adjust in a text editor. Tell us if fixed start values would be useful.
The main repeater allows up to 100,000 repetitions; the character repeater allows up to 1,000,000. Output is also capped at about 10 MB.
The count is clamped to the maximum automatically and a note tells you it was capped. Nothing breaks.
One. A count of zero or a blank field produces no output.
The tool estimates the output size live and shows it, warning you before you generate something very large.
Above roughly one million characters, rendering can briefly slow the page. The warning lets you decide before generating; above ten million characters it stops to protect your browser.
Not in the browser — that’s the safe ceiling. For larger files, generate from a script; a couple of lines of Python or shell will do it.
Large jobs run in a background Web Worker so the tab stays responsive, but very large output still uses memory. On an older device, keep counts moderate.
Your browser may block clipboard access on an insecure page or an older browser. The tool falls back to a manual copy automatically; if it still fails, select the output and press Ctrl+C (Cmd+C on Mac).
To your browser’s default downloads folder — the same place as any other download. You can change that in your browser settings.
Yes. Import the .csv into Google Sheets (File → Import) or open it in Excel; each output line becomes a row.
The share link encodes your text in the URL, so anyone with the link can read it. Don’t share links that contain sensitive text.
Use Share link to capture your text, count, and settings in a URL, then bookmark it. Opening it later restores the setup.
No. Downloads contain exactly your generated text — no watermark, no added lines, no branding.
Press Clear to empty the text and count and reset the output.
Yes. Copy from any app and paste into the text box; the tool repeats whatever you paste, including emoji and line breaks.
Yes. Font style, letter case, numbering, and tokens all stack. Numbers rendered in a fancy font may look unusual, which is expected.
Yes. Bold and Fraktur use Unicode characters, so they keep their look when pasted into an Instagram bio or caption.
Not currently. Those rely on combining marks rather than distinct characters. The available styles are Bold, Italic, Fraktur, Upside-down, and Invisible.
Not yet. Tell us if you’d like these Unicode styles added.
A few characters have no upside-down look-alike in Unicode, so they’re left as-is. Most letters, digits, and common punctuation flip.
It varies by app version. The Braille blank (U+2800) works in most apps; if iMessage trims it, try sending it inside other text. See the invisible & blank text guide.
Often, but some platforms restrict name fields to plain letters and will reject or strip Unicode styling. Test before relying on it.
Styled Unicode text can be read oddly or skipped by screen readers, so avoid it in content that must be accessible.
2,200 characters, though only the first ~125 show before a “more” link. Everything counts, including spaces and emoji.
150 characters.
A personal WhatsApp message can hold up to about 65,536 characters (64 KB). Longer text won’t send as a single message.
Each app enforces a per-message limit. When you exceed it, the app either splits the text into several messages or blocks the send. Size your repeated output to the target platform’s limit.
Instagram shows only the first ~125 characters before a “more” link. Repeated text still posts in full, but readers must tap to expand it.
Yes. The live character counter shows your output length so you can keep it under a platform’s limit before pasting.
Often not. Many emoji are multiple code units, so a single emoji can count as 2 or more toward a character limit. Watch the counter when using emoji near a limit.
The tool itself doesn’t require cookies. Google Analytics and the ad script may set cookies for measurement; see the privacy policy.
We use Google Analytics for anonymous page-view counts. It sees page URLs, not your input text.
No. Your input never leaves your browser, so there’s nothing to sell. See the privacy policy for details on analytics and ads.
Yes. The tool is plain client-side HTML and JavaScript with no downloads or installs. You can inspect the source or the Network tab to confirm nothing is sent.
Any modern browser — Chrome, Firefox, Safari, or Edge — on desktop or mobile.
No. The repeater runs in JavaScript, so it needs JavaScript enabled. That’s also why your text stays on your device.
It’s a small static site. There’s no public repository to fork right now, but the whole thing is client-side; contact us if you’d like to discuss.
Yes. Use the ☾ toggle in the navigation; your choice is remembered on the device.
The tools use standard form controls and buttons that work with a keyboard and screen reader. The generated fancy and invisible styles are the exception — those aren’t screen-reader friendly by nature.
The interface is English only for now. The tools themselves work with text in any language or script.
Use spreadsheet formulas like REPT or a fill-down. See our guides on repeating text in Excel and Google Sheets for the exact steps.
Yes. Paste multiple lines into the main repeater and it repeats the whole block each time. If you’d rather repeat each line on its own, use the line repeater.