jsonlkit.com
JSONL (JSON Lines) utilities, in the browser
Say hi →

Llama Fine-Tune JSONL Validator

updated 11 May 2026 · Llama 3 chat & ShareGPT shapes

Your training data never leaves this tab. The training platforms upload your file when a job starts; this pre-flight check is fully local.

Validate

Drop a fine-tune .jsonl file here, or

Llama Fine-Tune JSONL Validator

Two shapes are common when fine-tuning Llama models. Llama 3 chat is OpenAI-compatible — same messages array, same system/user/assistant roles — and is what platforms like Together, Fireworks, and most HuggingFace TRL recipes expect. ShareGPT is the older de-facto OSS format used by Axolotl, Unsloth, and many community datasets: {"conversations":[{"from":"human","value":"…"},{"from":"gpt","value":"…"}]}. Pick the one your trainer wants. 100% in-browser.

Validating a different provider? OpenAI, Anthropic (Claude), Google Gemini, Mistral.

Llama 3 chat format

{"messages": [
  {"role": "system",    "content": "You are helpful."},
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello"}
]}

Identical to OpenAI's chat shape, so any pipeline that produces OpenAI fine-tune JSONL works. The Llama 3 chat template is applied by the trainer at tokenization time — your JSONL just contains role/content pairs.

ShareGPT format

{"conversations": [
  {"from": "system", "value": "You are helpful."},
  {"from": "human",  "value": "Hi"},
  {"from": "gpt",    "value": "Hello"}
]}

Roles are renamed: human ↔ user, gpt ↔ assistant, system stays the same. Content is in value, not content. Many community datasets (WizardLM, OpenHermes, etc.) ship in this shape — keep it as-is for Axolotl/Unsloth trainers, or convert to messages for TRL.

What the validator checks

Common mistakes I catch

{"conversations": [{"from": "user", "value": "Hi"}, {"from": "assistant", "value": "Hi"}]}
// Error: ShareGPT uses 'human'/'gpt', not 'user'/'assistant'.

{"messages": [{"role": "human", "content": "Hi"}]}
// Error: Llama 3 chat uses 'user', not 'human'.

{"conversations": [{"from": "human", "content": "Hi"}]}
// Error: ShareGPT uses 'value', not 'content'.

Frequently asked questions

Which format should I use?

Whichever your trainer expects. Together, Fireworks, Replicate, and most managed services accept the OpenAI-compatible chat shape. Axolotl, Unsloth, and many HF community datasets default to ShareGPT. If you have ShareGPT and need chat (or vice-versa), our fine-tune editor exports both.

Does this support function/tool calls?

Yes for the chat shape — role: "tool" and tool_calls fields on assistant turns are accepted. ShareGPT's tool calling is less standardized; from: "tool" is accepted but the inner shape isn't enforced.

Llama 2 vs Llama 3?

The JSONL shape is the same — both use chat messages. The difference is the prompt template the trainer applies at tokenization, not anything in your file.

Is my data uploaded?

Never. Everything runs in your browser. See the privacy policy.

Related tools