CSV inspect
Inspect a delimited data file (CSV, TSV, semicolon or pipe separated) and get a structured report of its shape.
Working…
Questions people ask
- Will the tool modify my file?
- No. csv-inspect only reads the document and writes one report. The source file is never re-serialised or returned in a transformed form, and no bytes of it reach the report beyond the header row names (or an explicit, off-by-default sample).
- What does the report carry?
- The inferred delimiter with a confidence grade (high, medium or low); header detection (auto, declared or undetect); the exact row count (data rows when a header is detected, everything otherwise; the counting rule is stated in the `notes` field); the modal column width and a count of outlier rows; per-column type guesses over a bounded sample; duplicate-header detection; a flag when the tool's sample ran out of rows before the file (`inference_partial`); and, if you asked for it, a bounded sample of data rows (off by default).
- What does "per-column type guess" mean?
- The tool walks the sampled data and, per column, checks whether all the values are integers, floats, booleans, text or a mix. The answer is one of int, number, bool, string, mixed or empty, with a confidence grade and, for mixed, the number of the data row where the first value broke the verdict. Cell contents never reach the report without the opt-in sample.
- Are the heuristics authoritative?
- No. Delimiter detection, header detection and type inference are heuristics, and the report labels them as such (`delimiter_confidence`, `header_detection` and the per-column confidence field). The exact counts, such as the width histogram, the outlier count and the row count, are stated as facts.
- What happens with a file that is not a table at all?
- A binary file becomes a successful inspection whose verdict is "not a text file" (delimiter: none, rows: 0, columns: 0). An empty file is reported as "empty". A single-column text file (no candidate delimiter is consistent) is reported as "unknown delimiter", with a confidence flag that tells a reader the tool is not pretending it found a table. In every case, the report is the answer and the job does not fail.
- Does anything leave my server?
- No. The tool runs in an isolated container with no network access. The `sample` in the report is bounded to ten rows of 120 characters per cell, and is off by default. Header row names (which can carry personal data, such as a user e-mail column) are always in the report, because a table report without its headers is not much of a report. If that is a problem for your data, strip the header row before uploading.