CSV as a Fine-Tuning Source of Truth
Many teams author examples in spreadsheets, export CSV, then convert to JSONL for trainers. Keeping a clean CSV (or converting back to CSV for QA) makes review, deduplication, and eval scoring much easier than editing giant JSONL files by hand.
Choose a Row Schema
Pick one pattern and stick to it across train and eval.
| Pattern | Columns | Good for |
|---|---|---|
| Prompt / completion | prompt, completion | Classic completion fine-tunes |
| Chat turns | messages_json or system,user,assistant | Chat models |
| Instruction | instruction, input, output | Alpaca-style sets |
| Classification | text, label | Labeling / routing models |
id,split,prompt,completion
1,train,"Classify sentiment: Great battery life","positive"
2,train,"Classify sentiment: Broke in a week","negative"
3,valid,"Classify sentiment: It's fine","neutral"Step-by-Step: Build the Dataset
Quality beats quantity—especially early.
- Collect examples in Excel or Google Sheets with frozen headers.
- Export UTF-8 CSV (Excel to CSV).
- Clean in the Online CSV Editor: quotes, blank rows, label enums.
- Add id and split columns.
- Convert to the trainer’s JSON/JSONL shape with CSV to JSON or a script.
- Keep the CSV as the editable source; regenerate JSONL as needed.
From CSV to JSONL
Trainers often want one JSON object per line.
import csv, json
with open("train.csv", newline="", encoding="utf-8") as f, open("train.jsonl", "w", encoding="utf-8") as out:
for row in csv.DictReader(f):
if row.get("split") != "train":
continue
obj = {
"messages": [
{"role": "user", "content": row["prompt"]},
{"role": "assistant", "content": row["completion"]},
]
}
out.write(json.dumps(obj, ensure_ascii=False) + "\n")Eval Sets Deserve the Same Care
Fine-tuning without a frozen eval set is just vibes. Hold out examples that represent production traffic, including hard cases.
- Never train on eval rows.
- Store expected outputs for exact-match or rubric scoring.
- Version eval CSV alongside model versions.
- Include adversarial and empty-input cases.
Quality Bar for Each Row
Reject examples that teach the wrong behavior.
- Instructions in the prompt match the completion style.
- No contradictory labels for near-duplicate inputs.
- No PII unless the environment is approved.
- Completions are the behavior you want in production—not jokes or hedges.
- Quoting in CSV does not corrupt multiline prompts.
Real-World Examples
How teams actually manage fine-tune CSVs.
Support auto-reply tone
Agents draft prompt/completion pairs in Sheets; weekly export becomes JSONL; eval CSV scores tone and policy compliance.
SKU categorization
text,label CSV from the catalog team; rare categories oversampled carefully; JSONL produced in CI.
Internal copilot
Chat transcripts redacted, converted to CSV for review, then to messages JSON for training.
Common Mistakes
Dataset bugs dominate "fine-tune failed" stories.
- Train/eval contamination.
- Inconsistent label strings.
- Multiline fields broken by bad CSV export.
- Too few examples for the diversity of production inputs.
- Editing JSONL by hand until nobody trusts the source.
Best Practices
Treat datasets like code.
- CSV (or a database) as source of truth; JSONL as build artifact.
- ids + splits on every row.
- Lint for blank completions and illegal labels in CI.
- Review a random sample every release.
- Document the intended use and refusal behavior.
Why Use Convert CSV Online?
Convert CSV Online is free, browser-based, and requires no account for everyday conversions. Clean fine-tune tables, move between CSV and JSON for trainers, and spot quoting issues before a paid training run. Client-side workflows work on Windows, macOS, and Linux browsers.
Review in a table, train from JSONL
Humans review CSV; machines train on converted JSON. You get both.
Conclusion
Fine-tuning success is mostly dataset discipline: clear columns, clean splits, JSONL as an artifact, and eval sets you refuse to contaminate. CSV is a solid human-friendly source of truth.
FAQ
Can I fine-tune an LLM from a CSV file?
Yes. Structure rows as prompts/completions or chat fields, then convert to the JSON/JSONL format your training provider expects.
What columns do I need for fine-tuning?
At minimum, input and desired output fields—often prompt and completion, or chat messages—plus id and split for hygiene.
Should I keep CSV or JSONL as the source of truth?
Many teams keep CSV/Sheets for editing and generate JSONL as a build artifact so reviews stay easy.
How big should a fine-tuning CSV be?
It depends on task complexity. Start with a few hundred high-quality examples, measure eval gains, then scale deliberately.
How do I prevent train/eval leakage?
Assign splits before training, dedupe near-identical prompts across splits, and never merge eval back into train.
How do I convert fine-tune CSV to JSON?
Use Convert CSV Online’s CSV to JSON Converter for simple shapes, or a short script for chat message arrays and JSONL.
References
Convert your CSV in the browser
Preview, clean, and convert CSV files free with Convert CSV Online—no installation and no account required for everyday conversions.