---
title: "UPPER, LOWER and PROPER in Google Sheets: Change Text Case"
canonical: "https://www.owox.com/blog/articles/upper-lower-proper-functions-google-sheets"
updated: "2026-10-05"
---

# UPPER, LOWER and PROPER in Google Sheets: change text case

UPPER turns a text into capitals, LOWER into small letters, and PROPER capitalizes the first letter of every word. Google Sheets has no menu command for changing case, so this guide shows the formulas, how to turn their results into plain values, how to capitalize only the first letter of a sentence, and where PROPER gets names and abbreviations wrong.

[Google Sheets Tips](/blog/topics/google-sheets-tips) · Updated October 2, 2026 · [Vadym Kramarenko](/team/vadym-kramarenko) · 7 min read

![UPPER, LOWER and PROPER in Google Sheets: change text case](https://cdn.owox.com/www/webflow/6a1dc06e8167e791213a9ab3_MASTER-CASE-CONVERSION-IN-GOOGLE-SHEETS.png/public)

Three functions change the case of a text in Google Sheets:

| Function | “john SMITH” becomes |
| --- | --- |
| `=UPPER(A2)` | JOHN SMITH |
| `=LOWER(A2)` | john smith |
| `=PROPER(A2)` | John Smith |

Each takes one argument, the text or a cell that holds it, and leaves digits and punctuation as they are.

## Change case without a formula

Google Sheets has no menu command for changing case. The **Format > Text** menu holds only bold, italic, underline and strikethrough; the Capitalization submenu that Google Docs has is not there. The way to get the same result is a formula followed by a paste of its values:

1.  In an empty column, enter the formula, for example `=UPPER(A2)`, and fill it down.
2.  Select the results and copy them.
3.  Select the original cells and choose **Edit > Paste special > Values only** (Ctrl+Shift+V, or Cmd+Shift+V on a Mac).
4.  Delete the helper column.

The original cells now hold the converted text and no formula.

## UPPER

> `=UPPER(text)`

> `=UPPER(B3)`

![Google Sheets with names in small letters in column B and the formula =UPPER(B3) returning them in capitals](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f0b_AD_4nXc5TjPmhhC3M7MFZyXVTP0tbFi9iiHmngm3_zw3709m8LRizeP2Zi39VN4PJEwj4jouHnLTAptLAiTlKNuUMq3d6PwkMELChrbZdVPFgc95MyBsPJhRH2qsy4TbbMahqvs9UmZX3g.png/public)

UPPER is the usual way to make codes comparable: country codes, SKUs, coupon codes. Accented letters are converted as well, and the German ß becomes SS.

## The Turning Point

OWOX Data Marts

See your first report built in real time. _15 minutes._

1.  Connect your data warehouse
2.  Pick your metrics
3.  Get a live Google Sheets report

In the time it takes to write a ticket. Then imagine never writing that ticket again.

[Book a Demo](/book-a-call)

We'll use your actual use case

## LOWER

> `=LOWER(text)`

> `=LOWER(B3)`

![Google Sheets with names in capitals in column B and the formula =LOWER(B3) returning them in small letters](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f38_AD_4nXdrbB3UUlcfHuzOzUogkyu-XUsu0z6Mt-_zW3Lwi9TihwYkeFDo9yeXHDBb2KCN4C2vxH6b-pZrBC0GrBrRTapbqyaaYrHsI04KTZVGhCVMh2_Carbw-LQNkXZHhydTLmwAjV68gA.png/public)

The classic use is email addresses, which arrive in every mix of cases from forms and exports:

> `=LOWER(C3)`

![Google Sheets with email addresses in mixed case in column C and the formula =LOWER(C3) returning them in small letters](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f50_AD_4nXdzrE6z7iOqZlHC0bY5JvtDhQszYnGhTuOXU8fbJJKfbNu5I3gO_Ymjp4RvX8cxmqNsu4TDwZ0Foacff6RZjib8XS_MRJ3yYnZVjosaHjG3IAOKoNY4CCALvRxGiAEFniLL2Pkn1g.png/public)

Lowercasing matters before removing duplicates and before a lookup against a case-sensitive system. Inside Sheets, [VLOOKUP](/blog/articles/vlookup-in-google-sheets), [COUNTIF](/blog/articles/countif-and-countifs-google-sheets) and [UNIQUE](/blog/articles/unique-function-google-sheets) treat case differently: VLOOKUP and COUNTIF ignore it, UNIQUE does not, so “[Anna@x.com](mailto:Anna@x.com)” and “[anna@x.com](mailto:anna@x.com)” stay two rows in a UNIQUE list until they are lowercased.

## PROPER

> `=PROPER(text_to_capitalize)`

> `=PROPER(B3)`

![Google Sheets with names in small letters in column B and the formula =PROPER(B3) returning John Smith, Jane Doe and so on](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f26_AD_4nXeyo1SaPMBTS0HDzPCPhGSXPf6rQgYUTXwDKTBz_MsakNYvVw3d4ZjZ0G23lDo2451-f9ViCC4cmK7qrseUnyfoPb8cMb5QMUZRnXUX7FXJaR_OEL_ZGhLcasO_oBfq3SXtZv8xYg.png/public)

PROPER capitalizes the first letter of every word and lowercases the rest. A “word” for PROPER starts after anything that is not a letter, which gives these results:

| Text | PROPER returns | What happened |
| --- | --- | --- |
| o’connor | O’Connor | The letter after the apostrophe is capitalized |
| john’s | John’S | The same rule, where it is not wanted |
| mcdonald-smith | Mcdonald-Smith | Capital after the hyphen, none inside “Mcdonald” |
| nasa | Nasa | Abbreviations lose their capitals |
| iPhone | Iphone | Mixed-case names are flattened |
| 2nd | 2Nd | The letter after a digit is capitalized |
| e-mail | E-Mail | Capital after the hyphen |

PROPER is right for most first and last names and wrong for possessives, abbreviations and brand names. After applying it, fix the exceptions. For possessives, a regular expression that matches “’S” only at the end of a word leaves names such as O’Sullivan alone: `=REGEXREPLACE(PROPER(A2), "'S\b", "'s")`. For abbreviations, use [SUBSTITUTE](/blog/articles/substitute-function-google-sheets): `=SUBSTITUTE(PROPER(A2), "Nasa", "NASA")`.

## A whole column at once

With ARRAYFORMULA, one formula in the first row converts the column:

> `=ARRAYFORMULA(UPPER(C3:C10))`

![Google Sheets with street addresses in column C and the formula =ARRAYFORMULA(UPPER(C3:C10)) returning all of them in capitals](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f35_AD_4nXdgJGoPVbrsKyJNIx4l5mbL6wRWvoMQVZRSqH6i6uTy1wBaiAe4vIgKwVuZcjjmzxhDWd_-0MmqS9dTe5ii5wvXzh1esmXNgxVuIwq9zjv1H1jrv2QJFxI-WdIxAfdpszT7daHm.png/public)

> `=ARRAYFORMULA(PROPER(B3:B10))`

![Google Sheets with names in mixed case such as ALeX JoHNSoN in column B and the formula =ARRAYFORMULA(PROPER(B3:B10)) returning them as Alex Johnson](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f20_AD_4nXeAsk8CT23No6aiFIipPQrB18mcJYVoUPZ_Np02w5d_QCu4XEJcWTmxuZyRAGwVYqXqDaOHr-4oVArRx7sZrEUmaFKupoS4PRH72CTDp5TSicdMWZGmM0i7rw_YtH2SRZmi_Ti2Ow.png/public)

See [array formulas](/blog/articles/array-formulas-google-sheets).

## Capitalize only the first letter of a sentence

PROPER capitalizes every word. For sentence case, take the first letter in capitals and the rest in small letters:

> `=UPPER(LEFT(C3,1))&LOWER(RIGHT(C3,LEN(C3)-1))`

![Google Sheets with notes in mixed case in column C and a formula built from UPPER, LEFT, LOWER, RIGHT and LEN returning them with only the first letter capitalized](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f3b_AD_4nXe5Z5hwsA36dyJIQDW7AvNtNvS8vK-PaIjKCyLQS5biDx3XgB4z_S3yHgO9CRWCoCCSELZ1xFzCTHFEQkS_iy4i3Aup4UuNnrIUD2rFRMXZwJIeT_h2lajxUgAoRzy3JT5J51Gc.png/public)

*   **UPPER(LEFT(C3,1)):** the first character, capitalized.
*   **LOWER(RIGHT(C3,LEN(C3)-1)):** everything after it, in small letters.

Names and abbreviations inside the sentence are lowercased too (“call john at nasa”), so read the results. See [LEFT, RIGHT and MID](/blog/articles/left-right-mid-functions-google-sheets).

## With other functions

### TRIM: clean the spaces first

> `=PROPER(TRIM(C3))`

![Google Sheets with job titles with extra spaces and mixed case in column C and the formula =PROPER(TRIM(C3)) returning Senior Manager, Chief Financial Officer and so on](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f2f_AD_4nXe5grca3oA6uhF5HO4ehct8x6RTad9eLfXqeCk-ZQ3KStf9XkWsGKLcuOmVhosr2Cn8dd7PnCVDx5uLO-GvJ7VWCtnxH3C-RNx1u92_huCRpdCDe_nRxah3ztBxDckkL1FkHUT9VA.png/public)

[TRIM](/blog/articles/trim-clean-t-functions-google-sheets) removes the spaces at both ends and the double spaces inside, PROPER fixes the case.

### CONCATENATE: join, then convert

> `=PROPER(CONCATENATE(B3, " ", C3))`

![Google Sheets with first names in column B and last names in column C in mixed case and a formula returning the full names in proper case](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f14_AD_4nXdKuNhtnHrxMAYDeCWgWeIfVmYWC9gmY7f907YqPFelNI6FSz-JsxTeupypJygJrZNRuqUtGZ0J4sz04v92-wmVIX3cm-UIvUxF6UwBaD3cvPuCuN4-s7HyxuFq5UJRhJ1_-KNBHg.png/public)

> `=UPPER(CONCATENATE(B3, " ", C3))`

![Google Sheets with first and last names in two columns and the formula =UPPER(CONCATENATE(B3, “ “, C3)) returning the full names in capitals](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f11_AD_4nXfTKuqRgghZ302-VWNFakCdYvIBcNdA7b-yKE6uYSWXyFBbYJqUKUCAGFY-elK_YBwjNmRZHkfcCioav5yRvBSb_M6EA5AN2GHHP_JQiKwe6lTGAM9TO2q3MmUAPXupHS-uVlNkfQ.png/public)

The ampersand does the same: `=UPPER(B3 & " " & C3)`. See [CONCATENATE and the ampersand](/blog/articles/concatenate-and-ampersand-google-sheets).

### IF: convert only some rows

> `=IF(C3="VIP", UPPER(B3), B3)`

![Google Sheets with names in column B and a status in column C and the formula =IF(C3=“VIP”, UPPER(B3), B3) returning the names of VIP customers in capitals](https://cdn.owox.com/www/webflow/687e4ddff0d1adad4bdf9f1d_AD_4nXfv-nXebLWNDgiVl-SS1uqOJQuX9UaRTXwK439VB4UYJvX89wIK7YGOWS5mgoYhpPsTCr2Br9ru82mFjZTBxF2ve8lU6k8cCXT8V0RVHtdVVB-dFTeULOugqk6L-rjsLXU2-xzQ.png/public)

### EXACT: find the cells in the wrong case

[EXACT](/blog/articles/exact-function-google-sheets) compares two texts with their case. A text equals its own uppercase version only if it is already in capitals:

> `=EXACT(A2, UPPER(A2))`

The formula returns TRUE for “ABC-01” and FALSE for “Abc-01”. Used as a custom formula in conditional formatting with NOT around it, `=NOT(EXACT(A2, UPPER(A2)))`, it highlights the codes that are not fully in capitals.

## Numbers, dates and other languages

*   **Numbers:** the functions return text. `=UPPER(123)` gives the text “123”, which SUM ignores.
*   **Dates:** the date is converted as it is displayed. UPPER on a cell showing 1/5/2023 returns the text “1/5/2023”, no longer a date.
*   **Accented letters:** é, ü and ñ are converted correctly.
*   **Language-specific rules:** the functions follow general Unicode rules, not the rules of one language. The Turkish capital İ, for example, is not lowered to a plain i. Check the results for languages with special casing.

## Errors and wrong results

**⚠️ Error:** The formula shows the same text as before.

✅ **Solution:** The text has no letters to change (digits, symbols), or it is already in that case.

**⚠️ Error:** PROPER breaks possessives, abbreviations or brand names.

✅ **Solution:** That is how PROPER defines a word; see the table above. Correct the exceptions with REGEXREPLACE or SUBSTITUTE.

**⚠️ Error:** The original column still has the old text.

✅ **Solution:** The functions return a new value and do not change their source. Paste the results over the originals as values only.

**⚠️ Error:** After deleting the source column, the results turn into #REF!.

✅ **Solution:** The formulas still point to the deleted cells. Paste them as values before removing the source.

**⚠️ Error:** A converted number no longer adds up.

✅ **Solution:** The result is text. Do not apply case functions to numeric columns, or convert back with VALUE.

## Related Google Sheets functions

*   [TRIM, CLEAN and T](/blog/articles/trim-clean-t-functions-google-sheets): Remove extra spaces and non-printing characters.
*   [SUBSTITUTE](/blog/articles/substitute-function-google-sheets): Replace one text with another.
*   [EXACT](/blog/articles/exact-function-google-sheets): Compare two texts with their case.
*   [LEFT, RIGHT and MID](/blog/articles/left-right-mid-functions-google-sheets): Extract a part of a text.
*   [CONCATENATE and the ampersand](/blog/articles/concatenate-and-ampersand-google-sheets): Join texts.
*   [Remove duplicates](/blog/articles/remove-duplicates-google-sheets): Why case matters before deduplication.
*   [Data validation](/blog/articles/data-validation-google-sheets): Stop mixed case at entry.
*   [REGEX functions](/blog/articles/regex-functions-google-sheets): Match and replace by pattern.

## Case differences are a source problem

Mixed case in a sheet usually means the same value was typed or exported in several ways: “Facebook”, “facebook”, “FACEBOOK” as three campaign sources. LOWER makes them match in this file. The next export brings the three spellings back, and every report built on that data has to repeat the fix or silently split one channel into three rows.

The [OWOX Data Marts extension for Google Sheets](https://workspace.google.com/marketplace/app/owox_data_marts/94902851409) covers that half. A data analyst publishes a data mart (a table or an SQL query in your data warehouse) and makes it available for reports. In Sheets you open the extension, pick the data mart, tick the columns you want and run it. The rows land in a tab, ready for your formulas.

![Google Sheets with the OWOX Data Marts extension open beside an ad spend table: the Unified Ad Spend data mart, nine of fourteen columns ticked and a Save & Run button – the rows in the sheet come from a governed data mart, not a pasted export](https://cdn.owox.com/www/content-marketing-article/upper-lower-proper-functions-google-sheets/screens/1.png/public)

What changes for the person who maintains the sheet:

*   **Refresh replaces re-export.** _Refresh current report_ in the extension menu re-runs the same pull, and a scheduled refresh keeps the tab current without anyone touching it.
*   **The source is written on the sheet.** The header cell of an imported tab carries a note with the data mart it came from, the time of the import and a link to the report.
*   **No SQL and no warehouse access needed.** The analyst decides which data marts and columns are available. You choose from that list.

The extension does not write or change the analyst’s SQL. When the spelling is normalized once in that SQL, the values arrive in one case, and UPPER, LOWER and PROPER are needed only for presentation. The extension comes with the OWOX Cloud plans of [OWOX Data Marts](https://www.owox.com/app-signup); [spreadsheet reporting](/features/spreadsheet-reporting) describes both ways data reaches a sheet.

## Your New Normal

Turn your data into decisions.

Governed data marts give you the clean foundation ML needs to actually work.

*   No AI hallucinations
*   Analyst-governed definitions
*   Every number traces to SQL

[Get started free](https://www.owox.com/app-signup)

## FAQ

## Frequently Asked Questions

What is the purpose of the PROPER function in Google Sheets?

The PROPER function in Google Sheets capitalizes the first letter of each word while converting all other letters to lowercase. Use **\=PROPER(text)** to format names or titles correctly. It may not work perfectly for abbreviations like "NASA" or "iPhone."

Can I use these functions in combination with Google Sheets' conditional formatting?

Yes! Use UPPER, LOWER, or PROPER with custom formulas in conditional formatting. Example: To highlight uppercase text in A1:A10, use: **\=EXACT(A1, UPPER(A1))**. This applies formatting when the text is fully uppercase. Adjust the formula for lowercase or title case checks.

How can I remove case formatting and keep the original text unchanged?

To remove case formatting while keeping the original text, copy the converted text and use Paste values only (Ctrl + Shift + V on Windows or Cmd + Shift + V on Mac). This replaces formulas with static text, ensuring the text stays unchanged after removing the case conversion function.

Can these functions handle non-English characters?

Yes, the UPPER, LOWER, and PROPER functions in Google Sheets support non-English characters, including accented letters (e.g., é, ü, ñ). However, they may not correctly handle some languages with unique casing rules, such as Turkish. Always verify results for special characters.

Can I use UPPER, LOWER, and PROPER functions on multiple cells at once?

Yes! Apply UPPER, LOWER, or PROPER to multiple cells using an array formula. Example: **\=ARRAYFORMULA(UPPER(A1:A10)).** This converts all text in A1:A10 to uppercase. Replace UPPER with LOWER or PROPER for lowercase or title case formatting.

How can I convert text to lowercase in Google Sheets?

Use the LOWER function in Google Sheets to convert text to lowercase. The syntax is **\=LOWER(text)**, where text can be a string or cell reference. It changes all letters to lowercase while keeping numbers and symbols unchanged.

What is the UPPER function in Google Sheets, and how does it work?

The UPPER function in Google Sheets converts text to uppercase. Use **\=UPPER(text)** to change lowercase letters to capitals while keeping numbers and symbols unchanged.

## Who wrote this

![Vadym Kramarenko](https://cdn.owox.com/www/webflow/6798e703afdf787334941cde_Vadym-Kramarenko.png/public)

[Vadym Kramarenko](/team/vadym-kramarenko) · Growth Marketing Manager

Vadym Kramarenko is a Growth Marketing Manager at OWOX, where he drives user acquisition and product-led growth strategies. He hosts the OWOX podcast, interviewing analytics professionals about data-driven marketing, attribution, and reporting best practices. Vadym specializes in turning complex analytics concepts into practical, actionable marketing frameworks.

[LinkedIn](https://www.linkedin.com/in/vadim-kramarenko/) · [All articles](/team/vadym-kramarenko)

[Google Sheets Tips](/blog/topics/google-sheets-tips)

## Related articles

[Google Sheets Tips · UNIQUE Function in Google Sheets: Syntax, Examples and Errors · October 2, 2026](/blog/articles/unique-function-google-sheets)

[Google Sheets Tips · FILTER Function in Google Sheets: Formula and Examples · October 2, 2026](/blog/articles/google-sheets-filter-function)

[Google Sheets Tips · IF with VLOOKUP in Google Sheets: Formulas and Examples · October 2, 2026](/blog/articles/how-to-use-vlookup-with-if-statement-in-google-sheets)

[See all articles →](/blog/articles)

## Book a call

You are booked. The invitation is on its way to , with the calendar invite and the meeting link.

[Reschedule](#)

[Cancel](#)

## Schedule a meeting

You are booked. The invitation is on its way to , with the calendar invite and the meeting link.

[Reschedule](#)

[Cancel](#)

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Google Sheets Tips](https://www.owox.com/blog/topics/google-sheets-tips) — /blog/topics/google-sheets-tips.md
- [Vadym Kramarenko](https://www.owox.com/team/vadym-kramarenko) — /team/vadym-kramarenko.md
- [Book a Demo](https://www.owox.com/book-a-call) — /book-a-call.md
- [VLOOKUP](https://www.owox.com/blog/articles/vlookup-in-google-sheets) — /blog/articles/vlookup-in-google-sheets.md
- [COUNTIF](https://www.owox.com/blog/articles/countif-and-countifs-google-sheets) — /blog/articles/countif-and-countifs-google-sheets.md
- [UNIQUE](https://www.owox.com/blog/articles/unique-function-google-sheets) — /blog/articles/unique-function-google-sheets.md
- [SUBSTITUTE](https://www.owox.com/blog/articles/substitute-function-google-sheets) — /blog/articles/substitute-function-google-sheets.md
- [array formulas](https://www.owox.com/blog/articles/array-formulas-google-sheets) — /blog/articles/array-formulas-google-sheets.md
- [LEFT, RIGHT and MID](https://www.owox.com/blog/articles/left-right-mid-functions-google-sheets) — /blog/articles/left-right-mid-functions-google-sheets.md
- [TRIM](https://www.owox.com/blog/articles/trim-clean-t-functions-google-sheets) — /blog/articles/trim-clean-t-functions-google-sheets.md
- [CONCATENATE and the ampersand](https://www.owox.com/blog/articles/concatenate-and-ampersand-google-sheets) — /blog/articles/concatenate-and-ampersand-google-sheets.md
- [EXACT](https://www.owox.com/blog/articles/exact-function-google-sheets) — /blog/articles/exact-function-google-sheets.md
- [Remove duplicates](https://www.owox.com/blog/articles/remove-duplicates-google-sheets) — /blog/articles/remove-duplicates-google-sheets.md
- [Data validation](https://www.owox.com/blog/articles/data-validation-google-sheets) — /blog/articles/data-validation-google-sheets.md
- [REGEX functions](https://www.owox.com/blog/articles/regex-functions-google-sheets) — /blog/articles/regex-functions-google-sheets.md
- [OWOX Data Marts](https://www.owox.com/app-signup)
- [spreadsheet reporting](https://www.owox.com/features/spreadsheet-reporting) — /features/spreadsheet-reporting.md
- [Google Sheets Tips · FILTER Function in Google Sheets: Formula and Examples · October 2, 2026](https://www.owox.com/blog/articles/google-sheets-filter-function) — /blog/articles/google-sheets-filter-function.md
- [Google Sheets Tips · IF with VLOOKUP in Google Sheets: Formulas and Examples · October 2, 2026](https://www.owox.com/blog/articles/how-to-use-vlookup-with-if-statement-in-google-sheets) — /blog/articles/how-to-use-vlookup-with-if-statement-in-google-sheets.md
- [See all articles →](https://www.owox.com/blog/articles) — /blog/articles.md
