FAQ

Short answers to the questions we see most often. Still stuck? Get in touch.

Using the tool

How do I beautify JSON?

Open the JSON tool, paste your JSON into the left panel, and click Beautify. The formatted result appears on the right with the indent style you choose from the dropdown (2 spaces, 4 spaces, or tabs).

If the document has a syntax error, the status bar below the buttons will tell you the exact line and column — for example, “Unexpected token ] at line 12, column 4”. Fix that and click Beautify again.

Keyboard shortcut: Ctrl/Cmd + Enter runs Beautify without reaching for the mouse.

Can I use this tool offline?

Once the page has loaded once, the beautifier itself runs entirely in your browser — no network activity is needed for any Beautify, Minify, or Validate action. If you lose your connection after loading, the tool keeps working.

We do not currently ship a Progressive Web App or Service Worker, so if you have not visited the page recently, a cold load needs connectivity. For a permanently-offline tool, consider installing a command-line formatter like jq or a browser extension.

Why does my JSON show a syntax error?

The status bar shows the specific error, but the most common causes are short:

  • Trailing comma{"a": 1,} is invalid. Remove the last comma.
  • Single quotes — JSON requires " around keys and strings, never '.
  • Missing quotes on a key{name: "Ada"} is invalid; {"name": "Ada"} is correct.
  • Comments — strict JSON has no // or /* */. Remove them.
  • Unescaped backslashes — Windows paths need \\ not \.

The error line and column point within a few characters of the real issue. For a full reference, see our guide on the 10 most common JSON syntax errors.

What are the keyboard shortcuts?

The JSON tool responds to four shortcuts (use Cmd instead of Ctrl on macOS):

  • Ctrl + Enter — Beautify
  • Ctrl + Shift + M — Minify
  • Ctrl + Shift + V — Validate only
  • Ctrl + K — Clear input and output

The shortcuts work as long as any part of the tool page has focus — you do not have to click into the editor first.

Can I prefill the input from a URL?

Yes. Append ?input= followed by a URL-encoded JSON string:

https://beautifier.aidalabs.kr/json/?input=%7B%22hello%22%3A%22world%22%7D

The decoded value of that parameter is placed into the input editor on page load. Useful for sharing links with colleagues or for bookmarking a specific test case.

Because the input is in the URL, this is the one mode where your data leaves your device — the URL itself is part of the HTTP request. Do not put sensitive data in the URL.

Is there a dark mode?

Yes. The site respects your operating system’s light/dark preference automatically and has a manual toggle in the header (the crescent-moon icon). Your choice is saved to localStorage on your device and does not leave the browser.

If you switch your OS theme while the tab is open, the page updates on your next navigation or reload.

Privacy

Do you store the JSON I paste in?

No. Every Beautify, Minify, and Validate action runs inside a Web Worker in your browser. Your input is never uploaded to our servers.

You can verify this yourself: open your browser’s DevTools, switch to the Network tab, and click Beautify. No network request carries your content. The only requests you will see are the page’s static assets.

The one exception is the ?input= URL prefill feature, where you knowingly put data into the URL. See the FAQ on URL prefill for details.

What cookies do you set?

We use cookies and similar storage for a small, specific set of purposes:

  • Theme preference — your light/dark choice is stored in localStorage on your device. Not sent to any server.
  • Google AdSense cookies — once ads are enabled, Google and its partners set cookies to serve ads. You can opt out at Google Ads Settings.
  • Analytics (optional) — if we enable Google Analytics 4, it sets a first-party cookie identifying a browser between visits. It never sees the content of your JSON.

No cookies are tied to the data you paste into the tool. For the full details, see our Privacy Policy.

What about GDPR / CCPA?

If you are in the EU or UK, the GDPR applies. If you are in California, the CCPA/CPRA applies. Both give you rights to access, correct, or delete personal data a service holds about you.

Because the beautifier does not operate user accounts and does not store your inputs, the personal data we realistically hold about a visitor is:

  • Standard server access logs (IP, timestamp, requested URL, user-agent).
  • Any email correspondence, if you have used the contact form.

To exercise your rights under either law, email us at the address on the Contact page.

How long do you keep server logs?

Our Nginx access logs are rotated automatically and removed within 60 days. They contain:

  • IP address
  • Timestamp
  • Requested URL
  • HTTP status and response size
  • User-Agent and Referer headers

The logs do not contain any of the content you paste into the tool — that content never reaches our server in the first place.

Limits

What is the maximum file size I can beautify?

In the current browser-only version:

  • File upload: up to 5 MB. Files larger than this are rejected with an error.
  • Paste into the input: limited by your browser’s memory and CPU. In practice, 5-10 MB pasted JSON works smoothly on a modern laptop. 50 MB may briefly freeze the page while parsing.

For files larger than 10 MB, we are building a server-side API (planned for Phase 6 of our roadmap) that will handle payloads up to at least 100 MB with streaming.

If you have a 20 MB JSON file right now, the most reliable option is to use jq locally: jq . < big.json > pretty.json.

Can I beautify a 100&nbsp;MB JSON file?

