Quick answer: Unity TextMeshPro showing <b> as literal characters? The component’s Rich Text flag is off, or the tag is malformed.
A dialog system writes <color=red>Danger</color> into a TMP text but the brackets render as text. Rich Text was disabled.
Enable Rich Text
TMP_Text component inspector → Rich Text checkbox. With it on, TMP parses tags. Off = literal output. Default is on but can get toggled off accidentally.
Tag Syntax
Tags are <b>, <i>, <color=#FFAA00>, <size=24>. Case-sensitive. Close tags balance opens. Unbalanced or unknown tags render as text.
Sprite Tags
For inline icons: <sprite name="heart">. Requires a TMP Sprite Asset assigned in the component or globally.
Auto-Escape User Input
If user-provided strings reach TMP, escape < as <noparse>...</noparse> or filter. Otherwise users can inject tags (color, size, sprite swaps).
Verifying
Tags render as styled text. Sprites appear inline. User input shows literally without injection vulnerabilities.
“Rich Text on, tags balanced, <noparse> user input. Three rules.”
Wrap user-generated text in