ToolDeck

HTML to Markdown

HTMLをMarkdown形式に変換

サンプルを試す

HTML入力

Markdown出力

ローカルで実行 · シークレットの貼り付けも安全
Markdownの出力がここに表示されます…

HTMLからMarkdownへの変換とは?

HTMLからMarkdownへの変換は、HTMLマークアップをMarkdownに変換します。MarkdownはJohn Gruberが2004年に作成した軽量なプレーンテキスト形式の構文です。Markdownはレンダリングなしでも読みやすいように設計されました。HTMLでは<strong>や<a href="">のような開始タグと終了タグが必要ですが、Markdownは省略記号を使います:**太字**、[リンク](url)、# 見出しのように。HTMLをMarkdownに変換すると、生のHTMLよりも読みやすく、編集しやすく、バージョン管理に適したファイルが生成されます。

変換処理はHTML要素をMarkdownの対応要素にマッピングします。<h2>は##に、<ul><li>は- 項目に、<a>タグは[テキスト](url)になります。<div>、<span>、カスタムデータ属性など、直接対応するMarkdown要素が存在しないHTML要素もあります。コンバーターは通常、設定に応じてこれらのタグを削除するか、生のHTMLとしてそのまま出力します。

Markdownは開発者向けドキュメント(GitHub、GitLab、Bitbucket)、静的サイトジェネレーター(Hugo、Jekyll、Astro)、ノートアプリ(Obsidian、Notion)、技術ブログの標準的な記述形式となっています。既存のHTMLコンテンツをMarkdownに変換することは、ウェブサイトの移行、CMSコンテンツのインポート、またはウェブページをポータブルな形式でアーカイブする際の一般的な手順です。HTMLとは異なり、Markdownファイルはバージョン管理で差分が明確に表示されるため、ドキュメント変更のコードレビューが実用的になります。

HTML to Markdownコンバーターを使う理由

HTMLを手動でMarkdownに書き直すのは時間がかかり、特にネストされたリスト、表、多数のリンクを含むページでは誤りが生じやすいです。自動化されたコンバーターは構造のマッピングを即座かつ一貫して処理します。

ブラウザで即時変換
HTMLを貼り付けると数ミリ秒でMarkdown出力が得られます。サーバーへの往復なし、処理待ちなし。変換はすべてJavaScriptを使用してブラウザ内で実行されます。
🔒
データのプライバシーを保護
HTMLがマシンの外に出ることはありません。すべての処理はクライアントサイドで行われるため、アップロードなし、ログなし、コンテンツへのサードパーティアクセスもありません。
📝
文書構造を保持
見出し、リスト、リンク、画像、コードブロック、表が正しいMarkdownの対応要素にマッピングされます。ネストされた構造とインライン書式は再帰的に処理されます。
🔀
アカウントもインストールも不要
ツールを開いて変換を開始するだけです。インストール不要、APIキーの設定不要、登録フォームもありません。モダンブラウザを搭載した任意のデバイスで動作します。

HTML to Markdownの活用例

フロントエンドエンジニア:CMS移行
WordPressやDrupal、ヘッドレスCMSからブログ記事やページをHTMLとしてエクスポートし、Next.js、Astro、HugoなどのJamstack静的サイトジェネレーターで使用するためにMarkdownに変換します。
バックエンドエンジニア:APIドキュメント
自動生成されたHTML形式のAPIドキュメントをソースコードと並んで管理するMarkdownファイルに変換します。MarkdownドキュメントはGitHubのレンダリングに統合され、対象コードとともにバージョン管理できます。
DevOps:ランブックの変換
HTMLとしてエクスポートされた社内Wikiページ(ConfluenceやSharePoint)を、インフラコードと並んでGitリポジトリに保存するMarkdownランブックに変換します。
QAエンジニア:テストケースのドキュメント化
Webベースツールから出力されたHTMLテストレポートや手動テスト計画を、検証対象のコード変更と並んでプルリクエストでレビューできるMarkdownファイルに変換します。
データエンジニア:Webスクレイピングの後処理
スクレイピングしたWebページからHTMLの定型部分を除去し、クリーンなMarkdownテキストを生成します。ナビゲーション、広告、レイアウトマークアップを削除しながら記事のコンテンツと構造を保持します。
学生:調査ノートの整理
Webリソースからコンテンツをコピーし、HTMLをMarkdownに変換してObsidian、Notion、その他のMarkdownベースのノートアプリにインポートします。見出し、リンク、書式が保持されます。

