# Filters URL: /docs/syntax/filters/ Section: syntax Tags: syntax, filters -------------------------------------------------------------------------------- Filters Filters transform values in template expressions using the pipe syntax. Basic Usage {{ name | upper }} {{ title | truncate(50) }} {{ items | join(", ") }} Chaining Filters {{ name | lower | capitalize }} {{ text | striptags | truncate(100) }} Pipeline Operator Use |> for improved readability: {{ title |> escape |> upper |> truncate(50) }} Common Filters String Filters Filter Description Example upper Uppercase {{ "hello" \| upper }} → HELLO lower Lowercase {{ "HELLO" \| lower }} → hello capitalize Capitalize first {{ "hello" \| capitalize }} → Hello title Title case {{ "hello world" \| title }} → Hello World trim Strip whitespace {{ " hi " \| trim }} → hi truncate Shorten text {{ text \| truncate(50) }} replace Replace text {{ s \| replace("a", "b") }} striptags Remove HTML {{ html \| striptags }} Collection Filters Filter Description Example first First item {{ items \| first }} last Last item {{ items \| last }} length Item count {{ items \| length }} sort Sort items {{ items \| sort }} reverse Reverse order {{ items \| reverse }} unique Remove duplicates {{ items \| unique }} join Concatenate {{ items \| join(", ") }} take First N items {{ items \| take(5) }} skip Skip N items {{ items \| skip(10) }} HTML Filters Filter Description Example escape HTML escape {{ html \| escape }} safe Mark as safe {{ trusted \| safe }} striptags Remove tags {{ html \| striptags }} Number Filters Filter Description Example abs Absolute value {{ -5 \| abs }} → 5 round Round number {{ 3.7 \| round }} → 4 int Convert to int {{ "42" \| int }} → 42 float Convert to float {{ "3.14" \| float }} → 3.14 Utility Filters Filter Description Example default Fallback value {{ x \| default("N/A") }} tojson JSON encode {{ data \| tojson }} pprint Pretty print {{ data \| pprint }} debug Debug output {{ items \| debug }} Filter Arguments Filters can accept arguments: {{ text | truncate(50) }} {{ text | truncate(50, killwords=true) }} {{ text | truncate(50, end="...") }} {{ items | sort(attribute="date", reverse=true) }} Sorting with Attributes Sort objects by attribute: {% for post in posts | sort(attribute="date") %} {{ post.title }} {% end %} {# Multiple attributes #} {% for page in pages | sort(attribute="weight,title") %} {{ page.title }} {% end %} {# Reverse order #} {% for post in posts | sort(attribute="date", reverse=true) %} {{ post.title }} {% end %} Grouping Group items by attribute: {% for group in posts | groupby("category") %} <h2>{{ group.grouper }}</h2> {% for post in group.list %} {{ post.title }} {% end %} {% end %} Filtering Items {# Select items matching condition #} {{ items | selectattr("is_active") }} {{ items | selectattr("status", "eq", "published") }} {# Reject items matching condition #} {{ items | rejectattr("is_draft") }} Safe HTML Mark content as trusted HTML: {{ html_content | safe }} {# With reason for code review #} {{ cms_block | safe(reason="sanitized by bleach library") }} See Also Filter Reference — Complete filter list Custom Filters — Create your own filters Variables — Output expressions -------------------------------------------------------------------------------- Metadata: - Word Count: 533 - Reading Time: 3 minutes