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
- 1Paste or type your text into the input panel on the left.
- 2Pick a glyph from the Glyph dropdown to choose the below-letter mark style.
- 3Toggle Skip WS on if you want spaces and tabs to remain bare.
- 4Click Copy in the output header to copy the result.
- 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 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
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.
hello world important note
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?
Will Unicode underline work in Twitter, Instagram, Discord?
Why is Macron offered when it sits above the letter, not below?
How do I strip the underline back to plain text?
Is this real underline?
<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.