{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "bunny-granny-square-crochet-pattern",
  "title": "Bunny Granny Square – Free Crochet Pattern with 3D Ears",
  "meta_description": "Free bunny granny square crochet pattern with 3D bunny ears, BLO texture and a 2.95-inch finished block. Beginner-friendly rounds, worked in 4 colors",
  "published_at": "2026-08-06",
  "updated_at": "2026-08-06",
  "author": "Nora",
  "thumbnail_url": "data/images/bunny-granny-square-crochet-pattern-hero.webp",
  "meta": {
    "title": "Bunny Granny Square – Free Crochet Pattern with 3D Ears",
    "pattern_name": "Bunny Granny Square – Free Crochet Pattern with 3D Ears",
    "difficulty": "Intermediate",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "3.4K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Intermediate",
      "yarn_weight": "DK / Sport",
      "tags": [
        "granny square",
        "bunny granny square",
        "free crochet pattern",
        "animal granny square",
        "blanket square",
        "blo crochet",
        "dk yarn pattern",
        "crochet bunny",
        "baby blanket square",
        "textured granny square",
        "3d crochet ears"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Bunny Granny Square – Free Crochet Pattern with 3D Ears",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Confident Beginner",
          "value": "If you can work hdc, dc and a magic loop, you can make this square",
          "raw_text": "If you can work hdc, dc and a magic loop, you can make this 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": "One Evening Square",
          "value": "About 45–90 minutes per block, including the two ears",
          "raw_text": "About 45–90 minutes per block, including the two ears",
          "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": "Blanket Builder",
          "value": "Stack 12, 20 or 30 of them into the sweetest bunny blanket",
          "raw_text": "Stack 12, 20 or 30 of them into the sweetest bunny 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": "This is a bunny granny square — a small, tidy 5-round block that hides a whole rabbit face inside its geometry. The muzzle grows out of a magic loop, the head is built from clusters of hdc and dc, and then two long ears are added afterward, worked directly into the unused front loops of Round 3 so they stand away from the fabric instead of lying flat. It is the perfect square for anyone who loves granny blocks but is tired of plain holes and wants a motif with a personality",
          "raw_text": "This is a bunny granny square — a small, tidy 5-round block that hides a whole rabbit face inside its geometry. The muzzle grows out of a magic loop, the head is built from clusters of hdc and dc, and then two long ears are added afterward, worked directly into the unused front loops of Round 3 so they stand away from the fabric instead of lying flat. It is the perfect square for anyone who loves granny blocks but is tired of plain holes and wants a motif with a personality",
          "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 will use a magic loop, hdc and dc increases, chain-3 corner spaces, and back-loop-only (BLO) work to create the ridges that separate the muzzle from the head. The ears use a clever chain-and-work-both-sides trick: chain 8, work back along the BLO of 7 chains, then turn the corner with a slip stitch and travel back up the FLO of the same chain. Nothing here is harder than an increase, but there are several colour joins, so plan for around 45 to 90 minutes per square once you have made your first one",
          "raw_text": "You will use a magic loop, hdc and dc increases, chain-3 corner spaces, and back-loop-only (BLO) work to create the ridges that separate the muzzle from the head. The ears use a clever chain-and-work-both-sides trick: chain 8, work back along the BLO of 7 chains, then turn the corner with a slip stitch and travel back up the FLO of the same chain. Nothing here is harder than an increase, but there are several colour joins, so plan for around 45 to 90 minutes per square once you have made your first one",
          "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": "Worked in DK sport wool with a 3.00 mm hook, the finished bunny measures about 2.95 by 2.95 inches — small, dense and surprisingly sturdy, with the firm hand that granny squares get when you crochet them a little tighter than usual. The ears stand upright and stay movable, so they catch light and shadow across the block. Made in four colours, one square is a lovely coaster or pocket charm, and a grid of them becomes a baby blanket, a cushion front, or a spring bunting garland that nobody will believe is handmade from scratch",
          "raw_text": "Worked in DK sport wool with a 3.00 mm hook, the finished bunny measures about 2.95 by 2.95 inches — small, dense and surprisingly sturdy, with the firm hand that granny squares get when you crochet them a little tighter than usual. The ears stand upright and stay movable, so they catch light and shadow across the block. Made in four colours, one square is a lovely coaster or pocket charm, and a grid of them becomes a baby blanket, a cushion front, or a spring bunting garland that nobody will believe is handmade from scratch",
          "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": "about-info-4",
          "label": "",
          "value": "Among all the animal granny square patterns, this is the most beginner-friendly one — a lovely bunny granny square featuring a cute round bunny face and two long ears, blocked into a solid granny square background. The ears are movable, with a real 3D effect, and the face is finished with a puffed pink nose, French-knot eyes and a stitched blush",
          "raw_text": "Among all the animal granny square patterns, this is the most beginner-friendly one — a lovely bunny granny square featuring a cute round bunny face and two long ears, blocked into a solid granny square background. The ears are movable, with a real 3D effect, and the face is finished with a puffed pink nose, French-knot eyes and a stitched blush",
          "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 have made a lot of animal squares over the years and most of them cheat — they embroider the face on at the end and call it done. This one does not. The muzzle is genuinely built into the fabric: Round 2's 5hdc and 3dc groups wrap right around the Round 1 magic loop and encase it, so the nose sits proud of the square before you have even reached the corners. That moment when the encasing round closes and a little snout pops out still delights me every single time. Then there is the BLO join on Round 4 — adding new yarn into the 2nd hdc of a 3hdc group feels fussy for about ten seconds, and then you see the ridge it creates and understand exactly why the designer put it there. And the ears! Chaining 8 and working down one side in BLO, slip stitching around the tip, then coming back up the FLO gives you a double-sided ear with a natural curve, no stuffing, no wire, no sewing a flat flap onto a flat square. It is the most satisfying twenty minutes of the whole make",
          "raw_text": "I have made a lot of animal squares over the years and most of them cheat — they embroider the face on at the end and call it done. This one does not. The muzzle is genuinely built into the fabric: Round 2's 5hdc and 3dc groups wrap right around the Round 1 magic loop and encase it, so the nose sits proud of the square before you have even reached the corners. That moment when the encasing round closes and a little snout pops out still delights me every single time. Then there is the BLO join on Round 4 — adding new yarn into the 2nd hdc of a 3hdc group feels fussy for about ten seconds, and then you see the ridge it creates and understand exactly why the designer put it there. And the ears! Chaining 8 and working down one side in BLO, slip stitching around the tip, then coming back up the FLO gives you a double-sided ear with a natural curve, no stuffing, no wire, no sewing a flat flap onto a flat square. It is the most satisfying twenty minutes of the whole make",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 5,
      "card_type": "common_mistakes",
      "code": "common-mistakes",
      "title": "Common Mistakes & How to Fix Them",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "mistake",
          "code": "mistake-1",
          "label": "Working Round 2's encasing groups into",
          "value": "Round 2 says 5hdc + 3dc go into the ORIGINAL loop, not into the sc from Round 1. Push your hook underneath the whole Round 1 ring so the stitches wrap around and encase those 16 sc. If your muzzle looks flat and no ridge appears, you worked into the sc tops — pull back and re-insert around the loop itself. The muzzle should visibly bulge forward when this round is done",
          "raw_text": "Round 2 says 5hdc + 3dc go into the ORIGINAL loop, not into the sc from Round 1. Push your hook underneath the whole Round 1 ring so the stitches wrap around and encase those 16 sc. If your muzzle looks flat and no ridge appears, you worked into the sc tops — pull back and re-insert around the loop itself. The muzzle should visibly bulge forward when this round is done",
          "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": "Losing the corner position on Round 4",
          "value": "Round 4 has a special ending: instead of finishing with the last ch3, you replace it with ch1 + 1hdc and join to the top of the first ch3. That fake corner puts your hook exactly where a corner space would be, so Round 5 starts in the right place. Skipping this and just doing ch3 leaves your corner half a stitch off and the square will lean",
          "raw_text": "Round 4 has a special ending: instead of finishing with the last ch3, you replace it with ch1 + 1hdc and join to the top of the first ch3. That fake corner puts your hook exactly where a corner space would be, so Round 5 starts in the right place. Skipping this and just doing ch3 leaves your corner half a stitch off and the square will lean",
          "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": "Forgetting to leave the front loops",
          "value": "Both Round 4 and Round 5's setup are worked in back loops only, and the unused FRONT loops of Round 3 are what the ears attach to later. If you accidentally work through both loops, there is no free loop left to anchor the ears and you will be forced to sew flat flaps on instead. Check after Round 4 that you can still see a clear line of loose front loops running across the head",
          "raw_text": "Both Round 4 and Round 5's setup are worked in back loops only, and the unused FRONT loops of Round 3 are what the ears attach to later. If you accidentally work through both loops, there is no free loop left to anchor the ears and you will be forced to sew flat flaps on instead. Check after Round 4 that you can still see a clear line of loose front loops running across the head",
          "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": "Miscounting the ear chain and skipping the wrong stitch",
          "value": "The ear is ch8, then you skip 1 and work back into 7 chains, starting from the 7th and going to the 1st. That means the very first chain you made is the LAST one you work into. Count your 8 chains out loud before you turn, and place a stitch marker in chain 7 so you know exactly where the first slip stitch lands",
          "raw_text": "The ear is ch8, then you skip 1 and work back into 7 chains, starting from the 7th and going to the 1st. That means the very first chain you made is the LAST one you work into. Count your 8 chains out loud before you turn, and place a stitch marker in chain 7 so you know exactly where the first slip stitch lands",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "mistake",
          "code": "mistake-6",
          "label": "Leaving short tails at the many colour",
          "value": "This square has at least four separate yarn joins — one per colour, plus one per ear. Leave a minimum 6-inch tail at every fasten-off and weave it in along the back of the same-coloured round with a darning needle, splitting the yarn plies as you go. Ear tails in particular should be woven through the base of the ear twice so the ear does not work loose after washing",
          "raw_text": "This square has at least four separate yarn joins — one per colour, plus one per ear. Leave a minimum 6-inch tail at every fasten-off and weave it in along the back of the same-coloured round with a darning needle, splitting the yarn plies as you go. Ear tails in particular should be woven through the base of the ear twice so the ear does not work loose after washing",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "yarn of your choice- 4 colors, the sample is made with dk sport wool yarn and a 3.00 hook. The finished Bunny Granny Square is around 2.95×2.95 inches.",
              "raw_text": "yarn of your choice- 4 colors, the sample is made with dk sport wool yarn and a 3.00 hook. The finished Bunny Granny Square is around 2.95×2.95 inches."
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook — we used a 3.00 mm hook",
              "raw_text": "Crochet hook, we used a 3.00mm hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Darning Needle",
              "raw_text": "Darning Needle"
            },
            {
              "order": 4,
              "row_type": "item",
              "code": "mat-1-4",
              "label": "",
              "value": "Scissors",
              "raw_text": "Scissors"
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain stitch",
          "raw_text": "ch = chain stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain stitch"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-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": 3,
          "row_type": "abbrev",
          "code": "abbrev-hdc",
          "label": "hdc",
          "value": "half double crochet",
          "raw_text": "hdc = half double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "hdc",
          "meaning": "half double crochet"
        },
        {
          "order": 4,
          "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": 5,
          "row_type": "abbrev",
          "code": "abbrev-sl-st",
          "label": "Sl St",
          "value": "slip stitch for joining",
          "raw_text": "Sl St = slip stitch for joining",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "Sl St",
          "meaning": "slip stitch for joining"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-ch-sp",
          "label": "ch-sp",
          "value": "chain space",
          "raw_text": "ch-sp = chain space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch-sp",
          "meaning": "chain space"
        },
        {
          "order": 7,
          "row_type": "abbrev",
          "code": "abbrev-st",
          "label": "st",
          "value": "stitch",
          "raw_text": "st = stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "st",
          "meaning": "stitch"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-yo",
          "label": "yo",
          "value": "yarn over",
          "raw_text": "yo = yarn over",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "yo",
          "meaning": "yarn over"
        },
        {
          "order": 9,
          "row_type": "abbrev",
          "code": "abbrev-sk",
          "label": "sk",
          "value": "skip",
          "raw_text": "sk = skip",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sk",
          "meaning": "skip"
        },
        {
          "order": 10,
          "row_type": "abbrev",
          "code": "abbrev-inc",
          "label": "inc",
          "value": "increase",
          "raw_text": "inc = increase",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "inc",
          "meaning": "increase"
        },
        {
          "order": 11,
          "row_type": "abbrev",
          "code": "abbrev-blo",
          "label": "BLO",
          "value": "back loop only",
          "raw_text": "BLO = back loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "BLO",
          "meaning": "back loop only"
        },
        {
          "order": 12,
          "row_type": "abbrev",
          "code": "abbrev-fl",
          "label": "FL",
          "value": "front loop",
          "raw_text": "FL = front loop",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "FL",
          "meaning": "front loop"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "main-pattern-info-9",
          "label": "Info",
          "value": "Round 1 – Foundation of bunny face.",
          "raw_text": "Round 1- Foundation of bunny face",
          "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": "main-pattern-round-1",
          "label": "Round 1",
          "value": "ch1+16sc in a magic loop, slst to the first sc (16).",
          "raw_text": "Round 1 ch1+16sc in a magic loop, slst to the first sc (16).",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 16,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "main-pattern-info-10",
          "label": "Info",
          "value": "Round 2 – enlarge the face.",
          "raw_text": "Round 2 – enlarge the face",
          "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": "main-pattern-round-2",
          "label": "Round 2",
          "value": "ch1 as a standing st, [5hdc+3dc in the original loop to encase sts from Round 1] repeat 2 times, sl st to the first hdc.",
          "raw_text": "Round 2 ch1 as a standing st, [5hdc+3dc in the original loop to encase sts from Round 1] repeat 2 times, sl st to the first hdc.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "main-pattern-info-11",
          "label": "Info",
          "value": "Round 3 – another round of face.",
          "raw_text": "Round 3 – another round of face",
          "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": "main-pattern-round-3",
          "label": "Round 3",
          "value": "ch2 as a standing st(count as 1hdc), 2hdc in the same st, hdc inc, 1hdc, hdc inc; [3hdc in the next st, hdc inc, 1hdc, hdc inc] repeat 3 times, slst to the top of the first ch2. Fasten off.",
          "raw_text": "Round 3 ch2 as a standing st(count as 1hdc), 2hdc in the same st, hdc inc, 1hdc, hdc inc; [3hdc in the next st, hdc inc, 1hdc, hdc inc] repeat 3 times, slst to the top of the first ch2. Fasten off.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "main-pattern-info-12",
          "label": "Info",
          "value": "Round 4 – Turn the bunny into square. Remember to leave the front loops of Round 3 unused: the ears are worked into them later.",
          "raw_text": "Round 4 – Turn the bunny into square",
          "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": "main-pattern-round-4",
          "label": "Round 4",
          "value": "BLO . Add new yarn in the 2nd hdc of the 3hdc group, ch3(count as 1dc), 1dc in the same st, 6hdc, dc inc, ch3, dc inc, 2hdc, 2sc, 2hdc, dc inc, ch3; [dc inc in the same st, 6hdc, dc inc, ch3, dc inc, 2hdc, 2sc, 2hdc, dc inc, ch3] repeat 1 time, replace the final ch3 with ch1+1hdc and join to the top of the first ch3 to keep the hook in the corner.",
          "raw_text": "Round 4 BLO . Add new yarn in the 2nd hdc of the 3hdc group, ch3(count as 1dc), 1dc in the same st, 6hdc, dc inc, ch3, dc inc, 2hdc, 2sc, 2hdc, dc inc, ch3; [dc inc in the same st, 6hdc, dc inc, ch3, dc inc, 2hdc, 2sc, 2hdc, dc inc, ch3] repeat 1 time, replace the final ch3 with ch1+1hdc and join to the top of the first ch3 to keep the hook in the corner.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "info",
          "code": "main-pattern-info-13",
          "label": "Info",
          "value": "Round 5 – another round of border.",
          "raw_text": "Round 5- another round of border",
          "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": "main-pattern-round-5",
          "label": "Round 5",
          "value": "1dc in each st, 2dc+ch3+2dc in each corner, ch3 to begin(count as first dc), slst to the top of the first ch3 at the end, then fasten off.",
          "raw_text": "Round 5 1dc in each st, 2dc+ch3+2dc in each corner, ch3 to begin(count as first dc), slst to the top of the first ch3 at the end, then fasten off.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "info",
          "code": "main-pattern-info-2",
          "label": "The Ear",
          "value": "Crochet the bunny ears: we will crochet the two bunny ears, worked into the unused front loops of Round 3 so they stay movable with a 3D effect.",
          "raw_text": "Crochet the Bunny Ears. We will crochet the two bunny ears.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "info",
          "code": "main-pattern-info-3",
          "label": "Info",
          "value": "New yarn in the unused FL of Round 3, ch8: sk1, BLO of next 7 ch (start from 7th to 1st): 1slst, 1sc, 4hdc, 1sc.",
          "raw_text": "New yarn in the unused FL of Round 3, ch8: sk1, BLO of next 7 ch (start from 7th to 1st): 1slst, 1sc, 4hdc, 1sc.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "info",
          "code": "main-pattern-info-4",
          "label": "Info",
          "value": "slst to the join loop, ch1, another slst in this loop to work on the other side of this chain, FLO (over the same 7 ch, start from 1st to 7th): 1sc, 4hdc, 1sc, 1slst.",
          "raw_text": "slst to the join loop, ch1, another slst in this loop to work on the other side of this chain, FLO (over the same 7 ch, start from 1st to 7th): 1sc, 4hdc, 1sc, 1slst.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Info",
          "value": "Join to the initial slst, fasten off. Make two ears in the same way.",
          "raw_text": "Join to the initial slst, fasten off. Make two ears in the same way.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "The Nose",
          "value": "A pink bunny nose, made as a small 3-hdc puff and sewn on at the end.",
          "raw_text": "pink bunny nose",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "Info",
          "value": "Magic loop, ch1(count as 1 incomplete hdc), 2 incomplete hdc, yo and pull through all loops on hook to finish a 3-hdc-puff. Pull the tail tightly and fasten off. Leave long tails for attaching.",
          "raw_text": "Magic loop, ch1(count as 1 incomplete hdc), 2 incomplete hdc, yo and pull through all loops on hook to finish a 3-hdc-puff. Pull the tail tightly and fasten off. Leave long tails for attaching.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 17,
          "row_type": "info",
          "code": "main-pattern-info-8",
          "label": "Final Touch",
          "value": "Attach the nose, make two French knots for the eyes, and stitch the blush.",
          "raw_text": "Final Touch. Attach the nose, make two French knots for the eyes, and stitch the blush.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 9,
      "card_type": "important_notes",
      "code": "important-notes",
      "title": "Important Notes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 The sample uses DK sport wool with a 3.00 mm hook, and the finished square measures around 2.95×2.95 inches. That tight gauge is intentional — it keeps the muzzle firm and stops the square from stretching out of shape when you join it. If your block comes out much bigger than 2.95 inches, drop a hook size rather than changing yarn",
          "raw_text": "💡 The sample uses DK sport wool with a 3.00 mm hook, and the finished square measures around 2.95×2.95 inches. That tight gauge is intentional — it keeps the muzzle firm and stops the square from stretching out of shape when you join it. If your block comes out much bigger than 2.95 inches, drop a hook size rather than changing yarn",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "note-2",
          "label": "Note",
          "value": "💡 Place a stitch marker in the very first chain of the ear before you turn back along it. That chain is the last one you work into, and it is almost impossible to find again once the ear starts curling",
          "raw_text": "💡 Place a stitch marker in the very first chain of the ear before you turn back along it. That chain is the last one you work into, and it is almost impossible to find again once the ear starts curling",
          "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": "💡 The pattern uses 4 colours. Wind them into small centre-pull balls before you start — with this many joins, having to untangle a full skein mid-round is the main reason people abandon a square halfway",
          "raw_text": "💡 The pattern uses 4 colours. Wind them into small centre-pull balls before you start — with this many joins, having to untangle a full skein mid-round is the main reason people abandon a square halfway",
          "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": "💡 Round 2 encases Round 1. Work it a little loosely on your first attempt, because pushing the hook around the whole magic loop is harder when the stitches are tight — you can always snug the loop closed at the end by pulling the tail",
          "raw_text": "💡 Round 2 encases Round 1. Work it a little loosely on your first attempt, because pushing the hook around the whole magic loop is harder when the stitches are tight — you can always snug the loop closed at the end by pulling the tail",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "note-5",
          "label": "Note",
          "value": "💡 The square is blocked into a solid granny square background, so if you are making a blanket, block every square to the same size on a foam mat with rustproof pins before joining. Granny squares with 3D elements read as wonky when unblocked, and five minutes of pinning fixes what an hour of adjusting joins cannot",
          "raw_text": "💡 The square is blocked into a solid granny square background, so if you are making a blanket, block every square to the same size on a foam mat with rustproof pins before joining. Granny squares with 3D elements read as wonky when unblocked, and five minutes of pinning fixes what an hour of adjusting joins cannot",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "note-6",
          "label": "Note",
          "value": "💡 Keep the ears for last on every square. Working them while the block is still on the hook is tempting, but the unused front loops of Round 3 are far easier to find once Rounds 4 and 5 have pulled the fabric flat and taut",
          "raw_text": "💡 Keep the ears for last on every square. Working them while the block is still on the hook is tempting, but the unused front loops of Round 3 are far easier to find once Rounds 4 and 5 have pulled the fabric flat and taut",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "Do the bunny ears need stuffing or wire to stand up?",
          "value": "No — the ears get their body from being worked on both sides of the same starting chain, with the BLO pass on one side and the FLO pass on the other. That double layer plus the 4hdc in the middle gives them enough structure to stand upright on their own while staying movable",
          "raw_text": "No — the ears get their body from being worked on both sides of the same starting chain, with the BLO pass on one side and the FLO pass on the other. That double layer plus the 4hdc in the middle gives them enough structure to stand upright on their own while staying movable",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do the bunny ears need stuffing or wire to stand up?",
          "answer": "No — the ears get their body from being worked on both sides of the same starting chain, with the BLO pass on one side and the FLO pass on the other. That double layer plus the 4hdc in the middle gives them enough structure to stand upright on their own while staying movable",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Can I make this square bigger without changing the pattern?",
          "value": "Yes. Just repeat Round 5 as many times as you want — 1dc in each stitch with 2dc+ch3+2dc in each corner. Each additional round adds roughly half an inch to each side, so two repeats take the square from about 2.95 inches to nearly 5 inches",
          "raw_text": "Yes. Just repeat Round 5 as many times as you want — 1dc in each stitch with 2dc+ch3+2dc in each corner. Each additional round adds roughly half an inch to each side, so two repeats take the square from about 2.95 inches to nearly 5 inches",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I make this square bigger without changing the pattern?",
          "answer": "Yes. Just repeat Round 5 as many times as you want — 1dc in each stitch with 2dc+ch3+2dc in each corner. Each additional round adds roughly half an inch to each side, so two repeats take the square from about 2.95 inches to nearly 5 inches",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "What does BLO mean and why does the pattern use it so often?",
          "value": "BLO stands for back loop only, meaning you insert your hook under just the back loop of the stitch instead of both loops. Here it creates the ridge that separates the muzzle from the head, and it leaves the front loops of Round 3 free so the ears have something to anchor into later",
          "raw_text": "BLO stands for back loop only, meaning you insert your hook under just the back loop of the stitch instead of both loops. Here it creates the ridge that separates the muzzle from the head, and it leaves the front loops of Round 3 free so the ears have something to anchor into later",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What does BLO mean and why does the pattern use it so often?",
          "answer": "BLO stands for back loop only, meaning you insert your hook under just the back loop of the stitch instead of both loops. Here it creates the ridge that separates the muzzle from the head, and it leaves the front loops of Round 3 free so the ears have something to anchor into later",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "How many squares do I need for a baby blanket?",
          "value": "2.95 inches per square, a 30 by 36 inch baby blanket needs about 10 squares across and 12 down, so 120 in total. If that sounds like a lot, add two repeats of Round 5 to each square and you will only need around 42",
          "raw_text": "2.95 inches per square, a 30 by 36 inch baby blanket needs about 10 squares across and 12 down, so 120 in total. If that sounds like a lot, add two repeats of Round 5 to each square and you will only need around 42",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a baby blanket?",
          "answer": "2.95 inches per square, a 30 by 36 inch baby blanket needs about 10 squares across and 12 down, so 120 in total. If that sounds like a lot, add two repeats of Round 5 to each square and you will only need around 42",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "Can I use acrylic or cotton instead of the DK sport wool?",
          "value": "Absolutely — cotton gives crisper stitch definition and shows the muzzle shaping beautifully, while acrylic is more forgiving for a first attempt and easier to wash for baby projects. Just keep the hook one size below the label recommendation so the fabric stays dense enough to hold the 3D muzzle",
          "raw_text": "Absolutely — cotton gives crisper stitch definition and shows the muzzle shaping beautifully, while acrylic is more forgiving for a first attempt and easier to wash for baby projects. Just keep the hook one size below the label recommendation so the fabric stays dense enough to hold the 3D muzzle",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use acrylic or cotton instead of the DK sport wool?",
          "answer": "Absolutely — cotton gives crisper stitch definition and shows the muzzle shaping beautifully, while acrylic is more forgiving for a first attempt and easier to wash for baby projects. Just keep the hook one size below the label recommendation so the fabric stays dense enough to hold the 3D muzzle",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/bunny-granny-square-crochet-pattern-hero.webp",
    "data/images/bunny-granny-square-crochet-pattern-step-2.webp",
    "data/images/bunny-granny-square-crochet-pattern-step-3.webp",
    "data/images/bunny-granny-square-crochet-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/bunny-granny-square-crochet-pattern-hero.webp",
      "alt": "Bunny Granny Square – Free Crochet Pattern with 3D Ears — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/bunny-granny-square-crochet-pattern-hero.webp",
      "alt": "Bunny Granny Square – Free Crochet Pattern with 3D Ears — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/bunny-granny-square-crochet-pattern-step-2.webp",
      "alt": "Bunny Granny Square – Free Crochet Pattern with 3D Ears — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/bunny-granny-square-crochet-pattern-step-3.webp",
      "alt": "Bunny Granny Square – Free Crochet Pattern with 3D Ears — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/bunny-granny-square-crochet-pattern-step-4.webp",
      "alt": "Bunny Granny Square – Free Crochet Pattern with 3D Ears — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 4,
  "_squarelab_heal": {
    "ts": 1786167984,
    "rounds_healed": 1,
    "note": "stitch counts derived by the Square Lab math brain"
  }
}