HubSpot import: "Incorrect number of columns"
HubSpot's own troubleshooting guide states this error in one sentence: “The import file contains at least one column without a header.” The machine-readable code behind it, INCORRECT_NUMBER_OF_COLUMNS, is what a HubSpot API response or a developer's own error log actually shows — a blank cell in the header row is enough to raise it, whether or not any data row is actually the wrong width.
Built for anyone preparing a contact or company file for HubSpot or Salesforce — sales operations, RevOps, and agencies migrating a client's data.
Read from HubSpot's own Knowledge Base, with a Community thread confirming the machine-readable codeHubSpot Knowledge Base · HubSpot Community — knowledge.hubspot.com states the error text; the INCORRECT_NUMBER_OF_COLUMNS code is confirmed on HubSpot's own Community — both read 13 September 2026.
What this error means
HubSpot's importer checks the header row before it reads a single data row: every column needs a name, because that name is what a property gets mapped to. A blank cell anywhere in the header row — a trailing comma in an export, a column someone deleted the label from but not the data — raises this error immediately, even if every data row underneath is a perfectly normal width.
What causes it, and what our engine actually checks
CRM Import Check's emptyHeader rule reads the header row and flags any column whose name is blank, the same condition HubSpot's own error text describes — a file-level finding, not a row-level one, because it is true of the file before a single row is checked. A second rule, raggedRow, checks something HubSpot's own sentence does not mention at all: whether any data row actually has a different number of cells than the header does, and names exactly which rows.
What the engine found in a sample file
A four-column sample file with a blank cell in its third header position raised emptyHeader immediately, before a single data row was read — the exact condition HubSpot's own error text describes. Two of its four data rows were also the wrong width for that header — one short a cell, one carrying an extra one — and the engine flagged both, by row number, as raggedRow, a warning.
emptyHeaderBlockerraggedRowWarning2 and 3Blocker stops the import outright, or lets it through with data silently lost. Warning usually gets through but is worth checking before you trust the numbers. Notice is informational — safe to leave, safe to clear.
Reproduced from a sample file — read September 13, 2026.
Check your own file for this
Drop the contact file you were about to import into HubSpot below. It is read in this browser tab, the same engine runs the same check, and you will see immediately whether it carries a blank header or a ragged row.
CSV, TSV or Excel, up to 20 MB
How to fix it by hand
Open the file in a spreadsheet program and look at the header row cell by cell: a blank one needs a real column name before HubSpot can map anything under it to a property. Then check the rows this page's own tool names as ragged — a row with too few cells is usually missing a trailing value, and a row with too many usually has an unquoted comma sitting inside a single field, such as a company name written “Acme, Inc” without quotes around it.
Frequently asked questions
- What does HubSpot's "Incorrect number of columns" error mean?
- It means at least one cell in your file's header row is blank. HubSpot's own error text names exactly that — “The import file contains at least one column without a header” — and its own machine-readable code for the same condition is INCORRECT_NUMBER_OF_COLUMNS.
- What is INCORRECT_NUMBER_OF_COLUMNS?
- It is the machine-readable error code behind the same message, the form you actually see in a HubSpot API response or a developer's error log rather than the plain-language sentence HubSpot's Knowledge Base states for a person reading it in the browser.
- Can CRM Import Check fix a blank header or a ragged row automatically?
- No — it names the blank column and every ragged row by number, but it cannot invent the header name that belongs there or decide which field a spilled value was meant for. Both need someone who recognises the original data.
What CRM Import Check does with this file
Upload a file carrying this problem into CRM Import Check and it names the blank header column and every ragged row by number before you import anything, rather than the guesswork — “delete the columns to the right,” “start from a new spreadsheet” — that answers this error without ever opening your actual file.
The file you'd check is read in your browser tab — it is never uploaded anywhere.
What it cannot do here
The tool can tell you a header cell is blank and which rows are the wrong width; it cannot guess what a missing header name should have been, or which side of a ragged row holds the value that spilled into the wrong column. Both are decisions only someone who recognises the original data can make.