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.