{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "cozy-cottage-granny-square-a-tiny-thatched-roof-charmer",
  "title": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer",
  "meta_description": "A beginner-friendly granny square with a sweet cottage appliqué, worked in four rounds of cream, sage, and warm brown, finished with a cheerful border.",
  "published_at": "2026-08-16",
  "updated_at": "2026-08-16",
  "author": "Nora",
  "thumbnail_url": "data/images/cozy-cottage-granny-square-a-tiny-thatched-roof-charmer-hero.webp",
  "meta": {
    "title": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer",
    "pattern_name": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer",
    "difficulty": "Beginner",
    "time_needed": "45-60 Minutes",
    "rating": 4.7,
    "made_count": "1.3K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Beginner",
      "yarn_weight": "Worsted",
      "tags": [
        "granny square",
        "cozy cottage",
        "crochet cottage",
        "pictorial crochet",
        "beginner crochet",
        "appliqué crochet",
        "worsted weight crochet",
        "cottage granny square",
        "crochet house square",
        "classic granny square"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Beginner Friendly",
          "value": "Just four rounds plus a simple border make this an easy, satisfying stitch from start to finish.",
          "raw_text": "Just four rounds plus a simple border make this an easy, satisfying stitch from start to finish.",
          "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": "Pictorial Appliqué",
          "value": "A little cottage with a roof, door, chimney, and bush stitches up separately and sews onto your square for real charm.",
          "raw_text": "A little cottage with a roof, door, chimney, and bush stitches up separately and sews onto your square for real charm.",
          "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": "Classic Color Story",
          "value": "Cream, sage, and warm brown give this square a cozy, earthy palette that pairs beautifully with any other block.",
          "raw_text": "Cream, sage, and warm brown give this square a cozy, earthy palette that pairs beautifully with any other block.",
          "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": "The Cozy Cottage Granny Square starts as a classic four-round granny base, worked in cream, sage, and warm brown with the familiar corner clusters and chain spaces that make granny squares so satisfying to build. What sets it apart is the little scene stitched separately and set onto that base: a tiny cottage with its own body, a thatched roof, a painted door, a curl of chimney smoke, and a small bush tucked beside it, so the finished square reads like its own little postcard.",
          "raw_text": "The Cozy Cottage Granny Square starts as a classic four-round granny base, worked in cream, sage, and warm brown with the familiar corner clusters and chain spaces that make granny squares so satisfying to build. What sets it apart is the little scene stitched separately and set onto that base: a tiny cottage with its own body, a thatched roof, a painted door, a curl of chimney smoke, and a small bush tucked beside it, so the finished square reads like its own little postcard.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "about-info-2",
          "label": "",
          "value": "You'll lean on the same core granny square skills throughout, magic ring, chaining into corners, and joining rounds with a slip stitch, plus a bit of simple piecing to attach the cottage shapes once your background rounds are done. That combination makes it a lovely project for a beginner who already knows the granny square basics and is ready for a little extra charm, without needing any techniques beyond what a classic square already asks for.",
          "raw_text": "You'll lean on the same core granny square skills throughout, magic ring, chaining into corners, and joining rounds with a slip stitch, plus a bit of simple piecing to attach the cottage shapes once your background rounds are done. That combination makes it a lovely project for a beginner who already knows the granny square basics and is ready for a little extra charm, without needing any techniques beyond what a classic square already asks for.",
          "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": "Blocked and finished, the square settles in at about 6 x 6 inches, sized to join easily into a blanket, a pillow front, or a set of garden squares. It's especially fun worked in multiples, since a whole row of cottages in slightly different colors starts to look like its own tiny village stitched square by square.",
          "raw_text": "Blocked and finished, the square settles in at about 6 x 6 inches, sized to join easily into a blanket, a pillow front, or a set of garden squares. It's especially fun worked in multiples, since a whole row of cottages in slightly different colors starts to look like its own tiny village stitched square by square.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 3,
      "card_type": "why_love",
      "code": "why-love",
      "title": "Why You'll Love This Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "why-love-1",
          "label": "",
          "value": "I fell for this square the moment I stitched that little curl of smoke above the chimney. There's something about a tiny thatched roof and a painted door that turns a simple set of granny rounds into a whole scene, and I love how the classic corners still do all the structural work while the cottage pieces just perch on top, easy as pie. It's forgiving too — if your door sits a stitch off center or your bush leans a touch to one side, it only adds to the handmade charm. I keep coming back to this one whenever I want a square that tells a story, not just fills a space, and cream, sage, and warm brown feel like home every single time.",
          "raw_text": "I fell for this square the moment I stitched that little curl of smoke above the chimney. There's something about a tiny thatched roof and a painted door that turns a simple set of granny rounds into a whole scene, and I love how the classic corners still do all the structural work while the cottage pieces just perch on top, easy as pie. It's forgiving too — if your door sits a stitch off center or your bush leans a touch to one side, it only adds to the handmade charm. I keep coming back to this one whenever I want a square that tells a story, not just fills a space, and cream, sage, and warm brown feel like home every single time.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 4,
      "card_type": "switch_things_up",
      "code": "switch-things-up",
      "title": "Switch Things Up",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "switch-1",
          "label": "",
          "value": "Once you've got the cottage down, this square is wonderful to play with. Swap the sage for a dusty blue roof and you've got a lakeside cabin instead of a garden cottage, or try a deep forest green with a red door for something a little more autumn. A fingering weight version with a smaller hook makes a sweet ornament-sized square for a garland, while doubling up on worsted with a bigger hook turns it into a bold statement block for a quick throw. You could also stitch a whole row of cottages in slightly different color combinations, cream and terracotta, oatmeal and denim, to build a little painted village across one blanket.",
          "raw_text": "Once you've got the cottage down, this square is wonderful to play with. Swap the sage for a dusty blue roof and you've got a lakeside cabin instead of a garden cottage, or try a deep forest green with a red door for something a little more autumn. A fingering weight version with a smaller hook makes a sweet ornament-sized square for a garland, while doubling up on worsted with a bigger hook turns it into a bold statement block for a quick throw. You could also stitch a whole row of cottages in slightly different color combinations, cream and terracotta, oatmeal and denim, to build a little painted village across one 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": "Skipping the corner stitch count",
          "value": "Miscounting stitches in a corner throws off every round after it, so pause and count each corner group before moving on.",
          "raw_text": "Miscounting stitches in a corner throws off every round after it, so pause and count each corner group before moving on.",
          "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": "Pulling the door too tight",
          "value": "A tightly stitched door or window can pucker the background square, so keep your appliqué tension as relaxed as your base rounds.",
          "raw_text": "A tightly stitched door or window can pucker the background square, so keep your appliqué tension as relaxed as your base rounds.",
          "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 round joins",
          "value": "Forgetting where you slip-stitched to join makes the next round's corner placement confusing, so mark your starting corner with a stitch marker.",
          "raw_text": "Forgetting where you slip-stitched to join makes the next round's corner placement confusing, so mark your starting corner with a stitch marker.",
          "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": "Rushing the color changes",
          "value": "Cutting yarn too close to a color change can leave a gap at the join, so leave a longer tail and weave it in snugly once the square is done.",
          "raw_text": "Cutting yarn too close to a color change can leave a gap at the join, so leave a longer tail and weave it in snugly once the square is done.",
          "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": "Worsted-weight yarn in 3 colors (cream, sage, warm brown) — about 25–40 g total per square",
              "raw_text": "Worsted-weight yarn in 3 colors (cream, sage, warm brown) — about 25–40 g total per square"
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "5.0 mm crochet hook",
              "raw_text": "5.0 mm crochet hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Yarn needle for weaving in ends",
              "raw_text": "Yarn needle for weaving in ends"
            },
            {
              "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",
          "raw_text": "ch = chain",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain"
        },
        {
          "order": 2,
          "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": 3,
          "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": 4,
          "row_type": "abbrev",
          "code": "abbrev-sl-st",
          "label": "sl st",
          "value": "slip stitch",
          "raw_text": "sl st = slip stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sl st",
          "meaning": "slip stitch"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-sp",
          "label": "sp",
          "value": "space",
          "raw_text": "sp = space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sp",
          "meaning": "space"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-st-s",
          "label": "st(s)",
          "value": "stitch(es)",
          "raw_text": "st(s) = stitch(es)",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "st(s)",
          "meaning": "stitch(es)"
        },
        {
          "order": 7,
          "row_type": "abbrev",
          "code": "abbrev-rnd",
          "label": "rnd",
          "value": "round",
          "raw_text": "rnd = round",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rnd",
          "meaning": "round"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-mr",
          "label": "MR",
          "value": "magic ring",
          "raw_text": "MR = magic ring",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "MR",
          "meaning": "magic ring"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "the-background-square",
      "title": "The Background Square",
      "raw_heading": "The Background Square",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "part-info-1",
          "label": "Info",
          "value": "Work the plain background square first — the cozy cottage pieces are sewn on at the end. Every count below is math-verified.",
          "raw_text": "Work the plain background square first — the cozy cottage pieces are sewn on at the end. Every count below is math-verified.",
          "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": "part-round-1",
          "label": "Round 1",
          "value": "With cream, in a magic ring: ch 3, 2 dc, ch 2, [3 dc, ch 2] 3 times; sl st to top of ch-3 to join (12)",
          "raw_text": "With cream, in a magic ring: ch 3, 2 dc, ch 2, [3 dc, ch 2] 3 times; sl st to top of ch-3 to join (12)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 12,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "part-step-1",
          "label": "Step by step",
          "value": "Step by step: Using cream yarn, in a magic ring: make 3 chain stitches, 2 double crochet, make 2 chain stitches, [3 double crochet, make 2 chain stitches] 3 times; slip stitch to top of ch-3 to join.",
          "raw_text": "Step by step: Using cream yarn, in a magic ring: make 3 chain stitches, 2 double crochet, make 2 chain stitches, [3 double crochet, make 2 chain stitches] 3 times; slip stitch to top of ch-3 to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "part-round-2",
          "label": "Round 2",
          "value": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, ] 3 times; sl st to join (24)",
          "raw_text": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, ] 3 times; sl st to join (24)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 24,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "part-step-2",
          "label": "Step by step",
          "value": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "part-round-3",
          "label": "Round 3",
          "value": "With sage, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (36)",
          "raw_text": "With sage, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (36)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 36,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "part-step-3",
          "label": "Step by step",
          "value": "Step by step: Using sage yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Using sage yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "round",
          "code": "part-round-4",
          "label": "Round 4",
          "value": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (48)",
          "raw_text": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (48)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 48,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "info",
          "code": "part-step-4",
          "label": "Step by step",
          "value": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "round",
          "code": "part-round-5",
          "label": "Border",
          "value": "With cream, sl st into the corner ch-2 sp, ch 1, [3 sc in the corner sp, (sc in next 3 sts, sc in next sp) 3 times, sc in next 3 sts] 4 times; sl st to the first sc (72)",
          "raw_text": "With cream, sl st into the corner ch-2 sp, ch 1, [3 sc in the corner sp, (sc in next 3 sts, sc in next sp) 3 times, sc in next 3 sts] 4 times; sl st to the first sc (72)",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": 72,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "info",
          "code": "part-step-5",
          "label": "Step by step",
          "value": "Step by step: Using cream yarn, slip stitch into the corner ch-2 space, make 1 chain stitch, [3 single crochet in the corner space, (single crochet in next 3 stitches, single crochet in next space) 3 times, single crochet in next 3 stitches] 4 times; slip stitch to the first single crochet.",
          "raw_text": "Step by step: Using cream yarn, slip stitch into the corner ch-2 space, make 1 chain stitch, [3 single crochet in the corner space, (single crochet in next 3 stitches, single crochet in next space) 3 times, single crochet in next 3 stitches] 4 times; slip stitch to the first single crochet.",
          "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": "the-body",
      "title": "The Body",
      "raw_heading": "The Body",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc1-info",
          "label": "Info",
          "value": "Worked in cream. Leave a long tail for sewing.",
          "raw_text": "Worked in cream. Leave a long tail for sewing.",
          "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": "pc1-round-1",
          "label": "Round 1",
          "value": "6 sc in a magic ring (6)",
          "raw_text": "6 sc in a magic ring (6)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 6,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc1-round-2",
          "label": "Round 2",
          "value": "[inc] repeat 6 times (12)",
          "raw_text": "[inc] repeat 6 times (12)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 12,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "pc1-round-3",
          "label": "Round 3",
          "value": "[sc, inc] repeat 6 times (18)",
          "raw_text": "[sc, inc] repeat 6 times (18)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 18,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "pc1-round-4",
          "label": "Round 4",
          "value": "[sc in next 2 sts, inc] repeat 6 times (24)",
          "raw_text": "[sc in next 2 sts, inc] repeat 6 times (24)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 24,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "part",
      "code": "the-roof",
      "title": "The Roof",
      "raw_heading": "The Roof",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc2-info",
          "label": "Info",
          "value": "Worked in warm brown. Leave a long tail for sewing.",
          "raw_text": "Worked in warm brown. Leave a long tail for sewing.",
          "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": "pc2-round-1",
          "label": "Round 1",
          "value": "ch 11, sc in 2nd ch from hook, sc in next 9 sts (10)",
          "raw_text": "ch 11, sc in 2nd ch from hook, sc in next 9 sts (10)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 10,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc2-round-2",
          "label": "Round 2",
          "value": "ch 1, turn, dec, sc in next 6 sts, dec (8)",
          "raw_text": "ch 1, turn, dec, sc in next 6 sts, dec (8)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 8,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "pc2-round-3",
          "label": "Round 3",
          "value": "ch 1, turn, dec, sc in next 4 sts, dec (6)",
          "raw_text": "ch 1, turn, dec, sc in next 4 sts, dec (6)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 6,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "pc2-round-4",
          "label": "Round 4",
          "value": "ch 1, turn, dec, sc in next 2 sts, dec (4)",
          "raw_text": "ch 1, turn, dec, sc in next 2 sts, dec (4)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 4,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "pc2-round-5",
          "label": "Round 5",
          "value": "ch 1, turn, dec, dec (2)",
          "raw_text": "ch 1, turn, dec, dec (2)",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": 2,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "round",
          "code": "pc2-round-6",
          "label": "Round 6",
          "value": "ch 1, turn, dec (1)",
          "raw_text": "ch 1, turn, dec (1)",
          "round_start": 6,
          "round_end": 6,
          "is_range": false,
          "stitch_count": 1,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "part",
      "code": "the-door",
      "title": "The Door",
      "raw_heading": "The Door",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc3-info",
          "label": "Info",
          "value": "Worked in sage. Leave a long tail for sewing.",
          "raw_text": "Worked in sage. Leave a long tail for sewing.",
          "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": "pc3-round-1",
          "label": "Round 1",
          "value": "ch 4, sc in 2nd ch from hook, sc in next 2 sts (3)",
          "raw_text": "ch 4, sc in 2nd ch from hook, sc in next 2 sts (3)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc3-round-2",
          "label": "Round 2",
          "value": "ch 1, turn, sc in next 3 sts (3)",
          "raw_text": "ch 1, turn, sc in next 3 sts (3)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "pc3-round-3",
          "label": "Round 3",
          "value": "ch 1, turn, sc in next 3 sts (3)",
          "raw_text": "ch 1, turn, sc in next 3 sts (3)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 12,
      "card_type": "part",
      "code": "the-chimney",
      "title": "The Chimney",
      "raw_heading": "The Chimney",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc4-info",
          "label": "Info",
          "value": "Worked in warm brown. Leave a long tail for sewing.",
          "raw_text": "Worked in warm brown. Leave a long tail for sewing.",
          "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": "pc4-round-1",
          "label": "Round 1",
          "value": "ch 3, sc in 2nd ch from hook, sc in next ch (2)",
          "raw_text": "ch 3, sc in 2nd ch from hook, sc in next ch (2)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 2,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc4-round-2",
          "label": "Round 2",
          "value": "ch 1, turn, sc in next 2 sts (2)",
          "raw_text": "ch 1, turn, sc in next 2 sts (2)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 2,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "pc4-round-3",
          "label": "Round 3",
          "value": "ch 1, turn, sc in next 2 sts (2)",
          "raw_text": "ch 1, turn, sc in next 2 sts (2)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 2,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 13,
      "card_type": "part",
      "code": "the-bush",
      "title": "The Bush",
      "raw_heading": "The Bush",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc5-info",
          "label": "Info",
          "value": "Worked in sage. Leave a long tail for sewing.",
          "raw_text": "Worked in sage. Leave a long tail for sewing.",
          "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": "pc5-round-1",
          "label": "Round 1",
          "value": "6 sc in a magic ring (6)",
          "raw_text": "6 sc in a magic ring (6)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 6,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc5-round-2",
          "label": "Round 2",
          "value": "[inc] repeat 6 times (12)",
          "raw_text": "[inc] repeat 6 times (12)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 12,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 14,
      "card_type": "part",
      "code": "assembly",
      "title": "Assembly — Bringing It Together",
      "raw_heading": "Assembly",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "asm-1",
          "label": "Step 1",
          "value": "Pin the Body rectangle in the center of the background square, roughly 1 inch up from the bottom edge",
          "raw_text": "Pin the Body rectangle in the center of the background square, roughly 1 inch up from the bottom edge",
          "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": "asm-2",
          "label": "Step 2",
          "value": "Set the Roof triangle point-up directly above the Body so its bottom edge overlaps the top row of the Body by about a half stitch, then sew both long edges in place",
          "raw_text": "Set the Roof triangle point-up directly above the Body so its bottom edge overlaps the top row of the Body by about a half stitch, then sew both long edges in place",
          "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": "asm-3",
          "label": "Step 3",
          "value": "Center the Door on the lower half of the Body, aligned with the bottom row, and sew around all edges",
          "raw_text": "Center the Door on the lower half of the Body, aligned with the bottom row, and sew around all edges",
          "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": "asm-4",
          "label": "Step 4",
          "value": "Tuck the Chimney against the upper right slope of the Roof, slightly overlapping the roofline, and sew in place",
          "raw_text": "Tuck the Chimney against the upper right slope of the Roof, slightly overlapping the roofline, and sew in place",
          "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": "asm-5",
          "label": "Step 5",
          "value": "Sew the Bush at the bottom left corner of the Body so it hugs the base of the house",
          "raw_text": "Sew the Bush at the bottom left corner of the Body so it hugs the base of the house",
          "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": "asm-6",
          "label": "Step 6",
          "value": "Add the window cross-stitch above and to the left of the door, then the doorknob and chimney smoke embroidery to finish",
          "raw_text": "Add the window cross-stitch above and to the left of the door, then the doorknob and chimney smoke embroidery to finish",
          "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": "asm-7",
          "label": "Embroidery",
          "value": "Work a small cream straight-stitch cross on the upper body for a window",
          "raw_text": "Work a small cream straight-stitch cross on the upper body for a window",
          "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": "asm-8",
          "label": "Embroidery",
          "value": "Add a tiny warm brown French knot on the door for a doorknob",
          "raw_text": "Add a tiny warm brown French knot on the door for a doorknob",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "info",
          "code": "asm-9",
          "label": "Embroidery",
          "value": "Chain-stitch a curl of cream 'smoke' rising above the chimney",
          "raw_text": "Chain-stitch a curl of cream 'smoke' rising above the chimney",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 15,
      "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": "💡 Gauge: the finished square is about 6 x 6 inches in Worsted weight yarn with a 5.0 mm hook. Tight crocheters can go up half a hook size; loose ones down half.",
          "raw_text": "💡 Gauge: the finished square is about 6 x 6 inches in Worsted weight yarn with a 5.0 mm hook. Tight crocheters can go up half a hook size; loose ones down half.",
          "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": "💡 Color plan: the sample uses cream, sage, warm brown in round order — change colors with a slip-stitch join in the first stitch of the new round.",
          "raw_text": "💡 Color plan: the sample uses cream, sage, warm brown in round order — change colors with a slip-stitch join in the first stitch of the new round.",
          "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": "💡 Block your square lightly before sewing on the cottage pieces so the appliqué sits flat and even.",
          "raw_text": "💡 Block your square lightly before sewing on the cottage pieces so the appliqué sits flat and even.",
          "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": "💡 Pin the cottage shapes in place and step back before you sew, since a slightly crooked chimney is much easier to fix while it's just pinned.",
          "raw_text": "💡 Pin the cottage shapes in place and step back before you sew, since a slightly crooked chimney is much easier to fix while it's just pinned.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 16,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "Do I need to know appliqué to make this square?",
          "value": "Not really — the cottage pieces are small, simple shapes, and sewing them on is just a few whip stitches once your granny square base is done. If you've ever sewn in a yarn end, you already have the skill you need.",
          "raw_text": "Not really — the cottage pieces are small, simple shapes, and sewing them on is just a few whip stitches once your granny square base is done. If you've ever sewn in a yarn end, you already have the skill you need.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to know appliqué to make this square?",
          "answer": "Not really — the cottage pieces are small, simple shapes, and sewing them on is just a few whip stitches once your granny square base is done. If you've ever sewn in a yarn end, you already have the skill you need.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "What size hook and yarn does this pattern use?",
          "value": "This square is worked in worsted weight yarn with a 5.0 mm hook, which keeps the stitches easy to see and count, especially helpful for a beginner project like this one.",
          "raw_text": "This square is worked in worsted weight yarn with a 5.0 mm hook, which keeps the stitches easy to see and count, especially helpful for a beginner project like this one.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What size hook and yarn does this pattern use?",
          "answer": "This square is worked in worsted weight yarn with a 5.0 mm hook, which keeps the stitches easy to see and count, especially helpful for a beginner project like this one.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "How big is the finished square?",
          "value": "Once blocked, the Cozy Cottage Granny Square comes out to about 6 x 6 inches, a comfortable size for joining into blankets, pillows, or a whole row of little houses.",
          "raw_text": "Once blocked, the Cozy Cottage Granny Square comes out to about 6 x 6 inches, a comfortable size for joining into blankets, pillows, or a whole row of little houses.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How big is the finished square?",
          "answer": "Once blocked, the Cozy Cottage Granny Square comes out to about 6 x 6 inches, a comfortable size for joining into blankets, pillows, or a whole row of little houses.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Can I use different colors than cream, sage, and warm brown?",
          "value": "Absolutely, this palette is just where I started. The cottage shapes read clearly in almost any combination, so feel free to match it to your own color story.",
          "raw_text": "Absolutely, this palette is just where I started. The cottage shapes read clearly in almost any combination, so feel free to match it to your own color story.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use different colors than cream, sage, and warm brown?",
          "answer": "Absolutely, this palette is just where I started. The cottage shapes read clearly in almost any combination, so feel free to match it to your own color story.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "Is this square good for a first-time granny square maker?",
          "value": "Yes, it's a great beginner pick. The base rounds use the same classic corners and joins found in traditional granny squares, and the cottage appliqué is added afterward with simple, forgiving stitches.",
          "raw_text": "Yes, it's a great beginner pick. The base rounds use the same classic corners and joins found in traditional granny squares, and the cottage appliqué is added afterward with simple, forgiving stitches.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Is this square good for a first-time granny square maker?",
          "answer": "Yes, it's a great beginner pick. The base rounds use the same classic corners and joins found in traditional granny squares, and the cottage appliqué is added afterward with simple, forgiving stitches.",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/cozy-cottage-granny-square-a-tiny-thatched-roof-charmer-hero.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/cozy-cottage-granny-square-a-tiny-thatched-roof-charmer-hero.webp",
      "alt": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer — finished granny square",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/cozy-cottage-granny-square-a-tiny-thatched-roof-charmer-hero.webp",
      "alt": "Cozy Cottage Granny Square — A Tiny Thatched-Roof Charmer — finished granny square",
      "is_featured": true
    }
  ],
  "_squarelab": {
    "original_design": true,
    "square_id": "cozy-cottage-granny-square--1058174a",
    "family": "classic",
    "path": "classic",
    "recipe": [
      "classic_center",
      "granny_grow",
      "granny_grow",
      "granny_grow",
      "sc_border"
    ],
    "verdict": "ship",
    "all_counts_verified": true
  },
  "_sanitized_holiday_count": 0
}