Jira to Markdown Converter
Convert Jira Wiki Markup to Markdown and back. Supports tables, code blocks, headings, lists, links, images, panels, and more.
About
Jira Wiki Markup and Markdown are structurally similar but syntactically incompatible. A heading in Jira is h1. Title while Markdown requires # Title. Bold text uses single asterisks in Jira (*text*) but double asterisks in Markdown (**text**). Tables, code blocks, links, and images all follow different escaping rules. Manual conversion introduces errors: broken links from swapped bracket order, malformed tables from missing pipe alignment, lost formatting in nested lists. This tool parses over 40 distinct syntactic patterns in strict precedence order, handling multiline constructs (code blocks, panels, {noformat} regions) before inline transforms to prevent false matches inside preformatted content.
The converter operates bidirectionally. Paste Jira markup to get Markdown, or paste Markdown to get Jira syntax. Nested lists preserve depth. Tables retain header rows. Color macros and panel blocks degrade gracefully into Markdown blockquotes since Markdown has no native color support. Note: Jira macros with no Markdown equivalent (e.g., {anchor}) are passed through as-is. Pro tip: always verify table output - Jira's ||header|| syntax maps to Markdown's pipe-and-dash format, but column alignment may need manual adjustment for wide content.
Formulas
This converter is not mathematical - it is a deterministic text transformation engine. The core logic follows a rule-based rewriting system with strict precedence ordering.
convert(input) â output = Rn ∘ Rnâ1 ∘ âĻ ∘ R1(input)
Where each Ri is a rewrite rule consisting of a regex pattern and a replacement template. The composition order is critical:
Phase 1 (Protect): Extract multiline blocks ({code}, {noformat}) â replace with placeholders
Phase 2 (Block): Transform block-level syntax (headings, lists, tables, panels, quotes, rules)
Phase 3 (Inline): Transform inline syntax (bold, italic, strikethrough, monospace, links, images, color, super/subscript)
Phase 4 (Restore): Reinsert protected blocks with converted delimiters
Where R = rewrite rule, n = total number of rules (over 40), and the composition operator ensures earlier rules' outputs do not get re-matched by later rules. The protection phase prevents code block contents from being transformed - a critical correctness guarantee.
Reference Data
| Element | Jira Wiki Markup | Markdown Equivalent | Notes |
|---|---|---|---|
| Heading 1 | h1. Text | # Text | Levels 1-6 supported |
| Heading 2 | h2. Text | ## Text | |
| Heading 3 | h3. Text | ### Text | |
| Bold | *bold* | **bold** | Jira uses single asterisk |
| Italic | _italic_ | *italic* | Underscore vs single asterisk |
| Strikethrough | -text- | ~~text~~ | Dash vs double tilde |
| Monospace | {{text}} | `text` | Double curly vs backtick |
| Code Block | {code:lang}...{code} | ```lang...``` | Language param preserved |
| Noformat Block | {noformat}...{noformat} | ```...``` | No language tag in output |
| Quote Block | {quote}...{quote} | > ... | Each line prefixed |
| Block Quote | bq. text | > text | Single-line only |
| Link | [label|url] | [label](url) | Pipe vs parenthesis |
| URL-only Link | [url] | [url](url) | Auto-expanded in MD |
| Image | !image.png! |  | Exclamation placement differs |
| Unordered List | * item / ** nested | - item / - nested | Depth via repeated chars vs indent |
| Ordered List | # item / ## nested | 1. item / 1. nested | Hash count vs numbering |
| Table Header | ||H1||H2|| | |H1|H2| + separator row | Double-pipe for headers |
| Table Row | |C1|C2| | |C1|C2| | Identical syntax |
| Horizontal Rule | ---- | --- | Four vs three dashes |
| Panel | {panel:title=T}...{panel} | > **T** + content | Degraded to blockquote |
| Color Text | {color:red}text{color} | text | No MD equivalent; color stripped |
| Superscript | ^text^ | <sup>text</sup> | HTML fallback in MD |
| Subscript | ~text~ | <sub>text</sub> | HTML fallback in MD |
| Inserted Text | +text+ | <ins>text</ins> | HTML underline in MD |
| Citation | ??text?? | <cite>text</cite> | HTML fallback in MD |
| Emoji | :) :( :P | đ đ đ | Common emoticons mapped |