{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "whiskers-the-cat-granny-square-a-sweet-applique-keepsake",
  "title": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake",
  "meta_description": "An easy 5-round granny square in cream, grey, and blush pink, topped with a whiskery cat face appliqué — a quick, charming keepsake to stitch and give.",
  "published_at": "2026-08-08",
  "updated_at": "2026-08-08",
  "author": "Nora",
  "thumbnail_url": "data/images/whiskers-the-cat-granny-square-a-sweet-applique-keepsake-hero-v2.webp",
  "meta": {
    "title": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake",
    "pattern_name": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake",
    "difficulty": "Easy",
    "time_needed": "45-60 Minutes",
    "rating": 4.8,
    "made_count": "1.7K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Easy",
      "yarn_weight": "Worsted",
      "tags": [
        "granny square",
        "crochet cat",
        "cat granny square",
        "easy crochet pattern",
        "worsted weight crochet",
        "beginner crochet square",
        "crochet appliqué",
        "blush pink crochet",
        "crochet motif",
        "solid granny square"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Easy skill level",
          "value": "Simple stitches and a clear four-round build make this a relaxed, confidence-building square.",
          "raw_text": "Simple stitches and a clear four-round build make this a relaxed, confidence-building square.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "hero-info-2",
          "label": "Sweet cat appliqué",
          "value": "A tiny pointed-ear face with cheeks and a nose turns a plain square into a whimsical keepsake.",
          "raw_text": "A tiny pointed-ear face with cheeks and a nose turns a plain square into a whimsical keepsake.",
          "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": "Three soft colors",
          "value": "Cream, grey, and blush pink work up a gentle palette that pairs beautifully with any blanket.",
          "raw_text": "Cream, grey, and blush pink work up a gentle palette that pairs beautifully with any blanket.",
          "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": "Whiskers the Cat Granny Square is a classic solid granny square dressed up with a small, sewn-on cat face — a pointed-ear appliqué with a nose and two rosy cheeks that gives the whole piece personality. It starts the way any good granny square does, worked in rounds from the center out, and finishes with Whiskers peeking out from the middle like a little mascot for your blanket.",
          "raw_text": "Whiskers the Cat Granny Square is a classic solid granny square dressed up with a small, sewn-on cat face — a pointed-ear appliqué with a nose and two rosy cheeks that gives the whole piece personality. It starts the way any good granny square does, worked in rounds from the center out, and finishes with Whiskers peeking out from the middle like a little mascot for your blanket.",
          "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 work double crochet rounds with corner increases, join as you go with slip stitches, and finish with a tidy single crochet border — all in worsted weight yarn on a 5.0 mm hook, so the stitches stay easy to see and count. The face pieces use the same simple stitches as the square, which makes this a lovely project for a confident beginner and a satisfying, quick one for anyone with a little granny square experience already under their belt.",
          "raw_text": "You'll work double crochet rounds with corner increases, join as you go with slip stitches, and finish with a tidy single crochet border — all in worsted weight yarn on a 5.0 mm hook, so the stitches stay easy to see and count. The face pieces use the same simple stitches as the square, which makes this a lovely project for a confident beginner and a satisfying, quick one for anyone with a little granny square experience already under their belt.",
          "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": "Finished, the square measures about six by six inches, with Whiskers' face sewn on so it sits proudly at the center. It's charming stitched alone as a small gift or coaster-style keepsake, and just as lovely repeated and joined with plain solid squares into a blanket, pillow, or bag where one or two cat faces get to be the star.",
          "raw_text": "Finished, the square measures about six by six inches, with Whiskers' face sewn on so it sits proudly at the center. It's charming stitched alone as a small gift or coaster-style keepsake, and just as lovely repeated and joined with plain solid squares into a blanket, pillow, or bag where one or two cat faces get to be the star.",
          "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 designed Whiskers because I wanted a granny square that made me smile every time I picked it up, and this one does. There's something so satisfying about working the plain rounds in cream and grey and blush pink, watching the corners stack up neatly, and then getting to the fun part — sewing on those little pointed ears and rosy cheeks and watching a face appear out of nowhere. It never fails to surprise me how much personality two small ears and a tiny nose can give a square. I love that it stays simple the whole way through, so I can crochet the base while chatting or half-watching something, and save my full attention for the sweet, fiddly bit of putting Whiskers' face together at the end.",
          "raw_text": "I designed Whiskers because I wanted a granny square that made me smile every time I picked it up, and this one does. There's something so satisfying about working the plain rounds in cream and grey and blush pink, watching the corners stack up neatly, and then getting to the fun part — sewing on those little pointed ears and rosy cheeks and watching a face appear out of nowhere. It never fails to surprise me how much personality two small ears and a tiny nose can give a square. I love that it stays simple the whole way through, so I can crochet the base while chatting or half-watching something, and save my full attention for the sweet, fiddly bit of putting Whiskers' face together at the end.",
          "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": "Losing track of corner spaces",
          "value": "It's easy to work into the wrong stitch after a corner. Pause after each corner and count your dc group before moving to the next side.",
          "raw_text": "It's easy to work into the wrong stitch after a corner. Pause after each corner and count your dc group before moving to the next side.",
          "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 magic ring too loose",
          "value": "A loose center leaves a visible gap once the square is finished. Snug up the ring tail firmly before working your first round of stitches.",
          "raw_text": "A loose center leaves a visible gap once the square is finished. Snug up the ring tail firmly before working your first round of stitches.",
          "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": "Sewing the appliqué on unevenly",
          "value": "A crooked face is the first thing anyone notices. Pin the pieces in place and step back to check placement before you sew a single stitch.",
          "raw_text": "A crooked face is the first thing anyone notices. Pin the pieces in place and step back to check placement before you sew a single stitch.",
          "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": "Skipping a stitch count check",
          "value": "Rounds that drift off count throw the corners out of alignment. Count your stitches at the end of each round against the pattern before moving on.",
          "raw_text": "Rounds that drift off count throw the corners out of alignment. Count your stitches at the end of each round against the pattern before moving on.",
          "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, grey, blush pink) — about 25–40 g total per square",
              "raw_text": "Worsted-weight yarn in 3 colors (cream, grey, blush pink) — 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 whiskers the cat pieces are sewn on at the end. Every count below is math-verified.",
          "raw_text": "Work the plain background square first — the whiskers the cat 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 into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 3 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 3 sts] 3 times; sl st to top of ch-3 to join (28)",
          "raw_text": "sl st into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 3 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 3 sts] 3 times; sl st to top of ch-3 to join (28)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 28,
          "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 into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 3 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 3 stitches] 3 times; slip stitch to top of ch-3 to join.",
          "raw_text": "Step by step: Slip stitch into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 3 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 3 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": 6,
          "row_type": "round",
          "code": "part-round-3",
          "label": "Round 3",
          "value": "With grey, sl st into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 7 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 7 sts] 3 times; sl st to top of ch-3 to join (44)",
          "raw_text": "With grey, sl st into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 7 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 7 sts] 3 times; sl st to top of ch-3 to join (44)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 44,
          "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 grey yarn, slip stitch into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 7 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 7 stitches] 3 times; slip stitch to top of ch-3 to join.",
          "raw_text": "Step by step: Using grey yarn, slip stitch into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 7 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 7 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": 8,
          "row_type": "round",
          "code": "part-round-4",
          "label": "Round 4",
          "value": "sl st into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 11 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 11 sts] 3 times; sl st to top of ch-3 to join (60)",
          "raw_text": "sl st into the next corner ch-2 sp, ch 3, (dc, ch 2, 2 dc) in same sp, dc in next 11 sts, [(2 dc, ch 2, 2 dc) in next corner sp, dc in next 11 sts] 3 times; sl st to top of ch-3 to join (60)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 60,
          "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 into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 11 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 11 stitches] 3 times; slip stitch to top of ch-3 to join.",
          "raw_text": "Step by step: Slip stitch into the next corner ch-2 space, make 3 chain stitches, (double crochet, make 2 chain stitches, 2 double crochet) in same space, double crochet in next 11 stitches, [(2 double crochet, make 2 chain stitches, 2 double crochet) in next corner space, double crochet in next 11 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": 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 15 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 15 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 15 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 15 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-face",
      "title": "The Face",
      "raw_heading": "The Face",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc1-info",
          "label": "Info",
          "value": "Worked in grey. Leave a long tail for sewing.",
          "raw_text": "Worked in grey. 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": 10,
      "card_type": "part",
      "code": "the-ear-make-2",
      "title": "The Ear (make 2)",
      "raw_heading": "The Ear (make 2)",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc2-info",
          "label": "Info",
          "value": "Worked in grey. Leave a long tail for sewing.",
          "raw_text": "Worked in grey. 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 5, sc in 2nd ch from hook, [sc] repeat 3 times (4)",
          "raw_text": "ch 5, sc in 2nd ch from hook, [sc] repeat 3 times (4)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 4,
          "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, dec (2)",
          "raw_text": "ch 1, turn, dec, dec (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": "pc2-round-3",
          "label": "Round 3",
          "value": "ch 1, turn, dec (1)",
          "raw_text": "ch 1, turn, dec (1)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 1,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "part",
      "code": "the-inner-ear-make-2",
      "title": "The Inner Ear (make 2)",
      "raw_heading": "The Inner Ear (make 2)",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc3-info",
          "label": "Info",
          "value": "Worked in blush pink. Leave a long tail for sewing.",
          "raw_text": "Worked in blush pink. 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] repeat 2 times (3)",
          "raw_text": "ch 4, sc in 2nd ch from hook, [sc] repeat 2 times (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, dec, sc (2)",
          "raw_text": "ch 1, turn, dec, sc (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": "pc3-round-3",
          "label": "Round 3",
          "value": "ch 1, turn, dec (1)",
          "raw_text": "ch 1, turn, dec (1)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 1,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 12,
      "card_type": "part",
      "code": "the-nose",
      "title": "The Nose",
      "raw_heading": "The Nose",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc4-info",
          "label": "Info",
          "value": "Worked in blush pink. Leave a long tail for sewing.",
          "raw_text": "Worked in blush pink. 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 (2)",
          "raw_text": "ch 3, sc in 2nd ch from hook, sc (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, dec (1)",
          "raw_text": "ch 1, turn, dec (1)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 1,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 13,
      "card_type": "part",
      "code": "the-cheek-make-2",
      "title": "The Cheek (make 2)",
      "raw_heading": "The Cheek (make 2)",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc5-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": "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": "Step 1: Pin the grey Face circle centered on the background square, positioned slightly below center to leave room above for the ears.",
          "raw_text": "Step 1: Pin the grey Face circle centered on the background square, positioned slightly below center to leave room above for the ears.",
          "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": "Step 2: Sew the Face in place with a whipstitch or backstitch around its outer edge, weaving in ends on the wrong side.",
          "raw_text": "Step 2: Sew the Face in place with a whipstitch or backstitch around its outer edge, weaving in ends on the wrong side.",
          "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": "Step 3: Whipstitch one Inner Ear onto each Ear, matching points and centering the pink triangle on the grey one.",
          "raw_text": "Step 3: Whipstitch one Inner Ear onto each Ear, matching points and centering the pink triangle on the grey one.",
          "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": "Step 4: Pin the two Ears point-up along the top edge of the Face, one over the upper-left and one over the upper-right, tucking their straight (Row 1) edge just behind the Face's top edge so the points peek up above it; sew each Ear in place.",
          "raw_text": "Step 4: Pin the two Ears point-up along the top edge of the Face, one over the upper-left and one over the upper-right, tucking their straight (Row 1) edge just behind the Face's top edge so the points peek up above it; sew each Ear 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": "Step 5: Center the Nose piece point-down in the lower third of the Face and sew in place.",
          "raw_text": "Step 5: Center the Nose piece point-down in the lower third of the Face 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": 6,
          "row_type": "info",
          "code": "asm-6",
          "label": "Step 6",
          "value": "Step 6: Sew a Cheek circle on each side of the Nose, just beneath the inner points of the Ears, to round out the muzzle area.",
          "raw_text": "Step 6: Sew a Cheek circle on each side of the Nose, just beneath the inner points of the Ears, to round out the muzzle area.",
          "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": "In grey, work two small angled straight stitches above the nose for eyes, tilting the outer end of each stitch slightly upward for a cat-like squint.",
          "raw_text": "In grey, work two small angled straight stitches above the nose for eyes, tilting the outer end of each stitch slightly upward for a cat-like squint.",
          "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": "In blush pink, work a tiny straight stitch or small V just below the nose for a mouth.",
          "raw_text": "In blush pink, work a tiny straight stitch or small V just below the nose for a mouth.",
          "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": "In cream, work 3 straight-stitch whiskers on each cheek, radiating outward from beside the nose.",
          "raw_text": "In cream, work 3 straight-stitch whiskers on each cheek, radiating outward from beside the nose.",
          "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, grey, blush pink 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, grey, blush pink 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": "💡 Weave in your color-change tails as you go rather than saving them all for the end — it keeps the back of the square tidy and makes blocking easier.",
          "raw_text": "💡 Weave in your color-change tails as you go rather than saving them all for the end — it keeps the back of the square tidy and makes blocking easier.",
          "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": "💡 Block the square lightly before sewing on Whiskers' face so the corners lie flat and the appliqué pieces sit smoothly against the background.",
          "raw_text": "💡 Block the square lightly before sewing on Whiskers' face so the corners lie flat and the appliqué pieces sit smoothly against the background.",
          "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": "What weight yarn and hook does this pattern use?",
          "value": "Whiskers is worked in worsted weight yarn with a 5.0 mm hook. Any worsted weight yarn you enjoy working with will give you a nicely proportioned square.",
          "raw_text": "Whiskers is worked in worsted weight yarn with a 5.0 mm hook. Any worsted weight yarn you enjoy working with will give you a nicely proportioned square.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What weight yarn and hook does this pattern use?",
          "answer": "Whiskers is worked in worsted weight yarn with a 5.0 mm hook. Any worsted weight yarn you enjoy working with will give you a nicely proportioned square.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "How big is the finished square?",
          "value": "The finished square measures about six by six inches. That makes it a great single motif or a building block for a larger blanket.",
          "raw_text": "The finished square measures about six by six inches. That makes it a great single motif or a building block for a larger blanket.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How big is the finished square?",
          "answer": "The finished square measures about six by six inches. That makes it a great single motif or a building block for a larger blanket.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "Is this pattern good for beginners?",
          "value": "Yes, it's rated easy and uses simple, repeated stitches throughout. If you can work double crochet and single crochet, you're ready to make Whiskers.",
          "raw_text": "Yes, it's rated easy and uses simple, repeated stitches throughout. If you can work double crochet and single crochet, you're ready to make Whiskers.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Is this pattern good for beginners?",
          "answer": "Yes, it's rated easy and uses simple, repeated stitches throughout. If you can work double crochet and single crochet, you're ready to make Whiskers.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Do I need to change colors mid-round?",
          "value": "No, each round is worked in a single color, so you'll only change color between rounds. This keeps the stitching straightforward and the color changes clean.",
          "raw_text": "No, each round is worked in a single color, so you'll only change color between rounds. This keeps the stitching straightforward and the color changes clean.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to change colors mid-round?",
          "answer": "No, each round is worked in a single color, so you'll only change color between rounds. This keeps the stitching straightforward and the color changes clean.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How do I attach the cat face to the square?",
          "value": "Once all the appliqué pieces are made, pin them in place on the finished square and sew around the edges with a yarn needle. Take your time with placement before stitching so Whiskers' expression looks just right.",
          "raw_text": "Once all the appliqué pieces are made, pin them in place on the finished square and sew around the edges with a yarn needle. Take your time with placement before stitching so Whiskers' expression looks just right.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How do I attach the cat face to the square?",
          "answer": "Once all the appliqué pieces are made, pin them in place on the finished square and sew around the edges with a yarn needle. Take your time with placement before stitching so Whiskers' expression looks just right.",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/whiskers-the-cat-granny-square-a-sweet-applique-keepsake-hero-v2.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/whiskers-the-cat-granny-square-a-sweet-applique-keepsake-hero-v2.webp",
      "alt": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake — finished granny square",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/whiskers-the-cat-granny-square-a-sweet-applique-keepsake-hero-v2.webp",
      "alt": "Whiskers the Cat Granny Square — A Sweet Appliqué Keepsake — finished granny square",
      "is_featured": true
    }
  ],
  "_squarelab": {
    "original_design": true,
    "square_id": "whiskers-the-cat-granny-square--85494170",
    "family": "solid",
    "path": "solid",
    "recipe": [
      "classic_center",
      "solid_start",
      "solid_grow",
      "solid_grow",
      "sc_border"
    ],
    "verdict": "ship",
    "all_counts_verified": true
  },
  "_sanitized_holiday_count": 2
}