Slackでマークダウンが効かない?入力、貼り付け、投稿で書式になるもの
Slackに貼り付けた標準のマークダウンは、今は表も含めて貼り付けた時点で書式になります。入力したチルダ2つの取り消し線とリンクの記法はならず、マークアップモードはアスタリスクを残し、ボットにはmrkdwnが必要です。10月27日のテスト結果です。
On this page
Slackでマークダウンが「効かない」かどうかは、今は文字をどうやってメッセージに入れたかで決まります。10月27日のテストでは、SlackのWeb版に貼り付けた標準のマークダウンが、ショートカットなしで貼り付けた時点で書式になりました。**bold**、[text](url) のリンク、# 見出し、リスト、コードブロック、さらにパイプの表まで書式になり、表はSlackに本物の表として保存されました。入力したマークダウンもほとんどは打つそばから書式になりますが、例外が2つあります。~~strike~~ は文字のまま残る(チルダは1つにします)ことと、入力した [text](url) は Cmd+Shift+F(Windowsでは Ctrl+Shift+F)を押すまでリンクにならないことです。何も書式にならないなら、環境設定 > 詳細設定 の Format messages with markup(マークアップでメッセージを書式設定する)がオンです。ボットのメッセージにアスタリスクが出るなら、APIはSlack独自の mrkdwn で読んでいて、そこでは太字は *アスタリスク1つ* です。
2026年10月27日に、私たちのフリープランのワークスペースのテスト用チャンネルで、同じマークダウンを入力し、貼り付け、APIから投稿して、Slackに保存された内容を conversations.history で読み返しました(macOSのChromeで開いたSlackのWeb版)。9月28日には同じ貼り付けが文字のまま残り、「Looks like your content contains markdown」(コンテンツにマークダウンが含まれているようです)という通知が出ていたので、2つのテストのあいだにSlackが貼り付けの動きを変えたことになります。デスクトップアプリではテストし直していません。
Slackで書式になるもの:入力、貼り付け、マークアップモード、API
| マークダウン | 入力 | 貼り付け | マークアップモードがオン | APIの text |
|---|---|---|---|---|
**bold** | 太字 | 太字 | 太字、両側に * が1つずつ残る | 文字のまま |
*text* | 太字 | 斜体 | 太字 | 太字 |
_italic_ | 斜体 | 斜体 | 斜体 | 斜体 |
~~strike~~ | 文字のまま | 取り消し線 | 文字のまま | 文字のまま |
[text](url) | Cmd+Shift+Fでリンク | リンク | リンク | 文字のまま |
# 見出し | 見出し | 見出し | 文字のまま | 文字のまま |
- item、1. item | リスト | リスト | リスト | 文字のまま |
> 引用 | 引用 | 引用 | 引用 | 引用 |
| コードブロック | コードブロック | コードブロック | コードブロック | コードブロック |
| パイプの表 | 文字のまま | 表 | 文字のまま | 文字のまま |
「入力」はメッセージ欄でキーを打った場合、「貼り付け」はプレーンテキストをCmd+Vで貼り付けた場合、「API」は chat.postMessage の text の項目です。チルダ1つ(~strike~)は、入力でもAPIでも取り消し線になりました。
貼り付けたマークダウンは今は貼り付けた時点で書式になる
変換は送信の前に、メッセージ欄の中で行われます。パイプの表は見出しの行の名前がついたチップ(「Plan, Price, Table」)になり、送ったメッセージには値ごとにセルを持つ table ブロックが入ります。入力したパイプの表は縦棒とハイフンのまま残るので、表は打たずに貼り付けます。ChatGPT、Claude、NotionやGitHubのREADMEの文章は標準のマークダウンなので、今はそのまま書式つきで貼り付けられます。1つだけ意外なのは、アスタリスク1つの *text* です。貼り付けると標準のマークダウンの斜体として読まれ、同じ文字を入力すると太字になります。
押す通知もボタンも、もうありません。キーボードショートカットの一覧(Cmd+/)には「Apply markdown formatting」(マークダウンの書式を適用)がもう載っておらず、そこで「markdown」を検索しても何も出てきません。テストでは、貼り付けた直後の Cmd+Z は書式だけでなく、貼り付けた内容をまるごと消しました。
記号そのものを貼り付けたいときは、先にコードブロックを始めます。バッククォートを3つ打って欄をコードブロックに切り替えてから貼り付けると、アスタリスク、#、縦棒は打ったとおりに残りました。ボットやワークフロー用にSlack独自の mrkdwn が必要なときは、今もマークダウンからSlackへの変換ツール(英語)が役に立ちます。逆向きに、Slackから外へコピーする場合はSlackのスレッドをコピーする方法(英語)で、ドキュメントに貼り付けたときに何が残るかを見せています。
入力したマークダウン:使えるものと2つの例外
初期設定のメッセージ欄では、入力した記号が打つそばから書式になります。
- •
*text*も**text**も太字になり、_text_は斜体になります。 - • チルダ1つの
~text~は取り消し線になりますが、~~text~~は打ったまま残ります。 - • 両側にバッククォート1つでインラインコード、3つでコードブロックが始まります。
- • 行の頭の
>で引用が始まります。 - • 行の頭の
-か1.で箇条書きか番号つきリストが始まります。 - • 行の頭の
#、##、###で、その行が見出しになります。Slackはこれをheaderブロックとして保存します。 - •
[text](url)は Cmd+Shift+F(Ctrl+Shift+F)を押すまで文字のままで、テストでは押すと「text」という名前のリンクになりました。
パイプの表と --- は打ったまま残ります。書式ごとの詳しい説明は、太字と斜体(英語)、箇条書き、引用(英語)、表にあります。上付き文字にはSlackの記法がまったくなく、^2^ も <sup>2</sup> も打ったまま残ります。上に上がって見えるのは²や™のようなUnicodeの文字(英語)だけです。
書式のツールバーがない:Format messages with markupの設定
メッセージ欄の上の太字や斜体のボタンが消えていて、打っても何も書式にならないなら、Format messages with markup がオンです。設定の下にあるSlack自身の注記にも、メッセージ欄に書式のツールバーが表示されなくなると書かれています。変えるには、プロフィール写真をクリックして 環境設定 を選び、詳細設定 を開いて、入力オプション の Format messages with markup のチェックを入れるか外します。
オンのときは、貼り付けたマークダウンは欄の中では記号のままで、送信したときにSlackが書式にします。結果は標準のマークダウンとは違います。
**bold** は両側に * が1つずつ残った太字になり、~~strike~~、# 見出し、表は文字のままで、リスト、引用、コードブロック、[text](url) のリンクは書式になりました。標準のマークダウンを使いたいなら、この設定をオフにします。
ボットやAPIのメッセージでマークダウンが表示されないとき
Slackの開発者向けドキュメントには、ボットの文字が書式になるかを決めるスイッチが3つ載っています。
chat.postMessage の一番上の text は初期設定で mrkdwn を使い、"mrkdwn": false で書式がオフになります。10月27日にAPIで **double** *single* ~~two~~ ~one~ [x](https://slack.green) と # Heading を投稿しました。書式になったのは *single*(太字)と ~one~(取り消し線)だけで、[x](...) の中のURLはむき出しのリンクになり、- item の行はただの文字のままでした。*bold* と <https://slack.green|text> の形で書きます。"type": "mrkdwn" のときだけです。"type": "plain_text" では、アスタリスクはアスタリスクのままです。"type": "markdown")は標準のマークダウンを読みます。**bold**、[text](url) のリンク、# 見出し、リスト、パイプの表です。LLMの出力にはこれを使います。Slackは &、<、> も制御文字として扱います。山かっこの中の文字がSlackの記法に見えると、解析されます。ログの1行 user typed <!here> and <https://example.com|click> をエスケープせずに投稿すると、Slackには @here の一斉通知と「click」という名前のリンクとして保存されました。そのまま渡す文字はエスケープします。
def slack_escape(text: str) -> str:
"""Escape the three characters Slack treats as control characters."""
return text.replace("&", "&").replace("<", "<").replace(">", ">")
line = "user typed <!here> and <https://example.com|click>"
print("Log line: " + slack_escape(line))
出力と、投稿したあとSlackに表示されたもの:
Log line: user typed <!here> and <https://example.com|click>
エスケープした版は、一斉通知もリンクもないただの文字として届きました。ボットがメッセージを送る前に、その文字をマークダウンからSlackへの変換ツールのSlackからマークダウンへの側に貼り付けると、Slackでどう表示されるかを確かめられます。セクションブロックのJSON、markdownブロック、リッチテキストのリストを含む記法の全体はSlackのBlock Kitのマークダウン(英語)にあります。
よくある質問
Slackに「Apply markdown formatting」のショートカットはまだありますか?
10月27日の時点でも、入力した [text](url) のリンクはCmd+Shift+F(Ctrl+Shift+F)で書式になりましたが、ショートカットの一覧にはもう載っていません。貼り付けたマークダウンはSlackが自分で書式にするので、このショートカットは要りません。
貼り付けた *text* が太字ではなく斜体になるのはなぜですか?
Slackは貼り付けた文字を標準のマークダウンとして読み、そこではアスタリスク1つは斜体だからです。元の文章で **text** を使うか、その行をSlackで入力すれば、*text* は太字になります。
関連記事
Slackの書式ツールバーが消えたときの戻し方
Slackの書式ツールバーは、Aaボタンを押すと隠れ、その状態が記憶されます。「Format messages with markup」がオンだと、ツールバーもAaボタンも消えます。試して確かめた直し方と、10個のボタンとショートカットをまとめました。
Slackのマークダウンファイルのプレビュー:.mdファイルはどう表示されるか
Slackはアップロードした.mdファイルを書式付きで表示するようになりました。2026年10月28日のテストでは、ファイルビューアーで見出し、太字、チェックボックス、表が描画されました。MermaidのブロックとHTMLのタグは今も文字のままです。スクリーンショット、APIの出力、キャンバスのほうが向いている場面も紹介します。
Slackで箇条書きにする方法(入れ子のリストも)
Slackで箇条書きにするには、行の先頭に * か - とスペースを入力するか、Cmd+Shift+8を押します。試したところ、Tabで5段階まで入れ子にでき、マークアップモードではリストにならず、APIのmrkdwnにはリストがない一方、markdownブロックにはありました。