# Power Automate: Change Text to Upper or Lower Case

> For the full documentation index, see https://250highstreet.com/llms.txt

> Use toUpper() and toLower() in Power Automate to change text case. Includes a proper case pattern, case-insensitive compares, and fixes for null errors.

Use toUpper() for capital letters and toLower() for small letters. Pass the text in, such as toLower(triggerOutputs()?\['body/Title'\]), and the function returns the new text.

## Which functions change text case?

Power Automate has two case functions: toUpper() and toLower(). Microsoft documents both in the workflow expression reference. Each takes one text value and returns it in the new case.

There is no built-in proper case function. The next section shows a pattern you can build from other functions.

## How do you add toUpper() or toLower() to a flow?

1.  Open the action that needs the changed text, such as Compose or Send an email.
2.  Select the field, then select the Expression tab.
3.  Type toLower(, then select the dynamic content tab and pick the value.
4.  Close the bracket and select Add.
5.  Run the flow and check the output in run history.

## How do you make proper case, with a capital first letter?

Build it from three functions. Use toUpper() on the first character, toLower() on the rest, and concat() to join them.

For a value in a variable named Name, write concat(toUpper(substring(variables('Name'), 0, 1)), toLower(substring(variables('Name'), 1))). This capitalizes only the first letter of the whole text, not each word.

The substring() call fails on empty text. Check the length first. See [how substring() works](/guides/power-automate-substring-extract-text/) for the rules.

## How do you compare text without matching case?

Change both sides to the same case before you compare. For example, test whether toLower(Status) equals approved.

Microsoft does not say whether text compares in a Condition ignore case, so do not rely on it. Lowercase both values and the test no longer depends on how a person typed the text. Test your own data and check the result in run history.

The same idea helps when a Switch always goes to Default. See [the Switch action guide](/guides/power-automate-switch-action/).

## Why do you get an error when the text is empty or null?

1.  A blank column sends null. The toLower() function expects text, so the run can fail with an invalid type error.
2.  Wrap the value in coalesce(), for example toLower(coalesce(Title, '')). The empty text then passes through.
3.  A choice column returns an object. Use its Value field, not the whole column.
4.  See [the invalid type error guide](/guides/power-automate-invalid-type-expected-string-but-got-null/) for more causes.

## Does case change save back to the SharePoint item?

No. The function only returns new text inside the flow. To change the stored value, add an Update item action and place the expression in the column field.

To avoid a flow that triggers itself, read [how to stop an infinite loop](/guides/power-automate-flow-triggers-itself-infinite-loop/) before you update the same list.

## FAQ

### What is the lowercase function in Power Automate?

toLower(). It takes one text value and returns it in small letters.

### What is the uppercase function in Power Automate?

toUpper(). It takes one text value and returns it in capital letters.

### Is there a proper case function?

No. Join toUpper() on the first letter with toLower() on the rest, using concat() and substring().

### Why does toLower() fail on an empty column?

A blank column sends null, and the function expects text. Wrap the value in coalesce() with an empty text fallback.

## Sources

- [Reference guide to workflow expression functions (Microsoft Learn)](https://learn.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference)

## Related guides

- [Power Automate substring(): Get Part of a Text Value](/guides/power-automate-substring-extract-text/)
- [Power Automate Switch Action: Steps and Common Problems](/guides/power-automate-switch-action/)
- [Fix "Invalid type. Expected String but got Null" in Power Automate](/guides/power-automate-invalid-type-expected-string-but-got-null/)
- [Power Automate flow keeps running itself over and over](/guides/power-automate-flow-triggers-itself-infinite-loop/)

Source: https://250highstreet.com/guides/power-automate-change-text-case-toupper-tolower/
