Formatting
NLT makes it easy to display numbers, dates, and text in polished, reader-friendly formats. Just add a formatting modifier after your variable and the engine handles the rest.
Currency
Format any number as a currency amount using as "currency". By default, it formats as US dollars:
{the user's Balance, as "currency"}To use a different currency, add the currency code after currency:
{the user's Balance, as "currency EUR"}{the user's Balance, as "currency JPY"}Numbers are automatically formatted with thousands separators. For example, 1234.5 becomes $1,234.50.
Supported Currencies
| Code | Symbol | Decimals | Code | Symbol | Decimals |
|---|---|---|---|---|---|
| USD | $ | 2 | SGD | S$ | 2 |
| EUR | € | 2 | VND | ₫ | 0 |
| GBP | £ | 2 | THB | ฿ | 2 |
| JPY | ¥ | 0 | MYR | RM | 2 |
| CNY | ¥ | 2 | IDR | Rp | 0 |
| KRW | ₩ | 0 | PHP | ₱ | 2 |
| INR | ₹ | 2 | BRL | R$ | 2 |
| AUD | A$ | 2 | CHF | CHF | 2 |
| CAD | C$ | 2 |
If you use a currency code that isn't in the table above, it will still work -- the code is used as a prefix. For example, as "currency XYZ" produces XYZ 250.75.
Percentage
Format numbers as percentages using as "percentage":
{the user's Score, as "percentage"}{the user's Rate, as "percentage"}Ratio auto-detection: Values between -1 and 1 (like 0.156 or 0.5) are automatically treated as ratios and multiplied by 100. So a value of 0.5 becomes 50%, and 0.156 becomes 15.6%. Whole numbers like 85 are used as-is, giving you 85%.
Dates
Date Presets
NLT includes three built-in date formats:
| Preset | Syntax | Example Output |
|---|---|---|
| Short date | as "short date" | 15 Mar 2026 |
| Long date | as "long date" | March 15, 2026 |
| Time | as "time" | 2:30 PM |
{the user's Signup Date, as "short date"}{the user's Signup Date, as "long date"}{the user's Last Login, as "time"}Custom Date Formats
Build your own date format using these tokens:
| Token | Description | Example |
|---|---|---|
DD | Day of month (zero-padded) | 01, 15, 31 |
MM | Month number (zero-padded) | 01, 12 |
MMM | Short month name | Jan, Mar, Dec |
MMMM | Full month name | January, March, December |
YYYY | Four-digit year | 2026 |
HH | Hour (24-hour, zero-padded) | 00, 14, 23 |
mm | Minutes (zero-padded) | 00, 30, 59 |
A | AM/PM marker | AM, PM |
{the user's Date, as "DD MMM YYYY"}{the user's Date, as "DD/MM/YYYY"}{the user's Date, as "MMMM D, YYYY"}{the user's Date, as "HH:mm A"}Text Transforms
Change the casing of any text value:
| Modifier | Input | Output |
|---|---|---|
uppercase | hello world | HELLO WORLD |
lowercase | HELLO WORLD | hello world |
titlecase | it's a good day | It's A Good Day |
capitalize | hello world | Hello world |
{the user's Name, uppercase}{the user's Name, titlecase}{the user's Name, capitalize}titlecase is smart about apostrophes -- it's a test becomes It's A Test, not It'S A Test. And capitalize only changes the very first character, leaving everything else as-is.
Rounding
Round numbers to a specific number of decimal places:
{the user's Score, round 2}{the user's Rating, round 0}Truncation
Shorten long text to a maximum number of characters, with an automatic ... added:
{the user's Bio, truncate 50}Combining Formats
You can combine formatting with other modifiers like math operations:
{the user's Subtotal times 1.08, as "currency"}{the user's Price times 0.85, as "currency EUR"}Formatting is always applied after math operations, so you can calculate a value and format the result in a single expression.