About YamlJson
A YAML and JSON converter that explains itself.
Most online converters do the same thing: two text boxes and a silent failure. Paste something slightly wrong and you get “an error has occurred” — no line, no reason, no idea what to change. Paste something subtly wrong and you get output that looks fine and means something different.
YamlJson was built around those two gaps. It tells you what is wrong and where, in plain English, and it tells you what the conversion changed even when it succeeds.
What makes it different
- Errors are diagnosed, not reported. The parser usually blames the wrong line — a list missing its dashes gets flagged several lines below the actual mistake. The tool works out the real cause and, where the fix is unambiguous, offers a button that applies it.
- You choose the YAML version. YAML 1.1 and 1.2 disagree about whether
NOis a string or the boolean false. Every other converter picks one silently. This one lets you switch and warns you when the choice changes a value. - Losses are disclosed. Comments, anchors, merge keys and extra documents cannot all survive a trip to JSON. Rather than dropping them quietly, the tool counts them and says so.
- Nothing is uploaded. Every conversion happens in your browser.
How to verify nothing is uploaded
You should not take a privacy claim on trust, least of all from a page you just found. Check it yourself — it takes about fifteen seconds:
- Open your browser’s developer tools (F12, or ⌘ + Option + I on a Mac).
- Switch to the Network tab.
- Click the clear button so the list is empty.
- Go back to the converter, paste something, and edit it.
- Return to the Network tab. It will still be empty.
There is no request to send because there is nowhere to send it. The whole converter is JavaScript that was downloaded with the page and runs on your machine. There is no server-side component, no account, and no analytics that receives your content.
There is no analytics beacon either
This site is served through Cloudflare’s CDN, which can inject its own analytics beacon into every page. That injection is switched off for this domain, so no such script is sent to you — you can confirm it by searching the page source for cloudflareinsights and finding only this sentence.
It would not have run in any case. The site sends a Content Security Policy with connect-src 'none' and a script allowlist that permits only this domain, so a beacon from anywhere else is refused by your browser before it can execute. Turning it off at the source simply means your browser is not asked to fetch a script that was always going to be blocked.
That policy is the real guarantee behind everything on this page. It is not a promise about our intentions — it is a rule your browser enforces on us. Under it, no script from anywhere else can execute, and no request of any kind can be made to any server, including ours. If we ever tried to send your data somewhere, it would fail.
How it is built
The site is a set of static HTML pages — no framework runtime, no client-side router. The conversion engine is plain TypeScript built on the yaml library, chosen because it is one of the few that reports multiple errors at once with exact positions, and can be switched between YAML 1.1 and 1.2 semantics. The editors are CodeMirror 6.
The engine is covered by a test suite built from real failures — the ones people actually post to Reddit and Stack Overflow when Helm or kubectl rejects their file — plus every specification trap where a converter can silently corrupt data.
Last updated: August 2026