HTMLからMarkdownへのコンバータ

HTMLコードをクリーンなMarkdownに変換します。

サポートされているHTML要素

見出し: <h1>から<h6> → #から######

強調: <strong>、<em>、<del> → **太字**、*斜体*、~~取り消し線~~

リンク: <a href> → [テキスト](url)

画像: <img> → ![alt](src)

コード: <code>、<pre> → インラインおよびフェンスドコードブロック

リスト: <ul>、<ol> → - 項目、1. 項目

テーブル: <table> → Markdownテーブル構文

その他: <blockquote>、<hr>、<br>

HTML から Markdown への変換が実際に行うこと

HTML から Markdown 変換器は HTML スニペットを解析、結果の DOM ツリーを歩き、認識する各要素に対して Markdown 構文を出力します。<h1># になり、<strong>**bold** になり、<a href="...">[text](url) になり、<ul><li> はバレットリストになります。ツールは JavaScript を介して完全にブラウザで実行されます:左側に HTML を貼り付け、Markdown に変換をクリック、フォーマットされた出力が右側に現れます。アップロードなし、サーバーラウンドトリップなし、テレメトリなし、Convert をクリックする間に DevTools の Network タブを確認するか、ロード後にページをオフライン(機内モード)にしても変換器はまだ動作します。この実装は HTML を読むためにブラウザの組み込み DOMParser を使用し、それから小さな再帰的トラバーサルが各ノードに Markdown を出力します。これは Turndown のラッパーではなく、約 150 行の手書き変換器です、つまり一般的なケースをきれいにカバーしますが、Turndown の完全な設定可能性とは一致しません。

この変換が実際に必要なとき

逆方向(Markdown から HTML)はより一般的に知られています、すべての静的サイトジェネレーターとライティングツールがそれを行います。順方向(HTML から Markdown)はあまり明白ではありませんが、ライティングツールエコシステムが分極化したのでますます一般的です:HTML は Web のアンビエントフォーマット(すべての CMS、ニュースレタープラットフォーム、CRM テンプレート、古い静的サイトが HTML を出力または保存)、Markdown は2014年頃から登場した現代のドキュメント、ノートテイキング、バージョン管理コンテンツワークフローのネイティブフォーマット。4 つの実際のワークフローがこの変換ニーズを生成します。

リファレンス実装、Turndown とそのファミリー

