{
  "product": "Specification (reference)",
  "title": "CSV (RFC 4180)",
  "summary": "Comma-separated values — the format everyone thinks is simple.",
  "category": "formats",
  "entries": [
    {
      "path": [
        "Grammar",
        "Records separated by CRLF"
      ],
      "value": "",
      "status": "yes",
      "note": "the last record may omit it"
    },
    {
      "path": [
        "Grammar",
        "Fields separated by commas"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Grammar",
        "Optional header line"
      ],
      "value": "",
      "status": "yes",
      "note": "same field count as records"
    },
    {
      "path": [
        "Grammar",
        "Fields may be double-quoted"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Grammar",
        "Quoted fields may contain commas, CRLF and quotes"
      ],
      "value": "",
      "status": "yes",
      "note": "quotes doubled inside"
    },
    {
      "path": [
        "Grammar",
        "Spaces are part of the field"
      ],
      "value": "",
      "status": "yes",
      "note": "not trimmed"
    },
    {
      "path": [
        "Reading",
        "Configurable delimiter"
      ],
      "value": "comma, tab, semicolon",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Reading",
        "Configurable quote and escape characters"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Reading",
        "Ragged rows reported, not silently padded"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Reading",
        "BOM detected and stripped"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Reading",
        "Streaming parse of large files"
      ],
      "value": "",
      "status": "yes",
      "note": "constant memory"
    },
    {
      "path": [
        "Writing",
        "Quote only when necessary"
      ],
      "value": "",
      "status": "yes",
      "note": "minimal output"
    },
    {
      "path": [
        "Writing",
        "Round-trips: parse then write reproduces the values"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Writing",
        "Newline convention selectable"
      ],
      "value": "CRLF or LF",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Encoding",
        "UTF-8 assumed, other encodings declarable"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "Interop",
        "Excel dialect quirks documented"
      ],
      "value": "",
      "status": "yes",
      "note": "leading =, long numbers, locale delimiters"
    }
  ]
}
