A repeating text pattern in Illustrator is a sequence of numbered text frames, ticket stubs, or asset labels generated from one template that contains a numeric placeholder like {n}, and the same pattern plus a fixed start, count, and step reproduces an identical up-to-10,000-line list every time. The visual tile lives in the .AI file, but the text on each tile has to come from somewhere. For a project with dozens or thousands of items, typing each label by hand is slow and error-prone, so designers prepare the text first as a plain text file and then bring it into Illustrator as Variables, as point text along a path, or as one text frame per artboard. The Text Pattern Generator expands one pattern into deterministic lines with start, step, and optional zero-padding controls, running entirely in your browser so nothing leaves the tab. Because the same inputs always produce the same output, you can regenerate an identical source list weeks later without drift, and editing any input clears the prior result, which makes iteration cheap when a client changes the starting number, the step, or the prefix.

What a Repeating Text Pattern Needs in Illustrator
A repeating text pattern is any layout where the same text string repeats across a grid, a radial arrangement, a step-and-repeat, or a batch export. In Illustrator this typically shows up as numbered tickets fanned across a print sheet, sequential QR-style labels on packaging mockups, layer names for a multi-page PDF export, asset filenames referenced by Illustrator Variables, or simply test labels used to verify kerning before the real content lands. Each repetition needs unique content, even when the visual structure is identical, so the bottleneck is producing the unique strings.
The cleanest workflow separates two concerns: the visual tile, which lives in the .AI file, and the text payload, which lives in a plain UTF-8 TXT file. You design the tile once, bind a dataset to it, and let Illustrator place each dataset row onto its own copy. Anything that does not need to vary visually, such as the prefix, the separator, or the trailing suffix, can stay inside the pattern instead of being typed one line at a time. This is the same logic a database uses with auto-incrementing identifiers, but the source lives in a file you can inspect, diff, and rerun on demand.
Building the Numbered Source List with Text Pattern Generator
The Text Pattern Generator turns one numeric template into an ordered list of plain-text lines. Write a pattern containing {n}, choose a starting integer, line count, and integer step, then generate the output. Use a width such as {n:3} when numbers should be zero-padded. The tool produces up to 10,000 lines and 1,000,000 Unicode code points entirely inside the browser, and it uses explicit integer arithmetic with no external template engine, so the same accepted pattern, start, count, and step always generate the same ordered lines.
Because generation is local, you can experiment freely without worrying about cost or quota. Type a malformed width like {n:0} or {n:13} and the generator rejects it instead of producing a list of indistinguishable copies. A pattern without a documented numeric placeholder is rejected for the same reason, which protects you from accidentally importing a dataset of identical rows into a Variables-driven document and watching the entire grid render the same string.
Expand the {n} Placeholder
- Open the Text Pattern Generator in your browser.
- In the pattern field, type your template with the literal token {n} where the current number should appear. For zero-padded numbers use {n:3} or any width from one to twelve. For example: Ticket-{n:4} or Frame-{n}.
- Set the start integer, the total line count (a whole number from one to 10,000), and the signed integer step. Use step 1 for sequential numbering, step 2 for even-only or odd-only sequences, and a negative step for downward counts.
- Click Generate. The preview shows each line in order with LF separators. Every numeric token on the same generated line receives the same current value, so a pattern like ID-{n:3}-{n} at value seven renders as ID-007-7.
- Inspect the first and last line. Confirm the width, the sign, and the spacing before importing the list, especially when a negative or zero step is intentional.
- Click Download to save a UTF-8 TXT file. The download creates a temporary Blob URL only on click and revokes it immediately afterward, so the file never lingers in browser memory.
Bringing the Generated Lines into Illustrator
Once the TXT file is saved, the most reliable path into Illustrator is the Variables workflow. Open your template document, choose Window > Variables, and use the panel menu to load your TXT file as a variable library. Each line of the file becomes one dataset row that Illustrator can stream onto its bound text frame. For artwork with one text frame on each artboard of a multi-artboard document, give each artboard a name that matches the dataset row and bind the variable to the text frame on that artboard.
If you prefer a simpler paste workflow for a small set, open the TXT file, select all, and paste into a point text object on the canvas. Illustrator inserts each line as a separate paragraph, which you can then split into individual text frames using the direct selection tool and dragging onto your tile. For very long lists, prefer the Variables path because Illustrator can stream thousands of frames without manual selection overhead and without breaking the dataset-row boundary.
When you need to tweak one string across an already-imported list, switching to a guided find-and-replace pass through Illustrator's own text engine is usually safer than editing the TXT file and re-binding the dataset. The pattern-based find-and-replace workflow covered in How to Find and Replace Text in Illustrator Safely walks through the same dataset-row boundaries without breaking Variables bindings.
Padding, Width, and Negative Numbers
Width describes digits, not the sign. The token {n:3} requests at least three digits, so a current value of 7 becomes 007, 9 becomes 009, and 11 becomes 011. Values that already contain more digits are never truncated, so {n:3} applied to 12345 still prints 12345. Negative numbers keep a leading minus sign and pad the absolute digits after that sign: with width four, negative two becomes -0002, while zero becomes 0000.
| Width token | Minimum digits | For n = 7 | For n = -2 at row width |
|---|---|---|---|
| {n} | None | 7 | -2 |
| {n:3} | 3 | 007 | -002 |
| {n:5} | 5 | 00007 | -00002 |
| {n:12} | 12 | 000000000007 | -000000000002 |
These examples come straight from the documented width rule and the documented negative-number rule. The same width behavior applies whether the pattern uses one token or several, because every numeric token on a line receives the same current value. Widths outside one through twelve are rejected, and a pattern without any numeric placeholder is rejected.
Counting Direction with the Step Value
The first generated line always uses the start value. Each later line adds the chosen step. Positive steps count upward, negative steps count downward, and zero intentionally repeats the same number on every line. Start, step, and every generated value must remain inside JavaScript's safe integer range (MDN: Number.isSafeInteger), so printed decimal integers stay exact even when the dataset runs into the millions.
| Step value | Direction | Typical Illustrator use case |
|---|---|---|
| 1 (or any positive) | Counts upward | Sequential ticket numbers, ordered layer names, asset filenames |
| -1 (or any negative) | Counts downward | Reverse-order print runs, countdown posters, de-indexed archive labels |
| 0 | Repeats the same value | Placeholder rows during layout testing, static labels bound to a Variables dataset |
For a project numbered 100 to 120, enter start 100, count 21, and step 1. For tickets printed from 999 down to 980, enter start 999, count 20, and step -1. The generator does not provide alphabetic sequences, dates, formulas, or random choices, so any non-numeric variation between rows must live in the literal parts of the pattern, not in the {n} token. If you need different suffixes on alternating rows, generate two lists and merge them with a line-level tool.
Limits to Check Before Importing
Line count must be a whole number between one and 10,000. The joined output, including LF separators between lines, must not exceed 1,000,000 Unicode code points. The generator checks the running total and stops with an error rather than returning a partial list when that ceiling would be crossed. If your dataset needs more rows, split it into multiple TXT files and bind each file to a separate template document, or shorten the literal parts of the pattern so each line uses fewer characters.
Embedded line breaks inside the pattern make one template iteration span multiple visual lines, which can make the reported generated-line count less intuitive than the number of items Illustrator actually imports. A single-line pattern is recommended when you want a one-to-one mapping between generator output and dataset rows. Zero padding is presentation only: spreadsheet or database imports may strip leading zeros unless the destination column is treated as text, and Illustrator Variables treats each dataset entry as plain text by default, so padded numbers round-trip cleanly inside Illustrator itself.
The implementation uses explicit integer arithmetic and token replacement with no external template engine or dependency, and it does not maintain separate counters for separate tokens, so all numeric tokens on a line always advance together. No pattern, result, account, or processing history is sent to or retained by Lizely. Treat the generated list as the single source of truth for your dataset: store the original TXT file alongside the .AI document, regenerate it whenever inputs change, and you will always know exactly what Illustrator bound to each frame.