Turndown(Dom Christie)は支配的な HTML から Markdown JavaScript ライブラリです、2012 年に to-markdown として始まり、2017 年にフォークと区別するために Turndown に名前変更され、MIT ライセンスで npm に turndown として公開されています。その設計はルールベースです:各ルールは filter(適用される DOM ノード)と replacement(Markdown を生成する関数)を持ちます。コンストラクタは見出しスタイル(atx # vs setext ===)、バレットマーカー(-+、または *)、コードブロックスタイル(インデント vs フェンス)、emphasis 区切り文字(* vs _)、bold 区切り文字(** vs __)、リンクスタイル(インライン vs 参照)などのオプションを受け入れます。テーブル、取り消し線、チェックリストアイテム、autolink は別個のパッケージ turndown-plugin-gfm に住みます。markdownify(Matthew Tretter)は Python 等価物です、スクレイピングパイプライン、Jupyter ノートブック変換、LangChain ドキュメントローダー、LLM データセット準備で広く使用されます。html2text(元々 Aaron Swartz による、John Gruber と一緒に2004年の元の Markdown 設計でもコラボレーション)は古い Python オプションです、依然として歴史的な電子メールパイプラインで使用されますが、大部分が置き換えられました。html-to-markdown(Johannes Kaufmann)はスタンドアロンスクレイピングバイナリのために人気のある Turndown の Go ポートです。Pandoc(John MacFarlane、CommonMark プロジェクトの議長)は普遍的なドキュメント変換器です、グリッドテーブル経由のマージセルテーブル、数学、引用、脚注、定義リストを処理し、数十のフォーマット間で変換します。Pandoc は利用可能な最も完全な HTML から Markdown ツールですが、インストールされなければならない 60 MB を超える Haskell バイナリで、ブラウザで実行されません。

基本的なトレードオフ、HTML は Markdown より豊か

あらゆる HTML から Markdown 変換は必然的に非可逆です、ソースフォーマットがターゲットフォーマットが言えないことを表現するからです。インラインスタイル(<span style="color:red">)は Markdown 文法を持ちません、Markdown の emphasis 語彙は厳密に bold/italic/strikethrough/code に制限されます、任意の色、フォント、またはサイズの構文はありません。CSS クラス(<div class="alert">)はスタイルシートには意味を持ちますが Markdown には持ちません。カスタムデータ属性(data-track-event="...")はページの JavaScript 契約の一部で、ドキュメントの一部ではありません。マージセルテーブル(colspanrowspan)は GFM パイプテーブルで表現できません。埋め込みメディア(<video><audio><iframe>)とフォームコントロールは Markdown 等価物を持ちません。折りたたみ可能 <details><summary> パネル、<figure><figcaption>、CJK 発音のための <ruby> 注釈、microdata と microformat、これらは何も変換を生き残りません。サポートされていない各構造に対して、変換器の著者は 3 つの戦略のいずれかを選択します:翻訳(情報を失う Markdown 近似に)、通過(Markdown に埋め込まれた生の HTML として、Markdown は仕様によりこれを許可、CommonMark のセクション 4.6 と 6.6 がそれをカバー)、または完全に削除。この実装は「マッピングが明確な場所で翻訳、そうでなければ透過的にラップ(子をレンダリング、タグを削除)」を選択、予測可能で推論しやすいデフォルト、高度な設定可能性のコストで一般的なケースを処理します。

標準マッピング

正直な範囲、このツールが行うことと行わないこと

知っておくべき 3 つの正直な制限。(1)インラインスタイルと CSS クラスは削除されます。 <span style="color:red"> はスタイルなしのテキストになります、<p class="lede"> はクラスを失います。任意のインラインスタイリングのための Markdown 文法はありません。(2)マージセルテーブルはフラット化されます。 GFM パイプテーブルは colspanrowspan の構文を持ちません、マージ情報は静かに失われます。複雑なテーブルには、Markdown 内に HTML としてソースを保持(CommonMark は埋め込み HTML を許可)するか、グリッドテーブル出力で Pandoc を使用してください。(3)コードブロックは言語ヒントなしで出力されます。 HTML が <pre><code class="language-js"> を含む場合、言語属性は現在削除されます、出力は言語なしのフェンスブロックです。ターゲットレンダラーがシンタックスハイライトをサポートする場合、開きバッククォート後に手動で言語識別子を追加できます。より広い警告: Web ページの完全な HTML(「ソースを表示」から)を貼り付ける場合、<script><style> コンテンツがプレーンテキストとして出力されます、それはほぼ確実に望むことではありません。修正:記事コンテンツのみを貼り付ける、レンダリングされたビュー(自動的にスクリプトとスタイルを刈り取る)からコピーする、または変換前に DOMPurify などで HTML をクリーンアップしてください。

2026 年の Markdown の状態

Markdown は2026 年に 22 歳になりました。John Gruber は2004 年に元の Perl スクリプトを公開、Aaron Swartz が設計協力者として。テーブルは Gruber のオリジナルから意図的に省かれました、今日ほとんどの読者になじみのあるパイプテーブル構文は後の方言、特に GitHub Flavored Markdown から来ています。CommonMark、Jeff Atwood と John MacFarlane が2014年に組織した厳密な仕様努力、は今やバージョン 0.31.2(2024年1月28日)、ほとんどの現代のパーサーがターゲットにする方言です。GitHub Flavored Markdown(GFM、2019年4月6日にバージョン 0.29-gfm として正式化)はテーブル、タスクリスト、取り消し線、autolink、生の HTML 禁止ルールを追加する GFM スーパーセットです。GFM は GitHub の規模のためにほとんどのユーザーが Web で実際に見る方言です。Markdown は今やほぼあらゆる開発者ドキュメントエコシステムのネイティブフォーマットです、HTML は Web の普遍的な出力フォーマットのままです、両者間の変換は逆と同じくらい一般的で、ブラウザで、インストールなしで、データがデバイスを離れることなく、緊急に必要な瞬間に存在します。

プライバシー、なぜブラウザのみがここで重要か

変換器に貼り付けられた HTML は元のソースの痕跡をしばしば含みます、内部 CMS markup、未公開のドラフトコンテンツ、電子メールテンプレート内のクライアントデータ、内部サイト構造を明らかにするリンク URL、プライベートアセットサーバーを指す画像参照。サーバー側変換器はこれらすべてをサードパーティサービスにアップロードします。このツールは JavaScript を介してブラウザで完全に実行されます:貼り付けた HTML はネットワークを横断しません、Convert をクリックする間に DevTools の Network タブを確認するか、ロード後にページをオフライン(機内モード)にしても変換器はまだ動作します。未公開のドラフト、クライアント電子メールテンプレート、内部ドキュメント抜粋、または見知らぬ人のハードドライブにコピーされたくないあらゆる HTML に安全です。

よくある質問

大きなファイルで動作しますか?

はい、変換がブラウザで実行されるので、実用的な上限はデバイスの利用可能なメモリです。何万行もの行が現代のラップトップで 1 秒未満で変換されます。非常に大きな入力(数百万ノード)は DOM トラバーサル再帰中にタブを短時間フリーズさせるかもしれません。完全な CMS エクスポートのバッチ変換には、Node の Turndown または Python の markdownify を使用するスクリプトが最良のツールです。

インラインスタイルと CSS クラスはどうなりますか?

それらは完全に削除されます。Markdown の emphasis 文法は bold、italic、strikethrough、code をカバーします、任意の色、フォント、サイズ、またはクラス駆動スタイリングの構文はありません。視覚スタイリングが出力で重要な場合、オリジナルを HTML として保持するか、AsciiDoc、reStructuredText、または MDX(Markdown プラス JSX コンポーネント、Docusaurus が使用)のようなより豊かなターゲットフォーマットを使用してください。このツールが構築された記事アーカイブと CMS 移行ケースには、スタイルを削除することが正しい動作です、Markdown の全ポイントは視覚ノイズを削除して構造のみを保持することです。

このツールはオフラインで動作しますか?

はい、ページがロードされると、変換は JavaScript を介してブラウザで完全に実行されます。変換中のネットワーク呼び出しはありません。Convert をクリックする間に DevTools の Network タブを確認するか、ページがロードされた後にデバイスをオフライン(機内モード)にしてもツールはまだ動作します。

これは Turndown ですか?

いいえ。Turndown(Dom Christie のライブラリ)は JavaScript リファレンス実装で、Node プロジェクトで自然に選ぶツールですが、見出しスタイル、バレットマーカー、リンクスタイル、コードブロックスタイルなどの完全な設定可能性を持つ実質的な依存関係です。このブラウザ内ツールはより小さな手書きの DOM トラバーサルです、約 150 行、設定サーフェスなしで一般的なケース(見出し、段落、emphasis、リンク、画像、リスト、引用、フェンスコード、基本テーブル)をターゲットにします。このサイトが構築されたフロー(ブラウザ内のワンオフ変換、インストールなし)には、より小さな実装が正しい形式です、設定可能なルールを必要とする本番スクレイピングパイプラインには、Turndown が依然として正しい選択です。

テーブルはどう扱われますか?

GFM パイプテーブルとして:1 つのヘッダー行、ダッシュ区切り行、<tr> ごとに 1 つの本文行。パイプテーブルはフラットで、colspanrowspan、複数行セルコンテンツ、セル内のリスト、またはセルごとのアラインメントを表現できません。HTML テーブルがこれらの機能のいずれかを使用する場合、この変換器は追加の構造を失う劣化したパイプテーブルを生成します。複雑なテーブルには、2 つの実用的なオプション:(a)Markdown 内に生 HTML としてテーブルを保持(CommonMark は埋め込み HTML を許可)、ターゲットレンダラーがそれを通すと信頼、(b)マージセルを表現できるグリッドテーブル出力で Pandoc を使用。

Web ページの完全な HTML を貼り付けることができますか?

できますが、おそらくすべきではありません。現代の Web ページの完全なソースは JavaScript コードを持つ <script> タグ、CSS を持つ <style> ブロック、追跡ピクセル、広告 markup、CMS テンプレートコメントを含みます。この変換器はスクリプトとスタイルコンテンツを明示的に刈り取りません、つまりすべてが Markdown 出力でプレーンテキストとして終わります。クリーンなアプローチ:DevTools で記事要素のみを選択(記事を右クリック、「検査」、それから Elements パネルで対応するノードを右クリックして「outerHTML をコピー」)、または貼り付け前にコンテンツ抽出ステップ(Mozilla の Readability ライブラリ、または Firefox の Reader Mode のパッケージ化された形式)を使用してください。自動的に抽出ステップをサポートするブラウザ拡張ベースのフローには、Obsidian Web Clipper や MarkDownload を参照してください。

関連ツール