Skip to content

Rich Text Formatting Reference

Certain text blocks in Unturned™ support rich text markup , inline tags that modify the appearance of the rendered text by applying bold, italics, color changes, font size adjustments, and other formatting effects. The rich text system is the mechanism through which mod authors control the visual presentation of item names and descriptions in the inventory UI, the formatting of NPC dialogue text in the dialogue panel, and the styling of sign and note text visible in the game world. Understanding which tags are supported, how tags nest, and which tags are exclusive to specific text contexts is essential preparation for authoring polished, professional-quality English.dat files and NPC dialogue assets.

57 Studios™ has documented and validated the full rich text formatting surface across the Unturned™ modding community. This article covers the two rendering modes in use , the default uGUI/TextMesh Pro mode used by the vast majority of players, and the legacy IMGUI mode , as well as the four Unturned-specific extended tags that are exclusive to dialogue and signs. The article provides a complete tag reference with worked examples drawn from shipped game files, documents the tag nesting rules and color format conventions, and includes a diagnostic table of the most common rich text formatting errors.

Rich text preview showing a formatted item name and description in the inventory UI

Documentation source: This article references the official Smartly Dressed Games modding documentation for tag definitions and the TextMesh Pro documentation for the complete uGUI tag set. Community-validated notes are marked where the official documentation is silent on a detail.

Who this article is for

This article is written for Unturned™ mod authors who have completed at least one item mod and are authoring English.dat localization files, NPC dialogue assets, or sign and note text. The article assumes familiarity with the .dat file format, the English.dat localization convention, and the basic item-asset folder structure. If you are new to Unturned™ modding, start with Item Asset Anatomy and Project Folder Structure and GUIDs before returning here.

What you'll learn

  • The two rich text rendering modes in Unturned™ (uGUI/TextMesh Pro and IMGUI) and which mode applies to which game systems
  • The complete tag vocabulary supported by TextMesh Pro, the default rendering mode
  • The four Unturned-specific extended tags (<br>, <name_npc>, <name_char>, <pause>) and where each is valid
  • How to format text with bold, italic, color, size, and other effects
  • The supported color formats (hex RGB, hex RGBA, named colors)
  • How tags nest and which nesting combinations produce valid output
  • How rich text behaves in English.dat Name and Description fields, NPC dialogue, and sign/note text
  • The IMGUI legacy tag set and when it applies
  • Worked examples drawn from shipped Unturned™ game files

Background: how Unturned renders text

Unturned™ uses Unity's built-in text rendering system to display in-game text. Unity provides two text rendering backends: uGUI (the modern UI system, which uses TextMesh Pro as its rich text engine) and IMGUI (the legacy immediate-mode GUI system). Unturned™ uses uGUI for the majority of its player-facing text , the inventory UI, the HUD, the pause menu, NPC dialogue panels, sign and note reading interfaces , and falls back to IMGUI only for certain legacy UI surfaces that have not been migrated to uGUI.

The rich text rendering mode determines which set of tags is recognized. The mode is not selected by the mod author; it is determined by the game system that displays the text. A tag that is valid in one mode (e.g., a TextMesh Pro color tag in NPC dialogue) produces no effect and renders as literal text in the other mode. Understanding which mode applies to each text context is therefore the prerequisite to authoring correctly formatted text.

As shown in the flowchart above, the uGUI/TextMesh Pro mode is the dominant rendering path and the one that mod authors should target for all new content. The IMGUI mode exists for backward compatibility with legacy UI surfaces and is not a recommended target for new mod development.

Rich text in English.dat files

The English.dat file is the primary localization file for every item, NPC character, dialogue, quest, and vendor asset in Unturned™. Two fields in a standard English.dat file support rich text markup:

FieldRich text supported?Rendering modeTypical usage
NameYesuGUI (TextMesh Pro)The display name shown in the inventory, tooltip, and HUD
DescriptionYesuGUI (TextMesh Pro)The flavor text shown in the inventory tooltip

The Name field typically carries short, clean text without rich markup , a rich-text-formatted name can look out of place in the inventory grid where space is constrained. The Description field is the primary canvas for rich text formatting: mod authors use color, bold, and italics in descriptions to emphasize key properties, signal rarity tiers, or add visual polish to flavor text.

English.dat rich text example

The following example shows an English.dat file for a custom item with rich text formatting applied to the Description field:

