Filters transform the value on their left. Chain them when the output of one is the input to the next.
$util provides zero-input generators — each call produces a fresh value:
| Utility | Type | Description |
|---|
$util.uuid | string | Random UUID v4 |
$util.now | string | Current ISO 8601 timestamp |
$util.timestamp | number | Unix timestamp (milliseconds) |
$util.timestampSeconds | number | Unix timestamp (seconds) |
$util.today | string | Today’s date (YYYY-MM-DD) |
$util.fileTimestamp | string | File-safe date/time (YYYY-MM-DD_HHmmss) |
$util.random | number | Random integer 0–100 |
$util.randomFloat | number | Random float 0–1 |
$util.password | string | Secure random 16-character password |
$util.randomHex | string | 32 random hex characters |
$util.randomBase64 | string | 32 random bytes as base64 |
$util.emptyObject | object | Empty {} |
$util.emptyArray | array | Empty [] |
$util.true | boolean | Boolean true |
$util.false | boolean | Boolean false |
$util.null | null | Null value |
Example:
// → "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
// → "2026-02-18T14:30:00.000Z"
Filters transform values using the pipe (|) syntax:
{{ fetch-users.name | upcase }}
{{ fetch-users.items | size }}
{{ some-step.createdAt | date: "%Y-%m-%d" }}
QuickFlo supports all standard LiquidJS filters (string, math, array, date, etc.) plus the custom filters listed below.
| Filter | Description | Example |
|---|
base64Encode | Encode string to Base64 | {{ "hello" | base64Encode }} → aGVsbG8= |
base64Decode | Decode Base64 string | {{ "aGVsbG8=" | base64Decode }} → hello |
fromJson | Parse JSON string to object | {{ jsonString | fromJson }} |
toJson | Convert value to JSON string | {{ obj | toJson }} |
| Filter | Description | Example |
|---|
basicAuth | Base64-encode username:password | {{ "user" | basicAuth: "pass" }} |
basicAuthHeader | Full Basic ... header value | {{ "user" | basicAuthHeader: "pass" }} |
basicAuthHeaderFromObject | Basic auth header from object with username/password fields | {{ creds | basicAuthHeaderFromObject }} |
| Filter | Description | Example |
|---|
toString | Convert to string (objects become JSON) | {{ 123 | toString }} → "123" |
toNumber | Convert to number (0 if invalid) | {{ "42" | toNumber }} → 42 |
toInt | Convert to integer (truncates decimal) | {{ "12.9" | toInt }} → 12 |
toFloat | Convert to float | {{ "12.5" | toFloat }} → 12.5 |
toBoolean | Convert to boolean ("true", "1", "yes" → true) | {{ "true" | toBoolean }} → true |
toArray | Wrap value in array (parses JSON strings) | {{ "hello" | toArray }} → ["hello"] |
| Filter | Description | Example |
|---|
array | Create array from arguments | {{ "" | array: 1, 2, 3 }} → [1, 2, 3] |
range | Create number range | {{ 0 | range: 5 }} → [0, 1, 2, 3, 4] |
find | Find first item where field equals value | {{ users | find: "id", 42 }} |
distinctBy | Remove duplicates by field | {{ users | distinctBy: "email" }} |
distinctByFields | Remove duplicates by multiple fields | {{ items | distinctByFields: "name", "email" }} |
arrayConcat | Concatenate arrays | {{ arr1 | arrayConcat: arr2 }} |
push | Add item to end of array | {{ items | push: "new" }} |
| Filter | Description | Example |
|---|
pick | Keep only specified keys | {{ user | pick: "name", "email" }} |
omit | Remove specified keys | {{ user | omit: "password" }} |
keys | Get array of object keys | {{ user | keys }} |
values | Get array of object values | {{ user | values }} |
objectMerge | Merge objects together | {{ defaults | objectMerge: overrides }} |
| Filter | Description | Example |
|---|
padStart | Pad string at start to target length | {{ "5" | padStart: 3, "0" }} → "005" |
padEnd | Pad string at end to target length | {{ "hi" | padEnd: 5, "." }} → "hi..." |
substring | Extract substring by index | {{ "hello" | substring: 1, 4 }} → "ell" |
includes | Check if string contains substring | {{ "hello" | includes: "ell" }} → true |
startsWith | Check if string starts with prefix | {{ "hello" | startsWith: "he" }} → true |
endsWith | Check if string ends with suffix | {{ "hello" | endsWith: "lo" }} → true |
strConcat | Concatenate multiple values | {{ "Hello" | strConcat: " ", "World" }} → "Hello World" |
stripDiacritics | Remove accents and diacritical marks (é→e, ñ→n, ü→u) | {{ "José García" | stripDiacritics }} → "Jose Garcia" |
| Filter | Description | Example |
|---|
eq | Equal | {{ status | eq: "active" }} |
ne | Not equal | {{ status | ne: "deleted" }} |
gt | Greater than | {{ age | gt: 18 }} |
gte | Greater than or equal | {{ score | gte: 100 }} |
lt | Less than | {{ price | lt: 50 }} |
lte | Less than or equal | {{ count | lte: 10 }} |
| Filter | Description | Example |
|---|
coalesce | First non-null value | {{ value | coalesce: "fallback" }} |
ternary | Conditional value selection | {{ isAdmin | ternary: "Admin", "User" }} |
and | Logical AND | {{ hasAccess | and: isActive }} |
or | Logical OR | {{ isAdmin | or: isManager }} |
not | Logical NOT | {{ isDeleted | not }} |
| Filter | Description | Example |
|---|
min | Minimum of values | {{ 5 | min: 3, 8 }} → 3 |
max | Maximum of values | {{ 5 | max: 3, 8 }} → 8 |
sum | Sum all numbers in array | {{ amounts | sum }} |
avg | Average of numbers in array | {{ scores | avg }} |
| Filter | Description | Example |
|---|
now | Current ISO 8601 timestamp | {{ "" | now }} |
timestamp | Current Unix timestamp (ms) | {{ "" | timestamp }} |
formatCurrentDateTime | Format current time | {{ "" | formatCurrentDateTime: "YYYY-MM-DD" }} |
| Filter | Description | Example |
|---|
hash | Cryptographic hash (sha256, sha512, md5) | {{ "data" | hash }} or {{ "data" | hash: "md5" }} |
hmac | HMAC signature | {{ "message" | hmac: "secret" }} |
password | Generate secure random password | {{ "" | password }} or {{ "" | password: 24, false }} |
randomHex | Random hex string | {{ "" | randomHex }} → 32 hex characters |
randomBase64 | Random base64 string | {{ "" | randomBase64 }} |
All telephony filters use libphonenumber-js for parsing and validation.
| Filter | Description | Example |
|---|
toE164 | Convert to E.164 international format | {{ "202-555-1234" | toE164: "US" }} → +12025551234 |
e164ToNanpa | Convert E.164 to NANPA national format | {{ "+12025551234" | e164ToNanpa }} → (202) 555-1234 |
isValidPhone | Check if phone number is valid | {{ "202-555-1234" | isValidPhone: "US" }} → true |
isValidE164 | Check if strictly valid E.164 format | {{ "+12025551234" | isValidE164 }} → true |
formatPhone | Format to NATIONAL, INTERNATIONAL, or E.164 | {{ "+12025551234" | formatPhone: "INTERNATIONAL" }} |
phoneCountry | Get ISO country code | {{ "+12025551234" | phoneCountry }} → US |
phoneCallingCode | Get country calling code | {{ "+12025551234" | phoneCallingCode }} → 1 |
phoneNationalNumber | Get national number without country code | {{ "+12025551234" | phoneNationalNumber }} → 2025551234 |
The toE164, isValidPhone, and formatPhone filters accept an optional default country code (e.g., "US") for parsing numbers without a country prefix.