Append to every line, paragraph, or the whole block
Suffix is the string to attach. Scope picks where it goes. Per Line (the default) appends to every line. Per Paragraph appends once at the end of each paragraph (a paragraph is a run of lines separated by two or more line breaks). Whole Text appends once to the very end of the input.
Skip Empty uses line.trim() === '', so lines containing only spaces or tabs count as empty and are left alone. With the paragraph scope the same check is applied to whole paragraph chunks. Whole-text scope ignores the toggle because there is only one insertion point.
Common uses: terminating each line with a semicolon for SQL or JS (; per line), turning a list into one comma-separated string (, per line, then join externally), or adding a footer marker ([end] whole text). To wrap each line on both sides at once use wrap each line.
How to use add a suffix to every line
- 1Paste your text into the input panel on the left.
- 2Type the string you want to append into the Suffix field.
- 3Pick a Scope:
Per Line,Per Paragraph, orWhole Text. - 4Toggle Skip Empty on if you want blank lines or blank paragraphs left untouched.
- 5Click Copy or Download in the output header to take the result.
Keyboard shortcuts
Drive TextResult without touching the mouse.
| Shortcut | Action |
|---|---|
| Ctrl F | Open the find & replace panel inside the input Plus |
| Ctrl Z | Undo the last input change |
| Ctrl Shift Z | Redo |
| Ctrl Shift Enter | Toggle fullscreen focus on the editor Plus |
| Esc | Close find & replace, or exit fullscreen |
| Ctrl K | Open the command palette to jump to any tool Plus |
| Ctrl S | Save current workflow draft Plus |
| Ctrl P | Run a saved workflow Plus |
What this tool actually does
Three scope modes, line is the default
Per Line splits on \r?\n and appends to each piece. Per Paragraph splits on two-or-more line breaks and appends to each text chunk. Whole Text just appends once to the entire string.
Skip Empty is whitespace-aware
A line is treated as empty if trim() returns an empty string, so spaces and tabs do not block the skip. Empty lines pass through with no suffix appended.
Paragraph mode preserves separators
In Per Paragraph mode the blank-line separators between paragraphs are kept exactly as they were in the input, including the count of consecutive newlines.
Empty suffix is a no-op
If you leave Suffix empty the tool returns the input unchanged. Nothing is appended in any scope.
Line endings are normalised on output
Per-line and per-paragraph modes use \n in the join, so CRLF input becomes LF output. Whole-text mode preserves the input verbatim apart from the appended string.
Worked example
Suffix ;, scope Per Line, Skip Empty off. Turn the toggle on and the blank line between the two queries stays bare.
SELECT id FROM users SELECT name FROM users
SELECT id; FROM users; ; SELECT name; FROM users;
Settings reference
| Behaviour | Effect on output |
|---|---|
| Suffix empty | Input passes through unchanged. |
Scope = Per Line |
Suffix is appended to every line. Default mode. |
Scope = Per Paragraph |
Suffix is appended once at the end of each paragraph. |
Scope = Whole Text |
Suffix is appended once to the very end of the input. |
| Skip Empty off | Every line or paragraph gets the suffix. |
| Skip Empty on | Lines or paragraphs whose trim() is empty pass through unchanged. |
| Line endings | Per-line and per-paragraph modes normalise CRLF to LF on output. Whole-text mode preserves input verbatim. |
FAQ
How is a paragraph defined?
Can I append a multi-character suffix?
; for SQL terminators, , for CSV-style joining, or <br> for HTML.Does Skip Empty treat space-only lines as empty?
line.trim() === '', so spaces and tabs count as blank.