Name Custom Eaglefire Mk IV
Description <color=#FF8888>Assault Rifle</color> - <b>5.56mm NATO</b>
<size=90%><i>"The fourth iteration of the Eaglefire platform. <color=#FFDD44>Legendary</color> rarity."</i></size>

When rendered in the inventory tooltip, the description above displays "Assault Rifle" in a soft red color, "5.56mm NATO" in bold, the rarity label "Legendary" in gold, and the entire flavor text at 90% of the default font size in italics. The markup is self-contained within the Description field; the Name field carries plain text only.

Rich text in Name fields

Applying rich text markup to the Name field is technically valid but produces visual results that vary across UI contexts. The inventory-grid item label, the hotbar slot label, the ground-item nametag, and the tooltip header all render the Name field, and each context has different space constraints and styling. A color-tagged name that looks correct in the tooltip may overrun the inventory grid cell or clash with the rarity-highlight color applied by the UI. The cohort recommendation is to keep the Name field as plain text and reserve rich text formatting for the Description field.

uGUI / TextMesh Pro tag reference

TextMesh Pro is the rich text engine used by Unity's uGUI text system and by every player-facing text surface in Unturned™. The tag vocabulary is documented in full in the official TextMesh Pro documentation; the reference below covers every tag relevant to Unturned™ mod development.

Bold and italic

TagSyntaxExampleEffect
Bold<b>text</b><b>Warning:</b> high voltageRenders the enclosed text in the bold weight of the current font.
Italic<i>text</i><i>Flavor text here</i>Renders the enclosed text in the italic/oblique style of the current font.

Bold and italic are the two most commonly used formatting tags in mod English.dat files. They nest inside each other and inside color, size, and other formatting tags without restriction.

<b><i>Bold italic text</i></b> renders as bold-italic.
<i><b>Italic bold text</b></i> is functionally identical.

Color

The <color> tag changes the color of the enclosed text. TextMesh Pro supports three color specification formats.

FormatSyntaxExample
Hex RGB<color=#RRGGBB><color=#FF8844>Warning text</color>
Hex RGBA<color=#RRGGBBAA><color=#FF884488>Semi-transparent text</color>
Named color<color="colorname"><color="red">Red text</color>

The hex formats are the recommended method for specifying colors in mod English.dat files. Hex RGB uses six hexadecimal digits representing red, green, and blue channels (00-FF each). Hex RGBA adds two additional digits for the alpha/transparency channel. Named colors reference Unity's built-in color palette, which includes standard color names such as red, green, blue, yellow, cyan, magenta, white, black, gray, grey, clear, and the extended palette documented in the Unity Color documentation.

Color conventions for mod items

The cohort-recommended color conventions for mod item descriptions are:

  • Rarity indicators: use hex colors that match the inventory UI's rarity highlights (Common = no color tag, Uncommon = #88FF88, Rare = #4488FF, Epic = #AA44FF, Legendary = #FFAA00, Mythical = #FF4444).
  • Warning text: use #FF8844 for caution-level warnings, #FF4444 for danger-level warnings.
  • Flavor text: use #AAAAAA at reduced size for italic flavor quotes, distinguishing flavor text from gameplay-relevant stat text.

Size

The <size> tag scales the enclosed text relative to the default font size. The value can be expressed as an absolute pixel size or as a percentage of the current font size.

FormatSyntaxExample
Percentage<size=N%><size=80%>Smaller text</size>
Absolute pixels<size=N><size=18>Larger text</size>

Percentage-based sizing is the recommended method for mod English.dat files because it is independent of the base font size configuration. An absolute pixel size that looks correct at one UI scale may overflow or become illegible at another. Percentage values between 70% and 120% are the practical range for mod item descriptions; values outside this range produce text that is either unreadably small or disproportionately large relative to the surrounding UI.

Superscript and subscript

TagSyntaxExample
Superscript<sup>text</sup>x<sup>2</sup> renders as x followed by a raised 2.
Subscript<sub>text</sub>H<sub>2</sub>O renders as H, a lowered 2, then O.

Superscript and subscript are rarely used in mod English.dat files but can add precision to technical-sounding item names or descriptions.

Underline and strikethrough

TagSyntaxExample
Underline<u>text</u><u>Underlined</u> text
Strikethrough<s>text</s><s>Obsolete</s>

