How to parse a CSV file in Make without shifting columns
Turn CSV text into separate records in Make, keep quoted commas and empty cells in the right columns, and find delimiter and quote errors before sending data.
In this guide
Use CSV → Parse CSV to turn each row of a CSV file into a separate record in Make. The important check is not just a green tick: the right value must land under the right column name.
You will check a small file with a comma inside a value, an empty cell, quotation marks, and an accented character. These are easy places for a contact or order import to go wrong. Nothing will be sent to a customer, spreadsheet, or other app.
You need an existing Make account with permission to create a scenario, some available credits, and a desktop browser. Make Free is sufficient for this exercise; no trial, connected account, or file upload is needed. The interface and Free path were checked on September 25, 2026.
Choose a small piece of CSV
A CSV is plain text arranged in rows. A delimiter is the character between cells—often a comma, sometimes a semicolon. Open an existing CSV in a text editor to see which it uses. An Excel workbook ending in .xlsx is a different format; export a CSV copy first.
For your own file, work with a few non-sensitive rows that you are allowed to send to Make. Keep the header and original punctuation. If you just want to learn the steps, copy this fictional example:
request_id,topic,note,quantity
DN-LAB-101,"Website, mobile",,2
DN-LAB-102,Newsletter,"Said ""hello""",1
DN-LAB-103,Café,Unicode check,3
The first line names four columns. In the next line, "Website, mobile" is one cell because the comma is inside quotation marks. The two commas after it preserve an empty note cell. Inside a quoted cell, doubled quotes represent one literal quote: "Said ""hello""" becomes Said "hello".
Do not remove all quotation marks or split the text at every comma. Both shortcuts can move values into the wrong columns.
Set up one Parse CSV module
In Make, open Scenarios → Create a new scenario. Name the scenario CSV check. Click the large + in the middle of the canvas, search All apps for CSV, and choose Parse CSV.
A module is one step in a scenario. This one reads text; it does not need a connection to a storage service.
Set its fields as follows for the example:
| Field | Value | Why |
|---|---|---|
| CSV contains headers | Yes | The first line is a header, not a record |
| CSV headers (recommended) | request_id,topic,note,quantity |
Names the output fields in this order |
| Delimiter | Other | Lets you enter the exact separator |
| Delimiter character | , |
Matches the file |
| CSV | The complete sample above | Includes its header and all three rows |
For your own file, use its delimiter and column names in the same order. Separate the CSV headers names with that same delimiter. If the file has no header row, select No and enter meaningful column names yourself; do not discard its first real record.
Paste the text into CSV, then click Save. This field needs the file’s contents, not a filename or a link to a download. Starting with a small pasted sample lets you check the parser before connecting a file source.
Run it and inspect every field
Click Run once. With this single-module exercise, Make may warn that nothing uses its output. Choose Run anyway; if it also asks to save, choose Save anyway. That warning is expected here because you are inspecting the result without a destination.
When the run finishes, click the small operation bubble above the CSV module. Expand Operation 1 → Output. Each bundle is one parsed row. The example should produce exactly three bundles, with no fourth bundle for the header:
| request_id | topic | note | quantity |
|---|---|---|---|
| DN-LAB-101 | Website, mobile | (empty) | 2 |
| DN-LAB-102 | Newsletter | Said “hello” | 1 |
| DN-LAB-103 | Café | Unicode check | 3 |
Check the empty note as carefully as the filled cells: 2 must still be under quantity. For your own sample, compare every output row with the original text. A successful run with unexpected values is still an incorrect import.
Find a delimiter or quote error
If a run fails, open the red error bubble and read the message before changing the file. These checks cover two common causes:
| What you see | What to check |
|---|---|
Invalid opening quote at line 2 with this sample |
Check the delimiter first. Selecting ; for this comma-separated sample produces this error even though its quotes are correct. Restore ,. |
Quote Not Closed |
A quoted value has no closing quote. Check the reported line and any field continuing from the previous line. Restore the missing quote or export a fresh CSV from the source. |
| One large field, or values under the wrong names | Compare the real separator, header order, and number of cells. Some malformed input can look like a successful parse. |
| Header appears as a data record | Enable CSV contains headers when the first line really is a header. |
Café becomes unreadable characters |
Check the text before parsing. Re-export it as UTF-8; changing the delimiter will not repair damaged characters. |
After correcting the input or setting, run the same small sample again and compare its output. Do not select Ignore all errors to make an import appear successful.
Keep the checked result before adding a destination
Save the corrected scenario with the toolbar’s save icon. Leave its switch Inactive. You can also open the schedule control, choose On demand, and save, so it is only run deliberately.
You now have the useful result: separate records with the values in the right fields. When you later add a destination, map fields from this verified output and test with the same harmless sample first. Mapping means selecting an output field, such as request_id, for a destination field. A downstream action can run once per bundle, so three parsed rows can mean three writes—not one.
Do not schedule a pasted file repeatedly unless you intend to process the same rows every time. Connecting a changing file source and preventing duplicate imports are separate decisions.
Sources and useful links
- Make’s CSV integration — identifies the official Parse CSV module and its role.
- Make operations and bundles — explains why one input can produce several records and downstream operations.
- Make scheduling — describes On demand and the difference between saving and scheduling a scenario.