CSV→Markdownテーブル変換

CSVをMarkdownテーブルに変換します

サンプルを試す

CSV入力

Markdown出力

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

CSVからMarkdownへの変換とは?

CSVをMarkdownテーブルに変換することは、開発者がよく行う作業です。CSV(Comma-Separated Values)は、各行が1レコードを表し、フィールドがカンマやタブなどの区切り文字で区切られたプレーンテキストの表形式データです。スプレッドシート・SQLクライアント・分析ツールのデフォルトエクスポート形式として広く使われています。CSVファイルはコンパクトで生成しやすい一方、データの表示方法を制御する仕組みを持っていません。テキストエディターで開くと、カンマ区切りの文字列が並んだだけの内容になり、機械には読みやすくても人間には把握しづらいものです。

Markdownテーブルはこの可読性の問題を解決します。GitHub Flavored Markdown(GFM)仕様で定義されており、GitHub・GitLab・Bitbucket・Notion・Obsidian・Hugo・JekyllなどのMarkdownを処理する環境でHTMLテーブルとしてレンダリングされます。構文はパイプ文字で列を区切り、ヘッダー行と本文行の間にダッシュで構成された必須の区切り行を入れます。

CSVをMarkdownテーブルに変換するとは、各行をパイプ区切りの構文で囲み、ヘッダーの後に区切り行を挿入する処理です。CSVの最初の行がテーブルのヘッダーになり、以降の行が本文行になります。README・プルリクエストの説明・Wikiページ・Markdownドキュメントシステムに構造化データを貼り付けるときに必要な操作です。

このツールを使う理由

このコンバーターはブラウザ上でCSVを解析し、Markdownテーブルを即座に生成します。データがサーバーに送信されることはありません。

即時テーブル生成
CSVを貼り付けると、正しい形式のMarkdownテーブルがすぐに得られます。アップロードやサーバー処理の待機は不要です。入力しながらリアルタイムに出力が更新されます。
🔒
プライバシー優先の処理
データはブラウザのタブ内に留まります。ネットワーク経由で送信されることはありません。社内データセット・認証情報・マシン外に出すべきでない機密情報も安全に扱えます。
📋
すぐに使えるコピー出力
ワンクリックでMarkdownテーブルをクリップボードにコピーできます。GitHub README・Issue・PRの説明・Confluenceページ・任意のMarkdownエディターにそのまま貼り付けて使えます。
🔀
区切り文字の自動検出
カンマ・タブ・セミコロン・パイプの各区切り文字を自動認識します。CSVが特定の形式でなくても、正しい出力を生成できます。

CSVからMarkdownへの変換ユースケース

READMEドキュメント
設定オプション・APIエンドポイント・環境変数のCSVファイルをMarkdownテーブルに変換し、プロジェクトのREADMEに記載できます。データエクスポートとドキュメントの同期維持に役立ちます。
プルリクエストの説明
テスト結果・ベンチマーク比較・マイグレーションサマリーをMarkdownテーブルとしてGitHubやGitLabのPR説明に貼り付けることで、レビュアーが別ファイルを開かずにデータを確認できます。
DevOpsランブック
サーバー・ポート・サービスエンドポイントのCSVインベントリをMarkdownテーブルに変換し、Gitで管理するチームWikiやインシデント対応ランブックに活用できます。
QAテストレポート
CIパイプラインからのCSVテスト結果エクスポートをMarkdownテーブルに変換し、Jira・Confluence・Notionのチケットでステークホルダーがすぐにレビューできるようにします。
データエンジニアリングドキュメント
データカタログからCSVとしてエクスポートしたスキーマ定義やカラムメタデータをMarkdownテーブルに変換し、データパイプラインのドキュメントに組み込めます。
学術・学生プロジェクト
Kaggleや政府オープンデータポータルのデータセットをMarkdownテーブルに変換し、研究ノート・実験レポート・Jupyterノートブックのドキュメントに活用できます。

Markdownテーブル構文リファレンス

MarkdownテーブルはGitHub Flavored Markdown(GFM)仕様に従います。すべてのテーブルにはヘッダー行・区切り行・1行以上の本文行が必要です。区切り行で列の配置を制御します。

要素構文説明
Column separator|Separates each cell within a row
Header row| Name | Age |First row of the table, defines column names
Separator row| --- | --- |Required second row; separates header from body
Left align| :--- |Default alignment — colon on the left side
Center align| :---: |Colons on both sides of the dashes
Right align| ---: |Colon on the right side only
Escaped pipe\|Use backslash to include a literal pipe in cell text

CSVとMarkdownテーブルの比較

どちらのフォーマットもプレーンテキストで表形式データを表現します。CSVは機械やデータパイプライン向け、Markdownテーブルはドキュメントを読む人間向けです。

CSV
機械指向。フィールドは区切り文字(カンマ・タブ・セミコロン)で区切られます。配置制御はなく、レンダリングもありません。テキストエディターで見えるのは生の値です。あらゆるスプレッドシート・データベースエクスポートツール・プログラミング言語で対応しています。データ交換と保存に最適です。
Markdown Table
人間指向。列はパイプ文字で区切られ、必須のダッシュ区切り行があります。列ごとに左・中央・右の配置を指定できます。GitHub・GitLab・Notion・静的サイトジェネレーターでHTMLテーブルとしてレンダリングされます。ドキュメント・README・インラインデータ表示に最適です。

