How to convert excel cell text to any case format in one click
- Step 1Export the Excel column to CSV — In Excel: **File → Save As → CSV UTF-8 (Comma delimited) (*.csv)**. The Case Normalizer page redirects to the CSV Case Converter, which reads CSV — converting via CSV avoids xlsx formatting/precision surprises and keeps the round-trip lossless for text columns.
- Step 2Drop the CSV onto the tool — The first row is treated as the header and shown as a column checklist. Parsing is quote-aware (RFC-4180), so a comma or newline inside a quoted cell won't shift columns.
- Step 3Pick the case mode — Choose UPPER (
toUpperCase), lower (toLowerCase, the default), Title (first letter of each whitespace-delimited token), or Sentence (first letter of the whole cell up, the rest down). Each option shows a worked example. - Step 4Choose which columns to convert — Tick the columns you want normalised — e.g.
CityandCountry. Leave every box unticked to apply the mode to all columns. Headers are excluded automatically; only data rows change. - Step 5Convert and review the count — Run it. The tool reports how many cells actually changed (cells already in the target case are counted as unchanged), so you can sanity-check before exporting.
- Step 6Re-open in Excel or chain the next step — Open the output CSV in Excel, or pass it straight to whitespace trimming, dedup, or header rename. For per-column formatting checks afterward, see excel-format-inspector.
The four case modes — exact behaviour
Verified against the shipped converter (lib/csv-utils.ts applyCase / lib/runner/bundles-src/csv-case-converter). Title and Sentence are deliberately conservative for tabular data.
| Mode | Rule | Input → Output | Default |
|---|---|---|---|
| UPPER | toUpperCase() on the whole cell | new york → NEW YORK | — |
| lower | toLowerCase() on the whole cell | John.Smith@X.COM → john.smith@x.com | Yes (default mode) |
| Title | First letter of every whitespace-delimited token up, rest down (regex \w\S*) | JOHN smith → John Smith | — |
| Sentence | First character of the cell up, everything else down — no per-sentence detection | PAID in full. urgent → Paid in full. urgent | — |
Where this tool stops — and what to use instead
The converter only changes letter case. These adjacent jobs need a sibling tool.
| You need to… | This tool? | Use instead |
|---|---|---|
| Change letter case (UPPER/lower/Title/Sentence) | Yes | This tool |
| Trim leading/trailing spaces or tabs | No | csv-whitespace-trimmer |
| Remove duplicate rows after normalising | No | csv-deduplicator |
| Rename / re-case the header row itself | No | csv-header-rename |
| Detect numbers stored as text vs real numbers | No | excel-format-inspector |
Tier limits (the CSV Case Converter you reach)
Because the page redirects to the CSV tool, CSV-family limits apply — not the Excel-family numbers the Excel landing page advertises.
| Tier | Max file size | Max rows | Files at once |
|---|---|---|---|
| Free | 2 MB | 500 | 2 |
| Pro | 100 MB | 100,000 | 10 |
| Pro-media | 500 MB | 500,000 | 50 |
| Developer | 500 MB | Unlimited | Unlimited |
Cookbook
Real before/after rows for the four modes, plus the column-scoping pattern that keeps you from over-converting.
Lowercase just the email column for case-insensitive matching
Emails are case-insensitive in practice, so lowercasing them before a VLOOKUP or a database join removes false mismatches. Scope to the email column only so you don't flatten proper nouns elsewhere.
Input (Email,Name): John.Smith@GMAIL.com,John Smith MARY@example.COM,Mary Jones Mode: lower | Columns: Email only Output: john.smith@gmail.com,John Smith mary@example.com,Mary Jones
Title-case shouting product names from a supplier feed
Supplier feeds often arrive in ALL CAPS. Title mode capitalises the first letter of each whitespace token. Note the conservative behaviour on hyphens — covered in edge cases.
Input: WIDGET PRO MAX STAINLESS-STEEL BOLT Mode: title Output: Widget Pro Max Stainless-steel Bolt <- hyphen NOT a token boundary
UPPER for country / currency codes
Two- and three-letter codes should be uppercase for consistency with ISO conventions and downstream lookups.
Input: gb usd fr Mode: upper Output: GB USD FR
Sentence-case messy free-text without per-sentence rules
Sentence mode only uppercases the very first character of the cell and lowercases the rest. It does NOT capitalise after a period — by design, since spreadsheet cells rarely hold prose.
Input: CUSTOMER asked about REFUND. see notes Mode: sentence Output: Customer asked about refund. see notes
Leave headers and SKUs alone, normalise the rest
Headers are never converted. Combine that with column scoping to protect identifier columns while cleaning the human-readable ones.
Input (header preserved, SKU left out of selection): SKU,City AB-1001,new york CD-2002,LONDON Mode: title | Columns: City only Output: SKU,City AB-1001,New York CD-2002,London
Edge cases and what actually happens
Page redirects to the CSV Case Converter
By designOpening /excel-tools/excel-case-normalizer sends you straight to the CSV Case Converter — that is the working engine. Convert your Excel data by saving the sheet as CSV UTF-8 first. Output is CSV, which Excel re-opens cleanly.
Title Case keeps hyphenated words as one token
ExpectedTitle mode tokenises on whitespace (\w\S*), not on hyphens. stratford-upon-avon becomes Stratford-upon-avon, not Stratford-Upon-Avon. This is intentional and matches the browser tool exactly. If you need every hyphen segment capitalised, do a follow-up find/replace or split on the hyphen first.
Sentence case does not capitalise after a period
By designSentence mode uppercases only the first character of the whole cell and lowercases everything else. done. NEXT step → Done. next step. There is no per-sentence boundary detection — deliberately, because cells are rarely multi-sentence prose.
Headers are never converted
PreservedOnly data rows change; the first row is left exactly as-is. To re-case the headers themselves, use csv-header-rename.
Turkish dotless 'ı' / locale-specific case
LimitationConversion uses JavaScript toUpperCase/toLowerCase, not locale-aware toLocaleUpperCase. Turkish dotted/dotless i, German ß edge cases, and other locale rules are NOT applied. For those, normalise in a script with the proper locale.
Accented Unicode (José, Müller)
SupportedStandard accented Latin characters round-trip correctly: josé → JOSÉ under UPPER, MÜLLER → müller under lower. Save as CSV UTF-8 so the bytes survive the Excel round-trip without mojibake.
Numbers and symbols pass through unchanged
PreservedCase conversion is a no-op for digits, punctuation, and whitespace. Order #1001 → (UPPER) ORDER #1001. Whitespace is untouched — for spaces use csv-whitespace-trimmer.
Free tier hits 500 rows / 2 MB
Tier limitThe CSV Case Converter caps Free at 500 rows and 2 MB. Larger files need Pro (100,000 rows / 100 MB) or higher. Split a big export with a row-limiter first, or upgrade.
Empty cells stay empty
PreservedSentence mode short-circuits on an empty string and returns it unchanged; the other modes return empty from empty. No undefined or stray characters are introduced.
Already-correct cells counted as unchanged
ExpectedIf a cell is already in the target case, the tool leaves it and does not include it in the 'cells converted' count — so a low count on a clean column is normal, not an error.
Frequently asked questions
Does this tool actually open .xlsx files?
The Excel Case Normalizer page redirects to the CSV Case Converter, which reads CSV. To normalise an Excel column, save the sheet as CSV UTF-8 in Excel first, convert, then re-open the CSV. This avoids any xlsx formatting or number-precision surprises and keeps text columns lossless.
What are the four case modes exactly?
UPPER (toUpperCase on the whole cell), lower (toLowerCase, the default), Title (first letter of each whitespace-delimited token up, rest down), and Sentence (first letter of the whole cell up, the rest down with no per-sentence detection).
Why didn't Title Case capitalise after my hyphen?
Title mode tokenises by whitespace, not hyphens. stainless-steel becomes Stainless-steel. That matches the shipped tool. If you need each segment capitalised, split on the hyphen or do a follow-up find/replace.
Will my headers get converted too?
No. Only data rows are converted; the header row is preserved verbatim. To re-case headers, use csv-header-rename.
Can I convert only specific columns?
Yes. Tick the columns you want; leave them all unticked to convert every column. This lets you lowercase emails while leaving SKUs and product names untouched.
Does it handle accented characters like José or Müller?
Yes — JavaScript's toUpperCase/toLowerCase handle standard Unicode. Save as CSV UTF-8 so the bytes survive the round-trip. Locale-specific rules (Turkish dotless i) are not applied.
What's the difference between Title and Sentence case?
Title Case capitalises the first letter of every word: john smith → John Smith. Sentence case capitalises only the first letter of the whole cell: john smith → John smith.
Is this faster than UPPER()/LOWER()/PROPER() in Excel?
For multiple columns, yes — no helper column, no drag-fill, no paste-special-values, no helper-column deletion. One selection converts the chosen columns in a single pass.
Does it change whitespace or remove duplicates?
No — it only changes letter case. For spaces use csv-whitespace-trimmer; for duplicates use csv-deduplicator after normalising.
How big a file can I process?
Free is 500 rows / 2 MB; Pro is 100,000 rows / 100 MB; Pro-media 500,000 / 500 MB; Developer unlimited rows. These are the CSV-family limits because the page redirects to the CSV tool.
Does my data get uploaded?
No. The CSV Case Converter processes everything in your browser. Customer names, emails, and addresses never leave your machine.
What output do I get?
A CSV with the same structure, headers preserved, and only the selected columns' data cells re-cased. Re-open it in Excel or chain it into trimming, dedup, or excel-format-inspector.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.