one click. full issue. clean markdown.
What is this? • Features • Installation • Usage • Claude Code integration • Tech Stack
A Chrome extension that runs on any Jira issue page and converts the full issue — title, description, comments, and attachments — into a clean Markdown document, directly in your browser.
Built for real development work:
- export faster
- document without copy-pasting
- keep issues versioned in Markdown
- feed issue context directly into AI tools
jira2md is a browser tool for converting Jira issues into portable Markdown.
Not a Jira replacement.
Not a sync service.
Not a SaaS product.
Just a practical thing for when you need:
- a local copy of an issue
- Markdown for your docs or PR description
- attachments bundled alongside the write-up
- a clean snapshot of a ticket to feed into an AI coding assistant
- One-click export — button appears on every Jira issue page
- Modal editor — review and edit Markdown before saving
- Live preview — rendered HTML alongside the raw editor
- Copy to clipboard — one click, paste anywhere
- Asset bundling — downloads attachments alongside the
.mdfile as a.zip - GFM support — tables, task lists, and strikethrough via GitHub Flavored Markdown
- Claude Code integration — send the issue directly to Claude Code in your VS Code terminal
- No server required — everything runs locally in the browser
┌─────────────────────────────────────────┬──────────────────────┐
│ Header (key + title) │ │
├──────────────────────┬──────────────────┤ 🟠 Send to Claude │
│ │ │ ───────────────── │
│ Markdown Editor │ Live Preview │ 📋 Copy Clipboard │
│ │ │ 📦 Download .zip │
│ │ │ ⬇ Download .md │
│ │ │ │
│ │ │ ✕ Cancel │
└──────────────────────┴──────────────────┴──────────────────────┘
Open the issue.
Select all. Copy. Paste. Format manually.
Lose the tables. Lose the task lists.
Re-download attachments one by one.
Click the button.
Review the Markdown.
Copy, download, or send straight to Claude Code.
Same result. Much less friction.
jira2md is a developer-mode Chrome extension — it is not on the Chrome Web Store. You load it directly from the folder.
1. Get the files
Option A — Clone with Git:
git clone https://github.com/andreescocard/jira2md.gitOption B — Download ZIP:
Go to the repository page → click Code → Download ZIP → extract the folder anywhere on your computer.
2. Open Chrome Extensions
In your Chrome address bar, type:
chrome://extensions
and press Enter.
3. Enable Developer Mode
In the top-right corner of the Extensions page, toggle Developer mode ON.
You will see three new buttons appear: Load unpacked, Pack extension, Update.
4. Load the extension
Click Load unpacked → navigate to and select the jira2md folder (the one that contains manifest.json).
The extension appears in your list with the name jira2md.
5. Pin it to your toolbar (optional but recommended)
Click the puzzle-piece icon 🧩 in Chrome's toolbar → find jira2md → click the pin icon 📌.
The jira2md icon will stay visible in your toolbar.
6. Open any Jira issue
Navigate to any issue at *.atlassian.net/browse/*.
The jira2md button appears automatically on the page.
After pulling new changes from the repo, go back to chrome://extensions and click the ↺ refresh icon on the jira2md card. No reinstall needed.
- Open any Jira issue in Chrome
- Click the jira2md button on the issue page
- Review the generated Markdown in the modal editor
- Toggle preview to verify rendering
- Pick an action from the right-side button column:
- Send to Claude Code — pipes the issue to Claude Code in your VS Code terminal
- Copy to Clipboard — paste into any tool
- Download .zip — Markdown + all attachments bundled
- Download .md — Markdown file only
Send any Jira issue directly to Claude Code running in your VS Code terminal.
Chrome extension → POST → relay.js (localhost) → claude <issue.md>
1. Start the relay in your VS Code terminal:
node relay.js # writes to current directory
node relay.js C:\projects\my-repo # custom output directory
node relay.js --no-claude # write file only, skip claude
node relay.js --port 7338 # custom port2. Click "Send to Claude Code" in the modal.
The relay writes PROJ-123_issue-title.md to your output directory and runs:
claude PROJ-123_issue-title.mdClaude Code opens in the terminal with the full issue as context.
- Claude Code installed (
npm i -g @anthropic-ai/claude-code) - Node.js (to run
relay.js)
If the relay is not running, the button shows "Relay offline" — no crash, no silent failure.
- Comments — Only comments currently rendered on the page are exported. If Jira displays a "load more comments" control, the export includes a note that older comments were not loaded.
- Internal comment detection — Restricted or JSM-internal comments are labelled
**[INTERNAL]**where they can be positively detected; absence of the label does not indicate a comment is public. - Comment images — Images embedded in comments are converted to text markers (
[image: filename]) because Atlassian media URLs are token-signed and expire after the page session.
For contributors: open test/test.html in a browser to run the pure Markdown helper functions through a suite of unit tests. The page title will display PASS or list any failures. This covers only the string-transformation functions, not the DOM interaction code.
| # | Status | Description |
|---|---|---|
| 1 | ✅ Fixed | Checkboxes not rendering on export — task list items appear as raw - [ ] / - [x] text instead of rendered checkboxes in the downloaded .md output |
| 2 | Missing | Child tickets not included in export — sub-tasks / child issues linked to the parent ticket are not exported; only the parent is captured. A summary of child tickets (key + title + status) should appear at the bottom of the export |
| Library | Purpose |
|---|---|
| Turndown | HTML → Markdown conversion |
| Turndown GFM Plugin | Tables & task lists |
| JSZip | ZIP bundle creation in the browser |
jira2md/
├── content.js # Main extension logic
├── relay-client.js # Modal layout patches + Claude Code button
├── relay.js # Local relay server (run in VS Code terminal)
├── styles.css # Modal & button styles
├── manifest.json # Chrome extension manifest (MV3)
├── icon48.png # Extension icon (48×48)
├── icon128.png # Extension icon (128×128)
└── libs/
├── turndown.js
├── turndown-plugin-gfm.js
└── jszip.min.js
If jira2md saves you time, consider buying me a coffee ☕
MIT
