How to use the LLM Output JSON Extractor
1. Paste the raw LLM output — including any explanation text, markdown formatting, or code fences.
2. The tool automatically detects and extracts all valid JSON from the response.
3. If multiple JSON objects are found, click to select which one to extract.
4. Toggle between pretty-printed and minified output.
Tip: this works with OpenAI, Anthropic, Gemini, and any other LLM output that mixes text and JSON.
What is it?
LLMs frequently return JSON mixed with explanation text — "Here is the extracted data: ```json ... ``` Let me know if…". Parsing this in code requires stripping the prose and code fences before calling JSON.parse(). This is a common and frustrating production issue in AI pipelines.
This tool handles all common LLM JSON output patterns: JSON inside markdown code fences (```json or plain ```), JSON objects/arrays embedded in plain text, and responses that are already pure JSON. It extracts all valid JSON it finds and lets you choose which one to use.
Use this to quickly debug LLM output during development, or to understand the extraction patterns to implement in your own code (match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/)).
Example
Sure! Here's the data:
```json
{"id": 1, "name": "Alice"}
```
Let me know if you need anything else.{
"id": 1,
"name": "Alice"
}Also works when JSON is embedded in plain text without code fences, or when the entire response is JSON.
Benefits
Generate accurate code from your actual data
TypeScript interfaces, Python dataclasses, and OpenAI function schemas are generated directly from your real JSON — accurate field names, correct types, no guesswork.
Control LLM API costs before you scale
Token counts and per-call cost estimates for GPT-4o, Claude 3.5, and Gemini let you optimise prompt size and model choice before a feature goes to production.
Ready-to-run code and configs, not boilerplate
Every tool produces output you can paste directly into your project — API request code, prompt templates, chunk configurations — adapt rather than write from scratch.
Purpose-built for AI engineering workflows
From RAG chunking strategy to prompt template selection to function calling schema design — tools built for the specific problems AI engineers encounter daily.
Frequently asked questions
How do I handle this in my own code?
The most reliable pattern: const match = response.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/i); if (match) return JSON.parse(match[1]); else return JSON.parse(response). For OpenAI, use response_format: { type: 'json_object' } to get guaranteed JSON output.
What is JSON mode and does it solve this problem?
OpenAI's json_object mode guarantees the response is valid JSON — no explanation text, no code fences. Anthropic supports similar output. When available, structured output modes are more reliable than parsing free-form text. Use this tool for models or endpoints that don't support it.
What are OpenAI structured outputs?
Structured outputs (response_format: { type: 'json_schema', json_schema: {...} }) guarantee the output matches a specific JSON schema — not just any valid JSON. Available on GPT-4o models. More reliable than JSON mode for complex schemas.
Why do LLMs mix text and JSON even when asked not to?
LLMs are trained to be helpful and conversational. They often add preamble ('Here is the...') or postamble ('Let me know if...') even when instructed to return JSON only. Explicit system prompts ('Respond with only valid JSON, no explanation') reduce this but don't fully eliminate it.
What if the LLM returns broken/incomplete JSON?
Incomplete JSON (truncated due to token limits) can't be automatically repaired. Check that max_tokens is high enough for the full response, or use streaming and detect when the JSON object closes. Some libraries (json5, partial-json) can parse lenient JSON.