{"title":"Liquid filters reference","slug":"liquid-filters-reference","url":"https://support.storeconnect.com/articles/liquid-filters-reference","url_markdown":"https://support.storeconnect.com/articles/liquid-filters-reference.md","subtitle":null,"summary":"Complete reference for every Liquid filter available in StoreConnect templates, covering math, string, array/list, map/object, date/time, number formatting, collection, URL, video, theme, record, and product content filters, each with syntax and examples.","type":"Developer_Documentation","video_url":"","keywords":"liquid filters, filter reference, math filters, string filters, array filters, date filters, money filter, collection filters, map filters, url filters, theme filters, record filters, product filters, liquid reference, storeconnect liquid","last_modified":"2026-08-21T07:12:35+0000","body_markdown":"Liquid filters transform the output of variables and expressions using the pipe `|` syntax: `{{ value | filter_name: argument }}`. StoreConnect includes all standard Liquid filters plus an extensive set of custom extensions.\n\nFor the categorized index of available filters, see [Liquid filters](liquid-filters).\n\n---\n\n## Math filters\n\n### `abs`\n\nReturns the absolute value.\n\n\n```liquid\n\n{{ -17 | abs }}\n{{- \"Output: 17\" -}}\n\n{{ \"-19.86\" | abs }}\n{{- \"Output: 19.86\" -}}\n```\n\n\n### `at_least`\n\nReturns the larger of the input and the minimum value.\n\n\n```liquid\n\n{{ 4 | at_least: 5 }}\n{{- \"Output: 5\" -}}\n```\n\n\n### `at_most`\n\nReturns the smaller of the input and the maximum value.\n\n\n```liquid\n\n{{ 4 | at_most: 3 }}\n{{- \"Output: 3\" -}}\n```\n\n\n### `ceil`\n\nRounds up to the nearest whole number.\n\n\n```liquid\n\n{{ 1.2 | ceil }}\n{{- \"Output: 2\" -}}\n\n{{ \"3.5\" | ceil }}\n{{- \"Output: 4\" -}}\n```\n\n\n### `floor`\n\nRounds down to the nearest whole number.\n\n\n```liquid\n\n{{ 1.8 | floor }}\n{{- \"Output: 1\" -}}\n```\n\n\n### `round`\n\nRounds to the nearest integer, or to the specified decimal places.\n\n\n```liquid\n\n{{ 1.2 | round }}\n{{- \"Output: 1\" -}}\n\n{{ 183.357 | round: 2 }}\n{{- \"Output: 183.36\" -}}\n```\n\n\n### `plus`\n\nAdds a number.\n\n\n```liquid\n\n{{ 4 | plus: 2 }}\n{{- \"Output: 6\" -}}\n```\n\n\n### `minus`\n\nSubtracts a number.\n\n\n```liquid\n\n{{ 4 | minus: 2 }}\n{{- \"Output: 2\" -}}\n```\n\n\n### `times`\n\nMultiplies by a number.\n\n\n```liquid\n\n{{ 3 | times: 2 }}\n{{- \"Output: 6\" -}}\n```\n\n\n### `divided_by`\n\nDivides by a number. Integer division with an integer divisor rounds down — use a float divisor for decimal results.\n\n\n```liquid\n\n{{ 5 | divided_by: 3 }}\n{{- \"Output: 1 (integer division)\" -}}\n\n{{ 20 | divided_by: 7.0 }}\n{{- \"Output: 2.857...\" -}}\n```\n\n\n### `modulo`\n\nReturns the remainder of division.\n\n\n```liquid\n\n{{ 24 | modulo: 7 }}\n{{- \"Output: 3\" -}}\n```\n\n\n---\n\n## String filters\n\n### `append`\n\nAppends a string.\n\n\n```liquid\n\n{{ \"/my/url\" | append: \".html\" }}\n{{- \"Output: /my/url.html\" -}}\n```\n\n\n### `prepend`\n\nPrepends a string.\n\n\n```liquid\n\n{{ \"World\" | prepend: \"Hello \" }}\n{{- \"Output: Hello World\" -}}\n```\n\n\n### `capitalize`\n\nMakes the first character uppercase and the rest lowercase.\n\n\n```liquid\n\n{{ \"my GREAT title\" | capitalize }}\n{{- \"Output: My great title\" -}}\n```\n\n\n### `downcase` / `upcase`\n\nConverts to lowercase or uppercase.\n\n\n```liquid\n\n{{ \"Han Solo\" | downcase }}\n{{- \"Output: han solo\" -}}\n\n{{ \"title\" | upcase }}\n{{- \"Output: TITLE\" -}}\n```\n\n\n### `strip` / `lstrip` / `rstrip`\n\nRemoves whitespace from both sides, the left side only, or the right side only.\n\n\n```liquid\n\n{{ \"  hello  \" | strip }}\n{{- \"Output: hello\" -}}\n```\n\n\n### `strip_html`\n\nRemoves all HTML tags.\n\n\n```liquid\n\n{{ \"The \u003cem\u003efox\u003c/em\u003e jumps\" | strip_html }}\n{{- \"Output: The fox jumps\" -}}\n```\n\n\n### `strip_newlines`\n\nRemoves all newline characters.\n\n### `escape` / `escape_once`\n\nHTML-escapes special characters. `escape_once` avoids double-escaping already-escaped entities.\n\n\n```liquid\n\n{{ \"O'Brien \u0026 Co.\" | escape }}\n{{- \"Output: O\u0026#39;Brien \u0026amp; Co.\" -}}\n```\n\n\n### `url_encode` / `url_decode`\n\nEncodes/decodes URL-unsafe characters.\n\n\n```liquid\n\n{{ \"john@example.com\" | url_encode }}\n{{- \"Output: john%40example.com\" -}}\n```\n\n\n### `newline_to_br`\n\nInserts `\u003cbr /\u003e` before each newline.\n\n### `replace` / `replace_first`\n\nReplaces all occurrences, or only the first occurrence.\n\n\n```liquid\n\n{{ \"do do do\" | replace: \"do\", \"re\" }}\n{{- \"Output: re re re\" -}}\n\n{{ \"do do do\" | replace_first: \"do\", \"re\" }}\n{{- \"Output: re do do\" -}}\n```\n\n\n### `remove` / `remove_first`\n\nRemoves all occurrences, or only the first.\n\n\n```liquid\n\n{{ \"rain in Spain\" | remove: \"ain\" }}\n{{- \"Output: r in Sp\" -}}\n```\n\n\n### `split`\n\nSplits a string into an array.\n\n\n```liquid\n\n{% assign tags = \"red,green,blue\" | split: \",\" %}\n{{ tags | join: \" / \" }}\n{{- \"Output: red / green / blue\" -}}\n```\n\n\n### `truncate`\n\nShortens to the specified character count (including the suffix). Default suffix is `...`.\n\n\n```liquid\n\n{{ \"Mary had a little lamb.\" | truncate: 15 }}\n{{- \"Output: Mary had a l...\" -}}\n\n{{ \"Mary had a little lamb.\" | truncate: 15, \"--\" }}\n{{- \"Output: Mary had a li--\" -}}\n\n{{ \"Mary had a little lamb.\" | truncate: 15, \"\" }}\n{{- \"Output: Mary had a litt\" -}}\n```\n\n\n### `truncatewords`\n\nShortens to the specified number of words.\n\n\n```liquid\n\n{{ \"Mary had a little lamb.\" | truncatewords: 3 }}\n{{- \"Output: Mary had a...\" -}}\n```\n\n\n### `slice`\n\nReturns a substring (for strings) or subarray (for arrays) starting at the given index. Negative indices count from the end.\n\n\n```liquid\n\n{{ \"Earthquake\" | slice: 2, 5 }}\n{{- \"Output: rthqu\" -}}\n```\n\n\n### `size`\n\nReturns the character count of a string or item count of an array.\n\n\n```liquid\n\n{{ \"hello\" | size }}\n{{- \"Output: 5\" -}}\n```\n\n\n---\n\n## Array/list filters\n\n### `join`\n\nCombines array items into a string.\n\n\n```liquid\n\n{% assign tags = \"red,green,blue\" | split: \",\" %}\n{{ tags | join: \" | \" }}\n{{- \"Output: red | green | blue\" -}}\n```\n\n\n### `first` / `last`\n\nReturns the first or last item.\n\n\n```liquid\n\n{{ \"earth,water,fire\" | split: \",\" | first }}\n{{- \"Output: earth\" -}}\n```\n\n\n### `concat`\n\nConcatenates two arrays.\n\n\n```liquid\n\n{% assign all = fruits | concat: vegetables %}\n```\n\n\n### `map`\n\nExtracts a property from each item.\n\n\n```liquid\n\n{% assign names = products | map: \"name\" %}\n{{ names | join: \", \" }}\n```\n\n\n### `where`\n\nFilters to items with a matching property value. Without a value argument, filters to truthy values.\n\n\n```liquid\n\n{% assign sale_items = products | where: \"on_sale\", true %}\n{% assign published = articles | where: \"published\" %}\n```\n\n\n### `sort` / `sort_natural`\n\nSorts in case-sensitive or case-insensitive order. Optionally sort by a property.\n\n\n```liquid\n\n{{ tags | sort | join: \", \" }}\n{% assign sorted = products | sort: \"name\" %}\n```\n\n\n### `reverse`\n\nReverses the order of an array.\n\n\n```liquid\n\n{{ \"earth,water,fire\" | split: \",\" | reverse | join: \", \" }}\n{{- \"Output: fire, water, earth\" -}}\n```\n\n\n### `uniq`\n\nRemoves duplicate items.\n\n\n```liquid\n\n{{ \"a,b,a,c\" | split: \",\" | uniq | join: \", \" }}\n{{- \"Output: a, b, c\" -}}\n```\n\n\n### `compact`\n\nRemoves nil/null values.\n\n\n```liquid\n\n{% assign clean = items | compact %}\n```\n\n\n### `sum`\n\nSums numeric items, or sums a property across objects.\n\n\n```liquid\n\n{% assign total = cart.items | sum: \"quantity\" %}\n```\n\n\n### `push` / `unshift`\n\nAdds an item to the end or beginning of an array.\n\n\n```liquid\n\n{{ my_list | push: \"new_item\" | join: \", \" }}\n{{ my_list | unshift: \"first_item\" | join: \", \" }}\n```\n\n\n### `pop` / `shift`\n\nRemoves and returns the last or first item (modifies the array).\n\n\n```liquid\n\nRemoved: {{ my_list | pop }}\n```\n\n\n### `insert`\n\nInserts an item at a specific index. Supports negative indices.\n\n\n```liquid\n\n{{ my_list | insert: \"new\", 2 | join: \", \" }}\n```\n\n\n### `intersection` / `union` / `difference`\n\nSet operations on two arrays.\n\n\n```liquid\n\n{{ list1 | intersection: list2 | join: \", \" }}\n{{ list1 | union: list2 | join: \", \" }}\n{{ list1 | difference: list2 | join: \", \" }}\n```\n\n\n### `match`\n\nFilters array items (or characters from a string) matching a regex pattern. Includes capture groups for string input.\n\n\n```liquid\n\n{% assign fruits = \"apple,banana,cherry\" | split: \",\" %}\n{{ fruits | match: \"a\" | join: \", \" }}\n{{- \"Output: apple, banana\" -}}\n```\n\n\n### `contains` (filter)\n\nReturns `true` if the array contains the specified item.\n\n\n```liquid\n\n{{ my_list | contains: \"target\" }}\n```\n\n\n### `only` / `except`\n\nFilter array items by property value. `only` keeps matching items; `except` removes them. Both support multiple values and chaining.\n\n\n```liquid\n\n{{ products | only: \"type\", \"clothing\" | pluck: \"name\" | join: \", \" }}\n{{ products | except: \"type\", \"clothing\" | pluck: \"name\" | join: \", \" }}\n```\n\n\n---\n\n## Collection filters\n\nStoreConnect-specific collection operations.\n\n### `group_by`\n\nGroups an array of objects by a property. Returns an array of group objects with `name`, `items`, and `size`.\n\n\n```liquid\n\n{% assign groups = products | group_by: \"category_name\" %}\n{% for group in groups %}\n  \u003ch3\u003e{{ group.name }} ({{ group.size }})\u003c/h3\u003e\n  {% for item in group.items %}\n    \u003cp\u003e{{ item.name }}\u003c/p\u003e\n  {% endfor %}\n{% endfor %}\n```\n\n\n### `pluck`\n\nExtracts one or more properties from each item.\n\n\n```liquid\n\n{{ products | pluck: \"name\" | json }}\n{{ products | pluck: \"name\", \"price\" | json }}\n```\n\n\n### `sample`\n\nReturns a random sample of the specified size.\n\n\n```liquid\n\n{{ products | sample: 3 | pluck: \"name\" | join: \", \" }}\n```\n\n\n### `try`\n\nSafely accesses a property, returning an empty string if the property doesn't exist.\n\n\n```liquid\n\n{{ error_obj | try: \"code\" }}\n```\n\n\n### `paginate` (filter)\n\nReturns the first page of a collection with the given page size.\n\n\n```liquid\n\n{{ items | paginate: 5 | join: \",\" }}\n```\n\n\n### `depaginate`\n\nRemoves pagination limits, fetching all items. Use carefully with large datasets.\n\n\n```liquid\n\n{% assign all_items = large_collection | depaginate %}\n```\n\n\n### `json` / `serialize`\n\nConverts any object to a JSON string. Both names are identical.\n\n\n```liquid\n\n{{ product | json }}\n{{ cart.items | serialize }}\n```\n\n\n---\n\n## Map/object filters\n\n### `keys`\n\nReturns an array of a map's keys.\n\n\n```liquid\n\n{{ my_map | keys | join: \", \" }}\n```\n\n\n### `merge`\n\nMerges two maps. Keys from the second map override matching keys in the first.\n\n\n```liquid\n\n{{ defaults | merge: overrides | json }}\n```\n\n\n### `set_key`\n\nAdds or updates a key-value pair on a map.\n\n\n```liquid\n\n{%- new Map data -%}\n{%- assign data = data | set_key: \"name\", \"Widget\" | set_key: \"price\", 9.99 -%}\n```\n\n\n### `unset_key`\n\nRemoves one or more keys from a map.\n\n\n```liquid\n\n{{ config | unset_key: \"debug\" | json }}\n{{ config | unset_key: \"debug\", \"verbose\" | json }}\n```\n\n\n### `collect_keys`\n\nExtracts specific keys from each map in an array.\n\n\n```liquid\n\n{{ users | collect_keys: \"name\", \"email\" | json }}\n```\n\n\n### `rename_keys`\n\nRenames keys (accepts pairs of old_key, new_key). Works on a single map or an array of maps.\n\n\n```liquid\n\n{{ record | rename_keys: \"FirstName\", \"first_name\", \"LastName\", \"last_name\" | json }}\n```\n\n\n---\n\n## Date/time filters\n\n### `datetime`\n\nConverts a date/time string to an ISO 8601 timestamp with optional timezone conversion.\n\n\n```liquid\n\n{{ \"2021-02-01 09:00\" | datetime }}\n{{- \"Output: 2021-02-01T09:00:00Z\" -}}\n\n{{ \"2021-06-01T09:00:00+10:00\" | datetime, timezone: \"Pacific/Auckland\" }}\n{{- \"Output: 2021-06-01T11:00:00+12:00\" -}}\n```\n\n\n### `now`\n\nReturns the current date and time for the given timezone.\n\n\n```liquid\n\n{{ \"Australia/Sydney\" | now }}\n{{- \"Output: current ISO8601 timestamp in AEST\" -}}\n```\n\n\n### `today`\n\nReturns the current date for the given timezone.\n\n\n```liquid\n\n{{ \"UTC\" | today }}\n{{- \"Output: current date in UTC\" -}}\n```\n\n\n### `time_ago`\n\nReturns a human-readable relative time string.\n\n\n```liquid\n\n{{ article.publish_on | time_ago }}\n{{- \"Output: about 3 days ago\" -}}\n```\n\n\n### `time_duration`\n\nReturns a human-readable duration from a number of seconds.\n\n\n```liquid\n\n{{ 3600 | time_duration }}\n{{- \"Output: about 1 hour\" -}}\n```\n\n\n### `date` (enhanced)\n\nFormats a date using strftime syntax, with timezone support. Accepts date strings, `\"now\"`, `\"today\"`, or Unix timestamps.\n\n\n```liquid\n\n{{ \"2021-07-01T09:00:00Z\" | date: \"%a, %b %-d, %Y\" }}\n{{- \"Output: Thu, Jul 1, 2021\" -}}\n\n{{ \"now\" | date: \"%Y-%m-%d\", timezone: \"Australia/Sydney\" }}\n{{- \"Output: current date in Sydney\" -}}\n```\n\n\n**Common format tokens:**\n\n| Token | Description | Example |\n|-------|-------------|---------|\n| `%Y` | Year | 2024 |\n| `%m` | Month (01–12) | 07 |\n| `%-m` | Month without padding | 7 |\n| `%d` | Day (01–31) | 01 |\n| `%-d` | Day without padding | 1 |\n| `%H` | Hour 24h | 14 |\n| `%M` | Minute | 30 |\n| `%a` | Abbreviated day | Thu |\n| `%A` | Full day name | Thursday |\n| `%b` | Abbreviated month | Jul |\n| `%B` | Full month name | July |\n\n### `date_add`\n\nAdds a duration to a date. Accepts negative values for subtraction. Options: `years`, `months`, `weeks`, `days`, `hours`, `minutes`, `seconds`, `timezone`.\n\n\n```liquid\n\n{{ \"2021-03-01T09:00:00\" | date_add: days: 5 }}\n{{- \"Output: 2021-03-06T09:00:00Z\" -}}\n\n{{ \"2021-03-01T09:00:00\" | date_add: days: -5 }}\n{{- \"Output: 2021-02-24T09:00:00Z\" -}}\n```\n\n\n---\n\n## Number formatting filters\n\n### `money`\n\nFormats a number as currency. Strips `.00` cents by default.\n\n\n```liquid\n\n{{ 12.76 | money }}\n{{- \"Output: $12.76\" -}}\n\n{{ 12.00 | money }}\n{{- \"Output: $12\" -}}\n\n{{ 12.95 | money, unit: '€' }}\n{{- \"Output: €12.95\" -}}\n\n{{ 12.70 | money, compact: true }}\n{{- \"Output: $12.7\" -}}\n\n{{ 12.70 | money, compact: false }}\n{{- \"Output: $12.70\" -}}\n```\n\n\n### `points`\n\nFormats a number as loyalty points with comma separators and a \"pts\" suffix.\n\n\n```liquid\n\n{{ 1200 | points }}\n{{- \"Output: 1,200 pts\" -}}\n```\n\n\n### `number`\n\nFormats a number with locale-aware options.\n\n\n```liquid\n\n{{ 12000 | number, delimiter: \",\" }}\n{{- \"Output: 12,000\" -}}\n\n{{ 12.76 | number, separator: \",\" }}\n{{- \"Output: 12,76\" -}}\n\n{{ 12 | number, precision: 3 }}\n{{- \"Output: 12.000\" -}}\n\n{{ 99.00 | number, compact: true }}\n{{- \"Output: 99\" -}}\n```\n\n\n**Options:** `compact`, `delimiter`, `separator`, `precision`\n\n---\n\n## Text filters\n\n### `j`\n\nJavaScript-escapes a string for safe use in JS string literals.\n\n\n```liquid\n\n\u003cscript\u003e\n  var message = '{{ user_input | j }}';\n\u003c/script\u003e\n```\n\n\n### `unescape`\n\nUnescapes HTML-escaped characters.\n\n\n```liquid\n\n{{ \"\u0026lt;p\u0026gt;Hello\u0026lt;/p\u0026gt;\" | unescape }}\n{{- \"Output: \u003cp\u003eHello\u003c/p\u003e\" -}}\n```\n\n\n### `parameterize`\n\nConverts a string to a URL-friendly slug (lowercase, hyphens, no special characters).\n\n\n```liquid\n\n{{ \"On Sale\" | parameterize }}\n{{- \"Output: on-sale\" -}}\n```\n\n\n### `hmac`\n\nGenerates an HMAC signature for a string using a secret key.\n\n\n```liquid\n\n{{ \"data\" | hmac: \"secret\" }}\n{{ \"data\" | hmac: \"secret\", algorithm: \"SHA256\" }}\n{{ \"data\" | hmac: \"secret\", digest: \"Base64\" }}\n```\n\n\n**Algorithms:** `SHA` (default), `SHA1`, `SHA224`, `SHA256`, `SHA384`, `SHA512`, `MD5`, `RIPEMD160`\n\n**Digests:** `Hex` (default), `Base64`\n\n### `markdown`\n\nConverts Markdown to sanitized HTML using GitHub-Flavored Markdown.\n\n\n```liquid\n\n{{ article.body | markdown }}\n{{ \"**bold** and *italic*\" | markdown }}\n```\n\n\n### `encrypt` / `decrypt`\n\nEncrypts data into a token, or decrypts a token back to the original value. Accepts an optional `salt` for key derivation.\n\n\n```liquid\n\n{% assign token = sensitive_value | encrypt, salt: \"my-salt\" %}\n{% assign original = token | decrypt, salt: \"my-salt\" %}\n```\n\n\n### `deserialize`\n\nParses a JSON string into a Liquid object (map or array).\n\n\n```liquid\n\n{% assign data = '{\"title\":\"Hello\",\"count\":42}' | deserialize %}\n{{ data.title }} — {{ data.count }}\n```\n\n\n---\n\n## URL filters\n\n### `params`\n\nAdds query parameters to a URL path. Handles existing query strings correctly.\n\n\n```liquid\n\n{{ \"/products\" | params: page: 2, sort: \"name\" }}\n{{- \"Output: /products?page=2\u0026sort=name\" -}}\n\n{{ \"/products?category=shoes\" | params: page: 2 }}\n{{- \"Output: /products?category=shoes\u0026page=2\" -}}\n```\n\n\n---\n\n## Video filters\n\n### `youtube`\n\nReturns a responsive HTML embed for a YouTube video ID.\n\n\n```liquid\n\n{{ product.videos | first | youtube }}\n{{ \"video-id-here\" | youtube, start_at: 30 }}\n```\n\n\n### `vimeo`\n\nReturns a responsive HTML embed for a Vimeo video ID.\n\n\n```liquid\n\n{{ \"video-id-here\" | vimeo }}\n{{ \"video-id-here\" | vimeo, start_at: 60 }}\n```\n\n\n---\n\n## Theme filters\n\n### `t`\n\nLooks up a translation key in the theme's translation file (`translations/en.default.json`). Supports variable interpolation.\n\n\n```liquid\n\n{{ \"welcome.title\" | t }}\n{{ \"products.count\" | t: count: 5 }}\n```\n\n\nIf a key is not found, returns: `\"missing translation: sc.locale.{key} for locale: {locale}\"`\n\n### `asset_url`\n\nReturns the URL for a theme asset file.\n\n\n```liquid\n\n\u003cimg src=\"{{ 'images/logo.png' | asset_url }}\" alt=\"Logo\"\u003e\n{% assign css_url = \"styles/theme.css\" | asset_url %}\n```\n\n\n---\n\n## Record filters\n\n### `record_fields`\n\nReturns the accessible fields on a record or drop as an array.\n\n\n```liquid\n\n{{ product | record_fields | join: \", \" }}\n```\n\n\n### `record_relationships`\n\nReturns the accessible relationships on a record or drop.\n\n\n```liquid\n\n{{ product | record_relationships | join: \", \" }}\n```\n\n\n### `record_name`\n\nReturns the type name of a record or drop.\n\n\n```liquid\n\n{{ product | record_name }}\n{{- \"Output: Product\" -}}\n```\n\n\n### `cast`\n\nConverts values between types. For primitive types, converts strings to numbers/booleans. For records from `{% query %}`, converts to the corresponding drop type.\n\n\n```liquid\n\n{{ \"123\" | cast: \"integer\" }}\n{{ \"true\" | cast: \"boolean\" }}\n{{ \"3.14\" | cast: \"float\" }}\n\n{% query 'Product2' as records %}\n{% for record in records %}\n  {% assign product = record | cast: \"Product\" %}\n  {{ product.name }}\n{% endfor %}\n```\n\n\n### `recordize`\n\nConverts a drop back to its underlying record representation.\n\n---\n\n## Product content filters\n\nThese filters render product-associated content blocks using built-in templates.\n\n### `show_traits`\n\nRenders all product traits using the built-in template. Falls back to the master product's trait category for variants that don't have their own.\n\n\n```liquid\n\n{{ current_product | show_traits }}\n```\n\n\n### `render_content_blocks`\n\nRenders all content blocks of a specified type for a product.\n\n\n```liquid\n\n{{ product | render_content_blocks: \"downloads\" }}\n```\n\n\n### Typed content block filters\n\nEach filter renders content blocks of the named type. All accept a product drop.\n\n| Filter | Alias | Description |\n|--------|-------|-------------|\n| `downloads_content_blocks` | `render_downloads_content_blocks` | Downloadable files (PDFs, manuals) |\n| `features_content_blocks` | `render_features_content_blocks` | Key features and highlights |\n| `specifications_content_blocks` | `render_specifications_content_blocks` | Technical specifications |\n| `support_content_blocks` | `render_support_content_blocks` | Support and help content |\n| `warranty_content_blocks` | `render_warranty_content_blocks` | Warranty terms |\n\n\n```liquid\n\n{{ product | features_content_blocks }}\n{{ product | specifications_content_blocks }}\n```\n\n\n## Utility filters\n\n### `default`\n\nSets a default value for any variable which is `nil`, `false`, or `blank`.\n\n\n```liquid\n\n{% assign hide_price = false %}\n{{ hide_price | default: true, allow_false: true }}\n{{- \"Output: false\" -}}\n```\n"}