Additional TextMesh Pro tags

The tags below are part of the full TextMesh Pro tag vocabulary and are recognized by the Unturned™ text renderer in uGUI mode. They are less commonly used in mod item descriptions but are documented here for completeness.

TagSyntaxPurpose
<align><align="left|center|right">Changes text alignment within the text block.
<alpha><alpha=#FF>Sets the alpha/transparency of the enclosed text as a hex byte.
<cspace><cspace=N>Adjusts character spacing in pixel or em units.
<font><font="FontName">Switches to a named font asset loaded by TextMesh Pro.
<indent><indent=N>Indents the enclosed text by N pixels.
<line-height><line-height=N%>Adjusts line height as a percentage of the default.
<line-indent><line-indent=N%>Indents the first line of a paragraph.
<link><link="id">Marks text as a hyperlink. Interaction behavior depends on the UI element.
<lowercase><lowercase>text</lowercase>Forces the enclosed text to lowercase.
<uppercase><uppercase>text</uppercase>Forces the enclosed text to uppercase.
<smallcaps><smallcaps>text</smallcaps>Renders text in small capitals.
<margin><margin=N>Adjusts the margin of the enclosed text block.
<mark><mark=#RRGGBBAA>Highlights text with a background color (marker effect).
<mspace><mspace=N>Adjusts monospace character width.
<nobr><nobr>text</nobr>Prevents line breaks within the enclosed text.
<noparse><noparse>text</noparse>Disables rich text parsing for the enclosed text; tags render as literal text.
<page><page>Inserts a page break (relevant only in multi-page text displays).
<pos><pos=N>Adjusts horizontal position offset in pixels.
<rotate><rotate=N>Rotates the enclosed text by N degrees.
<sprite><sprite="SpriteName">Inserts a named sprite from the sprite asset.
<style><style="StyleName">Applies a named text style preset.
<voffset><voffset=N>Adjusts vertical position offset in pixels.
<width><width=N%>Adjusts the horizontal width of the text block as a percentage.

Most of the tags above are not applicable to standard mod English.dat files , they exist for use in Unity-authored UIs and are listed here for reference completeness. The tags that matter for mod item descriptions are bold, italic, color, size, and the Unturned extended tags documented below.

Unturned extended tags

Unturned™ extends the TextMesh Pro tag vocabulary with four custom tags that reference game-state data. These tags are specific to Unturned™ and are not part of the standard TextMesh Pro tag set.

TagSupported contextsPurpose
<br>NPC dialogue, signs/notes, item descriptionsInserts a newline character. Used to break text across multiple lines in multi-line text boxes.
<name_npc>NPC dialogue onlyInserts the speaking NPC character's display name. Resolved at dialogue-display time from the NPC's own English.dat Name field.
<name_char>NPC dialogue and signs/notesInserts the player character's display name. Resolved at display time from the player's character name setting.
<pause>NPC dialogue onlyPauses the dialogue display for 0.5 seconds before continuing to render the subsequent text. Used to create dramatic pauses, sentence-level pacing, or to synchronize text display with audio or animation events.

The <br> tag

The <br> tag is the line-break mechanism for multi-line text fields. It is supported in NPC dialogue (where dialogue text spans multiple lines), in sign and note descriptions, and in item descriptions. The tag is self-closing , it does not take a closing </br> tag.

"Welcome to the outpost,<br>traveller. How can I help?"

The example above renders as two lines:

  • Welcome to the outpost,
  • traveller. How can I help?

Item descriptions that span multiple lines use <br> to separate paragraphs:

Name Custom Rifle Magazine
Description <b>30-round box magazine</b><br><color=#AAAAAA>Compatible with NATO 5.56mm rifles.<br>Standard capacity. Reloads: unlimited.</color>

Line breaks in item descriptions

The inventory tooltip has a practical limit of approximately four visible lines before the text is clipped or the tooltip expands beyond its designed height. If an item description requires more than four lines of text after <br> expansion, consider shortening the description or moving extended lore text to a sign or note item that the player can discover separately.

The <name_npc> tag

The <name_npc> tag is resolved at dialogue-display time to the NPC character's display name. It allows a single dialogue file to refer to the NPC generically (as <name_npc>) rather than embedding the NPC's specific name, which would require editing every dialogue line if the NPC's name ever changed.

NPC character English.dat:
Name Captain Henderson

