Combining Character Adder
Add Unicode combining diacritical marks to any text. Stack accents, tildes, strikethroughs, and Zalgo effects with real-time preview.
About
Unicode combining characters (range U+0300 - U+036F) are non-spacing marks that attach to the preceding base character without advancing the cursor. Incorrect usage produces mojibake or corrupted displays across mail clients, databases with improper normalization, and legacy systems that strip or misinterpret multi-byte sequences. This tool inserts one or more combining diacritical marks after each base character in your input, generating real Unicode output - not images or SVG hacks. It handles stacking order, avoids double-application on existing combining marks, and respects the 5000-character safety limit to prevent browser rendering stalls from excessive mark accumulation.
Common applications include linguistic annotation (IPA transcription requires precise mark placement), mathematical notation where combining overlines (U+0305) denote repeating decimals, and creative “Zalgo” text effects that stack multiple marks vertically. The tool distinguishes between above, below, overlay, and enclosing mark categories so you can control vertical placement. Pro tip: some fonts render stacked marks poorly - test output in your target application before publishing.
Formulas
The combining character insertion algorithm processes each character in the input string and classifies it by Unicode code point. For a given input string S of length n and a set of selected combining marks M, the output string O is constructed as follows:
append ci to O
IF isCombining(ci) = FALSE:
for each mj in M:
repeat mj × k times, append to O
Where k is the stacking intensity (1 - 10). The function isCombining(c) returns TRUE when the code point falls within U+0300 - U+036F, U+1AB0 - U+1AFF, U+1DC0 - U+1DFF, U+20D0 - U+20FF, or U+FE20 - U+FE2F. This check prevents combining marks from receiving additional marks, avoiding uncontrolled recursive stacking. Output length is bounded by n × (1 + |M| × k).
Reference Data
| Character | Unicode | Name | Position | Example (on 'a') |
|---|---|---|---|---|
| ̀ | U+0300 | Combining Grave Accent | Above | à |
| ́ | U+0301 | Combining Acute Accent | Above | á |
| ̂ | U+0302 | Combining Circumflex Accent | Above | â |
| ̃ | U+0303 | Combining Tilde | Above | ã |
| ̄ | U+0304 | Combining Macron | Above | ā |
| ̅ | U+0305 | Combining Overline | Above | a̅ |
| ̆ | U+0306 | Combining Breve | Above | ă |
| ̇ | U+0307 | Combining Dot Above | Above | ȧ |
| ̈ | U+0308 | Combining Diaeresis | Above | ä |
| ̊ | U+030A | Combining Ring Above | Above | å |
| ̋ | U+030B | Combining Double Acute | Above | a̋ |
| ̌ | U+030C | Combining Caron | Above | ǎ |
| ̐ | U+0310 | Combining Candrabindu | Above | a̐ |
| ̒ | U+0312 | Combining Turned Comma Above | Above | a̒ |
| ̓ | U+0313 | Combining Comma Above | Above | a̓ |
| ̔ | U+0314 | Combining Reversed Comma Above | Above | a̔ |
| ̖ | U+0316 | Combining Grave Below | Below | a̖ |
| ̗ | U+0317 | Combining Acute Below | Below | a̗ |
| ̣ | U+0323 | Combining Dot Below | Below | ạ |
| ̤ | U+0324 | Combining Diaeresis Below | Below | a̤ |
| ̥ | U+0325 | Combining Ring Below | Below | ḁ |
| ̦ | U+0326 | Combining Comma Below | Below | a̦ |
| ̧ | U+0327 | Combining Cedilla | Below | a̧ |
| ̨ | U+0328 | Combining Ogonek | Below | ą |
| ̭ | U+032D | Combining Circumflex Below | Below | a̭ |
| ̮ | U+032E | Combining Breve Below | Below | a̮ |
| ̰ | U+0330 | Combining Tilde Below | Below | a̰ |
| ̱ | U+0331 | Combining Macron Below | Below | a̱ |
| ̲ | U+0332 | Combining Low Line | Below | a̲ |
| ̳ | U+0333 | Combining Double Low Line | Below | a̳ |
| ̴ | U+0334 | Combining Tilde Overlay | Overlay | a̴ |
| ̵ | U+0335 | Combining Short Stroke Overlay | Overlay | a̵ |
| ̶ | U+0336 | Combining Long Stroke Overlay | Overlay | a̶ |
| ̷ | U+0337 | Combining Short Solidus Overlay | Overlay | a̷ |
| ̸ | U+0338 | Combining Long Solidus Overlay | Overlay | a̸ |
| ⃝ | U+20DD | Combining Enclosing Circle | Enclosing | a⃝ |
| ⃞ | U+20DE | Combining Enclosing Square | Enclosing | a⃞ |
| ⃟ | U+20DF | Combining Enclosing Diamond | Enclosing | a⃟ |
| ⃠ | U+20E0 | Combining Enclosing Circle Backslash | Enclosing | a⃠ |