Pixelquil logoPixelquil

Shopify Liquid Playground

Practice Shopify Liquid with live rendering against mock product, cart, and collection data — no theme or dev store required.

Live Preview
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. 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. 2

    Edit the Liquid, CSS, or JS

    Switch between tabs and make changes, the preview updates automatically as you type.

  3. 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. 4

    Check the error banner

    Invalid Liquid syntax or malformed JSON shows a clear error message instead of a blank preview.

  5. 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.