TOML / INI Diff Online
Compare TOML and INI configuration files and find differences instantly.
When a TOML or INI diff is the right tool
TOML and INI still carry a lot of project state: Cargo.toml, pyproject.toml, tool configs, and older .ini files. Two of those documents can look almost the same in an editor and still disagree in a version pin or a new dependency. A TOML diff is for that moment. You put the previous file on the left, the new file on the right, and read every added, removed, or replaced line instead of scanning both files by eye.
This page compares the text you paste. It does not parse TOML or INI, so it will not tell you whether a file is valid, and it will not rewrite key order or quotes for you. If the same data is available as JSON or YAML, convert it first and use a structured comparison when wrapping and key order are getting in the way. If the file already lives in Git, a browser diff is still useful for a throwaway paste, but git diff is the better tool once the change belongs in a repository.
Use cases
Reviewing a Cargo or Poetry change
A package manifest often mixes several decisions: a version bump, a wider Python or Rust range, and a new dependency. Pasting the old and new files makes each decision visible as its own marked line. Load Sample on this page uses a short Poetry-style pyproject.toml if you want to see that kind of change first.
Checking an INI-style tool config
Many tools still use section headers and key = value lines. Those files compare the same way as TOML here, because both are treated as text. A one-value edit is easier to trust when it is the only green or red line on the page.
Comparing an export that was never committed
A copied manifest, a snippet from a ticket, or a generated lock-adjacent file often never becomes a pull request. Pasting both versions here is faster than creating a throwaway Git repo, as long as you remember that the result is a text diff, not a parsed table compare.
How the comparison works
When you choose Compare, the two panes are compared line by line, using the same style of alignment you see in a typical unified or split diff. Identical lines stay across from each other. A line that exists only on the left is marked as removed. A line that exists only on the right is marked as added. You can switch between split and unified views, and copy the unified result if you need a record.
There is no pretty-print toggle and no schema check. Spaces, quotes, comments, and table headers are all part of the text. That honesty matters: the result is easy to read, and it will not pretend that two files are the same when only a parser would consider them equivalent.
[tool.poetry]
name = "my-app"
version = "1.0.0"
[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.28"
[tool.poetry]
name = "my-app"
version = "1.2.0"
[tool.poetry.dependencies]
python = "^3.11"
requests = "^2.31"
pydantic = "^2.0"The name line stays unchanged. The version and Python or package pins appear as replacements. The new pydantic line appears only on the right. That is the distinction you want in a review: an edited version is not the same kind of change as a new dependency.
name = "queue"
enabled = true
enabled = true
name = "queue"These two tables have the same keys and values. A parser would usually treat them as the same mapping, but the key order is different, so both lines are marked as changed. If that is the only difference you see, the files are probably the same for a tool. Reorder the keys if you want the lines to match, or ignore those lines.
What this tool does not do
It does not parse TOML 1.0, validate an INI dialect, sort keys, or resolve dotted table names so that two layouts of the same data line up. Nothing is sent to a server. Very large files can still be pasted, but they may make the tab feel slow. To turn the same data into JSON, use the TOML to JSON converter. For a YAML comparison, use YAML Diff.
How to use TOML Diff
- Paste the older or expected TOML or INI into the original pane.
- Paste the newer file into the modified pane.
- Choose Compare. Switch between split and unified views, and copy the result if you need to keep a record.
- Use Swap if the sides are reversed, Clear when you are finished, or Load Sample to try a short Poetry-style example first.
Frequently asked questions
Does TOML Diff parse or validate the TOML or INI?
No. The two panes are compared as plain text, line by line. Invalid TOML, unusual INI dialects, and comments can still be pasted, because nothing is parsed. If a file fails to load in Cargo, Poetry, or another tool, this page will not tell you why.
Can I compare INI files here as well?
Yes. The page is labeled for TOML and INI because both are line-oriented config formats, and the comparison does not care which one you paste. Section headers, keys, and comments are all treated as text.
Are two tables with the same keys in a different order treated as equal?
No. Key order is often not significant in TOML, but a line diff has no parser, so reordered keys are marked as changed lines. Reorder them to match, or treat that difference as formatting.
Will equivalent quotes or whitespace look the same?
Usually not. name = "app" and name = 'app' are different lines. Extra spaces around = or a rewritten comment will also show up. If you only care about the data, format both sides the same way first, or ignore those lines.
Is my configuration sent to a server?
No. Comparison runs in your browser. Closing the tab discards what you pasted. Do not paste files that contain secrets, tokens, or private hostnames if you would not be comfortable with them sitting in memory on this device.
Is there a file size limit?
There is no server-imposed limit, because nothing is uploaded. A few thousand lines is comfortable. Multi-megabyte dumps can make the page feel slow; in that case, compare a smaller excerpt or use a local tool.
How is this different from YAML Diff?
The comparison is the same style of line diff: no parse, no pretty-print. This page exists so Cargo.toml, pyproject.toml, and INI-style files have their own URL and examples. Use YAML Diff when the file is actually YAML.
Related tools and guides
References
- TOML v1.0.0 defines tables, arrays, and keys. This page does not implement that specification; it only compares the text you paste.
- Common files such as
Cargo.toml,pyproject.toml, and many.iniconfigs are a good fit for a line diff when most of the file did not change and you want to see a version or a dependency edit. - If the file already lives in Git, a local
git diffkeeps the change with its history. A browser diff is still useful for a throwaway paste that was never committed.