Convert Claude Code, VS Code, and Visual Studio Code chat JSON files (JSONL format) into professional HTML visualizations. Use when users need to visualize, view, export, or convert Claude Code conversation logs (.claude/chats/, .claude/projects/) into readable HTML with terminal-style aesthetics, syntax highlighting, collapsible tool results, and search functionality. Handles chat exports, conversation logs, JSONL files, and Claude AI chat history.
Convert Claude Code chat JSON files into formatted HTML visualizations with professional terminal-style aesthetics.
Convert a Claude Code chat JSON to HTML:
python3 scripts/visualizer.py <input.json> <output.html>
Example (Windows):
python3 scripts/visualizer.py %USERPROFILE%\.claude\chats\chat_12345.json conversation.html
Example (Linux/Mac):
python3 scripts/visualizer.py ~/.claude/chats/chat_12345.json conversation.html
Transforms raw Claude Code conversation logs (JSONL format) into readable, styled HTML documents with:
Claude Code stores chat logs in JSONL format at:
Windows:
%USERPROFILE%\.claude\chats\%USERPROFILE%\.claude\projects\Linux/Mac:
~/.claude/chats/~/.claude/projects/Each chat file is named with a UUID (e.g., c5f2a3e1-1234-5678-9abc-def012345678.json)
The script expects JSONL (JSON Lines) format where each line is a valid JSON object representing a message or event in the conversation. This is the standard format for Claude Code chat logs.
Example JSONL structure:
{"role":"user","content":"Hello","created_at":"2025-11-08T10:00:00Z","uuid":"abc123"}
{"role":"assistant","content":"Hi!","created_at":"2025-11-08T10:00:01Z","uuid":"def456"}
The generated HTML includes:
python3 scripts/visualizer.py chat.json output.html
python3 scripts/visualizer.py %USERPROFILE%\.claude\chats\c5f2a3e1-1234-5678.json %USERPROFILE%\Documents\chat.html
python3 scripts/visualizer.py ~/.claude/chats/c5f2a3e1-1234-5678.json ~/Documents/chat.html
Get-ChildItem "$env:USERPROFILE\.claude\chats\*.json" | ForEach-Object {
python3 scripts/visualizer.py $_.FullName "$($_.BaseName).html"
}
for chat in ~/.claude/chats/*.json; do
python3 scripts/visualizer.py "$chat" "$(basename "$chat" .json).html"
done
#0066CC) with light blue background (#F8FBFF)#10893E) with light green background (#FAFFF8)#FF6B00) with gray background (#F8F8F8)#B8C8B8)#48484A) with light text (#E8E8E8)After conversion, the script displays:
All generated HTML files include an invisible comment with:
This ensures proper attribution while not affecting the visual output.
Trigger this skill when users want to:
Example user requests:
Upon successful conversion, the script prints:
📖 Reading <input-file>...
✅ X lines parsed
🔄 Generating HTML in terminal style...
✅ HTML generated successfully: <output-file>
📊 Statistics:
- Total lines processed: X
- User messages: X
- Assistant messages: X
- Tool Results: X
- Summaries: X
- Snapshots: X
- HTML elements generated: X
🎉 Conversion completed!
📁 Open file: <output-file>
project_x_chat_2025-11-08.html)Solution: Check the path to your JSON file. Use full paths with %USERPROFILE% (Windows) or ~ (Linux/Mac).
Solution: Ensure the file is in JSONL format (one JSON object per line). Check for corrupted lines.
Solution: Ensure JavaScript is enabled in your browser. Try opening in a different browser.
Solution: The search function requires JavaScript. Make sure it's not blocked by browser extensions.
For questions, issues, or contributions:
This project is licensed under the MIT License. See LICENSE file for details.
Author: Óscar González Martín Version: 1.0 Last Updated: November 2025