Minecraft JSON Text Generator

Build JSON text components for /tellraw, /title, signs and books. Add text segments with colors, formatting, click events and hover events.

Java Edition 26.2Updated

Text Segments

Segment 1

Live Preview

Your text appears here...

Output

{
  "text": ""
}
/tellraw @a {
  "text": ""
}

Embed This Tool

Put the json text generator on your own site or server wiki.
<iframe src="https://tools.astroworldmc.com/embed/json-text-generator" width="700" height="700" frameborder="0" style="border:none;border-radius:12px;" loading="lazy" title="JSON Text Generator"></iframe>
Live Preview

How to build a tellraw message

  1. Add a segment

    Every change of colour or format is its own segment, which is exactly how the text component format stores a styled line.

  2. Style that segment

    Colour, bold, italic, underlined, strikethrough and obfuscated set the fields on that one component and leave the others alone.

  3. Hang events on it

    A click event runs a command, suggests one, opens a link or copies text, and hover text appears when the cursor rests on the words.

  4. Copy what you need

    The output is both the raw JSON for a config file and a finished tellraw line with the target selector you picked.

How It Works

Build Minecraft JSON text components visually.

Java Edition 26.2Checked on against the 8 click and 3 hover actionsPage updated

How to Use the JSON Text Generator

Minecraft Java Edition uses JSON text components to display rich, interactive text in chat, titles, action bars, signs and written books. The /tellraw command is the most common way to send formatted JSON messages to players. Each text component can specify a color, formatting options like bold or italic, and interactive events such as running a command when clicked or showing a tooltip on hover.

This generator lets you build those JSON components visually. Add one or more text segments, pick a color from the 16 built-in Minecraft color names, toggle any combination of bold, italic, underlined, strikethrough or obfuscated formatting, and attach click or hover events. The live preview at the bottom shows you approximately how your text will appear in-game (hover events display as native browser tooltips). A written book stores these same components page by page, so for a signed book with a title and an author the book generator lays them out and writes the give command.

Common Use Cases

Server owners frequently use /tellraw for welcome messages that greet players when they join, clickable menus in chat that let players run commands like /warp or /shop, and announcements with hover tooltips that reveal additional details. Map makers use JSON text in written books to create branching storylines where clicking a line of text runs a /trigger command. Signs in 1.20+ also accept JSON text components, enabling colored and formatted sign text without plugins.

Paste the generated JSON directly into your server console, command blocks, or plugin configuration files. The output follows the standard Minecraft JSON text format compatible with Java Edition 1.7 and later. For Bedrock Edition, JSON text support differs and this tool targets the Java format. The colours inside a component are the 16 the game has always had, listed with their hex values under Minecraft color codes, and a give with a custom name carries the same component, which the command generator writes around your item.

What a text component holds

ContentOne of text for literal text, translate for a language key, selector for a target selector, score for a scoreboard value, or keybind for whatever key the reader has bound.
Formattingcolor as a name or a hex value, plus bold, italic, underlined, strikethrough and obfuscated as true or false.
Click eventsopen_url, run_command, suggest_command, change_page and copy_to_clipboard.
Hover eventsshow_text, show_item and show_entity.
extraAn array of child components. A child inherits every field of its parent unless it sets that field itself.
Where it is usedtellraw, title, book pages, sign text, entity custom names and item names all take the same component.

Java Edition 26.2 carries 8 click actions and 3 hover actions, read from ClickEvent.Action and HoverEvent.Action in the client jar on 8 August 2026. Four click actions and show_text sit in these dropdowns, so change_page, open_file, show_dialog, the custom action, show_item and show_entity are missing here.

What the component costs against the old codes

A text component says the same thing as a string of section codes and takes a great deal more room to say it. That is the trade this page makes for you, so it helps to know the size of it before you paste the result into a command block.

old form = 2 characters for each code, then the textcomponent = the text, plus every field written out as a name and a valuethe chat box takes 256, and tellraw plus a target selector already eats 12 of them
Welcome to the server, red and boldthe old way is four code characters and 21 of textthe component names both fields25 characters against 58, so the component is 2.3 times the size
The same line with a click and a hover added21 characters of text164 of structure around it185 characters, of which 89 percent is not text at all

That is the honest reason to build these here rather than by hand. One decorated line already fills nearly three quarters of a chat message, so a tellraw with three of them belongs in a command block or a function, and a single missing brace in 185 characters is not something you want to hunt for in a chat box.

Frequently Asked Questions

Questions about text components
  • Why is my custom item name in italics?

    Item names and lore are drawn italic by default. The component has to say italic false explicitly, otherwise the game keeps its own default and the text stays slanted.

  • Why did my whole message turn one colour?

    Inheritance. Everything inside extra takes the parent's colour and formatting unless it overrides them, so a colour set on the outer component paints every child that stays silent.

  • How do I make a line of text clickable?

    Add a click event. run_command runs a command as the player who clicked, suggest_command only puts it in their chat box, open_url asks for confirmation first, and copy_to_clipboard needs no permissions at all.

  • When should I use translate instead of text?

    When the reader's language should decide the wording. translate takes a language key and renders in each player's own language, while text is the same literal string for everyone.

Related Tools

More tools that might help youView All Tools