Chat Thread Viewer

Paste an OpenAI or Anthropic messages array (JSON) and see it rendered as a readable chat thread. Color-coded by role. Tool-call params expanded. Pure browser, no upload.

Visualising API message arrays

LLM applications log their conversations as JSON arrays of messages — that's what gets sent to the API and what you'll see in audit logs, evaluation traces, fine-tuning datasets, and SDK debug output. Reading those arrays as a human is awful: walls of escaped strings, tool-call arguments wrapped in escaped JSON-inside-JSON, system prompts mashed in with the rest of the flow. This tool gives you a quick chat-bubble render so you can scan the actual conversation, see which messages contained tool calls, and spot the one prompt that went sideways.

Supported conversation formats

Bubbles, tool calls, code fences, and stats

Escaped JSON, missing system prompts, and trailing commas

A sample parse

Paste an OpenAI [{role, content}, …] array with a couple of tool_calls on the assistant turns. The viewer renders it as chat bubbles, flags which turns carried tool calls, and unwraps the escaped JSON-inside-JSON arguments — so you can read what the model actually asked the tool to do instead of squinting at a wall of backslashes.

Formats, privacy, and tool-call rendering

Which log formats does it understand? OpenAI Chat Completions, the Anthropic Messages API content-block shape, and the older LangChain human/ai/system dumps still common in saved traces.

Is my conversation uploaded? No — it parses the JSON in your browser. Audit traces, prompts, and tool arguments stay on your machine.

Does it show tool calls and results? Yes — assistant tool_calls and tool/tool_result messages are rendered distinctly, with their escaped arguments unwrapped for reading.

What about images in the messages? Image blocks are recognised in the structure; the viewer focuses on the conversational flow rather than rendering the image bytes themselves.

Debugging long multi-turn threads

Exporting and sharing rendered threads

The rendered thread lives in your browser's DOM — use your browser's built-in screenshot or print-to-PDF to capture it. That's often the fastest way to attach a conversation excerpt to a bug report or share a prompt trace with a colleague who doesn't want to read raw JSON.