This is more than cosmetic cleanup
Spaces, parentheses, full-width punctuation, and mixed naming styles can make headers awkward in APIs, scripts, and databases. The tool first applies Unicode NFKC normalization, separates words, then rebuilds the name in the selected style.
Camel-style boundaries are recognized too
A lowercase letter or digit followed by an uppercase letter creates a word boundary before tokenization. So productName can be understood as “product name” and rebuilt as product_name, productName, or another selected form.
Blank and duplicate normalized names are handled
If a header becomes empty after normalization, it falls back to column. If multiple headers normalize to the same name, later ones get suffixes such as _2 and _3 so the output header stays unique.
safe_identifier currently uses underscore joining
In the current implementation, safe_identifier also joins tokens with underscores, so it looks close to snake_case. It does not promise compatibility with every database or language; reserved words and destination-specific naming rules still belong to the destination system.
Only the header changes
Cell values, row order, and column order stay untouched. That makes this useful as a preparation step when the data itself is already correct but the field names need to be machine-friendly.
Want the deeper explanation?