Underline text generator

Underline text generator stacks a Unicode combining diacritic below each character (default U+0332 combining low line) so the underline survives copy-paste into bios, posts, and chats that strip real <u> tags. Pick from sixteen Glyph choices: low line, double low line, macron, double macron, double arrow, double breve, equals, plus, minus, tilde, dot, diaeresis, bridge, inverted bridge, seagull, or inverted double arch. Skip WS leaves whitespace bare. Want a line through the letters? Use strikethrough.

Input
Line 1:1 LF cloud_done Saved locally
Result Underline Generator
0 lines 0 chars

Combining marks below the baseline

Underline works the same way as strikethrough: a Unicode combining diacritic is appended after every character, and the renderer draws it relative to the preceding glyph. For underline, the default mark is U+0332 (combining low line), which sits just under the baseline. The original letters are never modified, so the text stays searchable and selectable.

Beyond a single low line, Unicode offers a small library of below-baseline marks. Double low line (U+0333) doubles the underline. Combining macron (U+0304) and double macron (U+035F) sit right at the baseline rather than below it. Combining bridge (U+032A), inverted bridge (U+033A), seagull (U+033C), and inverted double arch (U+035A) are visually distinctive and originally come from phonetic notation.

Every glyph travels with the text on copy-paste. Some apps (older Android browsers, certain Slack / Teams variants) render combining marks inconsistently; the first low-line option is the most universally supported and is the default for that reason.

How to use underline text generator

  1. 1Paste or type your text into the input panel on the left.
  2. 2Pick a glyph from the Glyph dropdown to choose the below-letter mark style.
  3. 3Toggle Skip WS on if you want spaces and tabs to remain bare.
  4. 4Click Copy in the output header to copy the result.
  5. 5Paste into your target app. Test rendering: not every font draws every combining mark.

Keyboard shortcuts

Drive TextResult without touching the mouse.

Shortcut Action
Ctrl FOpen the find & replace panel inside the input Plus
Ctrl ZUndo the last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor Plus
EscClose find & replace, or exit fullscreen
Ctrl KOpen the command palette to jump to any tool Plus
Ctrl SSave current workflow draft Plus
Ctrl PRun a saved workflow Plus

What this tool actually does

Combining mark per character

After every input codepoint the tool appends one combining diacritic. The default is U+0332 (combining low line). Output length roughly doubles in UTF-16 code units. Underlying letters are never altered.

Sixteen glyph choices

The Glyph dropdown picks which combining mark is appended. Includes Low Line (U+0332), Double Low Line (U+0333), Macron (U+0304), Double Macron (U+035F), Double Arrow (U+0362), Double Breve (U+035D), Equals (U+0347), Minus (U+0320), Plus (U+031F), Tilde (U+0330), Dot (U+0323), Diaeresis (U+0324), Bridge (U+032A), Inverted Bridge (U+033A), Seagull (U+033C), and Inverted Double Arch (U+035A).

Skip WS toggle

By default the mark is appended after every character. With Skip WS on, spaces, tabs, and newlines pass through bare so the underline does not visually carry across word breaks. Useful for word-by-word emphasis.

Macron sits at baseline, not below it

Combining Macron and Double Macron technically sit on top of the letter, not below. They are included here because the visual effect is similar to a thin underline running through the middle of lowercase letters. The other 14 glyphs all sit below the baseline as expected.

Browser-side, copy-paste safe

The substitution runs as a single JavaScript loop. No upload, no log. The output is real Unicode characters, not formatting markup, so it travels through clipboards into web inputs that strip HTML.

Worked example

Default Low Line glyph (U+0332). The underline carries through the space because Skip WS is off; toggle it on to leave the space bare.

Input
hello world
important note
Output
h̲e̲l̲l̲o̲ ̲w̲o̲r̲l̲d̲
i̲m̲p̲o̲r̲t̲a̲n̲t̲ ̲n̲o̲t̲e̲

Settings reference

Setting Effect on output
Glyph = Low Line (default) Appends U+0332. Standard underline: u̲n̲d̲e̲r̲.
Glyph = Double Low Line Appends U+0333. Double underline: u̳n̳d̳e̳r̳.
Glyph = Macron Appends U+0304. Sits on top of the letter as a thin overline.
Glyph = Double Macron Appends U+035F. Double overline above the letter.
Glyph = Double Arrow Appends U+0362. Right-pointing arrow under the letter.
Glyph = Double Breve Appends U+035D. Curved tie above the letter.
Glyph = Equals Appends U+0347. Equals-sign-style double underline.
Glyph = Minus / Plus Appends U+0320 / U+031F. Single bar or plus-sign below the letter.
Glyph = Tilde Appends U+0330. Wavy line below the letter.
Glyph = Dot / Diaeresis Appends U+0323 or U+0324. One or two dots below.
Glyph = Bridge / Inverted Bridge Appends U+032A or U+033A. Square arch glyphs from phonetic notation.
Glyph = Seagull / Inverted Double Arch Appends U+033C or U+035A. Stylised wave shapes.
Skip WS = off (default) Mark added after every character including spaces and tabs.
Skip WS = on Whitespace passes through bare; only non-whitespace characters get the mark.

FAQ

Why does the underline carry across the space between words?
By default the combining mark is appended after every character, spaces included. Some fonts draw a low-line under a space, others do not. Turn on Skip WS to leave whitespace bare and break the underline at word boundaries.
Will Unicode underline work in Twitter, Instagram, Discord?
Yes for all three. Twitter and Discord render combining marks reliably; Instagram bios accept them but the rendering can vary by app version. Test in your target before publishing a long run.
Why is Macron offered when it sits above the letter, not below?
Macron and Double Macron are included for completeness because their visual effect (a thin horizontal line) reads as underline-adjacent in many fonts, especially on lowercase letters. If you want strictly below-baseline marks, stick to the other 14 choices.
How do I strip the underline back to plain text?
Paste the output into remove accents to remove the combining marks. The underlying letters return unchanged.
Is this real underline?
No. Like all the styling tools here, this is a Unicode look-alike: combining diacritics rendered by your font, not real <u> markup. It survives copy-paste through web inputs but does not carry semantic meaning, and screen readers may or may not announce the marks.