csv guide

CSV Empty Cells and Missing Columns Are Different Problems

Test empty CSV fields, quoted empty strings and short rows, then inspect the resulting JSON without guessing missing values.

Published October 9, 2026 by SOLVEOZA Editorial

Quick answer

With headers id,note, the row A, contains two fields and an empty note. The row A contains only one field. SOLVEOZA preserves the first as an empty string and rejects the second because its column count differs.

Count fields before assigning meaning

A delimiter can mark a real empty field. It is not necessarily stray punctuation to delete. With two headers, removing the comma after A changes the record's shape from two fields to one.

Use a small invented fixture before trying a large export. Keep a copy of the source and identify its actual delimiter. A semicolon-separated file interpreted as comma-separated text can appear to have one column even when it visually looks like a table.

Compare four similar-looking inputs

Select comma delimiter and first-row headers. Run each row beneath id,note separately. The word null in a CSV cell is ordinary text here; the converter does not infer JSON types.

Field shape and output
CSV data rowField countSOLVEOZA result
A,2{"id":"A","note":""}
A,""2{"id":"A","note":""}
A,null2{"id":"A","note":"null"}
A1Column-count error
Reproducible valid fixture
id,note
A,
B,""
C,null

Repair the shape only when you know the schema

If the export specification says the final note is optional and an absent note must be represented by an empty field, the row A, has the expected shape. Add the delimiter only after establishing that rule. A short row could also mean a broken export or the wrong header row.

Do not append empty values indiscriminately until a parser accepts a file. A missing middle field can shift later values into the wrong columns. Compare the row with its original record and identify the exact missing position; successful parsing alone does not prove correct alignment.

Preserve the distinction after conversion

The converter produces strings for CSV values. Empty text remains an empty string; zero becomes the string 0; the letters null become the string null. If a destination expects a number or JSON null, apply a separately documented mapping after validating the source.

An empty string cannot tell you whether a source author meant unknown, not applicable, or intentionally blank. If that distinction matters, the export needs an additional status field or an agreed representation. Neither CSV punctuation nor this converter can recover that missing meaning.

Check the final record count as well as the columns

Inspect the first, middle and last data records after conversion. SOLVEOZA trims trailing completely blank rows, so an empty line at the end is not a reliable placeholder for a meaningful blank record. Keep explicit identifiers for records you need to preserve.

RFC 4180 describes a common CSV format with consistent field counts, but real exporters vary. Check quoting and delimiter settings before editing data. For embedded commas or line breaks use the separate quoted-fields guide rather than splitting text manually on every comma.

Methodology

  1. Run valid two-column and invalid one-column fixtures using first-row headers.
  2. Compare parsed JSON values without type coercion.

Limitations

  • No automatic schema repair or meaning inference.
  • Other CSV importers may handle short rows and empty lines differently.
  • Blank text does not encode the reason a value is absent.

Sources

The fixture is original synthetic data. Results describe the current SOLVEOZA parser, not every CSV implementation.

FAQ

Are A, and A the same row?

No. The first has an empty second field; the second has one field.

Does an empty CSV field become JSON null?

Not in this tool. It becomes an empty string.

Can I fix every short row by adding commas?

No. Establish the missing position and source schema first; a middle omission may misalign the record.

Will trailing blank lines create blank records?

Not reliably in this converter: completely blank trailing rows are trimmed.

Continue the task