Markdownで文書を編集していると、テキストに取り消し線を引きたい場面があります。訂正や変更履歴を残す際に便利な装飾ですが、記法を忘れてしまう方も多いのではないでしょうか。
Markdownの取り消し線は、チルダ(~)を2つ並べてテキストを囲む書き方が実務上最も一般的です。ただし、サービスによっては記法が異なる場合もあるため、利用環境ごとの違いを押さえておくと安心です。
この記事では、Markdownの取り消し線の基本的な書き方から、サービス別の対応状況、反映されないときの対処法、HTMLタグを使った代替手段までを解説します。
目次
- Markdownで取り消し線を引く書き方【一覧表】
- Markdownの取り消し線と他の装飾を組み合わせる記法
- 取り消し線と太字を同時に使う
- 取り消し線と斜体やリンクを同時に使う
- Markdownの取り消し線の主要サービス対応状況
- GFM系サービスでの取り消し線(GitHub・GitLab・Qiita・Zenn)
- NotionとSlackでの取り消し線(独自仕様)
- Markdownの取り消し線ができないときの原因と対処法
- チルダと文字の間に空白がある
- サービスやエディタが未対応
- コードブロック内で使用している
- Markdownの取り消し線をHTMLのdelタグで記述する方法
- delタグの基本的な書き方
- delタグとinsタグを併用する
Markdownで取り消し線を引く書き方【一覧表】
Markdownで取り消し線を表す方法として、実務では~~テキスト~~が最も一般的です。この記法はGitHub Flavored Markdown(GFM)の拡張構文(Strikethrough extension)に由来しており、GitHub、GitLab、Qiita、Zennなど多くのGFM系サービスで利用できます。GFM仕様本文でも、取り消し線は「2つのチルダで囲まれたテキスト」と定義されています。
Strikethrough text is any text wrapped in two tildes (~).
— GitHub Flavored Markdown Spec - 6.5 Strikethrough (extension)
サービス間の互換性を考慮すると、取り消し線は~~テキスト~~を基本形として覚えるのが確実です。
| 記法 | 表示結果 | 説明 |
|---|---|---|
| ~~テキスト~~ | 基本の取り消し線(推奨) | |
| ~~複数の単語を囲む~~ | 複数語にも適用可能 | |
| ~~**太字**~~ | 太字との組み合わせ | |
| ~~*斜体*~~ | 斜体との組み合わせ |
なお、Markdownのチルダ記法が使えない環境では、HTMLの<del>タグで取り消し線を代用できる場合があります。詳しくは後述の「Markdownの取り消し線をHTMLのdelタグで記述する方法」を参照してください。
チルダ(~)とは、キーボードのShiftキーを押しながら「へ」キー(日本語キーボードの場合)を押すと入力できる波線の記号です。必ず半角のチルダを使用してください。全角の「〜」では取り消し線として認識されません。
以下のサンプルコードは、最も基本的な取り消し線の記述例です。
~~この文章に取り消し線が引かれます~~
上記のコードをMarkdown対応エディタに入力すると、「この文章に取り消し線が引かれます」のように、テキストの中央に横線が引かれた状態で表示されます。基本形では、~~と文字の間に空白を入れず~~テキスト~~のように続けて書くと、意図どおり解釈されやすくなります。
Markdownの取り消し線と他の装飾を組み合わせる記法
Markdownの取り消し線は、太字や斜体など他のテキスト装飾と組み合わせて使用できます。~~...~~を主構文として、その内側に他の装飾記号を入れる形が、説明しやすく実務でも扱いやすい書き方です。装飾の入れ子はMarkdownパーサー(Markdownの記法をHTMLに変換するプログラム)の実装によって細かな差が出ることがあるため、複雑な組み合わせを使う場合は対象サービスでプレビュー確認すると確実です。
取り消し線と太字を同時に使う
取り消し線と太字を同時に適用するには、チルダ2つ(~~)の内側にアスタリスク2つ(**)を配置します。太字はMarkdownで文字を強調する装飾の1つで、アスタリスク2つまたはアンダースコア2つでテキストを囲むと適用されます。
~~**この文章は太字かつ取り消し線です**~~
上記を入力すると「この文章は太字かつ取り消し線です」と表示されます。逆に**~~テキスト~~**の形も多くのGFM系サービスで動作しますが、迷った場合はチルダを外側に配置する書き方を選んでおくと無難です。
取り消し線と斜体やリンクを同時に使う
斜体との組み合わせも同様の考え方です。チルダ2つ(~~)の内側にアスタリスク1つ(*)を配置すると、斜体と取り消し線を同時に適用できます。斜体はイタリック体とも呼ばれ、テキストを傾けて表示する装飾です。
~~*斜体かつ取り消し線*~~
~~[リンクテキスト](https://example.com)~~
1行目は「斜体かつ取り消し線」、2行目は「リンクテキスト」のように表示されます。リンクとの組み合わせについても、まずはチルダの内側にリンク記法を入れる形で考えると整理しやすくなります。
ただし、取り消し線付きリンクはクリック可能かどうかが視覚的にわかりにくいため、読者の混乱を避けるために利用場面は限定的にしましょう。
Markdownの取り消し線の主要サービス対応状況
以下の表は、主要なサービスにおける取り消し線の記法をまとめたものです。GFM系サービスでは~~テキスト~~が共通して使えます。NotionやSlackはMarkdownパーサーではなく独自の入力ショートカットやmarkupを採用しているため、参考情報として併記しています。
| サービス | 取り消し線の記法 | ベースとなる仕様 | 備考 |
|---|---|---|---|
| GitHub | ~~テキスト~~ | GFM | Markdown記法 |
| GitLab | ~~テキスト~~ | CommonMark + GFM拡張 | Markdown記法 |
| Qiita | ~~テキスト~~ | GFM | Markdown記法 |
| Zenn | ~~テキスト~~ | GFM | Markdown記法 |
| Notion | ~テキスト~(チルダ1つ) | 独自仕様 | 入力ショートカット(Markdownではない) |
| Slack | ~テキスト~(チルダ1つ) | 独自markup | 独自markup(Markdownではない) |
GFM系サービスでの取り消し線(GitHub・GitLab・Qiita・Zenn)
GitHub、GitLab、Qiita、Zennはいずれも GFMベースのMarkdownを採用しているため、共通して~~テキスト~~で取り消し線が動作します。GitHub Docsでも、実務上の基本形として~~テキスト~~が案内されています。
Any text that is between two tildes will be crossed out.
~~修正前のテキスト~~ 修正後のテキスト
上記のコードは、これらのサービスのいずれでも「修正前のテキスト」に取り消し線が引かれ、「修正後のテキスト」がそのまま表示される結果になります。なお、GitHubではGFMをHTMLに変換した後にセキュリティのためのサニタイズ処理を行うため、利用箇所によってはHTMLの一部が制限される場合もあります。
GitLabはCommonMarkベースにGFMの拡張を取り込んだGitLab Flavored Markdown(GLFM)を採用しています。Qiitaの公式チートシートでも~~打ち消し~~が案内されており、Zennの公式ガイドでもインラインスタイルの例として~~打ち消し線~~が掲載されています。
打ち消し線を使うには ~~ で囲みます。
NotionとSlackでの取り消し線(独自仕様)
NotionやSlackはMarkdownパーサーではなく、独自のリッチテキスト装飾やmarkupを採用しています。そのため、GFM系サービスとは記法が異なり、どちらもチルダ1つ(~テキスト~)で取り消し線を表現します。GFM系サービスの~~テキスト~~(チルダ2つ)とは別物として覚えてください。
Notionは、公式ヘルプで~テキスト~を入力ショートカットとして案内しています。入力後はチルダの記号自体が画面上から消え、リッチテキスト装飾に変換されます。キーボードショートカット(WindowsはCtrl + Shift + S、MacはCmd + Shift + S)でも取り消し線を適用できます。
Type ~ on both sides of your text to strikethrough.
Slackも同様に~テキスト~で取り消し線を適用します。
Strikethrough — Surround text with tildes: ~your text~
— Slack Help Center - Format your messages in Slack with markup
Markdownの取り消し線ができないときの原因と対処法
Markdownで取り消し線が正しく表示されない場合、いくつかの典型的な原因が考えられます。以下の3つのケースを確認し、該当するものがないかチェックしてください。
チルダと文字の間に空白がある
取り消し線が反映されないよくある原因として、チルダとテキストの間に半角スペースや全角スペースが入っているケースがあります。基本形では、チルダとテキストが隙間なく接している状態で記述すると意図どおり解釈されやすくなります。
<!-- NG: チルダと文字の間にスペースがある -->
~~ テキスト ~~
<!-- OK: チルダと文字が隙間なく接している -->
~~テキスト~~
上記のNG例では、チルダの直後と直前にスペースが入っているため、取り消し線ではなくそのまま「~~ テキスト ~~」と表示されます。OK例のようにスペースを除去すると、正しく取り消し線が適用されます。
また、全角のチルダ「~~」を使用しているケースも同様にエラーの原因になります。取り消し線に使うのは半角のチルダ~です。全角の「〜」や「~」はMarkdownの記法として扱われません。
サービスやエディタが未対応
取り消し線の記法(~~テキスト~~)はGFMの拡張構文であり、CommonMark本体の仕様には含まれていません。CommonMarkとは、Markdownの標準仕様を策定するプロジェクトのことです。そのため、GFM拡張をサポートしていないエディタやサービスでは取り消し線の記法が動作しない場合があります。
- 一部のMarkdownエディタでは、設定画面でStrikethroughオプションを有効にしないと取り消し線が動作しないことがある
- 静的サイト生成環境では、Markdownエンジンや拡張設定によって取り消し線の可否が変わることがある
- 独自のMarkdownパーサーを採用しているサービスでは、取り消し線自体が未実装の可能性がある
対処法としては、利用しているエディタやサービスの公式ドキュメントを確認し、取り消し線(strikethrough)がサポートされているか調べてください。未対応の場合は、後述するHTMLの<del>タグを代替手段として検討する方法があります。
コードブロック内で使用している
コードブロックとは、バッククォート3つ(```)で囲まれた範囲のことで、ソースコードをそのまま表示するために使用されます。コードブロック内では通常のMarkdownのインライン装飾が解釈されないため、チルダ2つで囲んでも取り消し線は適用されません。
```
~~この部分は取り消し線にならない~~
```
上記のコードブロック内では、「~~この部分は取り消し線にならない~~」がそのまま文字列として表示されます。通常のMarkdown記法では、コードブロック内のテキストに装飾を適用する方法はないため、仕様上の制限と理解してください。
コードの変更箇所を示したい場合は、取り消し線とは別の表現方法として、diff記法(差分表示)を利用できます。以下のように、コードブロックの言語指定にdiffを指定し、削除行の先頭に-、追加行の先頭に+を付けると、変更箇所が色分けされて表示されます。
```diff
- 削除された行
+ 追加された行
```
上記のdiff記法はGitHubやQiitaなどの主要サービスでサポートされています。取り消し線の代替というよりも、コードの追加・削除を視覚的に示すための別の表現方法として活用してください。
Markdownの取り消し線をHTMLのdelタグで記述する方法
Markdownのチルダ記法が使えない環境では、raw HTML(Markdownファイル内に直接記述するHTMLタグ)を許可している処理系に限り、<del>タグを直接書ける場合があります。ただし、Markdownパーサーや公開先によってはHTMLが無効化・制限されることもあるため、互換性は一律ではない点に留意してください。
delタグの基本的な書き方
<del>タグは、HTMLで「文書から削除されたテキスト」を意味する要素です。delはdelete(削除)の略で、ブラウザのデフォルトスタイルによってテキストに取り消し線が引かれます。
<del>この文章は削除されました</del>
上記のコードをMarkdownファイル内に記述すると、「この文章は削除されました」と表示されます。チルダ記法の~~テキスト~~と見た目は同じですが、HTMLとしての意味(セマンティクス)が異なる点が特徴です。
GFMでは、取り消し線の出力例として<del>要素が示されています。一方、HTMLには類似のタグとして<s>タグも存在します。<del>は「文書編集において削除されたテキスト」を表し、<s>は「もはや正確ではない、または関連しなくなった内容」を表すという意味的な違いがあります。用途に応じて使い分けるとより厳密です。
<del> は HTML の要素で、文書から削除された文字列の範囲を表します。
なお、HTMLの旧来の<strike>タグは、現在ではobsolete(非推奨)とされており、新規の記述では使うべきではありません。削除済みの内容を表したい場合は<del>、単に取り消し表示をしたい場合は文脈に応じて<s>を使用してください。
delタグとinsタグを併用する
<ins>タグは、<del>タグの対になる要素で、「挿入されたテキスト」を意味します。insはinsert(挿入)の略です。<del>と<ins>を組み合わせると、テキストの修正履歴を明確に表現できます。
<p>会議は<del>月曜日</del><ins>火曜日</ins>に開催します。</p>
上記のコードは「会議は月曜日火曜日に開催します。」と表示されます。delタグ部分には取り消し線が、insタグ部分には下線がデフォルトで適用されるため、どの部分が削除されどの部分が追加されたかが一目でわかる構成になっています。
さらに、<del>タグにはdatetime属性を指定することもできます。datetime属性には変更が行われた日時を機械可読な形で記録でき、HTML上で変更履歴を明示したい場面で有用です。
<del datetime="2026-03-19">旧テキスト</del>
datetime属性の値はブラウザの画面上には直接表示されません。あくまで機械可読なメタデータとして記録される情報であるため、変更日時を管理したい場合に活用してください。Markdownのチルダ記法(~~)では日時情報を付与できないため、変更日時の記録が必要な場面ではHTMLの<del>タグを選択する価値があります。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
