Formatting Text Using Tellraw JSON, Explained
Minecraft’s /tellraw command is a powerful tool that allows players and server administrators to send highly customized, rich text messages to targeted players. Unlike simple chat messages, tellraw utilizes JSON (JavaScript Object Notation) formatting, providing granular control over every aspect of the text’s appearance and interactivity. This guide will walk you through the intricacies of using tellraw JSON to elevate your in-game communication.
![]()
Understanding the Core Mechanics of tellraw JSON
At its heart, the /tellraw command is designed to deliver JSON-formatted text messages. This JSON structure is a human-readable data format that Minecraft interprets to display rich text in various contexts, including player chat, on-screen titles, within books, and even on signs. The fundamental syntax for this command is:
/tellraw <target> <JSON message>
Here, <target> specifies who will receive the message. This can be a player’s username (e.g., Steve), or a selector like @a (all players), @p (the nearest player), @r (a random player), or @e (all entities). The <JSON message> is where the magic happens, defining the content and style of your text.
Fundamental Text Properties
JSON text components offer a wide array of properties to customize your message’s appearance:
text: This is the most basic property, specifying the literal string content to be displayed (e.g.,"text":"Hello World").color: Changes the text color. You can use named colors (e.g.,"red","gold","dark_aqua") or, in Minecraft Java Edition 1.16 and later, hexadecimal color codes (e.g.,"#RRGGBB"like"#FF0000"for red).bold: Makes the text bold ("bold":trueor"bold":false).italic: Renders the text in italics ("italic":trueor"italic":false).underlined: Adds an underline to the text ("underlined":trueor"underlined":false).strikethrough: Draws a line through the text ("strikethrough":trueor"strikethrough":false).obfuscated: Scrambles the characters, causing them to constantly change, creating a “magical” effect ("obfuscated":trueor"obfuscated":false).
Interactive Elements
Beyond static formatting, tellraw allows you to make your text interactive:
clickEvent: Defines what happens when a player clicks on the text. This property requires anactionand avalue. Common actions include:"run_command": Executes a specified command (e.g.,"value":"/say Hello!")."suggest_command": Inserts a command into the player’s chat input field (e.g.,"value":"/help")."open_url": Opens a web link in the player’s default browser (e.g.,"value":"https://minecraft.net")."change_page": Used in books to navigate to a specific page number.
hoverEvent: Defines what appears when a player hovers their mouse over the text. This also requires anactionand avalue. A common action is:"show_text": Displays a tooltip with additional text. Thevaluefor this action can itself be a complex JSON text component, allowing for formatted tooltips.- Other actions like
"show_item"(displays item NBT data) and"show_entity"(displays entity NBT data) are also available.
Dynamic Content and Advanced Properties
tellraw can also display dynamic information:
selector: Displays the names of selected entities. This is particularly useful for showing who triggered an event or who is nearby (e.g.,"selector":"@p").score: Shows a player’s score from a scoreboard objective. This requires both an"name"(player’s name) and an"objective"(scoreboard objective name).keybind: Displays the player’s bound key for a specific action (e.g.,"keybind":"key.jump"would show “Space” for most players).font: Allows specifying a custom font for the text, if resource packs are in use that define custom fonts.
Combining Text Components
To apply different formatting to different words or phrases within a single message, you can combine multiple JSON text objects into an array. Each object in the array can have its own text and formatting properties. Additionally, the extra array allows you to define child components that inherit the parent’s formatting unless explicitly overridden. This provides a hierarchical way to manage complex text structures.
Platform Differences
It’s important to note the distinction between Minecraft Java Edition and Bedrock Edition. While Java Edition extensively utilizes JSON for rich text formatting across various contexts, Bedrock Edition primarily relies on section symbols (§) for basic text formatting. However, Bedrock Edition does support raw JSON for more advanced features, typically through the rawtext component in commands like /title or /say, though its implementation details can differ from Java Edition’s tellraw.
Step-by-Step Process for Crafting tellraw Commands
Creating a tellraw command involves a structured approach to building the JSON message. Follow these steps to construct your custom text:
- Initiate the Command: Begin by typing
/tellrawfollowed by your desired target selector (e.g.,/tellraw @ato send to all players, or/tellraw MyPlayerName). - Enclose the JSON Message: The entire JSON message must be enclosed within curly braces
{}. For a simple message, this might look like/tellraw @a {}. - Define the Basic Text: Inside the curly braces, define the
textproperty to specify the string you want to display. For example:/tellraw @a {"text":"Hello"}. - Add Formatting Properties: To style your text, add formatting properties directly within the same JSON object. Each property is a key-value pair, separated by commas. For instance:
/tellraw @a {"text":"Hello","color":"red","bold":true}will display “Hello” in bold red text. - Format Multiple Segments Differently: When you need different parts of your message to have distinct formatting, create an array
[]of JSON text objects. Each object in the array will represent a segment with its owntextand formatting. Example:/tellraw @a [{"text":"Hello ","color":"yellow"},{"text":"World!","color":"gold","italic":true}]will show “Hello ” in yellow and “World!” in italic gold. - Include Interactive Elements: For clickable or hoverable text, add
clickEventorhoverEventproperties. Remember to specify their respectiveactionandvaluefields. For example, a clickable link:/tellraw @p {"text":"Click Me!","color":"blue","clickEvent":{"action":"open_url","value":"https://example.com"}}.
Important Tips for Advanced Usage
- Utilize Online Generators: Crafting complex JSON commands manually can be prone to errors. Online
tellrawgenerators are invaluable tools that help you build and validate your JSON, simplifying the process significantly. - Versatile JSON Application: The same JSON text format used with
/tellrawcan be applied to other commands and game elements in Java Edition, such as/titlecommands, custom text on signs, content within written books, and even custom item names. This consistency allows for a unified approach to rich text throughout your game. - Preventing Italic Item Names: When using JSON to name custom items, Minecraft often defaults to italicizing the name. To explicitly prevent this, include
"italic":falsewithin your item name’s JSON component. - Escaping Double Quotes: A critical aspect of working with JSON, especially within
clickEventorhoverEventvalues, is escaping double quotes. If yourvaluefield contains another command or string that itself uses double quotes (e.g., a command with string arguments), you must precede those internal double quotes with a backslash (\") to prevent them from prematurely closing the JSON string.
Common Mistakes to Avoid
JSON syntax can be strict, and even a small error can cause your tellraw command to fail. Be mindful of these common pitfalls:
- Invalid JSON Syntax: This is the most frequent error. Missing commas between key-value pairs, misplaced curly braces (
{}) or square brackets ([]), or incorrect quoting will break the JSON structure and prevent the command from executing. Always double-check your syntax. - Trailing Commas: JSON strictly disallows a comma after the very last item in an object or array. For example,
{"text":"Hello",}is invalid because of the comma after"Hello". - Missing or Incorrect Quotes: All keys (e.g.,
text,color) and all string values (e.g.,"Hello","red") in JSON must be enclosed in double quotes (""). Boolean values (true,false) and numeric values (for scores, etc.) do not require quotes. - Invalid Keys or Values: Using properties that Minecraft does not recognize (e.g.,
"fruit":"banana") or providing values in an incorrect format for a valid key (e.g.,"color":"rainbow"instead of a named color or hex code) will result in errors or unintended behavior. Always refer to the official Minecraft documentation or reliable resources for valid properties and their accepted values. - Not Escaping Internal Quotes: As mentioned in the tips, failing to escape double quotes within a
valuefield ofclickEventorhoverEventis a common mistake. For example, if you want aclickEventto run the command/say "Hello World", thevalueshould be"value":"/say \"Hello World\"", not"value":"/say "Hello World"". The unescaped inner quotes would terminate thevaluestring prematurely, corrupting the JSON.
By understanding these mechanics, following the step-by-step process, and avoiding common errors, you can master tellraw JSON and create dynamic, engaging, and informative text messages within your Minecraft world.