Skip to main content

Liquid filters for product feeds

Your description has HTML in it and the marketplace rejects HTML. Your title is 40 characters too long. Your weight needs to say kg on the end and your dates are in the wrong format.

Filters fix all of that on the way out, without touching a single product. Chain them inside {{ }}, separated by the | (pipe) symbol, and the data leaves your store in exactly the shape the marketplace asked for.

{{ product.description | stripHtml | truncate: 5000 }}

Below is every filter available, grouped by what it works on. Each one has a worked example - open it to see the input and output.

String & HTML filters

These filters help format text values in your feed.

lowercase

Converts text to lowercase.

Example
{{ product.name | lowercase }}

Input: Dash Digital Watch

Output: dash digital watch

uppercase

Converts text to uppercase.

Example
{{ product.name | uppercase }}

Input: Dash Digital Watch

Output: DASH DIGITAL WATCH

replace

Replaces a word or phrase.

Example
{{ product.name | replace: 'Digital', 'Analog' }}

Input: Dash Digital Watch

Output: Dash Analog Watch

append

Adds text at the end.

Example
{{ product.name | append: ' - Best Choice' }}

Input: Dash Digital Watch

Output: Dash Digital Watch - Best Choice

prepend

Adds text at the beginning.

Example
{{ product.name | prepend: 'Best Choice - ' }}

Input: Dash Digital Watch

Output: Best Choice - Dash Digital Watch

capitalize

Adds text at the beginning.

Example
{{ product.color | capitalize }}

Input: dark red

Output: Dark red

escape

Escapes HTML characters.

Example
{{ product.description | escape }}

Input: <p>This is a <strong>great</strong> product! <a href="https://example.com">Check it out</a>.</p>
Output: &lt;p&gt;This is a &lt;strong&gt;great&lt;/strong&gt; product! &lt;a href=&quot;https://example.com&quot;&gt;Check it out&lt;/a&gt;.&lt;/p&gt;

nl2br

Replaces newlines (\n) with <br> tags.

Details
{{ product.short_description | nl2br }}

Input:

This is the first line.

This is the second line.

This is the third line.

Output: This is the first line.<br>This is the second line.<br>This is the third line.

remove

Removes a specific word.

Details
{{ product.name | remove: 'Digital' }}

Input: Dash Digital Watch

Output: Dash Watch

stripHtml

Removes all HTML tags.

Details
{{ product.description | stripHtml }}

Input: <p>This is a <strong>great</strong> product!</p> <p>It has <a href="https://example.com">amazing features</a>.</p>

Output: This is a great product! It has amazing features.

newline_to_br

Converts \n to <br>.

Details
{{ product.description | newline_to_br }}

Input: This is a great product!

It has amazing features.

Enjoy the best experience ever.

Output: This is a great product! It has amazing features.

truncate

Truncates text to a specific character length.

Details
{{ product.name | truncate: 15 }}

Input: Dash Digital Watch

Output: Dash Digital Wa

truncatewords

Truncates text to a specific number of words.

Details
{{ product.name | truncatewords: 2 }}

Input: Dash Digital Watch

Output: Dash Digital

plain

Converts text to a plain format, removing styles.

Details
{{ product.description | plain }}

Input: <p>This is a <strong>great</strong> product!</p> <p>It has amazing <em>features</em> and comes with a <a href="#">warranty</a>.</p>

Output: This is a great product! It has amazing features and comes with a warranty.

ifEmpty

Returns a default value if the field is empty.

Details
{{ product.color | ifEmpty: 'Multicolor' }}

Input: " "

Output: "Multicolor"

html_entity_decode

Convert HTML entities to their corresponding characters.

Details
{{ product.color | ifEmpty: 'Multicolor' }}

Input: I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now.

Output: I'll "walk" the <b>dog</b> now.

html2plain

Converts any text into a plain, clean format by removing unnecessary elements like HTML tags, excessive spaces, and template placeholders.

Details
{{ product.color | ifEmpty: 'Multicolor' }}

Input: <b>Hello</b> &nbsp; World! {{block type="cms/block"}}.

Output: Hello World!

clean

Removes invalid and non-printable UTF-8 characters from a string, ensuring it contains only valid, readable text.

Details
{{ product.color | ifEmpty: 'Multicolor' }}

Input: Hello\xF0\x28\x8C\x28World!

Output: HelloWorld!

trim

Removes whitespace from both ends of a string.

Details
{{ product.name | trim }}

Input: " Awesome Product "

Output: Awesome Product

ltrim

Removes whitespace from the beginning (left side) of a string.

Details
{{ product.sku | ltrim }}

Input: " SKU12345"

Output: SKU12345

rtrim

Removes whitespace from the end (right side) of a string.

Details
{{ product.sku | rtrim }}

Input: "SKU12345 "

Output: SKU12345

stripStyleTag

Removes <style> tags and their content from the text.

