{
  "version": 1,
  "slug": "split-csv-rows-by-delimiter",
  "title": "How to Split a CSV Column into Multiple Rows",
  "excerpt": "Split a CSV column into multiple rows by choosing the column, delimiter, cleanup options, previewing the result, and downloading a normalized CSV.",
  "cover": {
    "src": "/howto_images/split-csv-rows-by-delimiter/split-csv-rows-by-delimiter-cover.png",
    "optimized": "https://www.datablist.com/_next/image?url=%2Fhowto_images%2Fsplit-csv-rows-by-delimiter%2Fsplit-csv-rows-by-delimiter-cover.png&w=1200&q=75"
  },
  "url": "https://www.datablist.com/how-to/split-csv-rows-by-delimiter",
  "contentMarkdown": "\nTo split CSV rows by delimiter, use Datablist's [CSV Rows Splitter](/tools/csv-rows-splitter), choose the column with multiple values, choose the delimiter inside each cell, preview the expanded rows, then download the normalized CSV. The result is a file where the selected column has one value per row and the other columns are copied across the new rows.\n\nThis is the workflow I use when a CRM, ecommerce export, survey file, or scraping result stores several emails, tags, phone numbers, categories, URLs, or IDs in one cell. It is faster than setting up formulas when you only need to clean one file, and it gives you a preview before you export the result.\n\nThis guide is about expanding values inside one CSV column. If you want to split one large CSV file into several smaller files, use Datablist's [CSV file splitter](/tools/csv-splitter) instead.\n\n## Quick Links {#quick-links}\n- [What splitting CSV rows by delimiter means](#what-splitting-csv-rows-by-delimiter-means)\n- [Example CSV with multiple emails in one cell](#example-csv-with-multiple-emails-in-one-cell)\n- [Split CSV rows with Datablist](#step-1-open-the-csv-rows-splitter)\n- [Choose the right delimiter and cleanup options](#step-4-choose-the-delimiter-inside-the-cell)\n- [Preview and download the normalized CSV](#step-6-preview-the-expanded-rows)\n- [Check the result before importing it elsewhere](#check-the-result-before-using-it)\n\n## What splitting CSV rows by delimiter means {#what-splitting-csv-rows-by-delimiter-means}\nSplitting CSV rows by delimiter means taking one field that contains several values and turning each value into its own row.\n\nFor example, this input row:\n\n```csv\nName,Company,Emails,Tags\nMia Chen,Acme,\"mia.chen@example.test,mia@workmail.test\",\"lead,customer\"\n```\n\nbecomes two output rows when you split the `Emails` column on comma:\n\n```csv\nName,Company,Emails,Tags\nMia Chen,Acme,mia.chen@example.test,\"lead,customer\"\nMia Chen,Acme,mia@workmail.test,\"lead,customer\"\n```\n\nThe selected column changes. Every other column is duplicated. That is usually what you want before deduplicating contacts, importing one email per row into a CRM, counting tags, or preparing data for another cleanup step.\n\n> 🔑 **Key distinction**\n>\n> A [CSV delimiter](/learn/csv/csv-delimiter) separates columns in the file. A cell delimiter separates several values inside one field.\n\nRows without the selected cell delimiter stay as one row. Empty cells are kept by default. If a cell ends with a delimiter, such as `mia@example.test,`, you can enable the option to skip empty values and avoid creating a blank output row.\n\nThe output keeps the same headers as the input. The row count increases only when the selected column contains multiple values.\n\n## Example CSV with multiple emails in one cell {#example-csv-with-multiple-emails-in-one-cell}\nI will use a contact dataset for the walkthrough because it shows the problem clearly. The file has these columns:\n\n- `Name`\n- `Company`\n- `Emails`\n- `Tags`\n- `Phone Numbers`\n- `Source`\n\nSome contacts have one email. Some have two or three emails in the same `Emails` cell. Some cells contain spaces after commas, repeated values, or a trailing delimiter. Those small imperfections are useful because they show which cleanup options matter.\n\nHere is a small version of the input:\n\n```csv\nName,Company,Emails,Tags\nMia Chen,Acme,\"mia.chen@example.test,mia@workmail.test\",\"lead,customer\"\nLucas Martin,Northwind,\"lucas@northwind.test, l.martin@personal.test, lucas@ops.test\",\"lead,partner\"\nSofia Lopez,Bluebird,sofia.lopez@example.test,customer\nAva Patel,Orbit,\"ava@orbit.test, ava@orbit.test, a.patel@workmail.test\",\"newsletter,trial\"\n```\n\nAfter splitting `Emails` on comma, the result looks like this:\n\n```csv\nName,Company,Emails,Tags\nMia Chen,Acme,mia.chen@example.test,\"lead,customer\"\nMia Chen,Acme,mia@workmail.test,\"lead,customer\"\nLucas Martin,Northwind,lucas@northwind.test,\"lead,partner\"\nLucas Martin,Northwind,l.martin@personal.test,\"lead,partner\"\nLucas Martin,Northwind,lucas@ops.test,\"lead,partner\"\nSofia Lopez,Bluebird,sofia.lopez@example.test,customer\nAva Patel,Orbit,ava@orbit.test,\"newsletter,trial\"\nAva Patel,Orbit,a.patel@workmail.test,\"newsletter,trial\"\n```\n\nNotice the quotes around cells such as `\"lead,customer\"`. When comma is also used inside a CSV field, that field must be quoted. Otherwise a CSV parser may read `lead` and `customer` as two separate columns.\n\n> ⚠️ **Watch quoted comma values**\n>\n> If comma is both the CSV column separator and the delimiter inside a cell, the multi-value cell must be quoted. Read this [CSV quoting guide](/learn/csv/csv-quoting) if your columns shift after import.\n\nFor the screenshots, I used a larger synthetic contact CSV with 120 data rows. You do not need that exact file to follow the workflow. Any CSV with a multi-value column works.\n\n## Step 1: Open the CSV Rows Splitter {#step-1-open-the-csv-rows-splitter}\nOpen Datablist's [CSV Rows Splitter](/tools/csv-rows-splitter). The tool is made for one job: expanding values inside one selected CSV column into multiple rows.\n\nYou can paste CSV text or upload a CSV file. I usually paste a tiny sample first when I am testing the delimiter, then upload the full file when the settings are clear.\n\nThe tool page says processing happens locally in your browser and the file is not uploaded to a server. That makes it useful for quick CSV cleanup where you do not want to create a full workspace first.\n\n![CSV Rows Splitter paste and upload input screen](/howto_images/split-csv-rows-by-delimiter/csv-rows-splitter-paste-upload-input.png)\n\nAt this point, focus on getting the CSV parsed correctly. The splitter settings matter later, but the first check is simpler: do the headers and columns look right?\n\n## Step 2: Paste or upload your CSV {#step-2-paste-or-upload-your-csv}\nPaste your CSV into the input area or upload the file from your computer. For a small learning example, paste the snippet from the previous section. For a real cleanup, upload the full export.\n\nAfter import, check three things:\n\n- The header row is detected correctly.\n- The multi-value field appears as one column.\n- Values are not shifted into the wrong headers.\n\nIf the `Emails` field contains `a@example.test,b@example.test` and those values appear in two different columns, the issue is not the row splitter. The CSV is probably missing quotes around a field that contains commas.\n\nI prefer fixing that before splitting anything. Once rows are shifted, every later cleanup step becomes harder because the file structure is already wrong.\n\nDatablist's splitter handles quoted CSV fields and common encodings such as UTF-8 and Windows-1252 style files. Still, the preview is worth checking. I never skip it when the file came from a CRM export or a scraping tool because those files often contain odd separators or copied text.\n\n## Step 3: Select the column that contains multiple values {#step-3-select-the-column-that-contains-multiple-values}\nChoose the column you want to expand. In this example, I select `Emails`.\n\nThe tool can suggest a likely split column and delimiter from the CSV content. Treat that as a helpful shortcut, not a decision you can ignore. I still verify the selected column before exporting because a file may have several columns with separators inside them, such as `Emails`, `Tags`, and `Phone Numbers`.\n\nCommon columns to split include:\n\n- `Emails`\n- `Phone Numbers`\n- `Tags`\n- `Categories`\n- `Skills`\n- `Line Items`\n- `URLs`\n\nThe current CSV Rows Splitter expands one selected column at a time. If you need to split `Emails` and then `Phone Numbers`, split the first column, download the output, and run the exported CSV through the tool again for the second column.\n\n![CSV Rows Splitter selected email column and delimiter settings](/howto_images/split-csv-rows-by-delimiter/csv-rows-splitter-column-delimiter-settings.png)\n\nThat one-column limit is usually a good thing for cleanup. It lets you inspect each transformation instead of multiplying the file into a shape you did not mean to create.\n\n## Step 4: Choose the delimiter inside the cell {#step-4-choose-the-delimiter-inside-the-cell}\nNext, choose the delimiter that separates values inside the selected cell.\n\nFor the `Emails` example, I choose comma because the cells look like this:\n\n```csv\n\"mia.chen@example.test,mia@workmail.test\"\n```\n\nDatablist supports common cell delimiters:\n\n- Comma\n- Semicolon\n- Pipe\n- Tab\n- Custom delimiter\n\nUse comma for simple email lists, tags, and categories when values do not contain commas themselves. Use semicolon or pipe when the values may contain commas, such as company names, locations, or category labels. Use a custom delimiter for exports that use strings such as ` / `, `###`, or another separator from a source system.\n\nThe key is to choose the delimiter inside the selected cell, not the CSV column separator. A CSV file may use comma to separate columns, while the selected cell may use semicolon to separate phone numbers:\n\n```csv\nName,Phone Numbers\nMia Chen,\"+1-555-1000; +1-555-2000\"\n```\n\nIn that case, the CSV column separator is comma, but the cell delimiter is semicolon.\n\n## Step 5: Configure trim, duplicate, and empty-value options {#step-5-configure-trim-duplicate-and-empty-value-options}\nFor contact data, I usually start with these settings:\n\n- Enable `Trim spaces`.\n- Enable `Remove duplicates` when repeated values are cleanup noise.\n- Enable `Skip empty values` when cells may end with a delimiter.\n\nTrim spaces is the easiest default. It turns values such as ` lucas@northwind.test` into `lucas@northwind.test`. CRM exports often include a space after each comma, and that space can break exact matching later.\n\nRemove duplicates is useful when a cell contains the same value twice:\n\n```csv\n\"ava@orbit.test, ava@orbit.test, a.patel@workmail.test\"\n```\n\nWith duplicate removal enabled, that row creates one `ava@orbit.test` row instead of two. I turn it on for emails, phone numbers, URLs, and tags because repeated values rarely mean anything in those fields.\n\nLeave duplicate removal off when repetition carries meaning. For example, if a survey answer or order export repeats a product ID to represent quantity, removing duplicates would change the meaning of the data.\n\nSkip empty values helps with trailing delimiters:\n\n```csv\n\"mia@example.test,\"\n```\n\nWithout skipping empty values, the blank value after the comma may become an empty output row. With it enabled, the file keeps only the email row.\n\n> 🔍 **My default settings**\n>\n> For contact cleanup, I start with trim spaces on, duplicate removal on, and skip empty values on. I only change that when repeated values or blank values have a business meaning.\n\nIf filtering removes every split value in a cell, the original row is kept. That protects rows where the selected field is blank or where cleanup options remove only invalid split fragments.\n\n## Step 6: Preview the expanded rows {#step-6-preview-the-expanded-rows}\nBefore downloading, check the preview and the row counts.\n\n`Rows before` is the number of original data rows. `Rows after` is the number of rows after expansion. If a 120-row file becomes 190 rows, that means some cells contained two or more values.\n\nIn the preview, I check a few row types:\n\n- A contact with one email should stay as one row.\n- A contact with two emails should become two rows.\n- A contact with repeated emails should not create duplicate rows when duplicate removal is enabled.\n- Other columns, such as `Company`, `Tags`, and `Source`, should copy across each generated row.\n- Blank split values should appear only if I chose to keep them.\n\n![CSV Rows Splitter output preview and download result](/howto_images/split-csv-rows-by-delimiter/csv-rows-splitter-output-preview-download.png)\n\nThe preview can be capped at 100 output rows. That does not mean only 100 rows will be exported. The downloaded CSV contains the full generated result.\n\n> ⚠️ **Preview is for checking**\n>\n> Use the preview to confirm the structure, not to count every row manually. For larger files, download the CSV and inspect the full output in your spreadsheet, CRM staging workflow, or Datablist's [CSV editor](/csv-editor).\n\n## Step 7: Download the normalized CSV {#step-7-download-the-normalized-csv}\nWhen the preview looks right, copy the generated CSV or download it.\n\nFor small jobs, copying is fine. For larger files or anything you plan to import into another tool, download the CSV. You now have the same headers as the input, but the selected column contains one value per row.\n\nThat normalized shape is easier to use for:\n\n- CRM imports that expect one email or phone number per row.\n- Deduplication by email, phone number, SKU, URL, or ID.\n- Counting tags, categories, skills, or line items.\n- Filtering records before enrichment.\n- Joining the file with another dataset.\n\nIf duplicate contact rows are the next problem, use a [remove duplicate CSV rows](/how-to/remove-csv-duplicates) workflow after the split. I prefer splitting first when the identifier I care about is trapped inside a multi-value cell.\n\n## Check the result before using it {#check-the-result-before-using-it}\nHere is the practical check I do before importing the output anywhere important.\n\nStart with one row that should expand:\n\n```csv\nName,Company,Emails,Tags\nLucas Martin,Northwind,\"lucas@northwind.test, l.martin@personal.test, lucas@ops.test\",\"lead,partner\"\n```\n\nAfter splitting `Emails`, it should become:\n\n```csv\nName,Company,Emails,Tags\nLucas Martin,Northwind,lucas@northwind.test,\"lead,partner\"\nLucas Martin,Northwind,l.martin@personal.test,\"lead,partner\"\nLucas Martin,Northwind,lucas@ops.test,\"lead,partner\"\n```\n\nThen spot-check the full file:\n\n- Compare rows before and rows after.\n- Search for blank values in the split column.\n- Filter for a few contacts that had one, two, and three values.\n- Confirm quoted fields still open correctly in a spreadsheet.\n- Check repeated values if you enabled duplicate removal.\n- Validate a small import sample before sending the full file into a CRM.\n\nThat last point matters. Some CRMs expect one contact per row with several email fields. Others prefer one email per row or a separate related table. The right CSV shape depends on the target import format.\n\n## Other CSV columns you can split into rows {#other-csv-columns-you-can-split-into-rows}\nThe same workflow works for any column where one cell contains a list.\n\nProduct tags are a good example. If a `Tags` column contains `electronics,computers,work`, splitting that column gives you one row per tag. That makes counting, filtering, and enrichment easier.\n\nPhone numbers often work better with semicolon or pipe:\n\n```csv\nName,Phone Numbers\nMia Chen,\"+1-555-1000; +1-555-2000\"\n```\n\nUse trim spaces here. Phone exports often include a space after the semicolon.\n\nFor ecommerce categories, choose a delimiter that does not appear inside category names. If category names contain commas, pipe is safer than comma:\n\n```csv\nProduct,Categories\nLaptop,\"Electronics|Computers|Work\"\n```\n\nScraped URLs are another fit. A scraping workflow may return several profile URLs, product URLs, or links in one field. Split the URL list into one URL per row before validation, enrichment, or comparison.\n\nOrder IDs and line items can also work, but be careful with meaning. If repeated product IDs represent quantity, do not remove duplicates. If they are accidental duplicates, remove them.\n\nIf your problem is not splitting values into rows, but cleaning repeated values inside one multi-value field, read the guide on how to [deduplicate multi-value fields](/how-to/deduplicate-multiple-value-field).\n\n## Troubleshooting common CSV row splitting issues {#troubleshooting-common-csv-row-splitting-issues}\nIf values appear under the wrong headers, the CSV was probably parsed incorrectly before the split. The usual cause is an unquoted comma inside a field. Fix the quoting or export the CSV again, then reimport it.\n\nIf the output has too many rows, check the delimiter first. You may have selected comma when the real delimiter is semicolon, pipe, or a custom string. Also check duplicate values and doubled delimiters such as `a@example.test,,b@example.test`.\n\nIf the output has too few rows, inspect one raw cell from the selected column. The value may use a delimiter you did not notice. For example, some systems export lists with pipe:\n\n```csv\n\"lead|customer|partner\"\n```\n\nIn that case, comma will not split anything.\n\nIf spaces remain before values, enable trim spaces and run the split again. Spaces are easy to miss until you try to match emails or tags exactly.\n\nIf you only see 100 output rows in the preview, download the CSV. The preview can be capped, but the export contains the full result.\n\nIf you meant to divide one CSV file into smaller files, use the [CSV file splitter](/tools/csv-splitter). The CSV Rows Splitter expands values inside rows. The CSV file splitter creates separate files.\n\n## When splitting CSV rows by delimiter helps {#when-splitting-csv-rows-by-delimiter-helps}\nUse this workflow when you need one value per row before another data step.\n\nIt is useful for:\n\n- Normalizing CRM exports before deduplication.\n- Preparing one email, phone number, URL, tag, category, or ID per row.\n- Turning scraped lists into rows you can filter and enrich.\n- Counting tags, skills, categories, or linked records.\n- Preparing imports that reject multiple values in one field.\n- Checking whether repeated values are real duplicates or expected data.\n\nDo not use this workflow when the target system expects several values in one row. Also avoid it when several columns need relational modeling at the same time. In those cases, you may need a database-style workflow instead of a simple CSV transformation.\n\nFor most cleanup jobs, though, expanding one column at a time is enough. It gives you a clear file, a clear row count, and a clean next step.\n\n## Conclusion {#conclusion}\nSplitting a CSV column into multiple rows is mostly about choosing the right field and the right delimiter. Upload or paste the CSV, select the multi-value column, choose the delimiter inside the cell, configure cleanup options, preview the result, and download the normalized file.\n\nThe output keeps your original headers, copies the other columns, and gives you one value per row in the selected column. That structure is easier to deduplicate, import, filter, count, and enrich.\n\nWhen you are ready to try it, open the [CSV Rows Splitter](/tools/csv-rows-splitter) and start with a few rows before running the full file.\n\n## FAQ {#faq}\n### How do I split comma-separated values into rows in a CSV? {#how-do-i-split-comma-separated-values-into-rows-in-a-csv}\nOpen Datablist's CSV Rows Splitter, paste or upload your CSV, select the column that contains comma-separated values, choose comma as the cell delimiter, preview the expanded rows, then download the result.\n\n### What is the difference between a CSV delimiter and the delimiter inside a cell? {#what-is-the-difference-between-a-csv-delimiter-and-the-delimiter-inside-a-cell}\nThe CSV delimiter separates columns in the file. The delimiter inside a cell separates several values stored in one field. For example, a CSV may use comma between columns while a `Phone Numbers` cell uses semicolon between phone numbers.\n\n### Can I split a CSV column into rows without Excel? {#can-i-split-a-csv-column-into-rows-without-excel}\nYes. Use the online CSV Rows Splitter to paste or upload the file, choose the column and delimiter, preview the result, and export a new CSV. You do not need formulas, Power Query, or manual copy and paste.\n\n### Can I split several CSV columns at the same time? {#can-i-split-several-csv-columns-at-the-same-time}\nThe current workflow expands one selected column at a time. If you need to split several columns, download the result after the first split and run the exported CSV through the tool again for the next column.\n\n### What happens to the other columns when a row is split? {#what-happens-to-the-other-columns-when-a-row-is-split}\nOther columns are duplicated across the generated rows. If a contact row has three emails, the `Name`, `Company`, `Tags`, and other fields are copied onto each of the three output rows.\n\n### Why are my comma-separated values breaking into different columns? {#why-are-my-comma-separated-values-breaking-into-different-columns}\nThe cell probably contains commas but is not quoted as one CSV field. Values such as `\"a@example.test,b@example.test\"` should stay in one field. Without quotes, a CSV parser may treat the comma as a column separator.\n\n### Does the preview include every output row? {#does-the-preview-include-every-output-row}\nNot always. The preview can be capped at 100 output rows, but the downloaded CSV contains the full generated result.\n\n### When should I remove duplicate values inside a cell? {#when-should-i-remove-duplicate-values-inside-a-cell}\nUse duplicate removal when repeated values are cleanup noise, such as repeated emails, tags, phone numbers, URLs, or IDs. Leave it off when repeated values carry meaning, such as repeated item IDs that represent quantity.\n"
}