---
page_title: upper - Functions - Configuration Language
description: >-
  The upper function converts all cased letters in the given string to
  uppercase.
---

# `upper` Function

`upper` converts all cased letters in the given string to uppercase.

## Examples

```
> upper("hello")
HELLO
> upper("алло!")
АЛЛО!
```

This function uses Unicode's definition of letters and of upper- and lowercase.

## Related Functions

* [`lower`](/language/functions/lower) converts letters in a string to _lowercase_.
* [`title`](/language/functions/title) converts the first letter of each word in a string to uppercase.
