TOML フォーマッタ & バリデータ

TOML を貼り付けて、TOML 1.0 の標準レイアウトでフォーマット、または構文を検証。アップロードなし。

  1. 左側のテキストエリアに TOML を貼り付けます。
  2. フォーマットをクリックすると @iarna/toml を通じてラウンドトリップし、標準レイアウトを生成します。
  3. 検証をクリックすると、入力を変更せずに構文を確認します。
  4. エラーは問題のある行と列を指します。
何ができるのか?

TOML 1.0 モードの @iarna/toml で TOML をパースし、標準レイアウトで再出力します — キーがサブテーブルの前、一貫した引用符付け、整数のアンダースコアは除去。検証ボタンは入力を変更せず仕様に対して構文をチェックします。コメントはラウンドトリップ中に削除されます(TOML フォーマッタは一般的に parse-and-dump サイクルで保持できません)。

乱雑な TOML 入力:

[server]
host="localhost"
port=8080

name="myapp"

フォーマットされた出力:

name = "myapp"

[server]
host = "localhost"
port = 8080

よくある TOML エラーと修正方法

TOML 1.0 は YAML や JSON より厳格な規則を持ちます。以下のパターンが多くのパーサ失敗をカバーします。

  • 引用符のない文字列。 `name = Ada` は無効です。二重引用符を使ってください: `name = "Ada"`。
  • テーブルの再定義。 `[a]` を 2 回定義するのはエラーです。各テーブルヘッダは最大 1 回しか出現できません。キーを 1 つの `[a]` ブロックにマージしてください。
  • テーブル後のトップレベルキー。 `[section]` を書いたら、それ以降のキーはすべてそのセクションに属します。キーは最初のテーブルヘッダの前に来る必要があります。フォーマッタが並び替えますが、生の入力自体が有効である必要があります。
  • タイムゾーンなしの datetime。 `d = 2026-04-26T12:00:00` (Z やオフセットなし) は「ローカル datetime」です。パースはされますが、JSON スタイルのコンシューマはローカル性を表現する方法がない場合があります。UTC には `2026-04-26T12:00:00Z` を使ってください。
  • インラインテーブルの拡張。 インラインテーブル `point = {x=1, y=2}` は閉じていて自己完結的です。後で `point.z = 3` を書くことはできません。拡張するには標準的な `[point]` ブロック構文を使ってください。
  • トリプルクォートのエスケープの混乱。 `"""..."""` (基本複数行) はエスケープを処理します;`\'\'\'...\'\'\'` (リテラル複数行) は処理しません。両者を混ぜることが最も一般的な複数行文字列のエラーです。
よくある質問

フォーマットはデータを変えますか?

レイアウトのみ — TOML 規則に従い、プリミティブをサブテーブルの前にするためにキーが並び替えられ、空白が正規化され、整数のアンダースコアが除去されます(TOML 意味論)。値そのものは変わりません。

TOML コメントは保持されますか?

いいえ。@iarna/toml は parse-and-dump のラウンドトリップ中にコメントを破棄します。コメント保持のフォーマットが必要なら、ソース位置情報を保持する別のライブラリが必要です。

TOML 1.0 に対して検証しますか?

はい。@iarna/toml は TOML 1.0 に従います — 混合型配列、ドット付きキー、改訂された文字列規則の許可を含みます。TOML 0.5 専用の動作 (均質配列必須) に依存する入力もここでパースされますが、より厳格な 0.5 パーサで壊れる可能性があります。

どれくらいの大きさの TOML ファイルを扱えますか?

テキストエリアが遅くなる前に約 30 MB まで。ほとんどの設定ファイルは 1 MB 未満です。

私の TOML はアップロードされますか?

いいえ。すべてはあなたのブラウザで実行されます — 入力はこのページの JavaScript で解析・再シリアライズされ、サーバーに送信されることはありません。

なぜフォーマッタは私のキーを並び替えるのですか?

TOML 1.0 では同じスコープ内のトップレベルキー(プリミティブ)が任意のテーブルヘッダの前に現れる必要があります。フォーマッタはサブテーブルの前にプリミティブを並べることでこれを強制します。元の入力が異なる順序だった場合、フォーマット手順がそれを正規化します。