{
  "slug": "csv-to-ndjson",
  "name": "gizza-ai/csv-to-ndjson",
  "version": "0.1.0",
  "title": "CSV to NDJSON Converter — gizza.ai",
  "description": "Convert CSV to NDJSON in your browser — one JSON object per row for streaming pipelines, with type inference and custom delimiters. No upload.",
  "tags": [
    "csv to ndjson",
    "csv to jsonl",
    "newline delimited json",
    "ndjson converter",
    "jsonl converter",
    "streaming json",
    "csv parser",
    "data pipeline"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/csv-to-ndjson/",
    "markdown": "https://gizza.ai/tools/csv-to-ndjson/index.md",
    "descriptor": "https://gizza.ai/tools/csv-to-ndjson/tool.json",
    "deep_link_example": "https://gizza.ai/tools/csv-to-ndjson/?data=name%2Cage%2Cactive%0AAda%2C36%2Ctrue%0AGrace%2C%2Cfalse&delimiter=%2C&headers=true&parse_numbers=true&parse_bools=true&trim=true"
  },
  "cli": "gizza tool csv-to-ndjson \"name,age,active\nAda,36,true\nGrace,,false\"",
  "tool": {
    "description": "Convert CSV text to NDJSON (newline-delimited JSON): one JSON value per line, no enclosing array -- the shape streaming ingest pipelines (jq, BigQuery load, Elasticsearch bulk, log shippers) expect. With headers=true (default) each row becomes a JSON object keyed by the first (header) row; headers=false emits each row as a JSON array. Values stay JSON strings unless you opt into inference: parse_numbers coerces numeric cells to numbers (leading-zero / +-prefixed values stay strings), parse_bools coerces true/false/null (and empty cells) to JSON booleans/null. trim strips surrounding whitespace from each cell. delimiter is a single char or 'tab'/'comma'/'semicolon'/'pipe'. Quoted fields with embedded commas/newlines and \"\" escapes are handled per RFC 4180.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "data": {
          "description": "The CSV text to convert. The first row is the header row unless headers=false. Handles quoted fields with embedded commas, newlines, and \"\" escapes (RFC 4180).",
          "type": "string"
        },
        "delimiter": {
          "default": ",",
          "description": "CSV field delimiter -- a single character, or the word 'tab', 'comma', 'semicolon', or 'pipe'. Default ','.",
          "type": "string"
        },
        "headers": {
          "default": true,
          "description": "Treat the first row as field names, so each row becomes a JSON object. false emits each row as a JSON array instead. Default true.",
          "type": "boolean"
        },
        "parse_bools": {
          "default": false,
          "description": "Coerce the literals true/false/null (and empty cells) to JSON booleans/null. Default false.",
          "type": "boolean"
        },
        "parse_numbers": {
          "default": false,
          "description": "Coerce numeric-looking cells to JSON numbers (e.g. 36 -> 36). Values with leading zeros or a leading + (007, +1) stay strings. Default false (all values stay strings).",
          "type": "boolean"
        },
        "trim": {
          "default": false,
          "description": "Strip leading/trailing whitespace from every cell before conversion. Default false.",
          "type": "boolean"
        }
      },
      "required": [
        "data"
      ],
      "type": "object"
    }
  }
}