The decision is based on data rows, not the header
A column named unused is removed if every data cell below it is blank. Conversely, an empty-looking header is kept if at least one data row contains a value. The tool asks “does this column contain data?”, not “does its title look useful?”
Whitespace can count as blank—or not
In trim mode, a cell containing only spaces is considered blank. In empty-string mode, those spaces count as content. This matters with exported CSVs that carry invisible padding.
Zero and false are not blank
Values such as 0, false, or - keep a column alive. The tool tests emptiness, not whether the value feels meaningful. Removing “all zero” columns would require a different rule.
Missing trailing cells count as blank
If a short CSV row does not have a value for a later column, that missing cell behaves as blank. The column is still kept if any other row has a real value there.
Kept columns stay in their original order
The tool removes only the empty columns. It does not reorder what remains, which is useful when downstream processing depends on the original sequence of fields.
Want the deeper explanation?