Dialogue English.dat:
"Welcome to the outpost, <name_char>. I'm <name_npc>, commander of this facility."

When rendered, the dialogue above reads: "Welcome to the outpost, [player name]. I'm Captain Henderson, commander of this facility."

The <name_npc> tag is valid only in NPC dialogue. Using it in an item description or a sign/note produces the literal text <name_npc> rather than a resolved name.

The <name_char> tag

The <name_char> tag inserts the player character's display name , the name the player set in their character customization or Steam profile. It is valid in NPC dialogue (where it personalizes the NPC's address to the player) and in signs and notes (where it allows a sign to appear as though it were written specifically for the player character).

"<name_char>, you've been selected for a special assignment."

The tag is resolved at display time and reflects the name of the player who is currently reading the dialogue or the sign. If no player name is available (e.g., a fresh save where the player has not yet set a character name), the engine inserts a default placeholder string.

Name tag in multiplayer contexts

On multiplayer servers, the <name_char> tag resolves to the local player's character name, not to any other player's name. A sign or note that uses <name_char> will appear personalized to every player who reads it , it is not a security or identity-verification mechanism and should not be used for gameplay-conditional text. If the mod design requires conditional text based on which specific player is reading, that logic must be implemented at the server-scripting level through the Unturned Dedicated Server API.

The <pause> tag

The <pause> tag inserts a 0.5-second delay in the text display. It is valid only in NPC dialogue and is ignored in item descriptions, signs, and notes. The tag is self-closing and does not take a closing </pause> tag.

"I've been waiting for someone like you.<pause> Someone who doesn't ask too many questions."

The dialogue above renders "I've been waiting for someone like you.", then pauses for half a second, then renders "Someone who doesn't ask too many questions." The pause is perceptible to the player as a brief delay between the two sentences and is useful for comic timing, dramatic tension, or allowing the player to absorb one piece of information before the next sentence appears.

Multiple <pause> tags in sequence produce proportionally longer delays. Three <pause> tags in a row produce a 1.5-second pause.

"Welcome, <name_char>.<pause><pause> We have much to discuss."

The tag is a purely cosmetic display effect. It does not affect dialogue progression, quest state, or any gameplay mechanic. The player can advance past a paused segment by clicking or pressing the advance-dialogue key.

IMGUI mode

The legacy IMGUI rendering mode uses Unity's styled text system rather than TextMesh Pro. IMGUI is used only for legacy UI surfaces that have not been migrated to uGUI; no new mod content should target IMGUI mode because the player base overwhelmingly uses the uGUI renderer.

The IMGUI tag vocabulary is documented in the Unity styled text documentation and is a subset of the TextMesh Pro vocabulary. The tags supported in IMGUI mode are:

TagEffect
<b>Bold
<i>Italic
<size=N>Font size in pixels
<color=#RRGGBBAA> or <color=colorname>Color

The IMGUI mode does not support the TextMesh Pro extended tags (subscript, superscript, smallcaps, etc.) and does not support the Unturned extended tags (<br>, <name_npc>, <name_char>, <pause>). Text intended for display on IMGUI surfaces should use only the four tag types above.

Tag nesting rules

Rich text tags in TextMesh Pro can be nested to combine formatting effects. The nesting rules are:

  1. Tags must be properly closed in the reverse order of opening. The last tag opened is the first tag that must be closed.
  2. A tag opened inside another tag's span must be closed before the outer tag is closed.
  3. Self-closing tags (<br>, <pause>) do not accept a closing tag and do not participate in nesting order.
  4. Unclosed tags are treated as literal text from the point where the parser determines the tag will never be closed (end-of-string or a closing tag mismatch).
  5. Overlapping tags (opening tag A, opening tag B, closing tag A, closing tag B) are not valid TextMesh Pro nesting and may produce unpredictable visual results.
Nesting exampleValidityResult
<b><i>text</i></b>ValidBold italic text
<color=#FF4444><b>text</b></color>ValidRed bold text
<b><i>text</b></i>InvalidUnpredictable rendering
<b><color=#FF4444>text</b></color>InvalidUnpredictable rendering

Nesting errors in production mods

Tag nesting errors do not produce visible error messages or log output in the Unturned™ engine. The text simply renders incorrectly , typically with formatting applied to the wrong span or with tags rendered as literal text. The absence of error feedback is the reason nesting errors survive into published mods. The cohort recommendation is to validate every formatted string by loading the mod in a single-player test session and inspecting the tooltip and dialogue rendering before publishing to the Workshop.