コード例

以下の例は、各言語でCSVをMarkdownテーブルにプログラム的に変換する方法です。いずれも有効なGFMテーブルを生成します。

JavaScript (Node.js)
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

const [headerLine, ...rows] = csv.trim().split('\n')
const headers = headerLine.split(',')

const separator = '| ' + headers.map(() => '---').join(' | ') + ' |'
const headerRow = '| ' + headers.join(' | ') + ' |'
const bodyRows = rows.map(row =>
  '| ' + row.split(',').join(' | ') + ' |'
)

const markdown = [headerRow, separator, ...bodyRows].join('\n')
// → | name | age | city |
// → | --- | --- | --- |
// → | Alice | 30 | Berlin |
// → | Bob | 25 | Tokyo |
Python
import csv
import io

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.reader(io.StringIO(csv_string))
rows = list(reader)
headers = rows[0]

lines = []
lines.append('| ' + ' | '.join(headers) + ' |')
lines.append('| ' + ' | '.join('---' for _ in headers) + ' |')
for row in rows[1:]:
    lines.append('| ' + ' | '.join(row) + ' |')

print('\n'.join(lines))
# → | name | age | city |
# → | --- | --- | --- |
# → | Alice | 30 | Berlin |
# → | Bob | 25 | Tokyo |

# With pandas (one-liner)
import pandas as pd
df = pd.read_csv(io.StringIO(csv_string))
print(df.to_markdown(index=False))
Go
package main

import (
	"encoding/csv"
	"fmt"
	"strings"
)

func main() {
	input := "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo"
	r := csv.NewReader(strings.NewReader(input))
	records, _ := r.ReadAll()

	headers := records[0]
	var lines []string

	lines = append(lines, "| "+strings.Join(headers, " | ")+" |")
	sep := make([]string, len(headers))
	for i := range sep {
		sep[i] = "---"
	}
	lines = append(lines, "| "+strings.Join(sep, " | ")+" |")

	for _, row := range records[1:] {
		lines = append(lines, "| "+strings.Join(row, " | ")+" |")
	}

	fmt.Println(strings.Join(lines, "\n"))
	// → | name | age | city |
	// → | --- | --- | --- |
	// → | Alice | 30 | Berlin |
	// → | Bob | 25 | Tokyo |
}
CLI (Miller + csvtomd)
# Using Miller (mlr) — convert CSV to Markdown table
mlr --icsv --omarkdown cat data.csv
# → | name | age | city |
# → | --- | --- | --- |
# → | Alice | 30 | Berlin |

# Using csvtomd (pip install csvtomd)
csvtomd data.csv

# Using pandas in a one-liner
python3 -c "
import pandas as pd, sys
print(pd.read_csv(sys.argv[1]).to_markdown(index=False))
" data.csv

よくある質問

このツールはどのMarkdownテーブル形式を生成しますか?
GitHub Flavored Markdown(GFM)形式のテーブルを生成します。パイプ文字を列の区切りに使い、ヘッダーと本文の間にダッシュの行(---)を入れる形式です。GFMテーブルはGitHub・GitLab・Bitbucket・Notion・Obsidian・Hugo・Jekyllおよびほとんどのmarkdownレンダラーで対応しています。
Markdown出力で列の配置を指定できますか?
標準のMarkdownテーブル構文では、区切り行にコロンを追加することで列ごとに左・中央・右の配置を指定できます(:--- で左、:---: で中央、---: で右)。このツールはデフォルトで左揃えの列を生成します。変換後に出力の区切り行を編集して配置を変更できます。
CSVフィールドにカンマが含まれている場合はどう処理されますか?
CSVフィールドに区切り文字が含まれている場合、RFC 4180に従いフィールドをダブルクォートで囲む必要があります。ツールは解析時に外側のクォートを取り除き、Markdownセル内にプレーンな値を出力します。パイプ区切りのMarkdown形式ではカンマのクォートは不要です。
変換できる行数や列数に制限はありますか?
ツール側でハードリミットは設けていません。変換はブラウザ内で実行されるため、パフォーマンスはデバイスに依存します。数千行のテーブルは現代のハードウェアで1秒未満で変換されます。非常に大きなファイル(10万行以上)には、コマンドラインツールのMillerがより適しています。
CSVにヘッダー行がない場合はどうなりますか?
Markdownテーブルにはヘッダー行が必要です。CSVにヘッダーがない場合、ツールは最初のデータ行をヘッダーとして扱います。CSVに事前にヘッダー行を追加するか、変換後にMarkdown出力の最初の行を編集してください。
タブ区切り(TSV)データをMarkdownに変換できますか?
はい。ツールはタブ文字を区切り文字として自動検出します。TSVデータをそのまま貼り付けるだけで、カンマ区切りと同様に解析されます。自動検出がデータに合わない場合は、手動で区切り文字を選択することもできます。
パイプ文字などの特殊文字はどう扱われますか?
セル内のパイプ文字はそのままではテーブル構造を壊してしまいます。Markdownではバックスラッシュでエスケープします:\|。CSVから変換する際、ツールはセルの値に含まれるパイプ文字を自動的にエスケープするため、出力テーブルが正しくレンダリングされます。