Compare TOML Files Online
Paste two TOML configuration files. See what was added, removed, or changed — section by section, key by key.
🔒 100% private — runs entirely in your browseror try sample data
Paste two TOML configuration files. See what was added, removed, or changed — section by section, key by key.
🔒 100% private — runs entirely in your browseror try sample data
Compare TOML Files shows you exactly what changed between two TOML configuration files with a clear, side-by-side visual diff. Every added section, removed key, and modified value is color-coded and highlighted at the word level, making it easy to review changes in Cargo.toml, pyproject.toml, Hugo configurations, and any other TOML-based config files.
TOML (Tom's Obvious Minimal Language) has become the configuration format of choice for modern toolchains. Rust projects use Cargo.toml for dependencies and build settings, Python projects use pyproject.toml for project metadata and tool configuration, Hugo uses config.toml for site settings, and many CLI tools and static site generators adopt TOML for its readability. When these files change — new dependencies, version bumps, feature flag toggles, or build profile adjustments — you need a clear view of what exactly was modified.
Paste your TOML from any source — project files, CI artifacts, or clipboard. The tool preserves TOML's section headers, inline tables, arrays, and comments in the diff output. Use "Ignore whitespace" to skip formatting differences or "Ignore case" when key casing does not matter. Everything runs in your browser, so your configuration data stays private.
# Cargo.toml (before)
[dependencies]
tokio = { version = "1.32", features = ["full"] }
axum = "0.6"
serde = { version = "1.0", features = ["derive"] }
sqlx = { version = "0.7", features = ["postgres"] } # Cargo.toml (after) — version bumps and new deps
[dependencies]
tokio = { version = "1.35", features = ["full"] }
axum = "0.7"
serde = { version = "1.0", features = ["derive"] }
sqlx = { version = "0.7", features = ["postgres", "migrate"] }
jsonwebtoken = "9.2"
tower-http = { version = "0.5", features = ["cors"] }Cargo.toml diffs show dependency version bumps, new crate additions, and feature flag changes. Review these before merging PRs to catch unintended dependency changes.
# pyproject.toml (before)
[project]
name = "my-package"
version = "1.2.0"
requires-python = ">=3.9"
dependencies = [ "fastapi>=0.100", "uvicorn[standard]", "sqlalchemy>=2.0",
] [tool.ruff]
line-length = 88 # pyproject.toml (after) — Python version bump, new deps
[project]
name = "my-package"
version = "2.0.0"
requires-python = ">=3.11"
dependencies = [ "fastapi>=0.109", "uvicorn[standard]", "sqlalchemy>=2.0", "pydantic-settings>=2.0",
] [tool.ruff]
line-length = 120
target-version = "py311"pyproject.toml diffs reveal Python version requirement changes, dependency updates, and tool configuration tweaks across project versions.
# config.toml (development)
baseURL = "http://localhost:1313/"
title = "My Blog"
theme = "minimal"
paginate = 5 [params] description = "A development blog" showReadingTime = false enableSearch = false [markup.goldmark.renderer] unsafe = true # config.toml (production)
baseURL = "https://myblog.com/"
title = "My Blog"
theme = "minimal"
paginate = 10
enableRobotsTXT = true [params] description = "Thoughts on software engineering" showReadingTime = true enableSearch = true googleAnalytics = "G-XXXXXXXX" [markup.goldmark.renderer] unsafe = falseHugo config diffs highlight environment-specific settings like base URLs, pagination, analytics codes, and security options between development and production.
TOML sections (table headers like [dependencies]) can appear in any order without changing the file's meaning. However, this tool compares text line by line, so rearranging sections will show entire blocks as removed and re-added. Keep sections in the same order across both files for the cleanest diff.
TOML allows the same data as an inline table (dep = { version = "1.0", features = ["full"] }) or a multi-line table ([dep] with keys on separate lines). These are semantically equivalent but produce textual differences. Standardize the formatting before comparing to avoid false positives.
TOML allows bare keys (name = "value") and quoted keys ("name" = "value") interchangeably for valid bare key characters. Since this is a text comparison, different quoting styles will appear as changes even though the parsed result is identical. Use consistent key quoting across files.
Paste your TOML content into the two input panels and click Compare. The tool shows a side-by-side diff with line-by-line comparison and word-level highlighting for modified sections, keys, and values.
Yes. Cargo.toml files are standard TOML and work perfectly with this tool. The diff highlights dependency version changes, feature flag additions, build profile modifications, and metadata updates across Rust project versions.
Yes. Table headers ([section]), nested tables ([section.subsection]), and arrays of tables ([[section]]) are all displayed in the diff. Changes within any section type are highlighted with word-level precision.
Yes. This tool runs entirely in your browser using client-side JavaScript. Your TOML files — including any credentials, API keys, or private configuration — are never sent to any server.
Yes. Any TOML file works, including pyproject.toml for Python projects, Cargo.toml for Rust, config.toml for Hugo, netlify.toml for Netlify deployments, and any other application that uses the TOML format.
TOML uses explicit section headers and key-value pairs without relying on indentation, making it less prone to whitespace errors than YAML. If you need to compare YAML files instead, use the YAML Diff tool which handles indentation-sensitive content.