HTML→Markdown要素対応表

以下の表は一般的なHTML要素がMarkdownの対応要素にどのようにマッピングされるかを示しています。このマッピングはGitHub-Flavored Markdown(GFM)の規則に従っており、CommonMarkの仕様を表、取り消し線、タスクリストで拡張しています。ここに記載されていない要素(<div>、<form>、カスタムWebコンポーネントなど)にはMarkdownの対応要素がなく、削除されるか生のHTMLとしてそのまま出力されます。

HTML要素Markdown構文備考
<h1>...<h6># ... ######ATX headings, level matches tag number
<p>Blank line separationDouble newline between paragraphs
<strong>, <b>**text**Bold / strong emphasis
<em>, <i>*text*Italic / emphasis
<a href="url">[text](url)Inline link with optional title
<img src="url">![alt](url)Image with alt text
<ul><li>- itemUnordered list with dash or asterisk
<ol><li>1. itemOrdered list, numbers restart per block
<blockquote>> textBlock quote, nestable with >>
<code>`code`Inline code span
<pre><code>```lang\ncode\n```Fenced code block with optional language
<hr>---Horizontal rule (three dashes)
<table>| col | col |GFM table syntax with alignment
<del>, <s>~~text~~Strikethrough (GFM extension)

Markdownのフレーバー:GFM vs CommonMark vs オリジナル

すべてのMarkdownが同じというわけではありません。出力形式はプラットフォームによってMarkdownの解析方法が異なるため重要です。最も一般的な3つのフレーバーはGitHub-Flavored Markdown(GFM)、CommonMark、GruberのオリジナルのMarkdownです。

GitHub-Flavored Markdown(GFM)
最も広く使われているフレーバーです。表(パイプ構文)、取り消し線(~~テキスト~~)、タスクリスト(- [x])、自動リンクURLが追加されています。GitHub、GitLab、ほとんどの開発者ツールで使用されています。このコンバーターはデフォルトでGFM互換のMarkdownを出力します。
CommonMark
オリジナルのMarkdown構文の曖昧さを解消する厳密な仕様です。リストの継続、強調の解析、ブロックレベルのネストに関する正確なルールを定義しています。GFMや多くの静的サイトジェネレーターのベースとして使用されています。
オリジナルMarkdown
John Gruberの2004年の仕様です。表、フェンスコードブロック、取り消し線をサポートしていません。ほとんどのモダンなツールはこれをCommonMarkのサブセットとして扱います。現在はターゲット形式としてほとんど使用されていません。

コード例

JavaScript(Turndown)、Python(markdownifyおよびhtml2text)、Go、コマンドラインのPandocでの実際の使用例。

JavaScript (Turndown)
import TurndownService from 'turndown'

const turndown = new TurndownService({ headingStyle: 'atx' })
const html = '<h1>Title</h1><p>A <strong>bold</strong> paragraph.</p>'
const md = turndown.turndown(html)
console.log(md)
// → "# Title\n\nA **bold** paragraph."
Python (markdownify)
from markdownify import markdownify

html = '<h2>Section</h2><ul><li>First</li><li>Second</li></ul>'
md = markdownify(html, heading_style='ATX')
print(md)
# → "## Section\n\n- First\n- Second"
Python (html2text)
import html2text

converter = html2text.HTML2Text()
converter.body_width = 0  # disable line wrapping

html = '<p>Visit <a href="https://example.com">Example</a> for details.</p>'
md = converter.handle(html)
print(md)
# → "Visit [Example](https://example.com) for details."
Go (html-to-markdown)
package main

import (
	"fmt"
	md "github.com/JohannesKaufmann/html-to-markdown"
)

