Standard Filters
These are the default filters. They have been written by Shopify.
Array Filters
Array filters are used to modify the output of arrays.
join
Joins the elements of an array with the character passed as the parameter. The result is a single string.
Input
{{ product.tags | join: ', ' }}Output
tag1, tag2, tag3first
Returns the first element of an array.
Input
<!-- product.tags = "sale", "mens", "womens", "awesome" -->
{{ product.tags | first }}Output
salefirst can be used in dot notation, in cases where it needs to be used inside a tag.
{% if product.tags.first == "sale" %}
This product is on sale!
{% endif %}last
Gets the last element passed in an array.
Input
<!-- product.tags = "sale", "mens", "womens", "awesome" -->
{{ product.tags | last }}Output
awesomelast can be used in dot notation, in cases where it needs to be used inside a tag.
{% if product.tags.last == "sale"%}
This product is on sale!
{% endif %}Using last on a string returns the last character in the string.
Input
<!-- product.name = "Awesome Shoes" -->
{{ product.name | last }}Output
smap
Accepts an array element’s attribute as a parameter and creates a string out of each array element’s value.
Input
<!-- collection.name = "Spring", "Summer", "Fall", "Winter" -->
{% assign collection_titles = collections | map: 'title' %}
{{ collection_titles }}Output
SpringSummerFallWintersize
Returns the size of a string or an array.
Input
{{ 'this is a 30 character string' | size }}Output
30size can be used in dot notation, in cases where it needs to be used inside a tag.
{% if collections.frontpage.products.size > 10 %}
There are more than 10 products in this collection!
{% endif %}sort
Sorts the elements of an array by a given attribute of an element in the array.
{% assign products = collection.products | sort: 'price' %}
{% for product in products %}
<h4>{{ product.name }}</h4>
{% endfor %}The order of the sorted array is case-sensitive.
Input
<!-- products = "a", "b", "A", "B" -->
{% assign products = collection.products | sort: 'name' %}
{% for product in products %}
{{ product.name }}
{% endfor %}Output
A B a bString Filters
String filters are used to manipulate outputs and variables of the string type.
append
Appends characters to a string.
Input
{{ 'sales' | append: '.jpg' }}Output
sales.jpgcamelcase
Converts a string into CamelCase.
Input
{{ 'coming-soon' | camelcase }}Output
ComingSooncapitalize
Capitalizes the first word in a string
Input
{{ 'capitalize me' | capitalize }}Output
Capitalize medowncase
Converts a string into lowercase.
Input
{{ 'UPPERCASE' | downcase }}Output
uppercaseescape
Escapes a string.
Input
{{ "<p>test</p>" | escape }}Output
<!-- The <p> tags are not rendered -->
<p>test</p>newline_to_br
Inserts a
linebreak HTML tag in front of each line break in a string.
Input
{% capture var %}
One
Two
Three
{% endcapture %}
{{ var | newline_to_br }}Output
One <br>
Two<br>
Three<br>prepend
Prepends characters to a string.
Input
{{ 'sale' | prepend: 'Made a great ' }}Output
Made a great saleremove
Removes all occurrences of a substring from a string.
Input
{{ "Hello, world. Goodbye, world." | remove: "world" }}Output
Hello, . Goodbye, .remove_first
Removes only the first occurrence of a substring from a string.
Input
{{ "Hello, world. Goodbye, world." | remove_first: "world" }}Output
Hello, . Goodbye, world.replace
Replaces all occurrences of a string with a substring.
Input
<!-- product.name = "Awesome Shoes" -->
{{ product.name | replace: 'Awesome', 'Mega' }}Output
Mega Shoesreplace_first
Replaces the first occurrence of a string with a substring.
Input
<!-- product.name = "Awesome Awesome Shoes" -->
{{ product.name | replace_first: 'Awesome', 'Mega' }}Output
Mega Awesome Shoesslice
The slice filter returns a substring, starting at the specified index. An optional second parameter can be passed to specify the length of the substring. If no second parameter is given, a substring of one character will be returned.
Input
{{ "hello" | slice: 2 }}
{{ "hello" | slice: 1, 3 }}Output
e
ellIf the passed index is negative, it is counted from the end of the string.
Input
{{ "hello" | slice: -3, 2 }}Output
elsplit
The split filter takes on a substring as a parameter. The substring is used as a delimiter to divide a string into an array.
Input
{% assign words = "Uses cheat codes, calls the game boring." | split: ' ' %}
First word: {{ words.first }}
First word: {{ words[0] }}
Second word: {{ words[1] }}
Last word: {{ words.last }}
All words: {{ words | join: ', ' }}
{% for word in words %}
{{ word }}
{% endfor %}Output
First word: Uses
First word: Uses
Second word: cheat
Last word: boring.
All words: Uses, cheat, codes,, calls, the, game, boring.
Uses cheat codes, calls the game boring.strip
Strips tabs, spaces, and newlines (all whitespace) from the left and right side of a string.
Input
{{ ' too many spaces ' | strip }}Output
too many spaceslstrip
Strips tabs, spaces, and newlines (all whitespace) from the left side of a string.
Input
"{{ ' too many spaces ' | lstrip }}"Output
<!-- Notice the empty spaces to the right of the string -->
too many spacesrstrip
Strips tabs, spaces, and newlines (all whitespace) from the right side of a string.
Input
{{ ' too many spaces ' | rstrip }}Output
too many spacesstrip_html
Strips all HTML tags from a string.
Input
{{ "<h1>Hello</h1> World" | strip_html }}Output
Hello Worldstrip_newlines
Removes any line breaks/newlines from a string.
{{ product.description | strip_newlines }}truncatewords
Truncates a string down to ‘x’ words, where x is the number passed as a parameter. An ellipsis (…) is appended to the truncated string.
Input
{{ "The cat came back the very next day" | truncatewords: 4 }}Output
The cat came back...uniq
Removes any duplicate instances of an element in an array.
Input
{% assign fruits = "orange apple banana apple orange" %}
{{ fruits | split: ' ' | uniq | join: ' ' }}Output
orange apple bananaupcase
Converts a string into uppercase
Input
{{ 'i want this to be uppercase' | upcase }}Output
I WANT THIS TO BE UPPERCASEurl_escape
Identifies all characters in a string that are not allowed in URLS, and replaces the characters with their escaped variants.
Input
{{ "<hello> & <shopify>" | url_escape }}Output
%3Chello%3E%20&%20%3Cshopify%3EMath Filters
Math filters allow you to apply mathematical tasks. It can be linked and, as with any other filters, are applied in order of left to right.
ceil
Rounds an output up to the nearest integer.
Input
{{ 4.6 | ceil }}
{{ 4.3 | ceil }}Output
5
5divided_by
Divides an output by a number.
Input
<!-- product.price = 200 -->
{{ product.price | divided_by: 10 }}Output
20floor
Rounds an output down to the nearest integer.
Input
{{ 4.6 | floor }}
{{ 4.3 | floor }}Output
4
4minus
Subtracts a number from an output.
Input
<!-- product.price = 200 -->
{{ product.price | minus: 15 }}Output
185plus
Adds a number to an output.
Input
<!-- product.price = 200 -->
{{ product.price | plus: 15 }}Output
215round
Rounds the output to the nearest integer or specified number of decimals.
Input
{{ 4.6 | round }}
{{ 4.3 | round }}
{{ 4.5612 | round: 2 }}Output
5
4
4.56times
Multiplies an output by a number.
Input
<!-- product.price = 200 -->
{{ product.price | times: 1.15 }}Output
230modulo
Divides an output by a number and returns the remainder.
Input
{{ 12 | modulo:5 }}Output
2