# Use formatters to apply logic to strings

> Browse the formatters that convert a selected value into text in a Smart String.

Browse the formatters that convert a selected value into text in a Smart String.

A [formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/smart-strings.md#formatters) converts the value produced by the [sources](/engine/7000.0/manual/scripting/generate-dynamic-text/sources.md) into its final text, applying logic such as pluralization, lists, or conditional output. Apply a formatter explicitly by name, or omit the name to let a formatter that supports automatic detection apply implicitly. The following formatters are available, and you can add your own.

| Formatter                                                                                                                  | Description                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| [Choose formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/choose-formatter.md)                   | Picks an output by matching the value against a set of options.                              |
| [Conditional formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/conditional-formatter.md)         | Picks an output based on the value's type and value.                                         |
| [Default formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/default-formatter.md)                 | Converts the value with `ToString` and the active culture.                                   |
| [Is Match formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/ismatch-formatter.md)                | Picks an output based on a regular expression match.                                         |
| [List formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/list-formatter.md)                       | Formats each item in a list, with separators.                                                |
| [Null formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/null-formatter.md)                       | Picks an output based on whether the value is null.                                          |
| [Plural formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/plural-formatter.md)                   | Picks a word form based on a count and the culture's plural rules.                           |
| [Sub string formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/substring-formatter.md)            | Extracts a substring of the value.                                                           |
| [Template formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/template-formatter.md)               | Applies a reusable named template.                                                           |
| [Time formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/time-formatter.md)                       | Formats a `TimeSpan`, or the time since a `DateTime` or `DateTimeOffset`, as localized text. |
| [Create a custom formatter](/engine/7000.0/manual/scripting/generate-dynamic-text/formatters/create-a-custom-formatter.md) | Write your own formatter.                                                                    |

## Additional resources

* [Smart Strings](/engine/7000.0/manual/scripting/generate-dynamic-text/smart-strings.md)
* [Smart String sources](/engine/7000.0/manual/scripting/generate-dynamic-text/sources.md)
* [Smart Strings settings](/engine/7000.0/manual/scripting/generate-dynamic-text/smart-strings-settings.md)