Color format reference

The color tag accepts three specification formats. The table below summarizes each format's syntax and the channel range for each color component.

FormatSyntaxRedGreenBlueAlphaExample
Hex RGB<color=#RRGGBB>00-FF00-FF00-FFFF (fully opaque)<color=#FF8844>
Hex RGBA<color=#RRGGBBAA>00-FF00-FF00-FF00-FF<color=#FF884488>
Named color<color="colorname">,,,,<color="red">

The hex RGB format without an alpha channel defaults to fully opaque (alpha = FF). The hex RGBA format with an alpha channel allows semi-transparent text, which can be used for watermark-style flavor text or for de-emphasized secondary information.

Named color reference

The named color palette recognized by TextMesh Pro includes:

Named colorApproximate hexNamed colorApproximate hex
black#000000white#FFFFFF
red#FF0000green#00FF00
blue#0000FFyellow#FFFF00
cyan#00FFFFmagenta#FF00FF
gray#808080grey#808080
clear#00000000orange#FFA500

Named color availability

Note that the named color palette above is the set recognized by Unity's ColorUtility.TryParseHtmlString method, which TextMesh Pro uses for named color resolution. Not every CSS named color is available. If a named color is not recognized, the parser treats the color tag as invalid and the text renders with no color change. The hex format is the recommended method for color specification in mod English.dat files because it is unambiguous and does not depend on the engine's named-color lookup table.

Worked examples

Example 1: standard item description with rarity highlight

Name Tactical Combat Knife
Description <b>Melee Weapon</b><br><color=#88FF88>Uncommon</color> - <i>"A reliable blade for close-quarters work."</i>

When rendered, the description displays "Melee Weapon" in bold on the first line, followed by "Uncommon" in green and the flavor text in italics on the second line. The <br> tag provides a clean visual separation between the stat line and the flavor line.

Example 2: multi-paragraph item description

Name Custom Assault Rifle Magazine
Description <b>Caliber: 5.56mm NATO</b><br>Capacity: 30 rounds<br>Reload: Standard (full magazine)<br><br><size=85%><color=#AAAAAA>Precision-stamped steel body.<br>Compatible with MK IV receivers.<br>Reloads: unlimited.</color></size>

When rendered, the description displays the stat block in the first paragraph at normal size, a blank line, and then the flavor/manufacturer text in a smaller, muted gray. The </size> and </color> tags close the formatting spans for the second paragraph.

Example 3: NPC dialogue with extended tags

English.dat for an NPC introduction dialogue:

"Welcome to Firebase Phoenix, <name_char>.<br><pause>I'm <name_npc>, ranking officer here.<pause> We've been expecting you."

When rendered:

  1. "Welcome to Firebase Phoenix, [player name]." , displayed immediately.
  2. Line break.
  3. 0.5-second pause.
  4. "I'm Captain Henderson, ranking officer here." , displayed after the pause.
  5. 0.5-second pause.
  6. "We've been expecting you." , displayed after the second pause.

Example 4: rich text in a sign

English.dat for a sign/note item:

Name Warning Sign
Description <b><color=#FF4444>WARNING:</color></b><br>Restricted area. Authorized personnel only.<br><br><size=80%><color=#888888>- Facility Command</color></size>

Example 5: text with the <noparse> tag for literal tag display

If a mod item's flavor text includes literal angle-bracket content that would be misinterpreted as a rich text tag, the <noparse> tag suppresses parsing:

Description <noparse><Squad_Alpha></noparse> deployed to grid sector <b>7G</b>.

When rendered, the text <Squad_Alpha> appears as literal angle-bracket text rather than being parsed as a tag, while 7G renders in bold.

Frequently asked questions

Which rich text tags work in item Name fields?

All TextMesh Pro tags are technically recognized in the Name field, which is rendered through the uGUI text system. The practical constraint is visual: the Name field appears in the inventory grid cell, the hotbar slot, the ground-item nametag, and the tooltip header , each with different space constraints and styling. Color tags in the Name field can clash with the rarity-based highlight color applied by the UI. The cohort recommendation is to keep the Name field as plain text and reserve rich text formatting for the Description field.

Can I use rich text in quest objective text?

