User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
Position
Input 0 lines
Output 0 lines
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

Manually editing list items to add underscores or other markers is error-prone at scale. Missing one line in a 200-item list breaks formatting consistency in documentation, code comments, or data files. This tool processes each line of your input, detecting list items and applying a configurable underscore character (c) at the prefix position, suffix position, or both. It handles numbered lists (e.g., 1. Item), bulleted lists, and raw lines. The operation runs in O(n) time where n is the number of lines.

Note: this tool treats every non-empty line as a list item. Empty lines are preserved as-is for paragraph spacing. If your list uses a custom delimiter not covered by presets, use the custom character input to define your own marker. The tool does not alter the semantic content of your lines - it only prepends, appends, or wraps with the chosen character and separator.

underscore list formatter text formatting prefix list suffix list bullet list text tool

Formulas

The transformation applied to each non-empty line Li in the input is defined by the placement mode m and the chosen character c with separator s (typically a space):

{
Liβ€² = c + s + Li   if m = PREFIXLiβ€² = Li + s + c   if m = SUFFIXLiβ€² = c + s + Li + s + c   if m = BOTH

Where c is the underscore or chosen character, s is the separator string (space by default, empty if disabled), Li is the original line content, and Liβ€² is the transformed output. Empty lines where trim(Li) = "" are passed through unchanged. The total operation runs in O(n) time complexity where n = number of lines.

Reference Data

Character NameSymbolUnicodeCommon UseExample Output
Underscore_U+005FMarkdown emphasis, file naming_ Item text
Double Underscore__U+005F Γ— 2Python dunder, bold Markdown__ Item text
Hyphen-Minus-U+002DMarkdown unordered lists- Item text
En Dash - U+2013Ranges, typography- Item text
Em Dash - U+2014Parenthetical statements- Item text
Bulletβ€’U+2022Unordered lists, presentationsβ€’ Item text
Right Arrow→U+2192Navigation, flow indicators→ Item text
Check Markβœ“U+2713Completed tasks, checklistsβœ“ Item text
Star / Asterisk*U+002AMarkdown emphasis, footnotes* Item text
Plus Sign+U+002BDiff additions, Markdown lists+ Item text
Tilde~U+007EApproximation, strikethrough~ Item text
Pipe|U+007CTable delimiters, OR logic| Item text
Hash / Pound#U+0023Comments, headings, tags# Item text
Double AngleΒ»U+00BBQuotation marks, breadcrumbsΒ» Item text
Triangleβ–ΆU+25B6Play buttons, list markersβ–Ά Item text

Frequently Asked Questions

The tool treats the entire line content as-is. If a line reads "1. Buy groceries", applying a prefix underscore produces "_ 1. Buy groceries". It does not attempt to insert the character between the existing prefix and the text. If you need the underscore after the number, strip existing prefixes first using a separate text tool, then re-apply numbering after underscoring.
Empty lines and lines containing only whitespace are preserved exactly as they appear in the input. The underscore character is only applied to lines where the trimmed content has a length greater than zero. This preserves paragraph spacing and intentional blank lines in your formatted output.
Yes. The custom character input accepts any string, not just single characters. You can enter "__" for double underscores, "TODO:" as a prefix, or even emoji sequences. The separator (space) is added between your custom string and the line content, so ">> Item" would result from entering ">>" as the custom character with space separator enabled.
Yes, when the separator is enabled (default), suffix mode appends a space followed by the chosen character after the line content. For example, "Item text" becomes "Item text _". You can disable the separator to get "Item text_" with no space. The separator toggle applies uniformly to both prefix and suffix positions.
The tool processes text synchronously in the browser. For typical use cases up to 50,000 lines, processing completes in under 100ms. Beyond 100,000 lines, you may notice a brief delay. The bottleneck is string concatenation and DOM rendering of the output, not the line-by-line logic. If you experience slowness, split your input into smaller batches.
When enabled, the tool uses a regular expression pattern to detect and remove common list prefixes - including numbered prefixes (e.g., "1.", "2)"), bullet characters ("β€’", "-", "*"), and whitespace following them - before applying the new underscore character. The regex pattern used is /^(\s*)(\d+[.)\]]\s*|[β€’\-*+~>]\s*)/. This ensures clean re-formatting without doubled markers.