Style Text · browser-local
Underline Text Generator
Underline plain text where there is no rich-text option by adding the combining low line (U+0332) after each supported character. The underline travels with the text when you copy it, unlike an editor's underline button. GlyphSift keeps characters it should not stack a mark on, such as emoji.
- Index state
- draft
- Reviewed
- 2026-09-16
- Input limit
- 5,000 graphemes
Underline Text Generator
U̲n̲d̲e̲r̲l̲i̲n̲e̲ t̲h̲i̲s̲ t̲e̲x̲t̲
Good fit
Use this tool when
- A field has no underline button but accepts pasted text.
- You want the underline to survive copy and paste.
- Your text is mostly Latin letters and digits.
Keep the original
Avoid it when
- You control an editor that already offers real underline.
- The destination must stay accessible and easy to search.
- Fonts at the destination break combining marks into separate boxes.
Reviewed truth vectors
Examples that expose the edge cases
ABA̲B̲Each letter is followed by the combining low line U+0332.
Hello 42H̲e̲l̲l̲o̲ 4̲2̲Letters and digits are underlined; the space is left plain.
Café 😀C̲a̲f̲é 😀The precomposed é and the emoji are preserved without a stacked mark.
Transparent implementation
How it works
- 01
Split the input into Unicode code points.
- 02
Append the combining low line (U+0332) after each letter and digit.
- 03
Skip spaces, emoji, and lone combining marks so nothing renders as a broken stack.
Known limitations
What the result cannot promise
The underline is a combining character, not a font style, so some fonts draw it broken or offset.
Precomposed accented letters and emoji are left without an added mark.
Combining marks can reduce searchability and be read out oddly by assistive technology.
Questions before copying
Frequently asked questions
Why does the underline look broken in some apps?
The combining low line is drawn by the destination font. When gaps appear between characters, the font is not joining the marks; the underlying text is still correct. See the guide on why copied underlines look different.
Is this the same as pressing the underline button?
No. An editor's underline is formatting that is lost in plain-text fields. This adds combining characters to the text so the underline is copied with it.
Why is my emoji not underlined?
Stacking a combining line on emoji and other complex characters usually renders as a broken box, so GlyphSift leaves them unchanged.
Experience, expertise & trust
How we verify this tool
Automated evidence
- Tool-contract & coverage suite30 deterministic cases
tests/tools-30.test.mjs mirrors the ToolRunner dispatch and asserts every registered engineId returns the contracted output shape, plus a coverage guard so no tool silently drops characters.
Run in: node --test after a production build (vinext build) - Rendered-HTML suite12 deterministic cases
tests/rendered-html.test.mjs renders the deployed server bundle and asserts the Unicode-version manifest and each wave's tool markup are present in the server-rendered HTML.
Run in: node --test against the built dist/server bundle - Transform & cleanup suite21 deterministic cases
tests/transform-cleanup.test.mjs exercises each deterministic cleanup and transform action against whitespace, duplicate, ordering, casing, and HTML-to-text edge cases.
Run in: node --test, no network, no randomness
Standards this tool follows
- The Unicode Standard, Version 17.0
Mathematical Alphanumeric Symbols and Enclosed Alphanumerics blocks used for presentation styles.
- UAX #44: Unicode Character Database
Character properties that determine which source characters have a style mapping.