Markdown to Jira wiki markup: a translation guide
Jira's text formatting notation predates Markdown's dominance, and it shows: headings are h2. prefixes, monospace is double braces, links put the URL after the
text with a pipe, and code blocks are {code} macros. If you draft tickets in
Markdown (or paste from a README), here's exactly how everything translates.
Convert Markdown to Jira now โ
Syntax mapping
| Element | Markdown | Jira wiki markup |
|---|---|---|
| Heading 1โ6 | # Title โฆ ###### Title | h1. Title โฆ h6. Title |
| Bold | **text** | *text* |
| Italic | *text* or _text_ | _text_ |
| Strikethrough | ~~text~~ | -text- |
| Underline | none | +text+ |
| Inline code | `code` | {{code}} |
| Code block | ```js fence | {code:js} โฆ {code} |
| Preformatted | indented block | {noformat} โฆ {noformat} |
| Link | [text](url) | [text|url] |
| Image |  | !src! |
| Bullet list | - item | * item (** to nest) |
| Numbered list | 1. item | # item (## to nest) |
| Blockquote | > quote | bq. quote or {quote} block |
| Horizontal rule | --- | ---- |
| Table | | a | b | | ||heading|| and |cell| rows |
Worked example
## Bug report Clicking **Save** throws `NullPointerException`: 1. Open settings 2. Clear the name field 3. Click Save See [the logs](https://logs.example.com) for details. ```java user.getName().trim(); ```
becomes:
h2. Bug report
Clicking *Save* throws {{NullPointerException}}:
# Open settings
# Clear the name field
# Click Save
See [the logs|https://logs.example.com] for details.
{code:java}
user.getName().trim();
{code} The characters that trade places
Like Slack, Jira reuses Markdown's punctuation with different meanings โ but with an extra
twist on line starts. In Jira, a leading # is a numbered-list item, not
a heading, and a leading * is a bullet, not emphasis. So a Markdown heading
converted naively (# Title โ left as-is) silently becomes list item number one.
Similarly Jira's -strikethrough- uses a plain hyphen, which is why converters
(including this one) only match it at word boundaries โ otherwise every hyphenated-word
would get struck through.
Where wiki markup still applies
Wiki markup is the native format of Jira Server and Data Center โ descriptions, comments, and any multi-line text field. It also matters for automation: the Jira REST API v2 accepts wiki markup in description and comment bodies, and many integrations (Bitbucket smart commits, service-desk email handlers, scripted field updates) still speak it.
Jira Cloud is the caveat: its editor stores content as a JSON document format (ADF) and accepts Markdown-style shortcuts while typing. Pasting wiki markup into the Cloud editor won't render it. You'll still hit wiki markup in Cloud via the v2 REST API and older integrations โ but if your target is the Cloud UI itself, you may not need to convert at all.
Gotchas worth knowing
- Nested lists multiply the marker:
**for a second-level bullet,##for a second-level number, and*#mixes them. Markdown's indentation-based nesting has to be re-expressed this way. - Curly braces are live syntax. Text containing
{โฆ}(Java generics annotations, JSON snippets) can trigger macros. Wrap such text in{{monospace}}or a{noformat}block. - Code block languages are named differently.
{code:javascript},{code:java},{code:sql}etc. โ an unrecognized language falls back to plain text rather than failing. - Line breaks are real. Unlike Markdown, a single newline in wiki markup produces a line break, and
\\forces one. Reflowed Markdown paragraphs keep their shape.
Tables in detail
Markdown's pipe tables and Jira's table notation are close cousins. This Markdown table:
| Env | Status | |------|--------| | Prod | OK | | Test | Failed |
is written in Jira as:
||Env||Status|| |Prod|OK| |Test|Failed|
Double pipes mark header cells, single pipes mark body cells, and there's no separator row โ
the header styling comes from the double-pipe syntax itself. Jira tables don't support column
alignment, so Markdown's :---: colons have no equivalent and are dropped. An
empty cell needs a space between pipes (| |) or Jira merges the columns.
FAQ
Does this work for Confluence too?
Largely yes โ Confluence's legacy wiki markup shares this notation, and Confluence still offers an "Insert wiki markup" dialog that accepts it. Like Jira Cloud, modern Confluence stores pages in a different internal format, so wiki markup is an input method rather than the storage format.
Can I convert Jira markup back to Markdown?
Yes, Converticle converts both directions โ useful for pulling a ticket description into a
README or commit message. Jira-only concepts with no Markdown equivalent (underline, {color}, panels) don't survive the trip.
Why did my heading turn into "1." in Jira?
You pasted raw Markdown: Jira read the leading # as a numbered-list marker.
Convert first โ the heading needs to arrive as h1..