{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "puff-stitch-granny-square-pattern",
  "title": "Puff Stitch Granny Square – Free Crochet Pattern",
  "meta_description": "Learn to crochet a puff stitch granny square in cheerful spring colors — a textured 5.5 inch block perfect for blankets, bags, and quick handmade gifts",
  "published_at": "2026-07-17",
  "updated_at": "2026-07-17",
  "author": "Ruby",
  "thumbnail_url": "data/images/puff-stitch-granny-square-pattern-hero.webp",
  "meta": {
    "title": "Puff Stitch Granny Square – Free Crochet Pattern",
    "pattern_name": "Puff Stitch Granny Square – Free Crochet Pattern",
    "difficulty": "Easy",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "2.3K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Easy",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "puff stitch",
        "free crochet pattern",
        "crochet square",
        "spring crochet",
        "DK yarn",
        "blanket square",
        "scrap yarn project",
        "textured crochet",
        "easy crochet pattern",
        "crochet motif"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Puff Stitch Granny Square – Free Crochet Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Confident Beginner",
          "value": "Just puff stitches, chains, and one easy color change per round",
          "raw_text": "Just puff stitches, chains, and one easy color change per round",
          "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": "Quick Evening Make",
          "value": "About 1-2 hours of relaxing hooking for each 5.5 inch square",
          "raw_text": "About 1-2 hours of relaxing hooking for each 5.5 inch 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": "hero-info-3",
          "label": "Spring Garden Vibes",
          "value": "Five cheerful colors that bloom outward like a tiny flower bed",
          "raw_text": "Five cheerful colors that bloom outward like a tiny flower bed",
          "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 puff stitch granny square turns five cheerful colors into one plump, touchable 5.5-inch block with a story stitched right into it — an orange center like a flower's heart, pink puff petals, a ring of blue sky, fresh green grass, and a crisp white frame. Worked over just five rounds, it is the perfect next step for anyone who has mastered the classic granny square and wants real texture, and a dream project for scrap-yarn hoarders and blanket planners alike",
          "raw_text": "This puff stitch granny square turns five cheerful colors into one plump, touchable 5.5-inch block with a story stitched right into it — an orange center like a flower's heart, pink puff petals, a ring of blue sky, fresh green grass, and a crisp white frame. Worked over just five rounds, it is the perfect next step for anyone who has mastered the classic granny square and wants real texture, and a dream project for scrap-yarn hoarders and blanket planners alike",
          "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": "The star technique here is the puff stitch — a cluster of long loops gathered into one fat, pillowy stitch — worked alongside simple chains and chain-space corners. If you can chain, yarn over, and count to five, you can absolutely make this; I would call it a confident-beginner pattern. Each round uses a single color, so color changes happen only between rounds, never mid-row. Expect one relaxed hour for your first square and closer to forty minutes once the puff rhythm settles into your hands",
          "raw_text": "The star technique here is the puff stitch — a cluster of long loops gathered into one fat, pillowy stitch — worked alongside simple chains and chain-space corners. If you can chain, yarn over, and count to five, you can absolutely make this; I would call it a confident-beginner pattern. Each round uses a single color, so color changes happen only between rounds, never mid-row. Expect one relaxed hour for your first square and closer to forty minutes once the puff rhythm settles into your hands",
          "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 approximately 5.5 by 5.5 inches in DK weight yarn, with a deeply dimensional, pebbled surface that begs to be squeezed. It is sturdy without being stiff, which makes it lovely as a single mug-mat, a stack of nine joined into a baby play mat, or dozens sewn into a puffy heirloom blanket. Because each square uses only a few yards per color, one afternoon of hooking produces a genuinely impressive handmade gift from yarn you already own",
          "raw_text": "The finished square measures approximately 5.5 by 5.5 inches in DK weight yarn, with a deeply dimensional, pebbled surface that begs to be squeezed. It is sturdy without being stiff, which makes it lovely as a single mug-mat, a stack of nine joined into a baby play mat, or dozens sewn into a puffy heirloom blanket. Because each square uses only a few yards per color, one afternoon of hooking produces a genuinely impressive handmade gift from yarn you already own",
          "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": "Pulling the puff stitch loops to different heights, which leaves your puffs lumpy and uneven instead of plump and uniform",
          "value": "Pull every yarn-over loop up to the same height — roughly the height of a double crochet, about half an inch — and count your loops so each puff has the identical number on the hook before you close it. Slow down for the first round; the muscle memory arrives fast",
          "raw_text": "Pull every yarn-over loop up to the same height — roughly the height of a double crochet, about half an inch — and count your loops so each puff has the identical number on the hook before you close it. Slow down for the first round; the muscle memory arrives fast",
          "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": "Yanking the closing chain of each puff too tight, which squashes the puff flat and makes the next stitch nearly impossible to work into",
          "value": "After pulling through all the loops, make the closing chain snug but relaxed. It should sit like a small cap on top of the puff, locking the loops without strangling them. If your puffs look deflated, this chain is almost always the culprit",
          "raw_text": "After pulling through all the loops, make the closing chain snug but relaxed. It should sit like a small cap on top of the puff, locking the loops without strangling them. If your puffs look deflated, this chain is almost always the culprit",
          "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": "Losing track of the corner chain spaces, so the square slowly skews into a lopsided pentagon-ish blob by round 4 or 5",
          "value": "Drop a stitch marker into each corner space the moment you create it, and move the markers up every round. Count the puffs along each side when you finish a round — all four sides must match before you fasten off",
          "raw_text": "Drop a stitch marker into each corner space the moment you create it, and move the markers up every round. Count the puffs along each side when you finish a round — all four sides must match before you fasten off",
          "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": "Making the starting center ring too tight, so the round 1 puffs will not all fit and the middle puckers",
          "value": "Use an adjustable magic ring you can cinch closed after round 1 is complete, or chain a slightly generous ring and work over the tail. Puffs are bulky stitches and need more center room than plain double crochets do",
          "raw_text": "Use an adjustable magic ring you can cinch closed after round 1 is complete, or chain a slightly generous ring and work over the tail. Puffs are bulky stitches and need more center room than plain double crochets do",
          "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": "Joining each new color sloppily in the middle of a side, leaving color blips and loose gaps at every round change",
          "value": "Always join the new color in a corner space with a neat standing stitch or slip stitch, and leave a 6-inch tail. With five colors in five rounds, tidy corner joins are what separate a polished square from a messy one",
          "raw_text": "Always join the new color in a corner space with a neat standing stitch or slip stitch, and leave a 6-inch tail. With five colors in five rounds, tidy corner joins are what separate a polished square from a messy one",
          "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": "Ending up with a square that ruffles or cups instead of lying flat, because puff rounds pull tension differently than chain spaces",
          "value": "If the square cups, go up a hook size; if it ruffles like a wavy potato chip, go down one. Then steam block the finished square to 5.5 inches — blocking forgives a multitude of tension sins",
          "raw_text": "If the square cups, go up a hook size; if it ruffles like a wavy potato chip, go down one. Then steam block the finished square to 5.5 inches — blocking forgives a multitude of tension sins",
          "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- 5 colors, the sample is made with DK sports",
              "raw_text": "Yarn of your choice- 5 colors, the sample is made with DK sports"
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook",
              "raw_text": "Crochet 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-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": 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-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": 5,
          "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": 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-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": 8,
          "row_type": "abbrev",
          "code": "abbrev-yo",
          "label": "yo",
          "value": "yarn over",
          "raw_text": "yo = yarn over",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "yo",
          "meaning": "yarn over"
        },
        {
          "order": 9,
          "row_type": "abbrev",
          "code": "abbrev-sl-st",
          "label": "Sl St",
          "value": "slip stitch for joining for different round.",
          "raw_text": "Sl St = slip stitch for joining for different round.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "Sl St",
          "meaning": "slip stitch for joining for different round."
        }
      ]
    },
    {
      "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": "magic ring, ch1(count as incomplete hdc), 3-hdc-puff st, ch2, [4-hdc-puff, ch2] rep 7 times, slst to the top of first putt, fasten off.",
          "raw_text": "Round 1 magic ring, ch1(count as incomplete hdc), 3-hdc-puff st, ch2, [4-hdc-puff, ch2] rep 7 times, slst to the top of first putt, fasten off.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "main-pattern-info-1",
          "label": "Info",
          "value": "Step by step: How to make a 4-hdc-puff stitch.",
          "raw_text": "Step by step: How to make a 4-hdc-puff stitch.",
          "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": "main-pattern-info-2",
          "label": "Info",
          "value": "A puff stitch creates a raised, puffy cluster that adds beautiful texture to your crochet projects. Here’s how to make it:",
          "raw_text": "A puff stitch creates a raised, puffy cluster that adds beautiful texture to your crochet projects. Here’s how to make it:",
          "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": "main-pattern-info-3",
          "label": "Info",
          "value": "Step by step: 1. Yo twice (this is how you begin a half double crochet).",
          "raw_text": "Step by step: 1. Yo twice (this is how you begin a half double crochet).",
          "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": "main-pattern-info-4",
          "label": "Info",
          "value": "2. Insert hook into the designated stitch or space 3. Yo and pull up a loop (to the height of a half double crochet)",
          "raw_text": "2. Insert hook into the designated stitch or space 3. Yo and pull up a loop (to the height of a half double crochet)",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "instruction",
          "code": "main-pattern-info-5",
          "label": "Steps",
          "value": "4. Yo twice again 5. Insert hook into the same stitch 6. Yo and pull up another loop.",
          "raw_text": "Step by step: 4. Yo twice again 5. Insert hook into the same stitch 6. Yo and pull up another loop.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "Info",
          "value": "Repeat steps 4-6 two more times until you have a total of 4 half double height loops (you’ll have 9 loops on your hook)",
          "raw_text": "Repeat steps 4-6 two more times until you have a total of 4 half double height loops (you’ll have 9 loops on your hook)",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "Info",
          "value": "7. Yo and pull through all 9 loops on your hook Chain 1 to secure the puff stitch (unless your pattern indicates otherwise)",
          "raw_text": "7. Yo and pull through all 9 loops on your hook Chain 1 to secure the puff stitch (unless your pattern indicates otherwise)",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "instruction",
          "code": "main-pattern-info-8",
          "label": "Steps",
          "value": "Start with a magic ring make ch1 as standing stitch(count as incomplete hdc); Make another 3 incomplete hdc in the loop, then finish a 4-hdc-puff ch2.",
          "raw_text": "Step by step: Start with a magic ring make ch1 as standing stitch(count as incomplete hdc); Make another 3 incomplete hdc in the loop, then finish a 4-hdc-puff ch2.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "instruction",
          "code": "main-pattern-info-9",
          "label": "Steps",
          "value": "[make 4-hdc-puff st, ch2] repeat 7 times, slst to the top of the first puff, fasten off. Round 1 finished.",
          "raw_text": "[make 4-hdc-puff st, ch2] repeat 7 times, slst to the top of the first puff, fasten off. Round 1 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Round 2",
          "value": "New yarn in any ch-sp, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, (4-hdc-puff, ch3, 4-hdc-puff, ch2) in next ch-sp; [4-hdc-puff + ch2 in next ch-sp, 4-hdc-puff + ch3 + 4-hdc-puff + ch2 in next ch-sp] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "raw_text": "Round 2 New yarn in any ch-sp, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, (4-hdc-puff, ch3, 4-hdc-puff, ch2) in next ch-sp; [4-hdc-puff + ch2 in next ch-sp, 4-hdc-puff + ch3 + 4-hdc-puff + ch2 in next ch-sp] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "round",
          "code": "main-pattern-round-3",
          "label": "Round 3",
          "value": "New yarn in right side ch-sp of any side, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, 4-hdc-puff + ch2 in next ch-sp, (4-hdc-puff, ch3, 4-hdc-puff, ch2) in next corner;",
          "raw_text": "Round 3 New yarn in right side ch-sp of any side, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, 4-hdc-puff + ch2 in next ch-sp, (4-hdc-puff, ch3, 4-hdc-puff, ch2) in next corner;",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "instruction",
          "code": "main-pattern-info-10",
          "label": "Steps",
          "value": "[*4-hdc-puff + ch2 in next ch-sp* repeat 2 times, 4-hdc-puff + ch3 + 4-hdc-puff + ch2 in next corner] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "raw_text": "[*4-hdc-puff + ch2 in next ch-sp* repeat 2 times, 4-hdc-puff + ch3 + 4-hdc-puff + ch2 in next corner] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "round",
          "code": "main-pattern-round-4",
          "label": "Round 4",
          "value": "New yarn in any ch-sp, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, *4-hdc-puff + ch2 in next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in next corner;",
          "raw_text": "Round 4 New yarn in any ch-sp, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, *4-hdc-puff + ch2 in next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in next corner;",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "instruction",
          "code": "main-pattern-info-11",
          "label": "Steps",
          "value": "Join new yarn into any corner sp. ch1 as standing stitch(count as incomplete hdc).",
          "raw_text": "Step by step: Join new yarn into any corner sp. ch1 as standing stitch(count as incomplete hdc).",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "info",
          "code": "main-pattern-info-12",
          "label": "Info",
          "value": "Another 3 incomplete hdc in this corner sp, then finish a 4-hdc-puff, ch2; *4-hdc-puff + ch2 in the next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in the next corner sp.",
          "raw_text": "Another 3 incomplete hdc in this corner sp, then finish a 4-hdc-puff, ch2; *4-hdc-puff + ch2 in the next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in the next corner sp.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 17,
          "row_type": "instruction",
          "code": "main-pattern-info-13",
          "label": "Steps",
          "value": "[4-hdc-puff + ch2 in the same corner sp, *4-hdc-puff + ch2 in the next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in the next corner sp] repeat 3 times, sl st to the top of the first puff, fasten off. Round 4 finished.",
          "raw_text": "[4-hdc-puff + ch2 in the same corner sp, *4-hdc-puff + ch2 in the next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in the next corner sp] repeat 3 times, sl st to the top of the first puff, fasten off. Round 4 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 18,
          "row_type": "instruction",
          "code": "main-pattern-info-14",
          "label": "Steps",
          "value": "[4-hdc-puff + ch2 in the same corner, *4-hdc-puff + ch2 in next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in next corner] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "raw_text": "[4-hdc-puff + ch2 in the same corner, *4-hdc-puff + ch2 in next ch-sp* repeat 3 times, 4-hdc-puff + ch3 in next corner] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 19,
          "row_type": "round",
          "code": "main-pattern-round-5",
          "label": "Round 5",
          "value": "New yarn in any corner, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, *4-hdc-puff + ch2 in next ch-sp* repeat 4 times, 4-hdc-puff + ch3 in next corner;",
          "raw_text": "Round 5 New yarn in any corner, ch1(count as incomplete hdc)+another 3 incomplete hdc, then finish a 4-hdc-puff, ch2, *4-hdc-puff + ch2 in next ch-sp* repeat 4 times, 4-hdc-puff + ch3 in next corner;",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 20,
          "row_type": "instruction",
          "code": "main-pattern-info-15",
          "label": "Steps",
          "value": "[4-hdc-puff + ch2 in the same corner, *4-hdc-puff + ch2 in next ch-sp* repeat 4 times, 4-hdc-puff + ch3 in next corner] repeat 3 times, sl st to the top of the first puff, fasten off.",
          "raw_text": "[4-hdc-puff + ch2 in the same corner, *4-hdc-puff + ch2 in next ch-sp* repeat 4 times, 4-hdc-puff + ch3 in next corner] repeat 3 times, sl st to the top of the first puff, 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": "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": "💡 A 4 mm (US G/6) hook suits most DK yarns for this square. Measure after round 3 — if you are tracking well past or under the 5.5-inch target, change hook size now rather than after round 5",
          "raw_text": "💡 A 4 mm (US G/6) hook suits most DK yarns for this square. Measure after round 3 — if you are tracking well past or under the 5.5-inch target, change hook size now rather than after round 5",
          "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": "💡 Place a stitch marker in every corner chain space as you make it. With a fresh color join each round, corners are the easiest thing to lose on this pattern, and markers make each new join instant",
          "raw_text": "💡 Place a stitch marker in every corner chain space as you make it. With a fresh color join each round, corners are the easiest thing to lose on this pattern, and markers make each new join instant",
          "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": "💡 Leave 6-inch tails at every color change and weave each pair in with your darning needle as soon as the round is done. Five colors means ten or more ends per square — saving them all for the end of a blanket is pure misery",
          "raw_text": "💡 Leave 6-inch tails at every color change and weave each pair in with your darning needle as soon as the round is done. Five colors means ten or more ends per square — saving them all for the end of a blanket is pure misery",
          "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": "💡 Keep your yarn-overs slightly loose while building each puff. Tight loops are hard to pull through all at once and give you skinny, strangled puffs instead of round pillowy ones",
          "raw_text": "💡 Keep your yarn-overs slightly loose while building each puff. Tight loops are hard to pull through all at once and give you skinny, strangled puffs instead of round pillowy ones",
          "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": "💡 Block your finished squares: pin each one out to 5.5 by 5.5 inches, mist with water, and let it dry flat. The puffs pop beautifully and the straight edges make joining squares dramatically easier",
          "raw_text": "💡 Block your finished squares: pin each one out to 5.5 by 5.5 inches, mist with water, and let it dry flat. The puffs pop beautifully and the straight edges make joining squares dramatically easier",
          "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": "💡 Each color needs only about 10-15 yards per square, so this is a superb stash-buster. If you are weighing scraps, roughly 5 grams of DK gives you about 11 yards — plenty for one round",
          "raw_text": "💡 Each color needs only about 10-15 yards per square, so this is a superb stash-buster. If you are weighing scraps, roughly 5 grams of DK gives you about 11 yards — plenty for one round",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "Can I use worsted weight yarn instead of DK?",
          "value": "Absolutely — just move up to a 5 mm (US H/8) hook. Your square will finish around 6.5 inches instead of 5.5, so keep that in mind when calculating how many squares a blanket needs",
          "raw_text": "Absolutely — just move up to a 5 mm (US H/8) hook. Your square will finish around 6.5 inches instead of 5.5, so keep that in mind when calculating how many squares a blanket needs",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use worsted weight yarn instead of DK?",
          "answer": "Absolutely — just move up to a 5 mm (US H/8) hook. Your square will finish around 6.5 inches instead of 5.5, so keep that in mind when calculating how many squares a blanket needs",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "How much yarn do I need for each color?",
          "value": "Only about 10-15 yards per color per square, since each of the five rounds uses a single color. This makes it a perfect project for leftover partial balls from other projects",
          "raw_text": "Only about 10-15 yards per color per square, since each of the five rounds uses a single color. This makes it a perfect project for leftover partial balls from other projects",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How much yarn do I need for each color?",
          "answer": "Only about 10-15 yards per color per square, since each of the five rounds uses a single color. This makes it a perfect project for leftover partial balls from other projects",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "Do I have to change colors every round?",
          "value": "Not at all. The puff texture is striking enough to carry a one-color or two-color version beautifully, and using fewer colors means far fewer ends to weave in. The five-color spring garden look is just one option",
          "raw_text": "Not at all. The puff texture is striking enough to carry a one-color or two-color version beautifully, and using fewer colors means far fewer ends to weave in. The five-color spring garden look is just one option",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I have to change colors every round?",
          "answer": "Not at all. The puff texture is striking enough to carry a one-color or two-color version beautifully, and using fewer colors means far fewer ends to weave in. The five-color spring garden look is just one option",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "How many squares do I need for a blanket?",
          "value": "5.5 inches per square, sixty-three squares arranged seven across by nine down gives you a lap blanket around 38 by 49 inches before the border. Nine squares make a lovely baby play mat if you want something quicker",
          "raw_text": "5.5 inches per square, sixty-three squares arranged seven across by nine down gives you a lap blanket around 38 by 49 inches before the border. Nine squares make a lovely baby play mat if you want something quicker",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a blanket?",
          "answer": "5.5 inches per square, sixty-three squares arranged seven across by nine down gives you a lap blanket around 38 by 49 inches before the border. Nine squares make a lovely baby play mat if you want something quicker",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "What exactly is a puff stitch?",
          "value": "It is a cluster stitch: you yarn over, insert your hook, and pull up a tall loop several times into the same space, then yarn over and pull through every loop at once, closing with one chain. The result is a soft, raised, pillow-like bump that gives this square its wonderful texture",
          "raw_text": "It is a cluster stitch: you yarn over, insert your hook, and pull up a tall loop several times into the same space, then yarn over and pull through every loop at once, closing with one chain. The result is a soft, raised, pillow-like bump that gives this square its wonderful texture",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What exactly is a puff stitch?",
          "answer": "It is a cluster stitch: you yarn over, insert your hook, and pull up a tall loop several times into the same space, then yarn over and pull through every loop at once, closing with one chain. The result is a soft, raised, pillow-like bump that gives this square its wonderful texture",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/puff-stitch-granny-square-pattern-hero.webp",
    "data/images/puff-stitch-granny-square-pattern-step-2.webp",
    "data/images/puff-stitch-granny-square-pattern-step-3.webp",
    "data/images/puff-stitch-granny-square-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/puff-stitch-granny-square-pattern-hero.webp",
      "alt": "Puff Stitch Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/puff-stitch-granny-square-pattern-hero.webp",
      "alt": "Puff Stitch Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/puff-stitch-granny-square-pattern-step-2.webp",
      "alt": "Puff Stitch Granny Square – Free Crochet Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/puff-stitch-granny-square-pattern-step-3.webp",
      "alt": "Puff Stitch Granny Square – Free Crochet Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/puff-stitch-granny-square-pattern-step-4.webp",
      "alt": "Puff Stitch Granny Square – Free Crochet Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 4
}