Shopify Liquid Validator
Check Liquid against Shopify's stricter parser rules and get a line number for every issue.
- Tags scanned
- 7
- Errors
- 0
- Strict-parsing warnings
- 4
- Line 1: "with key: value" is invalidUse a comma instead: {% render '…', product: product %}
- Line 2: "and"/"or" aren't allowed in assignMove the condition into an {% if %} that sets the variable in each branch.
- Line 4: "and"/"or" aren't allowed in whenNest an {% if %} inside that case branch instead.
- Line 7: Parentheses aren't allowed in a conditionLiquid evaluates and/or in order without grouping. Split the condition across nested {% if %} tags instead.
What Shopify's stricter parser rejects
Shopify moved themes and theme app extensions to a stricter Liquid parser. Code that used to render (sometimes silently wrong) now throws a syntax error, or gets auto-rewritten by Shopify with a comment explaining the change. New Theme Store and App Store submissions already require strict-parsable code.
| Old (invalid) pattern | Fix |
|---|---|
{% render 'x' with y: z %} | {% render 'x', y: z %} |
{% render 'x', y: value | filter %} | Assign the filtered value to a variable first, then pass it in |
{% assign x = a or b %} | Move the condition into an {% if %} that sets x in each branch |
{% when 'a' and cond %} | Nest an {% if %} inside that case branch |
if a && b | if a and b |
if (a or b) and c | if a or b and c (no parentheses) |
{% when => 550 %} | {% when 550 %} |
{% render 'x', y %} | {% render 'x', y: y %} (every argument needs a key) |
This tool checks your pasted Liquid against each of these patterns and reports the line number, plus whether your block tags (if/endif, for/endfor and so on) actually balance.
What it can't catch
This checks syntax patterns, not whether your objects, filters or logic are correct. It also can't run your template, so use the Liquid playground to test actual output against sample data.
Questions people ask
Will Shopify break my theme if I ignore these?
For an existing theme, Shopify rewrites non-compliant files automatically and adds a comment noting the change, rather than breaking the storefront outright. New Theme Store and App Store submissions are rejected until they're fixed.
Why is {% render 'x' with y: z %} invalid now?
The "with key: value" shorthand for a single named argument was dropped. Use a comma instead: {% render 'x', y: z %}.
Can I use parentheses to group and/or conditions?
No, Shopify's stricter parser rejects parentheses in if/unless conditions entirely. Split the logic across nested {% if %} tags instead.
Is {% include %} actually broken?
It still renders, but it's deprecated in favor of {% render %}, which is sandboxed (it can't see the calling template's variables unless you pass them explicitly) and safer to maintain.
Related tools
Last reviewed 30 September 2026.
