This is a fork of withLinda/claude-JSONL-browser. All credit for the original tool goes to Linda. This fork tracks upstream and adds a way to run the tool as a native desktop app.
This fork wraps the existing client-side web app in a Tauri shell so it can be distributed as a standalone desktop executable — no browser, no dev server, fully offline.
- Standalone executable — produces a single portable
jsonl-browser.exe(~8.4 MB) on Windows, using the OS's built-in WebView2 (no bundled Chromium). - Static export —
next.config.mjsenablesoutput: 'export'so the app builds toout/for embedding in the native shell. - Fully offline — removed
@vercel/analytics; the desktop build makes no network calls. - Installers too —
tauri buildalso emits an MSI (~3 MB) and an NSIS setup.exe(~2 MB). - macOS-capable — the same codebase builds a universal
.app/.dmgon a Mac. Tauri can't cross-compile from Windows, so the release pipeline builds macOS on a native GitHub Actions runner (runtime validation on Apple hardware is tracked in issue #2).
npm install
npm run tauri:build # release build → src-tauri/target/release/jsonl-browser.exe
npm run tauri:dev # native dev window with live reloadThe original web workflows (npm run dev / npm run build) are unchanged.
Releases are automated by GitHub Actions (.github/workflows/release.yml). Pushing a version tag builds installers for Windows and macOS on native runners and publishes a draft GitHub Release with the assets attached:
git tag v1.0.0
git push origin v1.0.0This produces:
- Windows — MSI (
*_x64_en-US.msi) and NSIS setup (*_x64-setup.exe) - macOS — universal
.dmg(Intel + Apple Silicon)
The workflow syncs the tag's version into package.json, src-tauri/tauri.conf.json, and src-tauri/Cargo.toml before building, so the git tag is the single source of truth. Review the draft release, then publish it.
Tags must be plain numeric semver (e.g.
v1.2.3). The Windows MSI bundler rejects non-numeric pre-release suffixes like-testor-rc1(it errors with "pre-release identifier in app version must be numeric-only"); only macOS tolerates them. Don't use suffixed tags for releases.Binaries are unsigned — Windows SmartScreen and macOS Gatekeeper will warn on first launch until code signing is configured.
The content below is the original README from the upstream project, preserved unchanged.
A web-based tool that converts Claude Code CLI conversation logs (JSONL format) into human-readable Markdown. Features a built-in file explorer for managing multiple logs at once.
🌐 Live Demo: jsonl.withlinda.dev
Claude Code CLI automatically saves all your conversations in JSONL format at ~/.claude/projects/. These logs are difficult to read in their raw form. This tool makes them human-readable by:
- Converting JSONL to formatted Markdown
- Preserving conversation structure and timestamps
- Highlighting model changes and tool usage
- Organizing multiple sessions for easy browsing
-
Visit jsonl.withlinda.dev
-
Locate your Claude Code logs:
- On Mac: Press
Shift+Cmd+Gin Finder and type~/.claude/projects/ - On Linux: Navigate to
~/.claude/projects/in your file manager - On Windows: Navigate to
%UserProfile%/.claude/projects/in your file manager
- On Mac: Press
-
Drag & drop or upload your
.jsonlfiles -
View, search, and export your conversations
# Clone and install
git clone https://github.com/withLinda/claude-JSONL-browser.git
cd ClaudeJSONLbrowser
npm install
# Start development server
npm run dev
# Open http://localhost:3000- Multi-file Management: Process multiple conversation logs simultaneously
- Smart Parsing: Automatically extracts session metadata, timestamps, and conversation flow
- Search: Find content across all loaded conversations
- Export Options: Download individual or combined Markdown files
- Tool Use Formatting: Clearly displays when Claude uses tools and their outputs
- Model Change Tracking: Highlights when you switch between Claude models
The tool specifically handles Claude Code CLI log structure:
- Session Metadata: Session ID, Git branch, working directory
- Message Types: User messages, Claude responses, system summaries
- Special Commands:
/modelchanges, tool uses, command outputs - Timestamps: Preserves all timing information
# Production build
npm run build
- Next.js 15 with TypeScript
- Tailwind CSS (Everforest theme)
- Client-side processing (no data sent to servers)
Claude Code CLI doesn't have a built-in export feature for conversation history. This tool fills that gap, making it easy to:
- Review past conversations
- Share solutions with your team
- Create documentation from Claude interactions
- Analyze your Claude usage patterns
Created for the Claude Code community by Linda

