convert2 — Free Online Beautifier and Diff Viewer for JSON, XML, HTML, CSS, SQL, YAML, URL, JWT and Base64

Paste code on the left, get a clean, formatted version on the right. Switch to Diff mode to compare two texts side by side with automatic beautification. All formatting runs in your browser — nothing is uploaded. Works offline after the first load. Free forever, no signup required.

convert² THE BEAUTIFIER
Enter format · K copy
INDENT
Input · raw
0 B 0 ln
1
Output · formatted
0 B 0 ln
{ }
awaiting input
paste code on the left
pick a format above
Original · A
0 B
Removed raw
Added
Original · B
0 B
↓ About the tool

A privacy-first beautifier
for developers.

convert2 formats and compares JSON, XML, HTML, CSS, SQL, YAML, URL, JWT and Base64 — entirely inside your browser. Paste anywhere, share a link, keep your data local.

What convert2 is

convert2.app is a small, fast toolkit for the text engineers push through their terminals every day: API responses, config files, SQL queries, JWTs from staging. It takes one-line minified input and returns clean, indented output. It also compares two versions and decodes common encodings.

Every byte stays in your browser. There is no backend parser, no cloud log of what you paste. The only external calls are the stylesheet (Google Fonts) and three tiny libraries pulled once from a public CDN (sql-formatter, diff, lz-string). Your data never hits our server — you can verify this in DevTools → Network at any time.

What you can do with it

  • Beautify — JSON, XML, HTML, CSS, SQL and YAML into properly indented output with syntax highlighting.
  • Minify — strip JSON whitespace when you need a smaller payload.
  • Decode — JWT tokens (with expiry converted to ISO-8601), Base64 strings, URL-encoded values.
  • Parse URLs into protocol, host, path and query parameters, presented as JSON.
  • Convert YAML to JSON — works for Kubernetes manifests, GitHub Actions workflows, docker-compose.
  • Diff two versions side-by-side. Auto-detects the format and pretty-prints both sides first, so a minified-vs-pretty pair still shows a semantic diff, not whitespace noise.

Why it's different from the older sites

Most online beautifiers were written when uploading a JSON payload to a random server was still acceptable. That's no longer the case — teams need to know their production data doesn't leak through a browser tab. convert2 was built with that assumption.

  • Local processing: safe for tokens, customer data, and queries that touch production.
  • Deep linking: the ↗ SHARE button generates a URL whose hash contains the compressed state. Open the link anywhere, get the same view. The # fragment is never sent to a server — it's resolved entirely in the recipient's browser.
  • Local history: the last ten beautifies and the last ten comparisons live in localStorage and show as colored tabs at the bottom. Click one to restore. Nothing syncs anywhere.
  • Offline-capable: once the page loads, you can work without a network. (The SQL formatter and diff library are the only first-load dependencies.)

Keyboard shortcuts

  • ⌘ / Ctrl + Enter — force a re-format (handy after pasting)
  • ⌘ / Ctrl + K — copy the output
  • Tab inside the input inserts two spaces instead of jumping focus
  • Esc closes modals and popovers

Frequently asked questions

Is my data really private?

Yes. Every transformation runs in JavaScript on your machine. Open DevTools, switch to the Network tab, and paste any input — you'll see zero requests go out. The only network activity is the initial page load and the three CDN libraries.

Does convert2 cost anything?

No. No account, no paywall, no rate limits. Processing is your CPU, bandwidth is your network. We pay for a small static host and a domain.

Can I use it offline?

After the first load, yes. JSON, XML, HTML, CSS, YAML, URL, JWT and Base64 all work without a network. SQL formatting and the diff viewer need their libraries to be cached (the browser does this automatically) or they fall back gracefully.

What happens if my input is invalid?

The output pane shows the parser's error message with the offending line and column. The status bar reads "INVALID" and the corresponding dot turns red. Fix the error in the input, the output re-runs automatically.

How big an input can I paste?

Tested up to 10 MB of JSON without issue. The browser is the limit. Very large files are more comfortable on desktop — on phones the device memory tops out earlier.

Can I share a formatted snippet with a teammate?

Yes, use the ↗ SHARE button in the top bar. It copies a URL with the current mode, format and input encoded into the fragment (the part after #). The recipient opens it and sees the same view. The compressed encoding keeps links reasonably short — a 40 KB JSON becomes about an 8 KB URL.

Pick a tool

copied