<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pixelquil</title>
    <description>The latest articles on DEV Community by Pixelquil (@pixelquil).</description>
    <link>https://dev.to/pixelquil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4081574%2F182616a0-6459-4496-bcdf-4c57f008ddef.png</url>
      <title>DEV Community: Pixelquil</title>
      <link>https://dev.to/pixelquil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pixelquil"/>
    <language>en</language>
    <item>
      <title>I Built a Tool to Catch the Silent Killer of Shopify Themes: A Broken theme.liquid</title>
      <dc:creator>Pixelquil</dc:creator>
      <pubDate>Thu, 03 Sep 2026 17:55:17 +0000</pubDate>
      <link>https://dev.to/pixelquil/i-built-a-tool-to-catch-the-silent-killer-of-shopify-themes-a-broken-themeliquid-50nf</link>
      <guid>https://dev.to/pixelquil/i-built-a-tool-to-catch-the-silent-killer-of-shopify-themes-a-broken-themeliquid-50nf</guid>
      <description>&lt;p&gt;If you've ever installed a Shopify theme, or built one from scratch, and had the Shopify admin start behaving strangely, apps not injecting their scripts, the theme editor showing a blank preview, checkout scripts missing, there's a good chance the actual cause was something tiny and easy to miss in &lt;code&gt;theme.liquid&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Shopify only strictly requires two Liquid objects in that file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight liquid"&gt;&lt;code&gt;&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;content_for_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;span class="cp"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;content_for_layout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Everything else in &lt;code&gt;theme.liquid&lt;/code&gt;, your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; tags, your header markup, your footer, is structural HTML you control. But these two objects are non-negotiable, and Shopify won't always tell you clearly when one is missing, misplaced, or duplicated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this breaks silently
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;content_for_header&lt;/code&gt; is what Shopify uses to inject scripts into your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, things like app embeds, tracking pixels, and Shopify's own required scripts for checkout and cart functionality. If it's missing, or placed somewhere other than inside &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, apps that rely on it can fail without throwing an obvious error. You just get weird, hard to diagnose bugs.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;content_for_layout&lt;/code&gt; is where Shopify renders the actual template content, meaning the specific page template (product, collection, page, etc) gets injected here. If it's missing, pages render as your theme shell with no actual content. If it's placed outside the intended content area, or duplicated, you can end up with broken or duplicated page content.&lt;/p&gt;

&lt;p&gt;Neither of these failures comes with a clear Shopify error message. You just see something's wrong, and have to go hunting through &lt;code&gt;theme.liquid&lt;/code&gt; line by line to figure out why.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the tool checks
&lt;/h2&gt;

&lt;p&gt;I built the &lt;strong&gt;Theme.liquid Structural Checker&lt;/strong&gt; as part of Pixelquil's Shopify tools to catch this before it ships. Paste in your &lt;code&gt;theme.liquid&lt;/code&gt; file, and it checks for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Presence&lt;/strong&gt; of both &lt;code&gt;content_for_header&lt;/code&gt; and &lt;code&gt;content_for_layout&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Placement&lt;/strong&gt;, specifically whether &lt;code&gt;content_for_header&lt;/code&gt; is actually inside &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;, and whether &lt;code&gt;content_for_layout&lt;/code&gt; is inside &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;, in a sensible content position&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicates&lt;/strong&gt;, since having either object appear more than once is almost always a mistake&lt;/li&gt;
&lt;li&gt;A handful of &lt;strong&gt;HTML best practices&lt;/strong&gt; commonly missed in hand-rolled or heavily customized themes, like a missing &lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt;, missing &lt;code&gt;lang&lt;/code&gt; attribute, or a missing viewport meta tag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a static check, entirely client-side, nothing is uploaded anywhere. You paste your code, it flags what's wrong, and tells you specifically where.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is actually useful for
&lt;/h2&gt;

