Back to tools

JSON Chat Formatter

Build a Minecraft text component out of styled blocks — colours, click and hover events, the lot — and export the exact JSON for /tellraw, /title, /bossbar or a written book. Paste existing JSON back in to edit it visually.

Builder

Text segments

Each segment is one styled run of text. They are concatenated into a single message through the extra array — so one line can change colour, turn bold and become clickable partway through.

Segment 1

Formatting

clickEvent

hoverEvent

Segment 2

Formatting

clickEvent

hoverEvent

Segment 3

Formatting

clickEvent

hoverEvent

Import

Paste existing JSON to edit it

Drop in a raw component, or a whole command line like /tellraw @a {…} — the leading command is stripped for you. Nested extra arrays are flattened into segments with their inherited styling resolved.

Preview

In-game chat

[Wespner] Welcome to play.wespner.eu! [Click to spawn]

Options

Output

Valid text component. Parses cleanly and every event has a usable value.

tellraw command

/tellraw @a {"text":"","extra":[{"text":"[Wespner] ","color":"gold","bold":true},{"text":"Welcome to play.wespner.eu! ","color":"yellow"},{"text":"[Click to spawn]","color":"aqua","underlined":true,"clickEvent":{"action":"run_command","value":"/spawn"},"hoverEvent":{"action":"show_text","contents":"Teleports you back to spawn"}}]}

Text component JSON

{"text":"","extra":[{"text":"[Wespner] ","color":"gold","bold":true},{"text":"Welcome to play.wespner.eu! ","color":"yellow"},{"text":"[Click to spawn]","color":"aqua","underlined":true,"clickEvent":{"action":"run_command","value":"/spawn"},"hoverEvent":{"action":"show_text","contents":"Teleports you back to spawn"}}]}

Reference

The bits that catch people out

hoverEvent changed key in 1.16. Modern versions use "hoverEvent":{"action":"show_text","contents":"…"}. Before 1.16 the payload lived under "value" instead. Use the hoverEvent format selector above to switch.
Very recent versions renamed these fields again. 1.21.5 reworked text component serialisation — clickEvent/hoverEvent became click_event/hover_event. This tool emits the long-standing camelCase form, which almost every plugin, datapack and guide still uses.
Styling is inherited, not isolated. Anything in extra inherits the parent’s colour and formatting unless it overrides them. That is why this tool wraps your segments in an empty root — a clean slate, so segment three is not accidentally bold because segment one was.
Not every target honours every event. clickEvent and hoverEvent only do anything in chat and in books. In a title, subtitle, action bar or boss bar they are silently ignored. change_page is book-only, and open_url accepts http:// or https:// and nothing else.

Running your own game server?

Wespner game servers with DDoS protection, NVMe drives and activation within minutes.

Browse hosting