Render Claude Code session exports (from /export) as nicely formatted,
self-contained HTML transcripts. Single file output, no CDN dependencies,
light/dark themes, collapsible thinking/tool blocks, search, and a turn index.
pipx install . # or: pip install -e .cc-render path/to/session-export-dir # writes <name>.html next to input
cc-render session.jsonl -o transcript.html # explicit output
cc-render session.jsonl --open # open in browser when done
cc-render session.jsonl --title "My Session" --theme darkThe input can be either the export directory produced by /export (the main
.jsonl is located automatically) or a session .jsonl file directly.
- Every event type rendered: user prompts, assistant text (markdown), thinking blocks (collapsed, with preview), tool uses (Bash/file tools get special treatment, long params syntax-highlighted by file extension), tool results (collapsed past 10 lines, errors flagged), session bookkeeping events (de-emphasized), and unknown types as raw JSON.
- Sticky header with turn count, token totals, theme toggle, jump-to dropdown, and substring search with match highlighting.
- Collapsible sidebar turn index; permalink anchors (
#turn-12); print-friendly (collapsed blocks expand for print).
Live example: https://melon-claw.github.io/cc-transcript-renderer/
Subagent transcripts (subagents/*.jsonl next to the main .jsonl) are
rendered inline as collapsible "Subagent" sections inside the turn that
spawned them, nesting recursively up to 4 levels. Disable with
--no-subagents.
- Embedded images in tool results are shown as
[image attachment]. - Search is plain substring matching, no regex.
pip install -e ".[dev]"
pytest
mypyMIT licensed.