Shopify Liquid Playground
Practice Shopify Liquid with live rendering against mock product, cart, and collection data — no theme or dev store required.
Available mock objects
shop.name, shop.currency
product.title, product.price, product.compare_at_price, product.images, product.featured_image, product.options, product.variants, product.tags, product.available, product.vendor, product.type, product.description
collection.title, collection.products
cart.item_count, cart.total_price, cart.items
customer (null by default)
menu, faqs, testimonials, blog_posts, logos — plain arrays for loop practice
Filters available: money, money_with_currency, img_url, handle, asset_url, pluralize, json, plus everything built into LiquidJS (for, if, assign, capture, case, date, where, map, sort, etc).
How it works
- 1
Pick a section to start from
Choose from 20 premade patterns in the dropdown, or start from the blank starter template already loaded.
- 2
Edit the Liquid, CSS, or JS
Switch between tabs and make changes, the preview updates automatically as you type.
- 3
Edit the mock data
Open the Data tab to change product prices, variants, cart contents, or any other mock Shopify object as raw JSON.
- 4
Check the error banner
Invalid Liquid syntax or malformed JSON shows a clear error message instead of a blank preview.
- 5
Download when you're ready
Click Download section.liquid to save your work as a single file bundling Liquid, CSS, and JS together.
About the Shopify Liquid Playground
Liquid, Shopify's templating language, normally only renders on Shopify's own servers, which means learning it usually means setting up a dev store, a theme, and a deploy step just to test one line of code. This playground renders real Liquid syntax entirely in your browser using LiquidJS, an open-source JavaScript implementation of Liquid, against realistic mock product, cart, and collection data, so you get the same instant feedback loop as writing plain HTML.
Why a browser can normally run Liquid at all
Liquid itself, the language, is separate from Shopify's specific implementation of it. LiquidJS parses and renders standard Liquid syntax, tags like for, if, assign, and case, exactly the way Shopify's own Ruby-based Liquid engine does, which is what makes an in-browser playground possible in the first place. Shopify layers its own store-specific objects and filters, like product and money, on top of that same base language, which this tool recreates with mock data and custom filters.
Realistic mock Shopify data, fully editable
The Data tab holds a complete mock Shopify data set as raw JSON, a product with variants, options, and multiple images, a collection of products, a cart with line items, plus a shop object, menu, FAQs, testimonials, and blog posts. Editing any value there, changing a price, adding a variant, emptying the cart, immediately changes what the Liquid on the page actually renders, which is the fastest way to understand how Liquid variables and objects behave without ever touching a real store.
20 premade sections covering real theme patterns
The section dropdown loads a complete, working pattern, a featured product, a variant picker, a FAQ accordion, a cart drawer, and more, each demonstrating a specific piece of Liquid: looping over collection.products, conditional pricing with compare_at_price, looping over product.variants to build an option picker. Loading a section replaces the current Liquid, CSS, and JS with that pattern, a fast way to see a real technique in context rather than reading about it in isolation.
Shopify-specific filters, recreated
Filters like money, img_url, and handle aren't part of standard Liquid, Shopify adds them specifically for store data, so this playground registers matching versions of them into the LiquidJS engine. {{ product.price | money }} correctly divides a price stored in cents and formats it as currency, exactly like it does on a real storefront, which is the detail that trips up a lot of beginners writing their first Liquid template.
An honest limitation: this isn't a full theme environment
Shopify-only tags like {% form %}, {% render %}, and {% schema %}, along with real snippet files, section settings, and metafields, aren't reproduced here, since they depend on Shopify's own theme architecture rather than the Liquid language itself. This playground focuses specifically on core Liquid syntax and common section patterns, the part that's genuinely portable knowledge, not a replacement for building and testing inside an actual Shopify theme.
Runs entirely in your browser
Parsing and rendering both happen client side, nothing you write here is uploaded, logged, or sent to a server. Once a pattern looks right, Download saves it as a single .liquid file with its CSS and JS bundled in, mirroring how a real Shopify section file is structured, ready to adapt into an actual theme. This tool is part of the broader Shopify Tools collection on Pixelquil.
Frequently asked questions
Is this connected to a real Shopify store?
No, there's no store, theme, or Shopify account involved. Liquid is parsed and rendered entirely in your browser against mock data you can edit freely.
Does this support all Shopify Liquid tags?
It supports standard Liquid tags, for, if, assign, capture, case, and more, plus Shopify-specific filters like money and img_url. Shopify-only tags like form, render, and schema aren't included, since they depend on Shopify's theme architecture rather than the Liquid language itself.
Why does {{ product.price }} show a large number instead of a dollar amount?
Shopify stores prices in cents, so a $36.00 product is stored as 3600. Piping it through the money filter, {{ product.price | money }}, converts it to a formatted price, exactly like a real Shopify theme.
Can I edit the mock product data?
Yes, the Data tab holds the full mock data set, product, collection, cart, and more, as editable JSON. Changes there immediately affect what the Liquid renders.
What happens if I load a new premade section?
It replaces the current Liquid, CSS, and JS with that section's code. The mock data stays as-is, since every section is built to work with the same default data set.
Can I use this to build a real Shopify theme section?
It's a strong starting point for the Liquid, CSS, and JS of a section, downloaded as a single .liquid file structured the way a real Shopify section file is. It won't include schema settings or theme-specific includes, which still need to be added inside an actual theme.
Why did my Liquid show an error instead of rendering?
The error banner below the editor shows the exact Liquid or JSON error, most often a typo in a tag, an unclosed loop, or invalid JSON in the Data tab.
Is my code uploaded to a server?
No, both Liquid rendering and JSON parsing happen entirely in your browser using LiquidJS. Nothing you write is sent anywhere.