Large Language Models (LLMs)

JSON Mode

Definition

JSON mode is a simplified form of structured output where the LLM is constrained to always return valid, parseable JSON—without guaranteeing any specific schema. When JSON mode is enabled in the OpenAI or compatible API (response_format: {type: 'json_object'}), the model's output will always be a syntactically valid JSON object, but the keys and structure are determined by the prompt instructions. This ensures that JSON.parse() never throws, but the resulting object may have different fields than expected if the prompt instructions are ambiguous. JSON mode is simpler to implement than full JSON schema enforcement but provides weaker guarantees.

Why It Matters

JSON mode solves the most frustrating practical problem with LLM output parsing: models often wrap JSON in markdown code fences ('''json ... '''), add prose before and after, or produce minor syntax errors in JSON output. JSON mode eliminates all of these issues—the output is always bare, valid JSON ready for parsing. For 99helpers developers building features that extract structured data from LLM responses, JSON mode is a quick win that removes an entire class of parsing bugs with minimal implementation effort. For stricter schema requirements, full JSON schema enforcement (OpenAI's strict mode) or the Instructor library provides the next level of guarantees.

How It Works

JSON mode usage in OpenAI API: response = openai.chat.completions.create(model='gpt-4o', response_format={'type': 'json_object'}, messages=[{'role': 'system', 'content': 'Extract the ticket category as JSON with keys: category, urgency, sentiment.'}, {'role': 'user', 'content': ticket_text}]). The response.choices[0].message.content will always be a valid JSON string. Important: the system prompt must instruct the model to produce JSON—JSON mode ensures valid syntax but the model must still be instructed to output JSON format via the prompt. Forgetting to instruct JSON output with JSON mode enabled can lead to the model producing JSON with no useful content.

JSON Mode — Guaranteed Structured Output

Without JSON mode

Prompt

Extract name and email from: "Hi I'm Alice, alice@co.com"

Unpredictable output

Sure! The name is Alice and the email is alice@co.com. Hope that helps!

Hard to parse programmatically

With JSON mode

Prompt

Extract name and email from: "Hi I'm Alice, alice@co.com"

API param

response_format: {"type":"json_object"}

Valid JSON — always

{
  "name": "Alice",
  "email": "alice@co.com"
}

How it works under the hood

Constrained decoding

Only tokens that keep output valid JSON are sampled

Schema enforcement

Structured outputs go further — enforce exact field names and types

Parse-safe

JSON.parse() will never throw on the output

Real-World Example

A 99helpers developer initially parses LLM output with a regex that looks for {…} in the response. It breaks 5% of the time when the model wraps the JSON in markdown or adds explanation text. Switching to JSON mode: response_format={'type': 'json_object'}. The parsing failure rate drops to 0%—JSON.parse() always succeeds. When the team later needs specific fields guaranteed, they upgrade to OpenAI's strict JSON schema mode, defining the exact fields and types. JSON mode serves as the first step toward reliable structured output with minimal configuration.

Common Mistakes

  • Forgetting to instruct the model to output JSON via the prompt when JSON mode is enabled—JSON mode guarantees valid syntax only; the content must be directed via prompting.
  • Confusing JSON mode with JSON schema enforcement—JSON mode guarantees syntactically valid JSON; schema enforcement additionally guarantees specific fields and types.
  • Using JSON mode for very long responses—JSON mode may increase refusal rates for very long responses as the model has to maintain JSON validity throughout generation.

Related Terms

Ready to build your AI chatbot?

Put these concepts into practice with 99helpers — no code required.

Start free trial →
What is JSON Mode? JSON Mode Definition & Guide | 99helpers | 99helpers.com