Fine-Tuning JSONL Validator

Paste your fine-tuning dataset, catch broken lines before the training job does, estimate tokens per example, and convert between prompt/completion and chat messages formats. Everything runs in your browser.

Option A: paste JSONL directly

Option B: build rows here

Validation results

0
Valid examples
0
Lines with errors
0
Blank lines skipped
0
Total est. tokens
LineStatusFormatEst. tokensDetail

Download cleaned dataset (valid lines only)

Conversion note: prompt/completion becomes one user turn plus one assistant turn. Messages become prompt = system and user content joined, completion = last assistant message; multi-turn structure beyond that is flattened.

What gets checked: each non-blank line must parse as a JSON object and match one of the two common fine-tuning shapes: prompt/completion (both strings) or a messages array where every message has a valid role (system, user, assistant, or tool) and a string content. A leading BOM is stripped automatically, Windows line endings are handled, and blank lines are skipped rather than flagged. Trailing commas are not legal JSON and are called out with a hint. Token counts use the ~3.6 chars/token estimate, so treat totals as ballpark figures for cost planning, not exact billing numbers.