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

Anthropic (Claude) Fine-Tune JSONL Validator

updated 11 May 2026 · Bedrock supervised tuning format

Your training data never leaves this tab. Bedrock uploads your file when a job starts; this pre-flight check is fully local — useful when the dataset contains anything you would rather not upload twice.

Validate

Drop a fine-tune .jsonl file here, or

Anthropic Fine-Tune JSONL Validator

Validate your Claude fine-tune file against the format Bedrock actually accepts: an optional top-level system string (not a message with role: "system"), a messages array starting with a user turn, and strict user / assistant alternation. Multi-modal content arrays with text and image blocks are supported. 100% in-browser.

Validating a different provider? OpenAI, Google Gemini, Llama / ShareGPT, Mistral.

Anthropic's shape, in one line

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

The two non-obvious rules that trip everyone up:

What the validator checks

How to use it

  1. Drop your .jsonl file into the dashed box, or paste the text directly.
  2. Click Validate. Every line is parsed and every message is checked.
  3. If errors are found, look at the Error List for the line number and reason.
  4. Click Download valid examples only to save just the lines that passed.

Common mistakes I catch

{"messages": [
  {"role": "system", "content": "..."},
  {"role": "user",   "content": "Hi"}
]}
// Error: Anthropic puts system at the top level, not in messages.

{"messages": [
  {"role": "user", "content": "Hi"},
  {"role": "user", "content": "Two user turns"}
]}
// Error: Roles must alternate user/assistant.

{"messages": [
  {"role": "assistant", "content": "I start the conversation."}
]}
// Error: First message must be user.

Multi-modal content

Vision messages use a typed array of content blocks:

{"system": "You describe images.", "messages": [
  {"role": "user", "content": [
    {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "..."}},
    {"type": "text",  "text": "What is this?"}
  ]},
  {"role": "assistant", "content": "A cat."}
]}

Frequently asked questions

Is Claude fine-tuning even available?

Yes, on AWS Bedrock for Claude 3 Haiku and select later models. This is the format Bedrock's CreateModelCustomizationJob expects. Other providers (Vertex AI, OpenAI-compatible gateways) may use the OpenAI shape — use the OpenAI validator for those.

What's the max training-file size?

Bedrock currently caps the training file at 10 GB and validation at 1 GB. This page handles whatever your browser can hold in memory — typically up to ~1 GB on a laptop.

Does this check token counts?

It reports an approximate character-based estimate. For the actual Claude tokenizer, use the token counter with the Claude model preset.

Is my data uploaded?

Never. Everything runs in your browser's JavaScript engine. See the privacy policy.

Related tools