Skip to content

JSONL Builder for Fine-Tuning

Build a fine-tuning file from question-and-answer blocks, or validate one you already have, with every problem reported against its line number.

Valid examples
3

0 warning(s). An estimated 263 training tokens in total, which is what a fine-tuning run is billed on.

Examples
3
Errors
0
Warnings
0
Duplicated examples
0
File characters
1,051
Estimated total tokens
≈ 263
Estimated tokens, mean example
≈ 88
Estimated tokens, longest example
≈ 90
Estimated tokens, shortest example
≈ 86
Examples over 8,000 tokens
0
Turns by role
system 3, user 3, assistant 3
What this assumes: the checks are the ones that are true of chat fine-tuning generally — one JSON object per line, a role on every message, an assistant turn at the end — not any one provider's current schema, which changes and which this page deliberately does not ship. Token figures are characters ÷ 4 and count the JSON punctuation as well as the text, because the file is what gets uploaded; a provider bills the tokens inside the fields, so treat the total as an upper bound. The file above was generated and then run back through the validator on this page, so the report describes the file you are copying. Everything on this page runs in your browser. Nothing you paste or open is uploaded, logged or sent anywhere.

Fine-tuning fails on the data far more often than on the hyperparameters, and it fails in ways the loader will not tell you about. A file where every example ends on the user's turn trains nothing at all, because only the final assistant message contributes to the loss. A file with the same example twenty times teaches the model that one answer very well. A file where half the examples are 200 tokens and half are 9,000 will spend most of its budget on the long tail. None of those are syntax errors, so a validator that only checks JSON will pass all three.

The system message is not free

A system prompt repeated on every example is repeated in the training token count, and on a thousand short examples a 60-token system message can be a fifth of the whole run. It is often the right thing to do — you want the model to learn the behaviour in the context it will see at inference — but do it knowing the arithmetic, which is in the table above.

Read the warnings, not just the errors

Errors here mean the file will be rejected. Warnings mean it will be accepted and will teach the model something you did not intend, which is the more expensive failure: you pay for the run, wait for it, and then evaluate a model whose oddities trace back to a duplicated block or two user turns in a row.

JSONL Builder for Fine-Tuning · Multigrid