&lt;p&gt;If you're building a custom theme from scratch rather than starting from Dawn or another Shopify base theme, it's easy to get this file wrong on a first pass, there's no scaffolding forcing you to include these objects correctly.&lt;/p&gt;

&lt;p&gt;If you're debugging a theme you didn't originally build, maybe inherited from a previous developer or a client's old freelancer, this is a fast first check before diving deeper into more complex debugging.&lt;/p&gt;

&lt;p&gt;And if you're learning Shopify theme development, this doubles as a way to actually understand why these two objects matter, instead of just copying them into a boilerplate file without knowing what they do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;It's free, no sign-up, and runs entirely in your browser.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://pixelquil.com/shopify-tools/theme-liquid-checker/" rel="noopener noreferrer"&gt;https://pixelquil.com/shopify-tools/theme-liquid-checker/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part of a growing set of free Shopify, SVG, and dev tools I'm building at &lt;a href="https://pixelquil.com" rel="noopener noreferrer"&gt;Pixelquil&lt;/a&gt;. If you work with Shopify Liquid regularly, I'd genuinely like to hear what other structural gotchas trip people up, planning to add checks for more of them.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Tags: #shopify #webdev #liquid #ecommerce&lt;/em&gt;&lt;/p&gt;

</description>
      <category>shopify</category>
      <category>webdev</category>
      <category>programming</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>I Built Pixelquil: Free Browser Tools for SVG, JSON, and Technical SEO (No Signup, No Uploads)</title>
      <dc:creator>Pixelquil</dc:creator>
      <pubDate>Mon, 17 Aug 2026 12:03:06 +0000</pubDate>
      <link>https://dev.to/pixelquil/i-built-pixelquil-free-browser-tools-for-svg-json-and-technical-seo-no-signup-no-uploads-mep</link>
      <guid>https://dev.to/pixelquil/i-built-pixelquil-free-browser-tools-for-svg-json-and-technical-seo-no-signup-no-uploads-mep</guid>
      <description>&lt;p&gt;I kept running into the same small problem while working on client sites and my own projects: I needed a quick tool to fix a broken SVG, format a messy JSON blob, or check a robots.txt file, and every free option online either wanted me to sign up first or uploaded my file to their server before showing me anything.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://pixelquil.com" rel="noopener noreferrer"&gt;Pixelquil&lt;/a&gt;, a small toolkit that runs entirely in the browser. No account, no upload, no server processing your file. Whatever you paste in stays on your device.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's in it right now
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SVG tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SVG editor and viewer&lt;/li&gt;
&lt;li&gt;viewBox fixer (for that classic "my icon is cut off" problem)&lt;/li&gt;
&lt;li&gt;Color palette extractor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Developer tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON formatter and validator&lt;/li&gt;
&lt;li&gt;JWT decoder&lt;/li&gt;
&lt;li&gt;Regex tester and builder&lt;/li&gt;
&lt;li&gt;UUID and hash generators&lt;/li&gt;
&lt;li&gt;Password and passphrase generator&lt;/li&gt;
&lt;li&gt;Case converter, Unix timestamp converter, text diff checker, cron expression parser, and a few more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;SEO tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;robots.txt tester&lt;/li&gt;
&lt;li&gt;AI crawler access checker&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why client side only
&lt;/h2&gt;

&lt;p&gt;Two reasons, honestly. First, privacy. A lot of the files people run through these tools come from client work, and I did not want to be the reason someone's unreleased product SVG or a JWT with real claims in it ends up sitting on some server's logs. Second, speed. Client side tools respond instantly. No upload spinner, no waiting on a request round trip for something that should take milliseconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;More tools are getting added as I run into more of these small tasks myself. If you have a tool you keep wishing existed but never bothered to look for, drop it in the comments. That is genuinely how most of the current list got built.&lt;/p&gt;

&lt;p&gt;Try it here: &lt;a href="https://pixelquil.com" rel="noopener noreferrer"&gt;pixelquil.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