Not yet, in the browser. A 100 MB document consumes hundreds of megabytes of memory when parsed and held as a JavaScript object, which will either crash your tab or exceed the file-upload limit.

The recommended workflows for very large JSON:

  1. Command line: jq . < big.json > pretty.json on any Unix-like system, or jq via scoop/winget on Windows. Streams the file and uses a small constant amount of memory.
  2. Streaming parser in code: ijson in Python, stream-json in Node, json.Decoder in Go.
  3. Convert to JSONL: if the document is an array of records, split each record onto its own line with jq -c '.[]'. The resulting file is much easier to work with.

A forthcoming API on this site will handle uploads into the hundreds of megabytes. Until then, the browser version is limited to roughly 5-10 MB.

Will there be a rate limit on the API?

Yes. When the API launches (planned for Phase 6), the free tier will include:

  • A per-IP rate limit of roughly 60 requests per minute.
  • A daily soft cap of around 500 requests per IP.
  • A maximum request body size of 100 MB.

Heavy users who need higher limits will have a Pro tier with API keys, predictable quotas, and SLA. Pricing will be set closer to launch based on what infrastructure actually costs.

For today, the browser tool has no rate limit — all processing is on your own device.

Formats

When will XML and HTML support arrive?

XML and HTML tools are planned for Phase 6 of the roadmap. Each will get its own page (/xml/, /html/) with the same layout as the JSON tool — paste on the left, formatted output on the right, validate button, copy/download.

We prioritised JSON first because the JSON parser is the shortest path to something useful (Web Worker + JSON.parse + string formatting), and because most of our early users will be debugging API responses. XML and HTML are in the plan, not currently in the build.

If you have a specific format you need, let us know — we prioritise based on actual demand.

Does this support YAML, TOML, or CSV?

Not yet. YAML is on the consideration list for Phase 7 (after XML and HTML land). TOML and CSV are more niche — we will add them if usage numbers suggest demand.

For YAML-to-JSON conversion right now, the easiest path is yq on the command line: yq -o=json . < file.yaml. Or use the Python one-liner python -c "import yaml,json,sys; json.dump(yaml.safe_load(sys.stdin), sys.stdout, indent=2)".

For a longer comparison of the two formats, see the guide JSON vs YAML.

How is this different from Prettier or jq?

Prettier and jq are excellent tools. We think of ourselves as a different product with overlapping features.

  • Prettier is a code formatter that runs as a CLI or pre-commit hook. It formats whole repositories of JavaScript, CSS, HTML, and JSON at once. It is not a browser tool and not a validator.
  • jq is a streaming JSON processor. It does beautifying, filtering, transformation, and scripting. Unmatched for CLI data wrangling.
  • This site is browser-based, ad-supported, zero-install, and privacy-respecting. No setup. No upload. Paste, click, read. Targeted at the moment when you have a broken payload in your clipboard and want to know what’s wrong in ten seconds.

All three can coexist. For CI pipelines, use Prettier. For shell scripts, use jq. For a quick visual check in the middle of debugging, use the tool here.

Can I validate against a JSON Schema?

Not in the current browser version. Right now the Validate button only checks JSON syntax — that every brace and quote is in the right place. It does not check that your document matches a schema.

JSON Schema validation is on the roadmap. When it lands, you will be able to paste a schema into a second panel and see field-level errors.

Until then, use the Ajv library in JavaScript (npm install ajv), the jsonschema package in Python, or an online schema validator like jsonschemavalidator.net. For a primer on what JSON Schema actually does, see the guide JSON Schema Basics.

Does the JSON tool understand JSONL / NDJSON?

The current JSON tool treats its input as a single JSON value. If you paste a JSONL file — multiple JSON objects separated by newlines — the parser will fail on the second object.

For JSONL specifically, a dedicated mode is planned. In the meantime, a simple workaround: wrap the JSONL lines with a comma-separated array.

# JSONL → JSON array via jq
jq -s '.' data.jsonl > data.json

Paste the resulting array, and the tool will beautify it normally. See the guide JSONL, NDJSON, and JSON Lines for the format’s details.

Ads & funding

Why are there ads on this site?

Hosting, a domain, and ongoing maintenance cost money. We keep the site free by showing a small number of display ads through Google AdSense. No affiliate links, no paid placement in the guides, no sponsored results.

Our own rules for ad placement:

  • No ads above the fold inside the tool. If you came to debug a 500 KB payload, the error should be visible before any advertisement.
  • No interstitials, pop-ups, or autoplay video.
  • No ads on the privacy, terms, or contact pages.

If you are willing to tolerate a small banner on the guide and glossary pages, you are already helping pay for the server. If you prefer to block ads, that is fine — the tool works the same.

Can I disable ads?

The ads are served by third-party ad networks (primarily Google AdSense). You can block them with any ad-blocking extension such as uBlock Origin, Adblock Plus, or a built-in browser feature like Brave Shields. The tool itself does not care — every button keeps working with or without ads.

We do not currently offer a paid “no ads” tier. If you find this tool useful and want to support it, the simplest thing to do is tell a teammate about it. Word-of-mouth is how small indie tools survive.