Jsonhalt jsonhalt
Home App Pricing Support

Help Centre

Last updated: 26 August 2026

Getting started

Jsonhalt is a JSON diagnostic tool for developers. Paste JSON text or a URL and it reports where the parse error is, in plain language — line, column, and what token was expected.

Parse pasted JSON text (Free — no account needed)

  • Go to the App page.
  • Make sure the Text tab is selected.
  • Paste your JSON into the text area.
  • Click Parse (or press Ctrl+Enter / Cmd+Enter).
  • The result panel shows whether the JSON is valid, or the exact line and column of the error and what token was expected.

Your text is parsed locally in your browser using JSON.parse(). It is never sent to any server.

Parse a URL response (Pro feature)

  • Go to the App page.
  • Make sure the URL tab is selected.
  • Enter the full URL (including https://).
  • Click Parse. The tool fetches the URL once and analyses the response.
  • The result reports: HTTP status, content-type, body preview, JSON validity, and whether an error payload was dressed as a 200 success.

URL analysis is a Pro ($5/month) feature. Free users can test it via the demo checkout on the Pricing page — no real payment is taken.

Reading the diagnostics

When a parse error is found, the result panel shows:

  • Line and column — the exact location of the error, 1-indexed.
  • Expected token — what the parser expected to find (e.g. ",", "]", "}", a string key, a colon).
  • Error excerpt — the problematic line with a visual indicator.
  • For URL mode: the content-type the server actually sent, and whether the body is JSON, HTML, or something else.

The diagnostics use RFC 8259 terminology and byte offsets where relevant, so they are precise enough for an intermediate-to-senior developer to act on without hand-holding.

Frequently asked questions

Why does Jsonhalt say "host unreachable" for my API?

The Jsonhalt API runs on Cloudflare Workers. A Cloudflare Worker cannot open a connection to a host that is itself behind Cloudflare. If the API you are testing is fronted by Cloudflare, the Worker sees it as unreachable. This is a platform limitation of the Worker runtime, not a firewall or port block on your end.

Workaround: Fetch the URL from your local machine using curl or a similar tool and paste the response body into the Text tab for client-side parsing.

Does Jsonhalt store or log the data I paste?

Text mode: The JSON text you paste never leaves your browser. It is parsed locally with JSON.parse(). No copy is sent anywhere.

URL mode: The URL you submit is sent to the Jsonhalt API. The API fetches the target URL, analyses the response in memory, and returns the result. Neither the URL nor the response body is logged, stored, or retained after the request completes.

Standard HTTP request metadata (IP address, User-Agent, timestamp) passes through Cloudflare's infrastructure and is subject to their access logging — no additional logging or analytics are implemented by Jsonhalt. See the Privacy Policy for details.

What is the difference between Free and Pro?

Free (no account, no payment): paste JSON text and parse it in your browser. You get line/column diagnostics, syntax-highlighted input, and expected-token reporting. URL fetch and response analysis are not included.

Pro ($5/month): adds URL fetch with full response analysis — HTTP status, content-type inspection, redirect-chain reporting (up to 5 hops), error-dressed-as-success detection, and body preview. Visit the Pricing page for details.

What does "error dressed as a 200" mean?

Some APIs return an HTTP 200 status code with a JSON body that contains an error object rather than the expected data — i.e. the HTTP status suggests success but the payload says otherwise. A surprising number of "my API is broken" reports turn out to be this pattern. Jsonhalt detects these cases by inspecting the response body structure and flags them so you know the response was technically parseable but semantically an error.

How do I interpret the "expected token" message?

When JSON parsing fails, the parser knows what it was looking for at the point of failure. Common examples:

  • expected ',' — a comma is missing between two elements in an array or object.
  • expected '}' or expected ']' — a closing bracket is missing, or there is trailing content after the value.
  • expected string key — an object key is not a quoted string (e.g. {foo: "bar"} instead of {"foo": "bar"}).
  • expected ':' — a colon is missing between a key and its value in an object.

The tool shows the exact line and column of the failure, so you can go straight to the character that caused it.

Why doesn't the Pro subscription checkout work?

No payment processor is wired yet. The checkout form on the Pricing page is a demonstration flow. No real payment is taken, no subscription is created, and no data is stored server-side when you interact with it. A real payment provider (such as Stripe) will be connected in a future update. See the Pricing page for the full disclosure.

My API returned an HTML page but claimed Content-Type: application/json — what gives?

This is a common misconfiguration on the server side. When an API endpoint errors out at the framework level (e.g. a 500 error in PHP or an ASP.NET exception), the framework sometimes returns an HTML error page but the application middleware still sets Content-Type: application/json. Jsonhalt detects the content-type mismatch and shows you a body preview so you can see the HTML immediately, without having to curl -i the endpoint yourself.

Known limitations

Jsonhalt is an early-stage tool. The following are deliberate or infrastructure-constrained limitations:

  • Cloudflare-hosted targets are unreachable. A Cloudflare Worker cannot connect to another host behind Cloudflare. This is a platform constraint of the Worker runtime and is not something Jsonhalt can work around. As noted in the FAQ, paste the response body manually instead.
  • Single fetch only. The tool fetches the URL exactly once. It does not follow redirects beyond 5 hops, does not crawl links found in the response body, and does not retry on failure. What the server returned on the first request is what is reported.
  • No email sender is available. Jsonhalt cannot send email notifications, digests, alerts, reminders, or scheduled re-checks. This infrastructure does not exist and no feature that depends on email is planned or promised.
  • No payment processor is wired yet. The Pro subscription checkout on the Pricing page is a demo flow. Real payments, subscriptions, and billing cannot be processed until a payment provider (e.g. Stripe) is connected.
  • No user accounts. Jsonhalt does not maintain user accounts or persistent identities. No login, registration, or user data storage exists on the server side. Free access is unlimited and requires no sign-up.
  • No legal entity registered. The operator has not yet registered a company or specified a governing jurisdiction. The Privacy Policy and Terms of Service document the current practices but are not legally binding until a legal entity is established.

These limitations are documented transparently so you know exactly what the tool can and cannot do. Items marked as "not yet" are being tracked by the operator and will be resolved as the project matures.

How to contact us

Support is not yet reachable by email. There is no contact email address or postal address for Jsonhalt at this time — the operator has not yet established a legal entity or set up a contact channel.

For questions covered in this Help Centre: Browse the FAQ above. Most common questions — how to use the tool, how to interpret diagnostics, known limitations — are answered here.

For issues not covered here: The operator is aware that a contact channel needs to be set up. This is tracked as an open action item. In the meantime, please check back or watch the project for updates.

For billing and refund requests: The Terms of Service describe refund conditions. No refunds can be processed until a payment processor is wired and a contact channel exists.

© 2026 Jsonhalt
Privacy Terms Support