{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "duck-granny-square-free-crochet-pattern",
  "title": "Duck Granny Square: Free Crochet Pattern",
  "meta_description": "Crochet an adorable duck granny square with this free pattern! A 3.9-inch block with a sweet 3D beak—perfect for baby blankets and spring projects",
  "published_at": "2026-08-10",
  "updated_at": "2026-08-10",
  "author": "Nora",
  "thumbnail_url": "data/images/duck-granny-square-free-crochet-pattern-hero.webp",
  "meta": {
    "title": "Duck Granny Square: Free Crochet Pattern",
    "pattern_name": "Duck Granny Square: Free Crochet 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": [
        "duck granny square",
        "free crochet pattern",
        "granny square",
        "animal granny square",
        "duck crochet",
        "baby blanket square",
        "DK yarn",
        "spring crochet",
        "crochet motif",
        "farm animal crochet",
        "nursery crochet",
        "crochet block"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Duck Granny Square: Free Crochet Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Intermediate Level",
          "value": "Comfortable with turned rows, back-loop stitches, and sc2tog decreases",
          "raw_text": "Comfortable with turned rows, back-loop stitches, and sc2tog decreases",
          "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": "Afternoon Project",
          "value": "2-3 hours of cozy hooking for one 3.9-inch square",
          "raw_text": "2-3 hours of cozy hooking for one 3.9-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": "Springtime Charm",
          "value": "The sweetest block for baby blankets, nurseries, and duck lovers",
          "raw_text": "The sweetest block for baby blankets, nurseries, and duck lovers",
          "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 free pattern creates a granny square with a personality: a plump little duck, complete with a three-dimensional beak that actually pops off the fabric, framed inside a classic square block. What makes it special is the construction — instead of appliquéing a duck onto a plain square, you build the duck first from a magic ring and then crochet the square around her, so everything is worked in one connected piece. It's perfect for crocheters who are bored of plain grannies and want a motif that makes people say 'wait, you MADE that?'",
          "raw_text": "This free pattern creates a granny square with a personality: a plump little duck, complete with a three-dimensional beak that actually pops off the fabric, framed inside a classic square block. What makes it special is the construction — instead of appliquéing a duck onto a plain square, you build the duck first from a magic ring and then crochet the square around her, so everything is worked in one connected piece. It's perfect for crocheters who are bored of plain grannies and want a motif that makes people say 'wait, you MADE that?'",
          "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 duck granny square measures about 3.9 by 3.9 inches in DK weight yarn on a 3.00mm hook — that snug hook size gives the block a dense, structured feel, so the duck holds her shape beautifully. With four colors in play, each square looks bright and storybook-sweet. One square makes a darling coaster or appliqué for a tote; a whole flock joins into an unforgettable baby blanket, cushion cover, or pram blanket. As a handmade baby shower gift, this little duck is basically unbeatable",
          "raw_text": "The finished duck granny square measures about 3.9 by 3.9 inches in DK weight yarn on a 3.00mm hook — that snug hook size gives the block a dense, structured feel, so the duck holds her shape beautifully. With four colors in play, each square looks bright and storybook-sweet. One square makes a darling coaster or appliqué for a tote; a whole flock joins into an unforgettable baby blanket, cushion cover, or pram blanket. As a handmade baby shower gift, this little duck is basically unbeatable",
          "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": "Confession: I've made more of these little ducks than I can count, and the magic never wears off. The construction is just so clever — you start with a simple magic ring circle, and then those turned rows suddenly give the duck her rounded head, like she's hatching right off your hook. But the beak is my favorite part. You join new yarn, chain 5, and work back through the back loops with a sc2tog, and this perfect three-dimensional beak folds itself into shape. It delights me every single time. I also love that the square is worked in DK on a 3.00mm hook, so the fabric is firm and the motif never goes saggy. And because the finished block is only 3.9 inches, each one is a genuinely satisfying single-evening make — instant gratification with a face on it. Fair warning from experience: one finished duck looks lonely sitting on your desk. You will absolutely find yourself starting a second, and then planning a blanket",
          "raw_text": "Confession: I've made more of these little ducks than I can count, and the magic never wears off. The construction is just so clever — you start with a simple magic ring circle, and then those turned rows suddenly give the duck her rounded head, like she's hatching right off your hook. But the beak is my favorite part. You join new yarn, chain 5, and work back through the back loops with a sc2tog, and this perfect three-dimensional beak folds itself into shape. It delights me every single time. I also love that the square is worked in DK on a 3.00mm hook, so the fabric is firm and the motif never goes saggy. And because the finished block is only 3.9 inches, each one is a genuinely satisfying single-evening make — instant gratification with a face on it. Fair warning from experience: one finished duck looks lonely sitting on your desk. You will absolutely find yourself starting a second, and then planning a blanket",
          "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": "Leaving the magic ring loose before working the 8 single crochet foundation",
          "value": "Pull the ring tail firmly closed as soon as you've joined Round 1, and give it a second tug after Round 2. The duck's whole body radiates from this ring — a gap here becomes a visible hole in the center of your duck's belly. If your magic rings always loosen, work over the tail for the first few stitches so you can snug it up later, then weave the tail through the ring path twice before trimming",
          "raw_text": "Pull the ring tail firmly closed as soon as you've joined Round 1, and give it a second tug after Round 2. The duck's whole body radiates from this ring — a gap here becomes a visible hole in the center of your duck's belly. If your magic rings always loosen, work over the tail for the first few stitches so you can snug it up later, then weave the tail through the ring path twice before trimming",
          "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": "Forgetting that the standing ch-2 counts as the first hdc in the increase round",
          "value": "In Round 3, the ch-2 IS your first half double crochet, and the hdc worked into the same stitch completes the hdc-inc. If you chain 2 and then work a full hdc-inc (two more hdc) in that stitch, you'll gain an extra stitch every repeat and the circle will ruffle. Count your stitches after the round and remember to slip stitch into the top of that ch-2 to close, not into the stitch beside it",
          "raw_text": "In Round 3, the ch-2 IS your first half double crochet, and the hdc worked into the same stitch completes the hdc-inc. If you chain 2 and then work a full hdc-inc (two more hdc) in that stitch, you'll gain an extra stitch every repeat and the circle will ruffle. Count your stitches after the round and remember to slip stitch into the top of that ch-2 to close, not into the stitch beside it",
          "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": "Working the head rows in the round instead of turning",
          "value": "Once you hit the 'Turn over, ch1 + 1sc, 3sc' section, you're in short rows, not rounds — the head is shaped by working back and forth over just a few stitches. If you keep spiraling around the circle, the head never rises and your duck stays a pancake. Physically flip the work at the end of each row, and check that the right side and wrong side are alternating as you go",
          "raw_text": "Once you hit the 'Turn over, ch1 + 1sc, 3sc' section, you're in short rows, not rounds — the head is shaped by working back and forth over just a few stitches. If you keep spiraling around the circle, the head never rises and your duck stays a pancake. Physically flip the work at the end of each row, and check that the right side and wrong side are alternating as you go",
          "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": "Crocheting the beak chain through both loops instead of back loop only",
          "value": "The beak is worked into the back loop only (BLO) of the 4 chains after you chain 5 and skip 1. Working through both loops makes a stiff, flat tab instead of a beak that folds naturally into a bill shape. Turn the chain so the back bumps or back loops face you, and work your slip stitch, sc2tog, and sc through just that one loop — the free loop is what lets the beak curve",
          "raw_text": "The beak is worked into the back loop only (BLO) of the 4 chains after you chain 5 and skip 1. Working through both loops makes a stiff, flat tab instead of a beak that folds naturally into a bill shape. Turn the chain so the back bumps or back loops face you, and work your slip stitch, sc2tog, and sc through just that one loop — the free loop is what lets the beak curve",
          "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": "Cutting the yarn at 'set the loop aside for later use.'",
          "value": "When the pattern says to set the loop aside, it means keep that stitch live — you'll come back to it after the beak is made. Snipping the yarn here means an awkward rejoin and a visible bump on the duck's face. Pull the loop up long or slip a stitch marker or safety pin through it so it can't unravel while you rotate the piece and work the beak",
          "raw_text": "When the pattern says to set the loop aside, it means keep that stitch live — you'll come back to it after the beak is made. Snipping the yarn here means an awkward rejoin and a visible bump on the duck's face. Pull the loop up long or slip a stitch marker or safety pin through it so it can't unravel while you rotate the piece and work the beak",
          "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": "Rotating the wrong way before joining yarn for the beak",
          "value": "The pattern specifically says to rotate the piece 90 degrees anticlockwise before joining new yarn to the outer loop of the final sc from Row 5. Rotate clockwise and the beak ends up sprouting from the back of the head. Lay the duck flat, right side up, turn it a quarter-turn to the left, and double-check you're joining into the outer (free) loop of the correct stitch before chaining 5",
          "raw_text": "The pattern specifically says to rotate the piece 90 degrees anticlockwise before joining new yarn to the outer loop of the final sc from Row 5. Rotate clockwise and the beak ends up sprouting from the back of the head. Lay the duck flat, right side up, turn it a quarter-turn to the left, and double-check you're joining into the outer (free) loop of the correct stitch before chaining 5",
          "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",
              "raw_text": "Yarn of your choice- 4 colors, the sample is made with DK sports"
            },
            {
              "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-tr",
          "label": "tr",
          "value": "treble crochet",
          "raw_text": "tr = treble crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "tr",
          "meaning": "treble crochet"
        },
        {
          "order": 7,
          "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": 8,
          "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": 9,
          "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": 10,
          "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": 11,
          "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": 12,
          "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": 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": 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": "Start with a magic ring, ch1, 8sc in this ring, sl st to the first sc.",
          "raw_text": "Round 1 Start with a magic ring, ch1, 8sc in this ring, sl st to the first sc.",
          "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": "main-pattern-round-2",
          "label": "Round 2",
          "value": "ch1+1sc, sc-inc. *1sc, sc-inc* rep 3 times, sl st to the first sc.",
          "raw_text": "Round 2 ch1+1sc, sc-inc. *1sc, sc-inc* rep 3 times, sl st to the first sc.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "main-pattern-round-3",
          "label": "Round 3",
          "value": "ch2 as a standing st(count as 1hdc), make another hdc in the same st to form a hdc-inc, 2sc. *hdc-inc, 2sc* rep 3 times, sl st to the top of the first ch2.",
          "raw_text": "Round 3 ch2 as a standing st(count as 1hdc), make another hdc in the same st to form a hdc-inc, 2sc. *hdc-inc, 2sc* rep 3 times, sl st to the top of the first ch2.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "main-pattern-info-1",
          "label": "Info",
          "value": "Row 4 (ch1+1sc) in this st, 3sc.",
          "raw_text": "Row 4 (ch1+1sc) in this st, 3sc.",
          "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-2",
          "label": "Info",
          "value": "Row 5-7 For Each Row :  Turn over . ch1+1sc, 3sc.",
          "raw_text": "Row 5-7 For Each Row :  Turn over . ch1+1sc, 3sc.",
          "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": "main-pattern-info-3",
          "label": "Info",
          "value": "Row 8 Turn Over . ch2, sk2, 2sc. Set the loop aside for later use. SWING OF DUCK",
          "raw_text": "Row 8 Turn Over . ch2, sk2, 2sc. Set the loop aside for later use. SWING OF DUCK",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "round",
          "code": "main-pattern-round-9",
          "label": "Round 9",
          "value": "Rotate it 90 degrees   anticlockwise.  Join new yarn to the outer loop of the final sc from Row 5, ch5.",
          "raw_text": "Row 9 Rotate it 90 degrees   anticlockwise.  Join new yarn to the outer loop of the final sc from Row 5, ch5.",
          "round_start": 9,
          "round_end": 9,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "round",
          "code": "main-pattern-round-10",
          "label": "Round 10",
          "value": "sk1,  BLO  of next 4 chains: slst in the 4th ch, sc2tog, 1sc in 1st ch. slst to the joining loop, ch1, 1sc in the outer loop of next Row 6.",
          "raw_text": "Row 10 sk1,  BLO  of next 4 chains: slst in the 4th ch, sc2tog, 1sc in 1st ch. slst to the joining loop, ch1, 1sc in the outer loop of next Row 6.",
          "round_start": 10,
          "round_end": 10,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "round",
          "code": "main-pattern-round-11",
          "label": "Round 11",
          "value": "Turn over . work sts in Row 11: 2sc, sl st.",
          "raw_text": "Row 11 Turn over . work sts in Row 11: 2sc, sl st.",
          "round_start": 11,
          "round_end": 11,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "round",
          "code": "main-pattern-round-12",
          "label": "Round 12",
          "value": "Turn Over . ch1. sk the slst, 2sc, sl st to the outer loop of next Row 7.",
          "raw_text": "Row 12 Turn Over . ch1. sk the slst, 2sc, sl st to the outer loop of next Row 7.",
          "round_start": 12,
          "round_end": 12,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "round",
          "code": "main-pattern-round-13",
          "label": "Round 13",
          "value": "Turn Over . ch1. Work the following sts along the edge of the wing: sk1, 2sc, sc inc, 1sc, slst.",
          "raw_text": "Row 13 Turn Over . ch1. Work the following sts along the edge of the wing: sk1, 2sc, sc inc, 1sc, slst.",
          "round_start": 13,
          "round_end": 13,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "round",
          "code": "main-pattern-round-14",
          "label": "Round 14",
          "value": "Continue from Row 9, insert your hook into the loop we left. Make 1sc in each of the two posts, sl st to the third loop of the first sc from Row 14.",
          "raw_text": "Row 14 Continue from Row 9, insert your hook into the loop we left. Make 1sc in each of the two posts, sl st to the third loop of the first sc from Row 14.",
          "round_start": 14,
          "round_end": 14,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "info",
          "code": "main-pattern-info-4",
          "label": "Info",
          "value": "Row 15 Turn Over.  ch1, 1sc in each of the 2sc from the previous Row.",
          "raw_text": "Row 15 Turn Over.  ch1, 1sc in each of the 2sc from the previous Row.",
          "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-16",
          "label": "Round 16",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the second sc from Row 14.",
          "raw_text": "Row 16 Turn over. ch1, 2sc. sl st to the third loop of the second sc from Row 14.",
          "round_start": 16,
          "round_end": 16,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Info",
          "value": "Row 17 Turn over. ch1, 2sc.",
          "raw_text": "Row 17 Turn over. ch1, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "round",
          "code": "main-pattern-round-18",
          "label": "Round 18",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the first sc from the sc-inc in Row 14.",
          "raw_text": "Row 18 Turn over. ch1, 2sc. sl st to the third loop of the first sc from the sc-inc in Row 14.",
          "round_start": 18,
          "round_end": 18,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 17,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "Info",
          "value": "Row 19 Turn over. ch1, 2sc.",
          "raw_text": "Row 19 Turn over. ch1, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 18,
          "row_type": "round",
          "code": "main-pattern-round-20",
          "label": "Round 20",
          "value": "",
          "raw_text": "Row 20",
          "round_start": 20,
          "round_end": 20,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 19,
          "row_type": "round",
          "code": "main-pattern-round-21",
          "label": "Round 21",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the second sc from the sc-inc in Row 14.",
          "raw_text": "Row 21: Turn over. ch1, 2sc. sl st to the third loop of the second sc from the sc-inc in Row 14.",
          "round_start": 21,
          "round_end": 21,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 20,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "Info",
          "value": "Row 21 Turn over. ch1, 2sc.",
          "raw_text": "Row 21 Turn over. ch1, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 21,
          "row_type": "round",
          "code": "main-pattern-round-22",
          "label": "Round 22",
          "value": "Turn Over . ch1, 1sc, ch-1 pic, 1sc, sl st to the third loop of the final sc from Row 14.",
          "raw_text": "Row 22 Turn Over . ch1, 1sc, ch-1 pic, 1sc, sl st to the third loop of the final sc from Row 14.",
          "round_start": 22,
          "round_end": 22,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 22,
          "row_type": "info",
          "code": "main-pattern-info-8",
          "label": "Info",
          "value": "TURN IT INTO A SQUARE",
          "raw_text": "TURN IT INTO A SQUARE",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 23,
          "row_type": "info",
          "code": "main-pattern-info-9",
          "label": "Info",
          "value": "Round 23 Add new yarn in the third loop of the tip of the wing. Work 3tr in TLO of the stitch where the neck joins the body.",
          "raw_text": "Round 23 Add new yarn in the third loop of the tip of the wing. Work 3tr in TLO of the stitch where the neck joins the body.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 24,
          "row_type": "info",
          "code": "main-pattern-info-10",
          "label": "Info",
          "value": "Now we will work around the whole duck motif in either the  third loop  or the  outer loop  for a dimensional effect. ch3, (2tr+1dc), sk2, sl st to the third loop of next st. ch2, 4sc, (1sc+ch2+1sc), 3sc, 5hdc. (1dc+ch3+1dc), 2hdc, 4sc, 2hdc, (1dc+ch3+1dc), 2hdc, 2sc.",
          "raw_text": "Now we will work around the whole duck motif in either the  third loop  or the  outer loop  for a dimensional effect. ch3, (2tr+1dc), sk2, sl st to the third loop of next st. ch2, 4sc, (1sc+ch2+1sc), 3sc, 5hdc. (1dc+ch3+1dc), 2hdc, 4sc, 2hdc, (1dc+ch3+1dc), 2hdc, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 25,
          "row_type": "info",
          "code": "main-pattern-info-11",
          "label": "Info",
          "value": "Now we back to the beginning sts: 3tr, (2tr+ch3+1dc+1hdc) in next ch-sp, 2hdc, sl st to the top of the first ch2.",
          "raw_text": "Now we back to the beginning sts: 3tr, (2tr+ch3+1dc+1hdc) in next ch-sp, 2hdc, sl st to the top of the first ch2.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 26,
          "row_type": "round",
          "code": "main-pattern-round-24",
          "label": "Round 24",
          "value": "",
          "raw_text": "Round 24",
          "round_start": 24,
          "round_end": 24,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 27,
          "row_type": "round",
          "code": "main-pattern-round-25",
          "label": "Round 25",
          "value": "Ch3 as a standing st(count as 1dc), dc in remaining sts, while (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "raw_text": "Round 25: Ch3 as a standing st(count as 1dc), dc in remaining sts, while (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "round_start": 25,
          "round_end": 25,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 28,
          "row_type": "round",
          "code": "main-pattern-round-25",
          "label": "Round 25",
          "value": "Join new yarn to any st , ch3 as a standing st(count as 1dc), 1dc in each remaining st, while (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "raw_text": "Round 25 Join new yarn to any st , ch3 as a standing st(count as 1dc), 1dc in each remaining st, while (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "round_start": 25,
          "round_end": 25,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 29,
          "row_type": "round",
          "code": "main-pattern-round-26",
          "label": "Round 26",
          "value": "Join new yarn to any st, ch1, 1sc in each st, 3sc in each corner sp, finish with slst to the first sc, fasten off.",
          "raw_text": "Round 26 Join new yarn to any st, ch1, 1sc in each st, 3sc in each corner sp, finish with slst to the first sc, fasten off.",
          "round_start": 26,
          "round_end": 26,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 30,
          "row_type": "info",
          "code": "main-pattern-info-12",
          "label": "Info",
          "value": "Duck Details: Beak, Eye & Feet Beak:  Embroider a small  triangular  beak on the front of the duck's head.",
          "raw_text": "Duck Details: Beak, Eye & Feet Beak:  Embroider a small  triangular  beak on the front of the duck's head.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 31,
          "row_type": "info",
          "code": "main-pattern-info-13",
          "label": "Info",
          "value": "Feet:  Embroider two small feet at the bottom of the duck's body. Use a few  straight stitches  to create webbed-looking feet.",
          "raw_text": "Feet:  Embroider two small feet at the bottom of the duck's body. Use a few  straight stitches  to create webbed-looking feet.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 32,
          "row_type": "info",
          "code": "main-pattern-info-14",
          "label": "Info",
          "value": "Eyes:  Work a  French knot  at the center-top area of the duck's head (above the beak)to create a round, dimensional eye.",
          "raw_text": "Eyes:  Work a  French knot  at the center-top area of the duck's head (above the beak)to create a round, dimensional eye.",
          "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": "row-16-18",
      "title": "Row 16-18",
      "raw_heading": "Row 16-18",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "row-16-18-round-16",
          "label": "Round 16",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the second sc from Row 13.",
          "raw_text": "Row 16: Turn over. ch1, 2sc. sl st to the third loop of the second sc from Row 13.",
          "round_start": 16,
          "round_end": 16,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "row-16-18-info-1",
          "label": "Info",
          "value": "Row 17: Turn over. ch1, 2sc.",
          "raw_text": "Row 17: Turn over. ch1, 2sc.",
          "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": "row-16-18-round-18",
          "label": "Round 18",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the first sc from the sc-inc in Row 13.",
          "raw_text": "Row 18: Turn over. ch1, 2sc. sl st to the third loop of the first sc from the sc-inc in Row 13.",
          "round_start": 18,
          "round_end": 18,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "row-16-18-info-2",
          "label": "Info",
          "value": "Ch3 as a standing st(count as 1dc), dc in remaining sts, (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "raw_text": "Ch3 as a standing st(count as 1dc), dc in remaining sts, (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten 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": "info",
          "code": "row-16-18-info-3",
          "label": "Info",
          "value": "Join new yarn to any st , ch3 as a standing st(count as 1dc), dc in remaining sts, (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "raw_text": "Join new yarn to any st , ch3 as a standing st(count as 1dc), dc in remaining sts, (2dc+ch3+2dc) in each corner sp, end this round with slst to the top of the first ch3, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "part",
      "code": "row-19-21",
      "title": "Row 19-21",
      "raw_heading": "Row 19-21",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "row-19-21-info-1",
          "label": "Info",
          "value": "Row 19: Turn over. ch1, 2sc.",
          "raw_text": "Row 19: Turn over. ch1, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "row-19-21-round-20",
          "label": "Round 20",
          "value": "Turn over. ch1, 2sc. sl st to the third loop of the second sc from the sc-inc in Row 13.",
          "raw_text": "Row 20: Turn over. ch1, 2sc. sl st to the third loop of the second sc from the sc-inc in Row 13.",
          "round_start": 20,
          "round_end": 20,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "row-19-21-info-2",
          "label": "Info",
          "value": "Row 21: Turn over. ch1, 2sc.",
          "raw_text": "Row 21: Turn over. ch1, 2sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "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 small for DK weight yarn — it creates a tight, structured fabric so the duck motif doesn't gape or sag. If your tension runs tight and the fabric feels like cardboard, go up to 3.25mm, but resist jumping to 4mm or the square will come out noticeably larger and floppier than 3.9 inches",
          "raw_text": "💡 The 3.00mm hook is deliberately small for DK weight yarn — it creates a tight, structured fabric so the duck motif doesn't gape or sag. If your tension runs tight and the fabric feels like cardboard, go up to 3.25mm, but resist jumping to 4mm or the square will come out noticeably larger and floppier than 3.9 inches",
          "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": "💡 Because the turning ch-1 doesn't count as a stitch, drop a stitch marker into the first real sc of every round and row. This pattern moves between rounds, turned rows, and rejoined yarn, and the marker is what saves you when it's time to slip stitch closed or find 'the final sc from Row 5.'",
          "raw_text": "💡 Because the turning ch-1 doesn't count as a stitch, drop a stitch marker into the first real sc of every round and row. This pattern moves between rounds, turned rows, and rejoined yarn, and the marker is what saves you when it's time to slip stitch closed or find 'the final sc from Row 5.'",
          "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": "💡 Secure the live loop with a locking stitch marker the moment you set it aside for the beak. You'll be rotating the piece and joining new yarn right next to it, and an unsecured loop loves to unzip itself exactly then",
          "raw_text": "💡 Secure the live loop with a locking stitch marker the moment you set it aside for the beak. You'll be rotating the piece and joining new yarn right next to it, and an unsecured loop loves to unzip itself exactly then",
          "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": "💡 With four colors in one small square, leave 6-inch tails at every join and weave them in with your darning needle as you finish each section, not all at the end. Tails woven along same-color stitches disappear completely; a big cleanup session at the end almost always shows on the front",
          "raw_text": "💡 With four colors in one small square, leave 6-inch tails at every join and weave them in with your darning needle as you finish each section, not all at the end. Tails woven along same-color stitches disappear completely; a big cleanup session at the end almost always shows on the front",
          "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": "💡 The sc2tog in the beak should be worked snugly — it's the decrease that gives the bill its taper. If your beak looks blunt or boxy, redo the sc2tog with slightly tighter tension and make sure you skipped the first chain after the ch-5 as written",
          "raw_text": "💡 The sc2tog in the beak should be worked snugly — it's the decrease that gives the bill its taper. If your beak looks blunt or boxy, redo the sc2tog with slightly tighter tension and make sure you skipped the first chain after the ch-5 as written",
          "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": "💡 If you're making a flock for a blanket, block every square to exactly 3.9 x 3.9 inches before joining. Pin each one out on a foam mat, mist with water, and let them dry flat — motif squares like this have denser and lacier zones, and unblocked ones never quite line up at the corners",
          "raw_text": "💡 If you're making a flock for a blanket, block every square to exactly 3.9 x 3.9 inches before joining. Pin each one out on a foam mat, mist with water, and let them dry flat — motif squares like this have denser and lacier zones, and unblocked ones never quite line up at the corners",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 12,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "What size is the finished duck granny square?",
          "value": "Worked in DK weight yarn with a 3.00mm hook as written, the square comes out to about 3.9 by 3.9 inches (roughly 10 cm). Your exact size will shift a little with your personal tension, which is why blocking matters if you're joining multiples",
          "raw_text": "Worked in DK weight yarn with a 3.00mm hook as written, the square comes out to about 3.9 by 3.9 inches (roughly 10 cm). Your exact size will shift a little with your personal tension, which is why blocking matters if you're joining multiples",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What size is the finished duck granny square?",
          "answer": "Worked in DK weight yarn with a 3.00mm hook as written, the square comes out to about 3.9 by 3.9 inches (roughly 10 cm). Your exact size will shift a little with your personal tension, which is why blocking matters if you're joining multiples",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Can I use worsted weight yarn instead of DK?",
          "value": "Absolutely — pair worsted with a 4.00mm hook and you'll get a square closer to 4.5–5 inches with no pattern changes. Just make all your squares in the same yarn and hook so they match when joined",
          "raw_text": "Absolutely — pair worsted with a 4.00mm hook and you'll get a square closer to 4.5–5 inches with no pattern changes. Just make all your squares in the same yarn and hook so they match when joined",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use worsted weight yarn instead of DK?",
          "answer": "Absolutely — pair worsted with a 4.00mm hook and you'll get a square closer to 4.5–5 inches with no pattern changes. Just make all your squares in the same yarn and hook so they match when joined",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "Why does my duck's beak look flat instead of three-dimensional?",
          "value": "The beak only pops if you work into the back loop only of those 4 chains after the ch-5, and keep the sc2tog snug. Working through both loops of the chain flattens it into a tab — pull it out, find the back loops, and it'll fold into a proper little bill",
          "raw_text": "The beak only pops if you work into the back loop only of those 4 chains after the ch-5, and keep the sc2tog snug. Working through both loops of the chain flattens it into a tab — pull it out, find the back loops, and it'll fold into a proper little bill",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why does my duck's beak look flat instead of three-dimensional?",
          "answer": "The beak only pops if you work into the back loop only of those 4 chains after the ch-5, and keep the sc2tog snug. Working through both loops of the chain flattens it into a tab — pull it out, find the back loops, and it'll fold into a proper little bill",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Is this pattern okay for a confident beginner?",
          "value": "If you're comfortable with magic rings, hdc increases, and turning your work, yes — the trickiest moments are the short rows that shape the head and the beak's back-loop construction. Take those two sections slowly and count stitches after every round, and a confident beginner can finish it",
          "raw_text": "If you're comfortable with magic rings, hdc increases, and turning your work, yes — the trickiest moments are the short rows that shape the head and the beak's back-loop construction. Take those two sections slowly and count stitches after every round, and a confident beginner can finish it",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Is this pattern okay for a confident beginner?",
          "answer": "If you're comfortable with magic rings, hdc increases, and turning your work, yes — the trickiest moments are the short rows that shape the head and the beak's back-loop construction. Take those two sections slowly and count stitches after every round, and a confident beginner can finish it",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How do I join duck squares into a baby blanket?",
          "value": "A single crochet join on the wrong side gives a sturdy, tidy seam that stands up to washing; a whip stitch through back loops is flatter if you prefer an invisible finish. Decide on duck orientation before you join — all swimming the same way looks classic, while rotating alternate squares gives a playful scattered-flock effect",
          "raw_text": "A single crochet join on the wrong side gives a sturdy, tidy seam that stands up to washing; a whip stitch through back loops is flatter if you prefer an invisible finish. Decide on duck orientation before you join — all swimming the same way looks classic, while rotating alternate squares gives a playful scattered-flock effect",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How do I join duck squares into a baby blanket?",
          "answer": "A single crochet join on the wrong side gives a sturdy, tidy seam that stands up to washing; a whip stitch through back loops is flatter if you prefer an invisible finish. Decide on duck orientation before you join — all swimming the same way looks classic, while rotating alternate squares gives a playful scattered-flock effect",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/duck-granny-square-free-crochet-pattern-hero.webp",
    "data/images/duck-granny-square-free-crochet-pattern-step-2.webp",
    "data/images/duck-granny-square-free-crochet-pattern-step-3.webp",
    "data/images/duck-granny-square-free-crochet-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/duck-granny-square-free-crochet-pattern-hero.webp",
      "alt": "Duck Granny Square: Free Crochet Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/duck-granny-square-free-crochet-pattern-hero.webp",
      "alt": "Duck Granny Square: Free Crochet Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/duck-granny-square-free-crochet-pattern-step-2.webp",
      "alt": "Duck Granny Square: Free Crochet Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/duck-granny-square-free-crochet-pattern-step-3.webp",
      "alt": "Duck Granny Square: Free Crochet Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/duck-granny-square-free-crochet-pattern-step-4.webp",
      "alt": "Duck Granny Square: Free Crochet Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 3
}