There is no underlined Latin alphabet in Unicode. Unlike bold or italic, which have dedicated blocks of characters that already incorporate the style, underline does not exist as a standalone character property. The combining-character mechanism fills this gap: the code point U+0332 (COMBINING LOW LINE) attaches a line below whatever character precedes it, producing the underlined appearance when applied to every letter in a word.

U+0332 and how combining marks work

A combining character has no glyph of its own when rendered in isolation. It is a modifier that positions a mark relative to the code point that precedes it in the text stream. U+0332, COMBINING LOW LINE, draws a horizontal stroke below the baseline of its base character — the character immediately before it.

When an underline text generator processes the word "hello", the output string is: h + U+0332, e + U+0332, l + U+0332, l + U+0332, o + U+0332. The string has 10 code points but displays as 5 visually underlined characters. Each character is actually a grapheme cluster — a base character plus one or more combining marks that together form one visible unit.

This is the same mechanism used for accented characters: é can be stored as either the single precomposed code point U+00E9 or as e + U+0301 (COMBINING ACUTE ACCENT). The precomposed form exists for accents that are common enough to deserve their own code point; U+0332 has no precomposed combinations in the Latin alphabet, so underline is always base character + combining mark.

How underline differs from strikethrough

Underline (U+0332) and strikethrough (U+0336) are sibling combining characters from the Combining Diacritical Marks block (U+0300–U+036F). Both attach to the preceding character. The difference is vertical position: U+0332 (LOW LINE) draws below the baseline, while U+0336 (LONG STROKE OVERLAY) draws through the middle of the letter at x-height.

A third sibling, U+0305 (COMBINING OVERLINE), draws above the character at cap height. All three follow the same pattern: base character + combining mark, applied per character throughout the text.

Where underline text renders correctly

U+0332 is in the Basic Multilingual Plane and in a Unicode block that has existed since version 1.0. It is supported by all major system fonts. In practice, combining underline renders correctly in:

  • Instagram bios and display names
  • Discord display names and messages (though Discord also has native __underline__ markdown)
  • Twitter/X display names and tweets
  • WhatsApp messages (though WhatsApp also supports _italic_ markdown)
  • TikTok bios and display names

The key advantage of combining underline over platform-specific markdown underline (where it exists): combining underline travels with the text when copied to other platforms. Discord's __underline__ syntax shows literal underscores outside of Discord. Combining U+0332 underline displays correctly wherever the base characters render.

Character limit impact

Because each visible underlined character is two code points (base + U+0332), underline text consumes roughly twice the character budget of plain text. U+0332 is a Basic Multilingual Plane character, so it counts as 1 code point on Twitter (not the 2-count that supplementary-plane Mathematical characters incur). A 10-letter underlined word uses 20 code points: 10 for the letters, 10 for the combining marks.

Combining underline with other styles

Combining marks attach to whatever base character precedes them. This means U+0332 works on Mathematical Bold, Mathematical Italic, Script, or any other Unicode character. You can apply combining underline to bold Unicode text and get bold underlined text. The grapheme cluster becomes: Mathematical Bold character + U+0332. Font rendering of combining marks on supplementary-plane base characters depends on the font's coverage of those combinations, but in practice major system fonts handle it correctly.

Frequently asked questions

Why does each character get its own underline instead of one continuous line?

CSS `text-decoration: underline` draws a single continuous line beneath a run of text, extending through word spacing. Combining U+0332 works per-character: each base character gets its own combining mark. Whether those per-character marks render as a continuous line or as separate short segments depends on the font's combining mark rendering. Most modern fonts draw adjacent U+0332 marks as a single continuous line, but gaps can appear at letter boundaries in some fonts or rendering environments.

Is combining underline different from HTML underline?

Yes, fundamentally. HTML `<u>` tags (or `text-decoration: underline` in CSS) are rendering instructions: they tell the browser to draw an underline beneath the text. They carry no semantic meaning and the underline disappears when the text is pasted into a plain text field. Combining U+0332 is a Unicode character included in the text string itself. The underline is part of the text, not a rendering instruction, so it travels with the characters on paste.

Does combining underline affect how screen readers read the text?

Screen readers typically skip combining marks and read the base character, treating the grapheme cluster h + U+0332 as the letter h. This is the correct behavior — combining underline is a visual modifier, not a change to the character's identity. Unlike Mathematical Bold characters (which some screen readers read as "mathematical bold capital b"), combining marks are usually transparent to screen readers, meaning underlined text reads identically to its unmodified base characters.

The Underline Text Generator applies the combining low line automatically, character by character.