Pixelquil logoPixelquil

Section Schema Builder & Validator

Visually build a complete Shopify section schema — settings, blocks, and presets — with a live matching Liquid snippet, or paste an existing schema to validate it.

Adding to: Section

Text

Numeric

Choice

Visual

Media

Resource

Content

How it works

  1. 1

    Add settings from the sidebar

    Click any setting type to add it to the section, or to whichever block tab is currently active.

  2. 2

    Fill in each setting's fields

    Expand a setting row to edit its label, id, default value, and any type-specific fields like options or range limits.

  3. 3

    Add blocks and presets

    Click + Block to define a reusable block type with its own settings, or switch to the Presets tab to set default configurations.

  4. 4

    Check the warnings panel

    Duplicate ids, duplicate block types, and range limits over Shopify's 101-step cap are flagged live as you build.

  5. 5

    Copy the Schema or Liquid tab

    Switch between the generated JSON schema and its matching Liquid snippet, then copy whichever you need.

About the Section Schema Builder & Validator

Every Shopify section needs a {% schema %} block, a JSON object defining its settings, blocks, and presets, and it's one of the easiest parts of theme development to get subtly wrong: a trailing comma, a missing required field, or two settings sharing the same id can silently break the theme editor with a vague error. This tool builds a complete, correct schema visually, section settings, reusable blocks, and presets, with a live matching Liquid snippet generated alongside it, or checks an existing schema you already have against Shopify's actual rules.

Nearly all 30 real Shopify setting types

Every setting type Shopify actually supports is here, grouped the way you'd look for them: text-style inputs (text, textarea, rich text, HTML, Liquid), numeric and range, choice (checkbox, radio, select), visual (color, color scheme, font picker, text alignment), media (image picker, video, video URL), resource pickers (product, collection, blog, page, menu), and layout-only header and paragraph fields. Each type only shows the specific fields it actually needs, a range gets min, max, step, and unit, a select gets an options list, so there's nothing to memorize about which fields belong to which type.

Blocks and presets, not just top-level settings

Real sections almost always need repeatable blocks, testimonials, FAQ items, image slides, each with their own settings and an optional per-block limit. This tool lets you define as many block types as needed, switch between them with tabs, and build each one's settings the same way as the section itself. Presets, the default configuration a merchant sees when first adding the section, can reference which block types to include by default, matching how presets actually work in a real theme.

Catches the mistakes that don't throw an obvious error

A handful of schema mistakes are technically valid JSON but silently break in the theme editor: two settings sharing the same id, so only one actually works, two blocks sharing the same type, or a range whose (max minus min) divided by step exceeds Shopify's documented 101-step limit. This tool checks for all of these live as you build, showing a clear warning rather than letting the mistake ship unnoticed, and the same checks run against a schema you paste in to validate.

A matching Liquid snippet, generated alongside the schema

Defining a setting is only half the work, actually reading it back with section.settings.your_id, or looping over section.blocks with a case statement for each block type, is the part that's easy to get wrong or forget entirely. The Liquid tab generates real, working markup for exactly the settings and blocks currently defined, updating live, so copying a schema into a real section file comes with a correct starting point for the Liquid that actually uses it.

What validation checks, and what it doesn't

Validate mode accepts either raw schema JSON or a full section .liquid file, it automatically extracts the content between {% schema %} and {% endschema %} if you paste the whole file. It checks JSON validity, required fields, recognized setting types, duplicate ids and block types, and the range step limit. It doesn't check your section's actual Liquid markup for errors, or confirm settings referenced in Liquid actually exist in the schema, that's a different kind of check outside a schema validator's job.

Runs entirely in your browser

Building and validating both happen entirely client side, nothing you configure or paste is uploaded, logged, or sent to a server. Once you have a schema, our Liquid Playground is a natural next step for testing how the Liquid around it actually renders against mock product and cart data, part of the same Shopify Tools collection this tool belongs to.

Frequently asked questions

Does this cover every Shopify setting type?

It covers close to 30 real Shopify setting types across text, numeric, choice, visual, media, resource, and content categories, the same types available in a real theme editor.

Can I define blocks with their own settings?

Yes, click + Block to create a new block type with its own name, type id, optional limit, and full settings list, switch between blocks using the tabs.

What does the warnings panel actually check?

It flags duplicate setting ids within the same scope, duplicate block types, a missing section name, and a range setting whose (max minus min) divided by step exceeds Shopify's documented 101-step limit.

Can I validate a schema I already have instead of building one?

Yes, switch to Validate mode and paste either raw schema JSON or a full section .liquid file, the schema block is extracted automatically if you paste the whole file.

Does the Liquid tab generate a complete, ready-to-use section file?

It generates working Liquid that reads every currently defined setting and loops over blocks with a case statement, a correct starting point rather than a finished, styled section.

What happens if I don't manually set a setting's id?

It's generated automatically from the label as you type, in valid snake_case. Editing the id field directly stops it from auto-updating further.

Does this check my actual section's Liquid code for errors?

No, validation checks the schema JSON itself, required fields, valid types, duplicate ids, and known limits. It doesn't parse or check a section's surrounding Liquid markup.

Is anything I build or paste here uploaded anywhere?

No, both building and validating happen entirely in your browser. Nothing is sent to a server.