Yes. Quest objective text is rendered through the uGUI text system and supports TextMesh Pro tags. The practical constraint is that objective text is typically displayed in the quest log panel with limited horizontal space; long color-tagged strings may be truncated. Test the quest log rendering in single-player before publishing.

Are rich text tags case-sensitive?

TextMesh Pro tags are not case-sensitive. <color=#FF4444>, <COLOR=#FF4444>, and <Color=#FF4444> are functionally identical. The cohort convention for mod English.dat files is to use lowercase tag names for readability.

Can I use emojis or custom sprites through the sprite tag?

The <sprite> tag is recognized by TextMesh Pro but depends on a sprite asset being registered with the text component. Unturned™ ships with a default sprite asset that defines several in-game icon sprites, but the set is limited and not documented for mod-author use. For reliable cross-mod compatibility, the cohort recommendation is to avoid the <sprite> tag and use descriptive text or Unicode characters instead.

What happens if I use an IMGUI tag in a uGUI context?

IMGUI tags are a subset of TextMesh Pro tags, so an IMGUI-compatible tag (bold, italic, color, size) renders identically in both modes. A tag that exists only in IMGUI mode (which is none , the IMGUI set is a strict subset) would not be relevant because there is no IMGUI-exclusive tag.

What happens if I use a TextMesh Pro tag in an IMGUI context?

The tag is not recognized by the IMGUI parser and renders as literal text. For example, <sub>2</sub> in an IMGUI text field renders as the literal string <sub>2</sub> rather than as a subscripted 2. Because IMGUI surfaces are legacy-only and uncommon, this is a rare issue in practice.

Can I center-align text in an item description?

Yes. The <align="center"> tag is recognized by TextMesh Pro and can be used to center-align text within an item description field. Note that the tooltip container's width is determined by the widest line in the description; centered text within a narrow container is often visually subtle. Use alignment tags sparingly and test the full tooltip rendering at multiple UI scales.

Do rich text tags affect the text in the Steam Workshop preview?

No. The Steam Workshop description field is plain text , it does not support HTML, rich text, or any markup. Any rich text tags placed in the Workshop description will render as literal text. The English.dat rich text formatting affects only the in-game rendering of item names and descriptions.

How do I debug a rich text formatting error?

Load the mod in single-player, spawn the item with @give <ID>, open the inventory, and inspect the tooltip. If text renders as literal tag strings (e.g., </color> visible in the description), a closing tag is missing or a tag name is misspelled. If formatting applies to the wrong span, a tag-nesting order error is the cause. There is no in-game rich text validator; the only validation method is visual inspection of the rendered output.

Can rich text tags reference variables from the player's game state?

Only the two Unturned extended tags <name_npc> and <name_char> resolve to dynamic game-state data. No other rich text tag supports variable interpolation. Text that depends on game state (player level, quest progress, inventory contents) cannot be implemented through rich text and must be handled at the server-scripting level through the Unturned Dedicated Server API.

Does the pause tag affect NPC dialogue timing for quest progression?

No. The <pause> tag is a visual display delay only. It does not block dialogue advancement or quest state transitions. The player can advance past a paused segment immediately by clicking or pressing the advance-dialogue key. Quest scripts that depend on timing events should use server-side timers rather than relying on display-level pauses.

How many rich text tags can I nest in a single text span?

TextMesh Pro does not enforce a hard limit on nesting depth. Practical nesting depth is limited by readability , a string with six nested formatting tags is difficult to author correctly and even more difficult to debug when nesting errors occur. The cohort recommendation is to limit nesting depth to three levels (e.g., color, bold, italic) and to close tags immediately after the formatted span rather than carrying multiple open tags across long stretches of text.

