api formatting ai_generated true

Slack message displays raw markdown instead of formatted text in Block Kit

ID: api/slack-mrkdwn-not-markdown

Also available as: JSON · Markdown
90%Fix Rate
88%Confidence
3Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
any active

Root Cause

Slack Block Kit uses 'mrkdwn' (not 'markdown') as the type field. Also, mrkdwn is NOT standard Markdown - it uses *bold* (not **bold**), ~strike~ (not ~~strike~~), and doesn't support headers.

generic

Workarounds

  1. 95% success Use type: 'mrkdwn' and Slack-specific syntax
    {"type": "section", "text": {"type": "mrkdwn", "text": "*bold* _italic_ ~strike~ `code`"}}
  2. 88% success Use Slack Block Kit Builder to preview before sending
    Test in Block Kit Builder to verify rendering before deploying

Dead Ends

Common approaches that don't work:

  1. Use type: 'markdown' in Block Kit blocks 92% fail

    The field must be 'mrkdwn' (Slack's proprietary format). 'markdown' silently falls back to plain text with no error.

  2. Use standard Markdown syntax like **bold** and ~~strike~~ 88% fail

    Slack mrkdwn uses *bold* and ~strike~. Standard markdown bold (**) is treated as literal asterisks.