{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "snake-granny-square-applique",
  "title": "Snake Granny Square: Free Crochet Appliqué Pattern",
  "meta_description": "Free snake granny square pattern! Crochet a wiggly S-shaped snake appliqué on a 5-round solid square. Beginner-friendly 4.2-inch blanket block",
  "published_at": "2026-07-29",
  "updated_at": "2026-07-29",
  "author": "Ruby",
  "thumbnail_url": "data/images/snake-granny-square-applique-hero.webp",
  "meta": {
    "title": "Snake Granny Square: Free Crochet Appliqué Pattern",
    "pattern_name": "Snake Granny Square: Free Crochet Appliqué Pattern",
    "difficulty": "Intermediate",
    "time_needed": "2-3 Hours",
    "rating": 4.7,
    "made_count": "1.2K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Intermediate",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "free pattern",
        "snake",
        "appliqué",
        "animal granny square",
        "DK weight",
        "blanket square",
        "back loop only",
        "solid granny square",
        "crochet applique",
        "kids blanket",
        "beginner friendly"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Snake Granny Square: Free Crochet Appliqué Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Confident Beginner",
          "value": "Comfortable with BLO rows, increases, and multi-stitch decreases like hdc3tog",
          "raw_text": "Comfortable with BLO rows, increases, and multi-stitch decreases like hdc3tog",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "hero-info-2",
          "label": "One Evening Project",
          "value": "2-3 hours including the 5-round background square and sewing",
          "raw_text": "2-3 hours including the 5-round background square and sewing",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "hero-info-3",
          "label": "Animal Blanket Block",
          "value": "A cheeky S-curved snake that plays perfectly with the whale square",
          "raw_text": "A cheeky S-curved snake that plays perfectly with the whale square",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 2,
      "card_type": "about",
      "code": "about",
      "title": "About",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "about-info-1",
          "label": "",
          "value": "This pattern gives you a wiggly little snake appliqué sewn onto a solid granny square background, making one 4.2-inch by 4.2-inch block that slots straight into an animal-themed blanket. The snake is worked flat as one long shaped strip rather than in the round, so its body naturally curves into a lazy S when you position it. The tapering head, the widening mid-body, and the tiny chain-6 curl at the tail give it real personality — it looks like it's mid-slither across the square",
          "raw_text": "This pattern gives you a wiggly little snake appliqué sewn onto a solid granny square background, making one 4.2-inch by 4.2-inch block that slots straight into an animal-themed blanket. The snake is worked flat as one long shaped strip rather than in the round, so its body naturally curves into a lazy S when you position it. The tapering head, the widening mid-body, and the tiny chain-6 curl at the tail give it real personality — it looks like it's mid-slither across the square",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "about-info-2",
          "label": "",
          "value": "You'll be working in back loops only for most of the snake, which is what creates that gorgeous ridged spine down its back. The stitch sequence moves through sc, hdc, and dc heights within a single row, plus increases and some chunky decreases like hdc3tog and dc3tog that pull the shape in at the tail. Two more BLO rows worked on the reverse side build out the belly. Nothing here is exotic, but the row does demand attention — expect around 2 to 3 hours total including the background square",
          "raw_text": "You'll be working in back loops only for most of the snake, which is what creates that gorgeous ridged spine down its back. The stitch sequence moves through sc, hdc, and dc heights within a single row, plus increases and some chunky decreases like hdc3tog and dc3tog that pull the shape in at the tail. Two more BLO rows worked on the reverse side build out the belly. Nothing here is exotic, but the row does demand attention — expect around 2 to 3 hours total including the background square",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "about-info-3",
          "label": "",
          "value": "The finished square measures about 4.2 inches on each side in DK weight with a 3.00mm hook, matching our whale granny square exactly so the two can share a blanket without any blocking gymnastics. The snake sits raised off the solid background with a lovely dimensional quality, finished with a black French knot eye and a single white shine stitch that brings it to life. Make a whole nest of them in different colorways for a baby blanket, a cushion front, or a reptile-loving kid's bedroom",
          "raw_text": "The finished square measures about 4.2 inches on each side in DK weight with a 3.00mm hook, matching our whale granny square exactly so the two can share a blanket without any blocking gymnastics. The snake sits raised off the solid background with a lovely dimensional quality, finished with a black French knot eye and a single white shine stitch that brings it to life. Make a whole nest of them in different colorways for a baby blanket, a cushion front, or a reptile-loving kid's bedroom",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 3,
      "card_type": "why_love",
      "code": "why-love",
      "title": "Why You'll Love This Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "why-love-1",
          "label": "",
          "value": "I'll be honest — I did not expect a snake to be the square I kept making over and over, but here we are. What hooks me is that the entire body is one continuous row that changes stitch height as it goes: you start with a slst and sc at the nose, climb through hdc into those four consecutive dc-increases that fatten the belly, then squeeze back down through dc3tog and hdc3tog to taper the tail. Watching the shape appear under your hook as the stitch heights shift is genuinely addictive. And because it's all worked in back loops only, you get this beautiful ribbed spine running the full length of the snake with zero extra effort. The finishing details are my favourite part though. That black French knot with one tiny white shine stitch on top takes about forty seconds and completely transforms the face — before it, you have a wiggly strip; after it, you have a creature with an opinion. The chain-6 tail curl is the other little joy. It costs almost nothing and it's what makes the snake read as moving rather than lying there",
          "raw_text": "I'll be honest — I did not expect a snake to be the square I kept making over and over, but here we are. What hooks me is that the entire body is one continuous row that changes stitch height as it goes: you start with a slst and sc at the nose, climb through hdc into those four consecutive dc-increases that fatten the belly, then squeeze back down through dc3tog and hdc3tog to taper the tail. Watching the shape appear under your hook as the stitch heights shift is genuinely addictive. And because it's all worked in back loops only, you get this beautiful ribbed spine running the full length of the snake with zero extra effort. The finishing details are my favourite part though. That black French knot with one tiny white shine stitch on top takes about forty seconds and completely transforms the face — before it, you have a wiggly strip; after it, you have a creature with an opinion. The chain-6 tail curl is the other little joy. It costs almost nothing and it's what makes the snake read as moving rather than lying there",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 4,
      "card_type": "switch_things_up",
      "code": "switch-things-up",
      "title": "Switch Things Up",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "switch-1",
          "label": "",
          "value": "Colour is where this snake gets fun. The classic route is emerald green body with a lighter sage belly on a cream background — very garden snake. But a coral snake version is stunning: work the main body row in red, join the belly rows in cream, and use a black background square so the bands pop. For something softer for a nursery, try dusty pink with an off-white belly on a pale mint square. A yellow-and-brown python colourway looks fantastic too, especially if you swap the background to a warm tan. For size changes, the whole block scales cleanly. Go up to worsted weight with a 4.00mm hook and you'll land around 5.5 inches, which means the background square needs 6 rounds instead of 5 to keep up — check after round 5 and add if needed. Dropping to fingering with a 2.25mm hook gives you a dainty 3-inch square, lovely for a doll blanket. The snake itself keeps its proportions at any weight because it's a single shaped row. Yarn-wise, Paintbox Simply DK and Scheepjes Catona (held as DK by doubling) both give crisp stitch definition, which matters here because the BLO ridge is the whole visual point. Avoid anything fuzzy — mohair will swallow the spine detail entirely. For themed spins, a white snake with silver eyes reads as a winter ice serpent. Make the tail curl longer, ch12 instead of ch6, and you get a whimsical storybook look. Or skip the background square, add a pin back, and wear it as a brooch",
          "raw_text": "Colour is where this snake gets fun. The classic route is emerald green body with a lighter sage belly on a cream background — very garden snake. But a coral snake version is stunning: work the main body row in red, join the belly rows in cream, and use a black background square so the bands pop. For something softer for a nursery, try dusty pink with an off-white belly on a pale mint square. A yellow-and-brown python colourway looks fantastic too, especially if you swap the background to a warm tan. For size changes, the whole block scales cleanly. Go up to worsted weight with a 4.00mm hook and you'll land around 5.5 inches, which means the background square needs 6 rounds instead of 5 to keep up — check after round 5 and add if needed. Dropping to fingering with a 2.25mm hook gives you a dainty 3-inch square, lovely for a doll blanket. The snake itself keeps its proportions at any weight because it's a single shaped row. Yarn-wise, Paintbox Simply DK and Scheepjes Catona (held as DK by doubling) both give crisp stitch definition, which matters here because the BLO ridge is the whole visual point. Avoid anything fuzzy — mohair will swallow the spine detail entirely. For themed spins, a white snake with silver eyes reads as a winter ice serpent. Make the tail curl longer, ch12 instead of ch6, and you get a whimsical storybook look. Or skip the background square, add a pin back, and wear it as a brooch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 5,
      "card_type": "common_mistakes",
      "code": "common-mistakes",
      "title": "Common Mistakes & How to Fix Them",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "mistake",
          "code": "mistake-1",
          "label": "Working into both loops instead of back loops only on the main snake row",
          "value": "The BLO instruction runs through the entire body row, not just the start. If you work both loops, you lose the raised ridge that reads as the snake's spine and the piece sits flat and shapeless. Before each stitch, tilt the work toward you and make sure you can clearly see the front loop sitting unworked below your hook. If you catch the error a few stitches later, it's worth frogging back — the ridge has to be continuous to look right",
          "raw_text": "The BLO instruction runs through the entire body row, not just the start. If you work both loops, you lose the raised ridge that reads as the snake's spine and the piece sits flat and shapeless. Before each stitch, tilt the work toward you and make sure you can clearly see the front loop sitting unworked below your hook. If you catch the error a few stitches later, it's worth frogging back — the ridge has to be continuous to look right",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "mistake",
          "code": "mistake-2",
          "label": "Miscounting the four consecutive dc-increases in the belly section",
          "value": "The (dc-inc)×4 run is what gives the snake its fat middle, and it's easy to work three or five when you're in the rhythm. Place a removable stitch marker in the first stitch of the sequence and count your increase pairs out loud as you go. You should end that section with 8 dc total from 4 base stitches. If the belly looks skinny or lumpy compared to the photo, this is almost always where it went wrong",
          "raw_text": "The (dc-inc)×4 run is what gives the snake its fat middle, and it's easy to work three or five when you're in the rhythm. Place a removable stitch marker in the first stitch of the sequence and count your increase pairs out loud as you go. You should end that section with 8 dc total from 4 base stitches. If the belly looks skinny or lumpy compared to the photo, this is almost always where it went wrong",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "mistake",
          "code": "mistake-3",
          "label": "Making the hdc3tog and dc3tog decreases too tight",
          "value": "These triple decreases pull three stitches into one at the tail end, and if you yank the final yarn-over through hard, the tail kinks into a sharp point instead of tapering smoothly. Keep your yarn-overs loose and even across all three stitches before pulling through, and give the finished decrease a gentle stretch. The tail should narrow gradually, not fold",
          "raw_text": "These triple decreases pull three stitches into one at the tail end, and if you yank the final yarn-over through hard, the tail kinks into a sharp point instead of tapering smoothly. Keep your yarn-overs loose and even across all three stitches before pulling through, and give the finished decrease a gentle stretch. The tail should narrow gradually, not fold",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "mistake",
          "code": "mistake-4",
          "label": "Joining the second-side yarn in the wrong place after turning over",
          "value": "The instruction says to join to the rightmost stitch on the snake's head after turning over — this is the head end, not wherever your hook happened to be. Lay the piece flat with the head to your right before joining, and remember there are two separate joins on that side with a sk1 between them. Getting these backwards makes the belly build up on the tail instead of the head, which throws the whole S-curve off",
          "raw_text": "The instruction says to join to the rightmost stitch on the snake's head after turning over — this is the head end, not wherever your hook happened to be. Lay the piece flat with the head to your right before joining, and remember there are two separate joins on that side with a sk1 between them. Getting these backwards makes the belly build up on the tail instead of the head, which throws the whole S-curve off",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "mistake",
          "code": "mistake-5",
          "label": "Sewing the appliqué down as a straight line instead of an S shape",
          "value": "Pin the snake into its S position on the background square first and check it from a distance before a single stitch goes in. The curve needs the head and tail to swing in opposite directions with the belly bulge sitting near the square's center. Pin at the nose, the mid-body, and just before the tail curl, then sew with the tail you left after fastening off, catching only the back loops of the appliqué so your stitches disappear",
          "raw_text": "Pin the snake into its S position on the background square first and check it from a distance before a single stitch goes in. The curve needs the head and tail to swing in opposite directions with the belly bulge sitting near the square's center. Pin at the nose, the mid-body, and just before the tail curl, then sew with the tail you left after fastening off, catching only the back loops of the appliqué so your stitches disappear",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "mistake",
          "code": "mistake-6",
          "label": "Placing the French knot eye too far back on the head",
          "value": "The eye belongs at the center of the head, roughly where the sc-inc and first hdc sit near the nose end. Too far back and the snake looks vacant; too far forward and it looks cross-eyed. Do the black French knot first, step back and look at it, then add the single small white stitch across one side of the knot for the shine highlight. That white stitch should be tiny — one strand-width, not a full sewn line",
          "raw_text": "The eye belongs at the center of the head, roughly where the sc-inc and first hdc sit near the nose end. Too far back and the snake looks vacant; too far forward and it looks cross-eyed. Do the black French knot first, step back and look at it, then add the single small white stitch across one side of the knot for the shine highlight. That white stitch should be tiny — one strand-width, not a full sewn line",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 4.2 inches by 4.2 inches. The background is a 5-round solid granny square, sharing the same size as our whale granny square.",
              "raw_text": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 4.2 inches by 4.2 inches. The background is a 5-round solid granny square, sharing the same size as our whale granny square."
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook- we are using a 3.00mm hook",
              "raw_text": "Crochet hook- we are using a 3.00mm hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Darning Needle",
              "raw_text": "Darning Needle"
            },
            {
              "order": 4,
              "row_type": "item",
              "code": "mat-1-4",
              "label": "",
              "value": "Scissors",
              "raw_text": "Scissors"
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain stitch",
          "raw_text": "ch = chain stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain stitch"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-ch-sp",
          "label": "ch-sp",
          "value": "chain space",
          "raw_text": "ch-sp = chain space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch-sp",
          "meaning": "chain space"
        },
        {
          "order": 3,
          "row_type": "abbrev",
          "code": "abbrev-dc",
          "label": "dc",
          "value": "double crochet",
          "raw_text": "dc = double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc",
          "meaning": "double crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-sc",
          "label": "sc",
          "value": "single crochet",
          "raw_text": "sc = single crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc",
          "meaning": "single crochet"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-hdc",
          "label": "hdc",
          "value": "half double crochet",
          "raw_text": "hdc = half double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "hdc",
          "meaning": "half double crochet"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-inc",
          "label": "inc",
          "value": "increase",
          "raw_text": "inc = increase",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "inc",
          "meaning": "increase"
        },
        {
          "order": 7,
          "row_type": "abbrev",
          "code": "abbrev-rep",
          "label": "rep",
          "value": "repeat",
          "raw_text": "rep = repeat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rep",
          "meaning": "repeat"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-st",
          "label": "st",
          "value": "stitch",
          "raw_text": "st = stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "st",
          "meaning": "stitch"
        },
        {
          "order": 9,
          "row_type": "abbrev",
          "code": "abbrev-slst-/-sl-st",
          "label": "slst / sl st",
          "value": "slip stitch for joining different rounds",
          "raw_text": "slst / sl st = slip stitch for joining different rounds",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "slst / sl st",
          "meaning": "slip stitch for joining different rounds"
        },
        {
          "order": 10,
          "row_type": "abbrev",
          "code": "abbrev-sk",
          "label": "sk",
          "value": "skip",
          "raw_text": "sk = skip",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sk",
          "meaning": "skip"
        },
        {
          "order": 11,
          "row_type": "abbrev",
          "code": "abbrev-sc2tog",
          "label": "sc2tog",
          "value": "single crochet 2 stitches together",
          "raw_text": "sc2tog = single crochet 2 stitches together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc2tog",
          "meaning": "single crochet 2 stitches together"
        },
        {
          "order": 12,
          "row_type": "abbrev",
          "code": "abbrev-hdc2tog",
          "label": "hdc2tog",
          "value": "half double crochet 2 stitches together",
          "raw_text": "hdc2tog = half double crochet 2 stitches together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "hdc2tog",
          "meaning": "half double crochet 2 stitches together"
        },
        {
          "order": 13,
          "row_type": "abbrev",
          "code": "abbrev-tlo",
          "label": "TLO",
          "value": "third loop only",
          "raw_text": "TLO = third loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "TLO",
          "meaning": "third loop only"
        },
        {
          "order": 14,
          "row_type": "abbrev",
          "code": "abbrev-blo",
          "label": "BLO",
          "value": "back loop only",
          "raw_text": "BLO = back loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "BLO",
          "meaning": "back loop only"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "Foundation chain of the snake Knot, ch44.",
          "raw_text": "Row 1 – Foundation chain of the snake Knot, ch44.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "subhead",
          "code": "main-pattern-round-2",
          "label": "",
          "value": "Dorsal Return",
          "raw_text": "Row 2 –  Dorsal Return , sk1.  BL : slst, sc-inc, 1sc+1hdc, 1hdc, 1hdc+ch1+1sc, 2sc, 3hdc, hdc-inc, 2hdc, hdc-inc, 1dc, (dc-inc)×4, 2dc, (dc+dc+hdc)tog, hdc2tog, hdc3tog×2, dc3tog, ch1, 1sc, 1hdc, dc2tog, hdc2tog, 1sc, slst. fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Round 2",
          "value": ", sk1. BL : slst, sc-inc, 1sc+1hdc, 1hdc, 1hdc+ch1+1sc, 2sc, 3hdc, hdc-inc, 2hdc, hdc-inc, 1dc, (dc-inc)×4, 2dc, (dc+dc+hdc)tog, hdc2tog, hdc3tog×2, dc3tog, ch1, 1sc, 1hdc, dc2tog, hdc2tog, 1sc, slst. fasten off.",
          "raw_text": ", sk1. BL : slst, sc-inc, 1sc+1hdc, 1hdc, 1hdc+ch1+1sc, 2sc, 3hdc, hdc-inc, 2hdc, hdc-inc, 1dc, (dc-inc)×4, 2dc, (dc+dc+hdc)tog, hdc2tog, hdc3tog×2, dc3tog, ch1, 1sc, 1hdc, dc2tog, hdc2tog, 1sc, slst. fasten off.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "main-pattern-round-3",
          "label": "Round 3",
          "value": "Ventral Turn Over. Join new yarn to the rightmost st on the snake’s head. ch1.  BLO: 3sc, sc2tog . sl st, fasten off. sk1 and join new yarn, ch1, 2sc, sc2tog, 4sc, sc-inc, 2sc, sc-inc, 14sc, slst, fasten off.",
          "raw_text": "Row 3 – Ventral Turn Over. Join new yarn to the rightmost st on the snake’s head. ch1.  BLO: 3sc, sc2tog . sl st, fasten off. sk1 and join new yarn, ch1, 2sc, sc2tog, 4sc, sc-inc, 2sc, sc-inc, 14sc, slst, fasten off.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "instruction",
          "code": "main-pattern-info-1",
          "label": "Steps",
          "value": "Turn Over. Join new yarn to the rightmost st in the snake’s head. ch1.  BLO: 3sc, sc2tog . sl st, fasten off. sk1 and join new yarn, ch1, 2sc, sc2tog, 4sc, sc-inc, 2sc, sc-inc, 14sc, slst, fasten off.",
          "raw_text": "Turn Over. Join new yarn to the rightmost st in the snake’s head. ch1.  BLO: 3sc, sc2tog . sl st, fasten off. sk1 and join new yarn, ch1, 2sc, sc2tog, 4sc, sc-inc, 2sc, sc-inc, 14sc, slst, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 9,
      "card_type": "part",
      "code": "part-2",
      "title": "Part 2",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "part-2-info-1",
          "label": "Round 1",
          "value": "Start with a magic loop. ch3 as a standing st(count as 1dc). 3dc, ch3. *(4dc, ch3) * rep 3 times omitting final ch3, ch1, 1hdc connects back to your starting ch3.",
          "raw_text": "Round 1: Start with a magic loop. ch3 as a standing st(count as 1dc). 3dc, ch3. *(4dc, ch3) * rep 3 times omitting final ch3, ch1, 1hdc connects back to your starting ch3.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "part-2-round-2-4",
          "label": "Round 2-4",
          "value": "ch3(counts as dc), 1dc in this corner. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the start corner. ch1, 1hdc connect back to the first ch3.",
          "raw_text": "Round 2-4: ch3(counts as dc), 1dc in this corner. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the start corner. ch1, 1hdc connect back to the first ch3.",
          "round_start": 2,
          "round_end": 4,
          "is_range": true,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "part-2-round-5",
          "label": "Round 5",
          "value": "ch3 as a standing st(count as 1dc), 1dc in this corner sp. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the starting corner, ch3, sl st to the true dc after first ch3, fasten off.",
          "raw_text": "Round 5: ch3 as a standing st(count as 1dc), 1dc in this corner sp. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the starting corner, ch3, sl st to the true dc after first ch3, fasten off.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "part-2-info-2",
          "label": "Info",
          "value": "Assemble Sew the snake piece to the center of the solid granny quare.",
          "raw_text": "Assemble Sew the snake piece to the center of the solid granny quare.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "important_notes",
      "code": "important-notes",
      "title": "Important Notes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 The 3.00mm hook is deliberately smaller than most DK recommendations. A tight fabric keeps the appliqué firm enough to hold its S-curve without stuffing or interfacing, so resist sizing up unless you're also sizing the background square to match",
          "raw_text": "💡 The 3.00mm hook is deliberately smaller than most DK recommendations. A tight fabric keeps the appliqué firm enough to hold its S-curve without stuffing or interfacing, so resist sizing up unless you're also sizing the background square to match",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "note-2",
          "label": "Note",
          "value": "💡 Leave a generous 12-inch tail when you fasten off the snake's tail end. That's your sewing yarn for attaching the appliqué to the background — cutting short here means adding a join later, which shows through the front",
          "raw_text": "💡 Leave a generous 12-inch tail when you fasten off the snake's tail end. That's your sewing yarn for attaching the appliqué to the background — cutting short here means adding a join later, which shows through the front",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "note-3",
          "label": "Note",
          "value": "💡 Work the 5-round solid granny square background first and block it flat before sewing. A square that's still curling will fight the appliqué and the snake will end up sitting crooked no matter how carefully you pin",
          "raw_text": "💡 Work the 5-round solid granny square background first and block it flat before sewing. A square that's still curling will fight the appliqué and the snake will end up sitting crooked no matter how carefully you pin",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "note-4",
          "label": "Note",
          "value": "💡 Use four separate small balls or bobbins rather than cutting from one big ball each time. This pattern has multiple fasten-offs and rejoins across four colours, and having them pre-portioned saves you constantly hunting for the right end",
          "raw_text": "💡 Use four separate small balls or bobbins rather than cutting from one big ball each time. This pattern has multiple fasten-offs and rejoins across four colours, and having them pre-portioned saves you constantly hunting for the right end",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "note-5",
          "label": "Note",
          "value": "💡 Mark the head end with a scrap of contrast yarn as soon as the main row is done. Once the strip is off the hook it's genuinely hard to tell head from tail at a glance, and both turn-over joins depend on getting that right",
          "raw_text": "💡 Mark the head end with a scrap of contrast yarn as soon as the main row is done. Once the strip is off the hook it's genuinely hard to tell head from tail at a glance, and both turn-over joins depend on getting that right",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "note-6",
          "label": "Note",
          "value": "💡 Weave in the ends on the snake's belly side before sewing it down, not after. Once the appliqué is attached to the square you can't reach behind it, and any loose ends will work their way out to the front over time",
          "raw_text": "💡 Weave in the ends on the snake's belly side before sewing it down, not after. Once the appliqué is attached to the square you can't reach behind it, and any loose ends will work their way out to the front over time",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "Do I need to make the whale granny square too?",
          "value": "Not at all — this square stands completely on its own. The whale is mentioned only because both use the same 5-round solid granny square background at 4.2 inches, so they pair up perfectly if you're building an animal blanket",
          "raw_text": "Not at all — this square stands completely on its own. The whale is mentioned only because both use the same 5-round solid granny square background at 4.2 inches, so they pair up perfectly if you're building an animal blanket",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to make the whale granny square too?",
          "answer": "Not at all — this square stands completely on its own. The whale is mentioned only because both use the same 5-round solid granny square background at 4.2 inches, so they pair up perfectly if you're building an animal blanket",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Why is the snake worked flat instead of in the round?",
          "value": "Working it flat as one long shaped row is what lets the stitch heights change from sc to hdc to dc along the body, creating the natural taper at the head and tail. It also keeps the appliqué thin enough to sit flush against the background square without bulking up your blanket",
          "raw_text": "Working it flat as one long shaped row is what lets the stitch heights change from sc to hdc to dc along the body, creating the natural taper at the head and tail. It also keeps the appliqué thin enough to sit flush against the background square without bulking up your blanket",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why is the snake worked flat instead of in the round?",
          "answer": "Working it flat as one long shaped row is what lets the stitch heights change from sc to hdc to dc along the body, creating the natural taper at the head and tail. It also keeps the appliqué thin enough to sit flush against the background square without bulking up your blanket",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "What does hdc3tog actually mean here?",
          "value": "It means working three half double crochets together into three separate stitches, leaving all loops on your hook, then pulling through them all at once to make one stitch. It appears twice in a row at the tail end and is the main thing pulling that section narrow",
          "raw_text": "It means working three half double crochets together into three separate stitches, leaving all loops on your hook, then pulling through them all at once to make one stitch. It appears twice in a row at the tail end and is the main thing pulling that section narrow",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What does hdc3tog actually mean here?",
          "answer": "It means working three half double crochets together into three separate stitches, leaving all loops on your hook, then pulling through them all at once to make one stitch. It appears twice in a row at the tail end and is the main thing pulling that section narrow",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Can I use worsted weight instead of DK?",
          "value": "Yes, with a 4.00mm hook you'll get a square around 5.5 inches instead of 4.2. Just make sure every square in your project uses the same weight and hook, and add a sixth round to the background if it's coming up short against the appliqué",
          "raw_text": "Yes, with a 4.00mm hook you'll get a square around 5.5 inches instead of 4.2. Just make sure every square in your project uses the same weight and hook, and add a sixth round to the background if it's coming up short against the appliqué",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use worsted weight instead of DK?",
          "answer": "Yes, with a 4.00mm hook you'll get a square around 5.5 inches instead of 4.2. Just make sure every square in your project uses the same weight and hook, and add a sixth round to the background if it's coming up short against the appliqué",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How do I stop the snake appliqué from lifting at the edges?",
          "value": "Sew all the way around the outline rather than tacking at a few points, catching the back loop of each appliqué stitch. Pay extra attention to the head, the tail curl, and the outer edge of the belly curve, since those are the spots that catch on fingers and blanket edges",
          "raw_text": "Sew all the way around the outline rather than tacking at a few points, catching the back loop of each appliqué stitch. Pay extra attention to the head, the tail curl, and the outer edge of the belly curve, since those are the spots that catch on fingers and blanket edges",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How do I stop the snake appliqué from lifting at the edges?",
          "answer": "Sew all the way around the outline rather than tacking at a few points, catching the back loop of each appliqué stitch. Pay extra attention to the head, the tail curl, and the outer edge of the belly curve, since those are the spots that catch on fingers and blanket edges",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/snake-granny-square-applique-hero.webp",
    "data/images/snake-granny-square-applique-step-2.webp",
    "data/images/snake-granny-square-applique-step-3.webp",
    "data/images/snake-granny-square-applique-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/snake-granny-square-applique-hero.webp",
      "alt": "Snake Granny Square: Free Crochet Appliqué Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/snake-granny-square-applique-hero.webp",
      "alt": "Snake Granny Square: Free Crochet Appliqué Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/snake-granny-square-applique-step-2.webp",
      "alt": "Snake Granny Square: Free Crochet Appliqué Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/snake-granny-square-applique-step-3.webp",
      "alt": "Snake Granny Square: Free Crochet Appliqué Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/snake-granny-square-applique-step-4.webp",
      "alt": "Snake Granny Square: Free Crochet Appliqué Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 0
}