Tickd.ai
Model behaviour

Fix Claude Not Following JSON Formatting | Troubleshooting Guide

Updated 8/19/2026

Why Claude Fails to Output Valid JSON

Getting Claude to consistently output valid, parseable JSON can be a challenge. Common issues include: * Conversational "fluff": Claude adding introductory text (like "Here is the JSON you requested:") or concluding remarks. * Syntax errors: Missing trailing commas, unescaped double quotes inside strings, or open curly braces that never close. * Format drift: The model changing the keys or data structures you requested from run to run.

Because LLMs predict text token-by-token, they do not inherently validate their output against a compiler. You must structure your prompts and API parameters to force strict compliance.

---

How to Force Valid JSON Outputs

Follow these troubleshooting steps to ensure Claude outputs pure, structurally sound JSON without conversational wrappers.

Step 1: Use System Prompts to Set Strict Rules If you use the API or Claude Projects, use the `system` parameter to strip away the conversational persona. Tell Claude that any output other than raw JSON is a failure.

* Example System Prompt: `text You are a translation engine that outputs raw JSON only. You must not include any conversational text, explanations, or Markdown formatting (do not wrap the output in `json tags). If you cannot perform the task, return an empty JSON object: {} `

Step 2: Use Pre-filling (API Only) One of the most powerful features of the Anthropic API is the ability to pre-fill the assistant's response. By starting the assistant response with an open curly bracket `{`, you force Claude to bypass introductory greetings and immediately start writing the JSON payload.

* API Payload Example: `json { "model": "claude-3-5-sonnet-20241022", "messages": [ {"role": "user", "content": "Extract the name and email from this text: 'John Doe, contact: john@example.com'"}, {"role": "assistant", "content": "{\n \"name\":\""} ] } ` *Note: Ensure your code appends the pre-filled string back to Claude's response before parsing the completed JSON.*

Step 3: Define a Strict JSON Schema inside XML Tags Give Claude a template to follow. Using XML tags prevents the model from confusing the schema definition with the actual user instructions.

* Example Prompt Structure: `text Extract the user profiles from the text below. You must conform to this JSON schema: <schema> { "type": "object", "properties": { "users": { "type": "array", "items": { "type": "object", "properties": { "username": {"type": "string"}, "role": {"type": "string"} }, "required": ["username", "role"] } } } } </schema> `

Step 4: Escaping Internal Quotes When Claude outputs raw text inside a JSON string value, it often forgets to escape inner double quotes, which breaks JSON parsing engines. * Explicitly add this rule to your prompt: `"If any string value in your JSON output contains double quotes, you must escape them with a backslash (e.g., \"like this\")."`

Step 5: Increase Max Tokens for Long Payloads If your JSON output cuts off mid-sequence, leaving an unclosed array or curly brace, you may have reached the `max_tokens` limit specified in your API call, or the default limit of the chat window. Ensure your `max_tokens` parameter is set high enough (e.g., `4096` or `8192` depending on the model version) to accommodate the full payload.

---

When to Escalate

If you are running enterprise production pipelines and Claude still occasionally introduces syntax failures despite pre-filling and schemas, consider implementing these programmatic fallbacks:

  • Local Validation & Retry: Write a helper function in your code to attempt to parse the JSON output. If a SyntaxError or ValueError is caught, feed the error message and the broken JSON back into Claude for a quick correction pass.
  • Third-Party SDKs: For complex workflows, consider using structured output libraries such as Instructor (Python/TypeScript) or Outlines to dynamically enforce schema constraints on Anthropic API outputs.

Quick fixes

  • Claude is down or not loading
  • Claude Pro billing or payment problem
  • Can't sign in to Claude

While you're here

Tickd is more than troubleshooting — these three are free and take seconds.

Agent BuilderDesign your own AI agent and export it to ChatGPT, Claude, Gemini or Grok.Build one free