ParseCSV is a diagnostic front door for delimited files: it shows how bytes become records and fields, resolves dialect and encoding ambiguity with evidence, and lets you repair and export with verified counts. Everything runs in your browser; there is no backend.
The engine
parsecsv-engine 1.0.0 is a hand-written streaming state machine (start-record, start-field, unquoted-field, quoted-field, after-quote, escape, comment) over code units of the selected encoding, with byte offsets throughout and explicit carry-over state between chunks. Field values are decoded with a streaming TextDecoder. A test suite runs the PRD fixtures, a differential check against an independent reference parser, and metamorphic tests that parse hundreds of random and malformed inputs under random chunk sizes.
Known deviations and limits
- Multi-character delimiters, UTF-32, Shift_JIS, GB18030 and other multi-byte legacy encodings are not supported.
- Files over 128 MB are inspected read-only by streaming from disk; repair is disabled for them. Very large outputs are assembled in memory before download.
- Header and encoding detection are heuristics; ambiguous results ask you to choose.
- Generated code for other libraries is not verified to be equivalent.
- Example files are self-authored synthetic data (October 2026); names and companies are fictional.
Feature status
Labels: NATIVE = implemented locally; APPROX = heuristic; EXPLAIN = guidance only; UNSUPPORTED = not available.
| ID | Requirement | Status | Notes |
|---|---|---|---|
| PCSV-001 | File/paste import | Done NATIVE | File picker, drag-and-drop, paste (UTF-8). Original bytes retained; a canceled parse keeps the previous result. |
| PCSV-002 | Encoding/BOM inspection | Done NATIVE | BOM sniffing, UTF-16 heuristics, streaming validator lists every invalid sequence with byte offsets; shown as hatched � marks. |
| PCSV-003 | Delimiter candidate scoring | Done NATIVE | Six candidates parsed quote-aware; score, width distribution, confidence that drops for close alternatives; override reparses original. |
| PCSV-004 | Quote/escape options | Done NATIVE | Double/single/none quote; doubled, backslash or no escape; stray quote and junk-after-quote diagnosed. |
| PCSV-005 | Header detection | Done APPROX | Heuristic suggestion with evidence; duplicate/empty names and multi-row suspicion surfaced. |
| PCSV-006 | Record terminator policy | Done NATIVE | Auto (CRLF/LF/CR mixed) or exactly one; counts per terminator; mixed endings reported. |
| PCSV-007 | Raw/record/grid views | Done NATIVE | Raw view with byte/line gutter and per-token record/field/state; record view with field byte spans; grid. |
| PCSV-008 | Quoted newline support | Done NATIVE | Verified by fixtures and differential tests. |
| PCSV-009 | Ragged record diagnostics | Done NATIVE | Expected width from header or modal width; exact spans. |
| PCSV-010 | Blank/trailing-field policy | Done NATIVE | Blank record, empty field and absent field are distinct. |
| PCSV-011 | Text-safe parsed output | Done NATIVE | Values are never coerced. |
| PCSV-012 | Incremental sample/full parse | Done NATIVE | 256 KB sample first, labelled; full parse with progress and cancel. |
| PCSV-013 | Error ledger | Done NATIVE | Record and byte equations checked on every parse. |
| PCSV-014 | Manual record repair | Done NATIVE | Preview, precondition (revision + exact text), provenance history, undo, full reparse. Disabled for files > 128 MB. |
| PCSV-015 | Strict/recovery modes | Done NATIVE | Four explicit recovery policies. |
| PCSV-016 | Export parsed records | Done NATIVE | CSV/TSV/JSON arrays/JSON objects/NDJSON with counts and loss notes; duplicate headers need explicit names. |
| PCSV-017 | Parser settings export | Done NATIVE | Versioned JSON with sample-vs-full evidence; strict import. |
| PCSV-018 | Diagnostic report | Done NATIVE | Markdown, redacted by default; excerpts opt-in. |
| PCSV-019 | Rejected records export | Done NATIVE | JSON raw fragments (text + base64) with byte/line spans, not CSV. |
| PCSV-020 | Reparse output verification | Done NATIVE | Output reparsed under its target profile and compared record-by-record; lexical changes reported separately. |
| PCSV-021 | Schema inference preview | Done NATIVE | Candidate types, alternatives with failure examples, leading-zero and >2^53 notes. |
| PCSV-022 | User schema validation | Done NATIVE | Required/type/min/max/max-length rules; separate from parser validity. Regex rules not offered. |
| PCSV-023 | Alternate dialect comparison | Partial NATIVE | Top three delimiter interpretations side by side on the sample; no full-file comparison. |
| PCSV-024 | Boundary inspector | Partial NATIVE | Raw view chunk marks + parser state per token; no step-by-step state trace UI. |
| PCSV-025 | Batch feed diagnosis | Done NATIVE | Per-file detection or one saved setting; differences from first file. |
| PCSV-026 | Parser code examples | Done NATIVE | Papa Parse 5.4.1, Python 3.12 csv, pandas 2.2 with gap notes. Not executed. |
| PCSV-027 | Dataset handoff | Partial NATIVE | Explicit file export only; no direct cross-site transfer. |
| PCSV-028 | Header mapping tool | Partial NATIVE | Stable column IDs (c1…) with rename/conflict resolution in JSON object export. |
| PCSV-029 | CSV injection scan | Done NATIVE | Separate risk findings; opt-in apostrophe mitigation counted at export. |
| PCSV-030 | Large streamed inspection | Partial NATIVE | Files > 128 MB stream from disk via Blob slices (bounded chunk memory, compact record table); repair disabled; no OPFS staging. |
| PCSV-031 | Streamable repair recipes | Not done UNSUPPORTED | Roadmap. |
| PCSV-032 | Universal perfect auto-detection | Not done UNSUPPORTED | Excluded by design: ambiguous inputs require a visible choice. |
| PCSV-101 | Dialect evidence dashboard | Done NATIVE | Dialects tab. |
| PCSV-102 | Record-boundary visualization | Done NATIVE | Raw view ¶ vs ↵ marks. |
| PCSV-103 | Header-row selection | Done NATIVE | Skip N preamble records, counted in ledger bytes. |
| PCSV-104 | Comment-line profile | Done NATIVE | Record-start only, outside quotes. |
| PCSV-105 | Custom delimiter qualification | Partial UNSUPPORTED | Single-character delimiters supported; multi-character profiles refused explicitly. |
| PCSV-106 | Encoding comparison preview | Done NATIVE | Previews under candidate encodings. |
| PCSV-107 | Parser option compatibility report | Partial EXPLAIN | Static gap notes per library; not fixture-verified. |
| PCSV-108 | Truncation suspicion check | Done NATIVE | Unclosed quote or incomplete sequence at EOF. |
| PCSV-109 | Repair decision history | Done NATIVE | Patch history; policy repairs counted. |
| PCSV-110 | Chunk-size metamorphic test mode | Done NATIVE | Encoding & boundaries tab, first 1 MB. |
| PCSV-111 | Streaming result sink | Not done UNSUPPORTED | Exports are built in memory then downloaded. |
| PCSV-112 | Record schema drift report | Not done UNSUPPORTED | Batch differences cover dialect/width only. |
| PCSV-113 | Safe parser benchmark report | Partial NATIVE | Parse time shown per run; no report export. |
| PCSV-114 | Malformed fixture generator | Not done UNSUPPORTED | Self-authored examples only. |
| PCSV-115 | Interchange evidence bundle | Partial NATIVE | Settings file + report + rejected export, not one bundle. |