Details
{{ product.description | stripStyleTag }}

Input: <p>Stylish product</p><style>p { color: red; }</style>

Output: <p>Stylish product</p>

strip_newlines

Removes all newline characters (\n, \r) from a string.

Details
{{ product.description | strip_newlines }}

Input:

Line 1
Line 2
Line 3

Output: Line 1Line 2Line 3


Date & JSON filters

These filters modify date formats and convert objects into JSON.

dateFormat

Returns a default value if the field is empty.

Details
{{ product.created_at | dateFormat: 'd.m.Y H:i' }}

Input: 2016-02-18 10:11:12

Output: 18.02.2016 10:11

json

Converts an object or array to JSON format.

Details
{{ product.gallery | json }}

Input: ['image1.jpg', 'image2.jpg', 'image3.jpg']

Output: ["image1.jpg", "image2.jpg", "image3.jpg"]


Number filters

These filters help you manipulate and format numerical data in your feed.

ceil

Rounds the number up to the nearest integer.

Details
{{ product.weight | ceil }}

Input: 1.423

Output: 2

floor

Rounds the number down to the nearest integer.

Details
{{ product.weight | floor }}

Input: 1.423

Output: 1

round

Rounds the number to the nearest integer or a specified number of decimals.

Details
{{ product.weight | round: '2' }}

Input: 1.423

Output: 1.42

{{ product.weight | round }}

Input: 1.423

Output: 1

numberFormat

Formats a number using a specified format (similar to the PHP number_format function).

Details
{{ product.price | numberFormat: '2', '.', ',' }}

Input: 1000.54321

Output: 1,000.54


Price & currency filters

These filters help you format prices and handle currency conversions.

price

Formats the product price to the default format.

Details
{{ product.price | price }}

Input: 100.4200

Output: 100.42

convert

Converts a price from the base currency to the specified currency.

Details
{{ product.price | convert: 'EUR' }}

Input: 100

Output: 92.28

inclTax

Adds tax to the product price.

Details
{{ product.price | inclTax | price }}

Input: 100

Output: 120 (if tax rate is 20%)

exclTax

Removes tax from the product price.

Details
{{ product.price | exclTax | price }}

Input: 120

Output: 100 (if tax rate is 20%)


Mathematical operations

These filters help perform basic arithmetic operations on numbers.

plus

Adds a specified value to the number.

Details
{{ product.price | plus: '2' }}

Input: 100

Output: 102

minus

Subtracts a specified value from the number.

Details
{{ product.price | minus: '2' }}

Input: 100

Output: 98

times

Multiplies the number by a specified value.

Details
{{ product.price | times: '2' }}

Input: 100

Output: 200

divided_by

Divides the number by a specified value.

Details
{{ product.price | divided_by: '2' }}

Input: 100

Output: 50

modulo

Returns the remainder after dividing by a specified value.

Details
{{ product.price | modulo: '2' }}

Input: 100

Output: 0


Array filters

These filters allow you to manipulate and access elements within an array.

first

Returns the first element in the array.

Details
{{ product.images | first }}

Input: ['image1.jpg', 'image2.jpg', 'image3.jpg']

Output: image1.jpg

last

Returns the last element in the array..

Details
{{ product.images | last }}

Input: ['image1.jpg', 'image2.jpg', 'image3.jpg']

Output: image3.jpg

join

Joins all elements in an array into a single string using a specified separator (glue).

Details
{{ product.images | join: ', ' }}

Input: ['image1.jpg', 'image2.jpg', 'image3.jpg']

Output: image1.jpg, image2.jpg, image3.jpg

count

Returns the number of elements in the array.

Details
  {{ product.images | count }}

Input: ['image1.jpg', 'image2.jpg', 'image3.jpg']

Output: 3

select

Selects values for a specified key from the array.

Details
{{ product.options | select: 'color' }}

Input: [{ "color": "red" }, { "color": "blue" }]

Output: ['red', 'blue']


URL filters

These filters allow you to return URLs with different security protocols and base URLs.

secure

Returns a secure URL using https://.

Details
{{ product.url | secure }}

Input: www.example.com/product

Output: https://www.example.com/product

unsecure

Returns an unsecure URL using http://.

Details
{{ product.url | unsecure }}

Input: www.example.com/product

Output: http://www.example.com/product

mediaSecure

Returns a media URL using the secure base URL for user media files.

Details
{{ product.image | mediaSecure }}

Input: image1.jpg

Output: https://www.example.com/media/image1.jpg

mediaUnsecure

Returns a media URL using the unsecure base URL for user media files.

Details
{{ product.image | mediaUnsecure }}

Input: image1.jpg

Output: http://www.example.com/media/image1.jpg


Image filters

These filters allow you to manipulate image properties.

resize

Resizes an image to a specified width and height.

Details
{{ product.image | resize: '300x300' }}

Input: image1.jpg
Output: Resized image to 300px x 300px.