func main() {
	converter := md.NewConverter("", true, nil)
	html := `<h3>Go Example</h3><p>Code: <code>fmt.Println()</code></p>`
	markdown, _ := converter.ConvertString(html)
	fmt.Println(markdown)
	// → "### Go Example\n\nCode: `fmt.Println()`"
}
CLI (Pandoc)
# Convert an HTML file to Markdown
pandoc input.html -f html -t markdown -o output.md

# Pipe HTML from stdin
echo '<p>Hello <em>world</em></p>' | pandoc -f html -t markdown
# → Hello *world*

# Use GitHub-Flavored Markdown output
pandoc input.html -f html -t gfm -o output.md

よくある質問

Markdownに変換できないHTML要素はありますか?
Markdownには<div>、<span>、<form>、<input>、<iframe>、またはカスタムCSSクラスやスタイルを持つ要素に相当するものがありません。ほとんどのコンバーターはこれらのタグを削除し、内部テキストのみを保持します。一部のコンバーターはサポートされていないHTMLをそのまま出力するよう設定でき、Markdown仕様がインラインHTMLを明示的に許可しているため、これは有効な選択です。それらの要素を保持する必要がある場合は、削除せずに生のHTMLを保持するようコンバーターを設定してください。
HTMLの表はMarkdownにどのように変換されますか?
HTMLの表はGFMのパイプテーブル構文にマッピングされます:| ヘッダー | ヘッダー | と区切り行 | --- | --- |。GFMの表はcolspan、rowspan、セルレベルのスタイリングをサポートしていません。セルが結合された複雑な表は平坦化され、構造情報が失われる場合があります。シンプルなデータ表の場合、変換は情報損失なく行われます。
HTMLからMarkdownへの変換は可逆的ですか?
いいえ。MarkdownはHTMLのサブセットであるため、変換中に一部の情報は常に失われます。CSSクラス、インラインスタイル、データ属性、フォーム要素、<article>や<section>などのセマンティックタグにはMarkdownの対応要素がありません。テキストコンテンツと基本構造(見出し、リスト、リンク、強調)は正確に保持されます。ほとんどのドキュメントやコンテンツ移行のワークフローでは、保持される要素が重要な要素です。
HTMLからMarkdownへの変換とHTMLからプレーンテキストへの変換の違いは何ですか?
HTMLからプレーンテキストへの変換はすべての書式を除去し、構造のない生のテキストを生成します。HTMLからMarkdownへの変換は文書構造を保持します:見出しは見出しのまま、リンクはURLを保持し、リストはリストのまま、強調も保持されます。Markdownの出力は同じ論理構造でHTMLにレンダリングし直すことができます。
MarkdownをHTMLに戻すことはできますか?
はい。すべてのMarkdownプロセッサー(marked、markdown-it、Python-Markdown、goldmark)がMarkdownをHTMLに変換します。この往復変換はMarkdownが人気の理由のひとつです:読みやすい形式で記述し、Web用にHTMLにレンダリングできます。HTMLからMarkdownへの変換でサポートされていない要素が削除されるため、往復変換は完全には対称ではありません。
インラインCSSやJavaScriptを含むHTMLはどのように処理されますか?
インラインCSS(style属性)と<style>ブロックはMarkdownにスタイリング構文がないため、変換中に除去されます。JavaScript(<script>タグとonclickなどのイベントハンドラー)も削除されます。コンバーターは文書のコンテンツと構造のみを抽出します。これにより、信頼できないHTMLコンテンツをドキュメントにインポートする際のサニタイズ手順として、HTMLからMarkdownへの変換が有用になります。
プロジェクトにはどのMarkdownフレーバーを使うべきですか?
コンテンツがGitHub、GitLab、またはほとんどのドキュメントプラットフォームで表示される場合はGitHub-Flavored Markdown(GFM)を使用してください。異なるレンダラー間で厳密な仕様への準拠と予測可能な解析が必要な場合はCommonMarkを使用してください。オリジナルのMarkdownはレガシーシステムのみに関連します。GFMはほとんどのプロジェクトで最も安全なデフォルトです。