Best practices

  • Author rich text in the Description field, not the Name field. The Description field is the intended canvas for formatted text and has consistent rendering behavior across UI contexts.
  • Use hex RGB color codes rather than named colors. Hex codes are unambiguous and produce identical results on every platform.
  • Use percentage-based sizing (<size=85%>) rather than absolute pixel sizing (<size=14>) to maintain correct proportions across UI scales.
  • Limit nesting depth to three levels. Deeper nesting is error-prone and difficult to debug when rendering errors occur.
  • Validate every formatted string by loading the mod in single-player and visually inspecting the tooltip rendering before publishing.
  • Use the <noparse> tag around any literal text that contains angle brackets to prevent the parser from misinterpreting the brackets as tag delimiters.
  • Test NPC dialogue rich text in the full dialogue flow, not just the first line. Tags that work in the first dialogue segment can behave differently in later segments depending on the dialogue's state-machine context.
  • Maintain a plain-text fallback in every English.dat file. If a player disables rich text through a mod or configuration change, the text should remain legible without the formatting tags.
  • Document the color conventions used in a mod's English.dat files in the mod's readme. Consistent color usage across all items in a mod pack reinforces the mod's visual identity.
  • Reserve the <pause> tag for moments where the delay genuinely enhances the player's reading experience , dramatic reveals, sentence-level pacing, or synchronization with an implied gesture. Overuse of <pause> makes dialogue feel sluggish.

Diagnostic table

SymptomMost likely causeResolution
Text renders as literal tags (e.g., <color=#FF4444> visible)Closing tag missing or misspelledCheck that every opening tag has a corresponding closing tag with correct spelling
Formatting applies to wrong text spanTag nesting order errorReorder tags so the last opened tag is the first closed
Color does not changeHex code missing # prefix or contains non-hex charactersConfirm color code is #RRGGBB or #RRGGBBAA with valid hex digits
Size does not changePercentage sign missing or value out of rangeUse <size=85%> (not <size=85>) for percentage-based sizing
<br> renders as literal textText field is single-line only (does not support line breaks)Confirm the target field supports multi-line text; <br> is valid only in multi-line text boxes
<name_npc> renders as literal textTag used outside NPC dialogue contextUse <name_npc> only in NPC dialogue; it is not resolved in item descriptions or signs
<pause> renders as literal text or is ignoredTag used outside NPC dialogue context, or IMGUI mode activeUse <pause> only in NPC dialogue on uGUI-rendered text
Bold or italic does not applyTag name misspelled or tag used in IMGUI mode with an unsupported character setConfirm <b> and <i> tags are correctly spelled and closed
Text invisible after applying colorAlpha channel in RGBA hex set to 00 (fully transparent)Confirm alpha digits are not 00 unless transparency is intended
Rich text works in inventory but not on signsSign text is rendered through a different UI component with its own rich text settingVerify the sign's rendering mode matches the tags being used
Color tag works in uGUI but not IMGUIIMGUI color format differs from TextMesh Pro formatUse the hex format <color=#RRGGBBAA> for maximum cross-mode compatibility
Nested bold-italic renders as plain textNesting order error , the inner tag is closed before the outer tagUse <b><i>text</i></b>, not <b><i>text</b></i>
Item name disappears after adding rich textThe Name field is overrun or the parser rejects a malformed tagRevert to plain text in the Name field; use formatted text in Description only

Appendix A: Rich text tag quick-reference card

TagSyntaxContextsSelf-closing?
Bold<b>text</b>All uGUI contextsNo
Italic<i>text</i>All uGUI contextsNo
Color (hex RGB)<color=#RRGGBB>text</color>All uGUI contextsNo
Color (hex RGBA)<color=#RRGGBBAA>text</color>All uGUI contextsNo
Color (named)<color="colorname">text</color>All uGUI contextsNo
Size (percentage)<size=N%>text</size>All uGUI contextsNo
Size (pixels)<size=N>text</size>All uGUI contextsNo
Superscript<sup>text</sup>All uGUI contextsNo
Subscript<sub>text</sub>All uGUI contextsNo
Underline<u>text</u>All uGUI contextsNo
Strikethrough<s>text</s>All uGUI contextsNo
Uppercase<uppercase>text</uppercase>All uGUI contextsNo
Lowercase<lowercase>text</lowercase>All uGUI contextsNo
Smallcaps<smallcaps>text</smallcaps>All uGUI contextsNo
No-parse<noparse>text</noparse>All uGUI contextsNo
Line break<br>Multi-line uGUI + Unturned contextsYes
NPC name<name_npc>NPC dialogue onlyYes
Player name<name_char>NPC dialogue, signs/notesYes
Pause<pause>NPC dialogue onlyYes

Appendix B: External references

Cross-references

Document history

VersionDateAuthorNotes
1.02026-07-2657 StudiosInitial publication. Complete rich text tag reference, TextMesh Pro and IMGUI mode documentation, Unturned extended tags, worked examples, nesting rules, diagnostic table.