{
  "title": "CSV row filter",
  "human_url": "https://happytails.ai/en/data-tools/csv-row-filter/",
  "agent_url": "https://happytails.ai/agents/en/data-tools/csv-row-filter/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/data-tools/csv-row-filter.md",
  "content": "CSV row filter\nKeep the CSV records you need with clear rules across multiple columns. Preview the matches and download a new CSV.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use CSV row filter\nPaste CSV with unique column names and choose its separator.\nEnter filter rules and choose whether all or any must match.\nReview the kept-record count and table, then download the CSV and report.\nUseful next steps\nCSV cell expansion\nCSV unpivot\nDataset value mapper\nCSV to JSON\nWhat to expect\nKeep the CSV records you need with clear rules across multiple columns. Preview the matches and download a new CSV. Paste CSV with a header row, then enter one rule per line as column,operator,value. Use All to require every rule or Any to keep a record that matches at least one. Column names must match exactly. Quote a value containing a comma, just as you would in a CSV cell. Text rules support exact matches, contains, prefixes, suffixes and empty cells. You can turn off case-sensitive text matching. Numeric rules compare signed decimal strings exactly, including integers larger than JavaScript's usual safe integer range. Spaces and exponent notation are not interpreted as numbers; non-numeric comparisons are counted separately. The preview retains leading zeros, spaces, quoted line breaks and long identifiers. Download the filtered CSV and a JSON processing report. The default export prefixes formula-like cells with an apostrophe, which changes those exported strings. Choose Preserve original cells for trusted machine processing. Spreadsheet applications can still infer numbers and dates when opening CSV.\nTry a small example\ncountry,score,name\nPortugal,90,Ana\nPortugal,70,João\nSpain,95,Bea\nPortugal,n/a,Lee",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "CSV cell expansion",
      "url": "https://happytails.ai/en/data-tools/csv-cell-expansion/"
    },
    {
      "name": "CSV unpivot",
      "url": "https://happytails.ai/en/data-tools/csv-unpivot/"
    },
    {
      "name": "Dataset value mapper",
      "url": "https://happytails.ai/en/data-tools/dataset-value-mapper/"
    },
    {
      "name": "CSV to JSON",
      "url": "https://happytails.ai/en/data-tools/csv-to-json/"
    }
  ],
  "tool": {
    "id": "csv-row-filter",
    "category": "data-tools",
    "built": true,
    "requirements": "Paste CSV with a header row, then enter one rule per line as column,operator,value. Use All to require every rule or Any to keep a record that matches at least one. Column names must match exactly. Quote a value containing a comma, just as you would in a CSV cell. Text rules support exact matches, contains, prefixes, suffixes and empty cells. You can turn off case-sensitive text matching. Numeric rules compare signed decimal strings exactly, including integers larger than JavaScript's usual safe integer range. Spaces and exponent notation are not interpreted as numbers; non-numeric comparisons are counted separately. The preview retains leading zeros, spaces, quoted line breaks and long identifiers. Download the filtered CSV and a JSON processing report. The default export prefixes formula-like cells with an apostrophe, which changes those exported strings. Choose Preserve original cells for trusted machine processing. Spreadsheet applications can still infer numbers and dates when opening CSV.",
    "implementation": {
      "fields": [
        {
          "key": "delimiter",
          "label": "Input CSV separator",
          "value": ",",
          "type": "select",
          "values": [
            ",",
            ";",
            "\t"
          ]
        },
        {
          "key": "rules",
          "label": "Filter rules",
          "value": "country,equals,Portugal\nscore,number-gte,80",
          "type": "textarea",
          "help": "One rule per CSV record: column,operator,value. No header. Quote values containing commas. Up to 20 rules. Operators: equals, not-equals, contains, not-contains, starts-with, ends-with, is-empty, is-not-empty, number-gt, number-gte, number-lt, number-lte."
        },
        {
          "key": "match",
          "label": "Keep records matching",
          "value": "All",
          "type": "select",
          "values": [
            "All",
            "Any"
          ]
        },
        {
          "key": "caseSensitive",
          "label": "Case-sensitive text matching",
          "value": true,
          "type": "checkbox"
        },
        {
          "key": "exportMode",
          "label": "Spreadsheet formula handling",
          "value": "Protect formulas",
          "type": "select",
          "values": [
            "Protect formulas",
            "Preserve original cells"
          ]
        }
      ],
      "live": true,
      "presentation": "metrics",
      "note": "Filter multiple columns with explicit All or Any conditions. Numeric rules compare signed decimal strings exactly, including large integers; non-numeric cells are reported as skipped comparisons. Empty means an empty string, not spaces or zero. Use a header row with unique column names. Up to 1,000,000 input characters, 10,000 data records, 100 columns and 100,000 cells. Strings and spaces are preserved. Output CSV uses commas and quotes every cell. Protect formulas prefixes risky output cells with an apostrophe; choose Preserve original cells only for trusted machine processing. Runs on your device.",
      "experience": {
        "automatic": true,
        "single": false,
        "inputMaxLength": 1000000,
        "inputMode": "text",
        "label": "CSV",
        "placeholder": "name,score\nAda,98\nSam,92",
        "help": "Include a header row. Quote cells that contain commas or new lines. Results update as you type. Up to 1,000,000 characters.",
        "action": null
      },
      "mode": "automatic",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# CSV row filter\n\n- Human page: https://happytails.ai/en/data-tools/csv-row-filter/\n- Markdown: https://happytails.ai/en/data-tools/csv-row-filter.md\n- Structured JSON: https://happytails.ai/agents/en/data-tools/csv-row-filter/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `csv-row-filter` |\n| Category | data-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Automatic updates after valid input or file selection. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nFilter multiple columns with explicit All or Any conditions. Numeric rules compare signed decimal strings exactly, including large integers; non-numeric cells are reported as skipped comparisons. Empty means an empty string, not spaces or zero. Use a header row with unique column names. Up to 1,000,000 input characters, 10,000 data records, 100 columns and 100,000 cells. Strings and spaces are preserved. Output CSV uses commas and quotes every cell. Protect formulas prefixes risky output cells with an apostrophe; choose Preserve original cells only for trusted machine processing. Runs on your device.\n\n### Inputs and settings\n\nText input: CSV.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\nname,score\nAda,98\nSam,92\n```\n\nInclude a header row. Quote cells that contain commas or new lines. Results update as you type. Up to 1,000,000 characters.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `delimiter` | Input CSV separator | select | \",\" | Allowed: ,, ;, \t |\n| `rules` | Filter rules | textarea | \"country,equals,Portugal\\nscore,number-gte,80\" |  |\n| `match` | Keep records matching | select | \"All\" | Allowed: All, Any |\n| `caseSensitive` | Case-sensitive text matching | checkbox | true |  |\n| `exportMode` | Spreadsheet formula handling | select | \"Protect formulas\" | Allowed: Protect formulas, Preserve original cells |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nPaste CSV with a header row, then enter one rule per line as column,operator,value. Use All to require every rule or Any to keep a record that matches at least one. Column names must match exactly. Quote a value containing a comma, just as you would in a CSV cell. Text rules support exact matches, contains, prefixes, suffixes and empty cells. You can turn off case-sensitive text matching. Numeric rules compare signed decimal strings exactly, including integers larger than JavaScript's usual safe integer range. Spaces and exponent notation are not interpreted as numbers; non-numeric comparisons are counted separately. The preview retains leading zeros, spaces, quoted line breaks and long identifiers. Download the filtered CSV and a JSON processing report. The default export prefixes formula-like cells with an apostrophe, which changes those exported strings. Choose Preserve original cells for trusted machine processing. Spreadsheet applications can still infer numbers and dates when opening CSV.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"csv-row-filter\",\n  \"category\": \"data-tools\",\n  \"built\": true,\n  \"requirements\": \"Paste CSV with a header row, then enter one rule per line as column,operator,value. Use All to require every rule or Any to keep a record that matches at least one. Column names must match exactly. Quote a value containing a comma, just as you would in a CSV cell. Text rules support exact matches, contains, prefixes, suffixes and empty cells. You can turn off case-sensitive text matching. Numeric rules compare signed decimal strings exactly, including integers larger than JavaScript's usual safe integer range. Spaces and exponent notation are not interpreted as numbers; non-numeric comparisons are counted separately. The preview retains leading zeros, spaces, quoted line breaks and long identifiers. Download the filtered CSV and a JSON processing report. The default export prefixes formula-like cells with an apostrophe, which changes those exported strings. Choose Preserve original cells for trusted machine processing. Spreadsheet applications can still infer numbers and dates when opening CSV.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"delimiter\",\n        \"label\": \"Input CSV separator\",\n        \"value\": \",\",\n        \"type\": \"select\",\n        \"values\": [\n          \",\",\n          \";\",\n          \"\\t\"\n        ]\n      },\n      {\n        \"key\": \"rules\",\n        \"label\": \"Filter rules\",\n        \"value\": \"country,equals,Portugal\\nscore,number-gte,80\",\n        \"type\": \"textarea\",\n        \"help\": \"One rule per CSV record: column,operator,value. No header. Quote values containing commas. Up to 20 rules. Operators: equals, not-equals, contains, not-contains, starts-with, ends-with, is-empty, is-not-empty, number-gt, number-gte, number-lt, number-lte.\"\n      },\n      {\n        \"key\": \"match\",\n        \"label\": \"Keep records matching\",\n        \"value\": \"All\",\n        \"type\": \"select\",\n        \"values\": [\n          \"All\",\n          \"Any\"\n        ]\n      },\n      {\n        \"key\": \"caseSensitive\",\n        \"label\": \"Case-sensitive text matching\",\n        \"value\": true,\n        \"type\": \"checkbox\"\n      },\n      {\n        \"key\": \"exportMode\",\n        \"label\": \"Spreadsheet formula handling\",\n        \"value\": \"Protect formulas\",\n        \"type\": \"select\",\n        \"values\": [\n          \"Protect formulas\",\n          \"Preserve original cells\"\n        ]\n      }\n    ],\n    \"live\": true,\n    \"presentation\": \"metrics\",\n    \"note\": \"Filter multiple columns with explicit All or Any conditions. Numeric rules compare signed decimal strings exactly, including large integers; non-numeric cells are reported as skipped comparisons. Empty means an empty string, not spaces or zero. Use a header row with unique column names. Up to 1,000,000 input characters, 10,000 data records, 100 columns and 100,000 cells. Strings and spaces are preserved. Output CSV uses commas and quotes every cell. Protect formulas prefixes risky output cells with an apostrophe; choose Preserve original cells only for trusted machine processing. Runs on your device.\",\n    \"experience\": {\n      \"automatic\": true,\n      \"single\": false,\n      \"inputMaxLength\": 1000000,\n      \"inputMode\": \"text\",\n      \"label\": \"CSV\",\n      \"placeholder\": \"name,score\\nAda,98\\nSam,92\",\n      \"help\": \"Include a header row. Quote cells that contain commas or new lines. Results update as you type. Up to 1,000,000 characters.\",\n      \"action\": null\n    },\n    \"mode\": \"automatic\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nKeep the CSV records you need with clear rules across multiple columns. Preview the matches and download a new CSV.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use CSV row filter\n\n1. Paste CSV with unique column names and choose its separator.\n2. Enter filter rules and choose whether all or any must match.\n3. Review the kept-record count and table, then download the CSV and report.\n\n## Useful next steps\n\n- [CSV cell expansion](https://happytails.ai/en/data-tools/csv-cell-expansion/) ([Markdown](https://happytails.ai/en/data-tools/csv-cell-expansion.md))\n\n- [CSV unpivot](https://happytails.ai/en/data-tools/csv-unpivot/) ([Markdown](https://happytails.ai/en/data-tools/csv-unpivot.md))\n\n- [Dataset value mapper](https://happytails.ai/en/data-tools/dataset-value-mapper/) ([Markdown](https://happytails.ai/en/data-tools/dataset-value-mapper.md))\n\n- [CSV to JSON](https://happytails.ai/en/data-tools/csv-to-json/) ([Markdown](https://happytails.ai/en/data-tools/csv-to-json.md))\n\n## What to expect\n\nKeep the CSV records you need with clear rules across multiple columns. Preview the matches and download a new CSV. Paste CSV with a header row, then enter one rule per line as column,operator,value. Use All to require every rule or Any to keep a record that matches at least one. Column names must match exactly. Quote a value containing a comma, just as you would in a CSV cell. Text rules support exact matches, contains, prefixes, suffixes and empty cells. You can turn off case-sensitive text matching. Numeric rules compare signed decimal strings exactly, including integers larger than JavaScript's usual safe integer range. Spaces and exponent notation are not interpreted as numbers; non-numeric comparisons are counted separately. The preview retains leading zeros, spaces, quoted line breaks and long identifiers. Download the filtered CSV and a JSON processing report. The default export prefixes formula-like cells with an apostrophe, which changes those exported strings. Choose Preserve original cells for trusted machine processing. Spreadsheet applications can still infer numbers and dates when opening CSV.\n\n### Try a small example\n\n```\ncountry,score,name\nPortugal,90,Ana\nPortugal,70,João\nSpain,95,Bea\nPortugal,n/a,Lee\n```\n"
}