{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "easy-dog-granny-square-free-crochet-pattern",
  "title": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes",
  "meta_description": "Crochet an easy dog granny square with simple hdc rounds and color changes. Free pattern makes a 3.9-inch puppy square for blankets and bags",
  "published_at": "2026-08-04",
  "updated_at": "2026-08-04",
  "author": "Ruby",
  "thumbnail_url": "data/images/easy-dog-granny-square-free-crochet-pattern-hero.webp",
  "meta": {
    "title": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes",
    "pattern_name": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes",
    "difficulty": "Easy",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "3.4K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Easy",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "dog granny square",
        "free pattern",
        "hdc granny square",
        "color change crochet",
        "dk yarn",
        "puppy crochet",
        "blanket square",
        "easy crochet",
        "intarsia granny square",
        "animal granny square",
        "3.9 inch square"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Easy Level",
          "value": "If you can work hdc and hdc-increases in the round, you can make this puppy face",
          "raw_text": "If you can work hdc and hdc-increases in the round, you can make this puppy 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": "info",
          "code": "hero-info-2",
          "label": "One-Evening Square",
          "value": "1-2 hours per square, including weaving in the color-change tails",
          "raw_text": "1-2 hours per square, including weaving in the color-change tails",
          "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": "Adorable 3.9-inch squares that stack into dog-lover blankets, bags and cushions",
          "raw_text": "Adorable 3.9-inch squares that stack into dog-lover blankets, bags and cushions",
          "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 pattern turns a plain half double crochet circle into a sweet little dog face, then squares it off with two double crochet rounds. You start with a magic ring and 7 hdc, then build outward in the round with hdc-increases, dropping in yellow and white exactly where the puppy's muzzle and face markings need to land. The face works up over five rounds, and two more rounds worked in the third loop of Round 5 turn that circle into a granny square. The nose, the eyes and two floppy ears are made separately and attached afterwards, which is what gives the finished square its 3D effect. It's ideal for anyone who wants a picture square without learning tapestry crochet charts",
          "raw_text": "This pattern turns a plain half double crochet circle into a sweet little dog face, then squares it off with two double crochet rounds. You start with a magic ring and 7 hdc, then build outward in the round with hdc-increases, dropping in yellow and white exactly where the puppy's muzzle and face markings need to land. The face works up over five rounds, and two more rounds worked in the third loop of Round 5 turn that circle into a granny square. The nose, the eyes and two floppy ears are made separately and attached afterwards, which is what gives the finished square its 3D effect. It's ideal for anyone who wants a picture square without learning tapestry crochet charts",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "about-info-2",
          "label": "",
          "value": "The technique list is short and friendly: magic ring, ch2 that counts as your first hdc, plain hdc, hdc-increases, slip stitch joins, a couple of dc rounds for the square, and mid-stitch color changes. That last one is the only real skill stretch — you swap colors during a specific stitch, on the final yarn over, so the new shade appears cleanly on the next stitch instead of leaving a stray blip. Most crocheters finish a square in one to two hours, and the second and third squares go noticeably faster once the color-change rhythm clicks",
          "raw_text": "The technique list is short and friendly: magic ring, ch2 that counts as your first hdc, plain hdc, hdc-increases, slip stitch joins, a couple of dc rounds for the square, and mid-stitch color changes. That last one is the only real skill stretch — you swap colors during a specific stitch, on the final yarn over, so the new shade appears cleanly on the next stitch instead of leaving a stray blip. Most crocheters finish a square in one to two hours, and the second and third squares go noticeably faster once the color-change rhythm clicks",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "about-info-3",
          "label": "",
          "value": "The finished granny square measures about 3.9 inches by 3.9 inches in DK Sports yarn on a 3.00mm hook — small, dense, and satisfyingly firm, because the face is worked in solid half double crochet rather than the openwork clusters of a traditional granny. The dog reads clearly from across the room, with the yellow and white sections shaping the muzzle and face markings against the main color, and the sewn-on nose, eyes and floppy ears finishing the expression. Sew a dozen together for a baby blanket, or use a single square as a pocket patch, coaster, or gift-topper for the dog lover in your life",
          "raw_text": "The finished granny square measures about 3.9 inches by 3.9 inches in DK Sports yarn on a 3.00mm hook — small, dense, and satisfyingly firm, because the face is worked in solid half double crochet rather than the openwork clusters of a traditional granny. The dog reads clearly from across the room, with the yellow and white sections shaping the muzzle and face markings against the main color, and the sewn-on nose, eyes and floppy ears finishing the expression. Sew a dozen together for a baby blanket, or use a single square as a pocket patch, coaster, or gift-topper for the dog lover in your life",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 3,
      "card_type": "why_love",
      "code": "why-love",
      "title": "Why You'll Love This Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "why-love-1",
          "label": "",
          "value": "I fell for this square the moment the fourth round came off my hook and the little face suddenly appeared. Up to that point you're just working hdc and hdc-increases in a spiral of rounds, and then the yellow and white sections line up and there's a puppy sitting in your lap. That reveal never gets old. I also love that the pattern is honest about where each color change happens — \"change to yellow during the 1st hdc,\" \"change to white during the 3rd hdc in the second rep\" — so you're never guessing, you're just counting. The ch2-counts-as-1hdc join keeps the edges tidy, and because the face is half double crochet rather than the classic 3-dc cluster, the fabric comes out solid enough to actually use as a blanket square without cold holes; the two dc rounds worked into the third loop of Round 5 then square the circle off in minutes. The separate floppy ears are my favorite bit of cleverness: instead of fighting a shape into the main square, you crochet each ear flat around a chain, then tack only its top edge down so it hangs and moves. Small pattern, big charm, and at 3.9 inches you finish one before your tea goes cold",
          "raw_text": "I fell for this square the moment the fourth round came off my hook and the little face suddenly appeared. Up to that point you're just working hdc and hdc-increases in a spiral of rounds, and then the yellow and white sections line up and there's a puppy sitting in your lap. That reveal never gets old. I also love that the pattern is honest about where each color change happens — \"change to yellow during the 1st hdc,\" \"change to white during the 3rd hdc in the second rep\" — so you're never guessing, you're just counting. The ch2-counts-as-1hdc join keeps the edges tidy, and because the face is half double crochet rather than the classic 3-dc cluster, the fabric comes out solid enough to actually use as a blanket square without cold holes; the two dc rounds worked into the third loop of Round 5 then square the circle off in minutes. The separate floppy ears are my favorite bit of cleverness: instead of fighting a shape into the main square, you crochet each ear flat around a chain, then tack only its top edge down so it hangs and moves. Small pattern, big charm, and at 3.9 inches you finish one before your tea goes cold",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 4,
      "card_type": "switch_things_up",
      "code": "switch-things-up",
      "title": "Switch Things Up",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "switch-1",
          "label": "",
          "value": "Color is the easiest lever here, and this square rewards playing with it. The sample uses four colors, but the shape reads as a dog no matter what palette you feed it — try chocolate brown with a cream muzzle for a lab, charcoal with a white patch for a border collie, or ginger with white for a corgi. Smooth solid DK yarns give you the crisp color definition these mid-stitch changes need; heathered or self-striping yarns will muddy the muzzle line, so save those for a solid-color version. For a bigger face, keep the round structure and add a sixth round of the same logic: *4hdc, [hdc-inc]×4, 2hdc* becomes *5hdc, [hdc-inc]×5, 3hdc*, which pushes you to roughly 4.7 inches before the two dc rounds go on. Or jump to worsted yarn with a 4.00mm hook and the same five rounds will land near 5 inches — perfect if you want a blanket that grows fast. Seasonal versions are fun too: a black dog with an orange muzzle for autumn, a soft grey with pale blue accents for a baby shower, or pastel mint and cream for a nursery. You can also skip the separate ear pieces entirely and embroider both ears flat with surface slip stitch for a smoother square that stacks better in a stroller blanket. Finally, try a dog-and-cat pairing — swap the floppy ears for two small pointed triangles worked around a short chain and sewn at the top of the head",
          "raw_text": "Color is the easiest lever here, and this square rewards playing with it. The sample uses four colors, but the shape reads as a dog no matter what palette you feed it — try chocolate brown with a cream muzzle for a lab, charcoal with a white patch for a border collie, or ginger with white for a corgi. Smooth solid DK yarns give you the crisp color definition these mid-stitch changes need; heathered or self-striping yarns will muddy the muzzle line, so save those for a solid-color version. For a bigger face, keep the round structure and add a sixth round of the same logic: *4hdc, [hdc-inc]×4, 2hdc* becomes *5hdc, [hdc-inc]×5, 3hdc*, which pushes you to roughly 4.7 inches before the two dc rounds go on. Or jump to worsted yarn with a 4.00mm hook and the same five rounds will land near 5 inches — perfect if you want a blanket that grows fast. Seasonal versions are fun too: a black dog with an orange muzzle for autumn, a soft grey with pale blue accents for a baby shower, or pastel mint and cream for a nursery. You can also skip the separate ear pieces entirely and embroider both ears flat with surface slip stitch for a smoother square that stacks better in a stroller blanket. Finally, try a dog-and-cat pairing — swap the floppy ears for two small pointed triangles worked around a short chain and sewn at the top of the head",
          "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": "Counting the ch2 as a chain instead of",
          "value": "Every round in this pattern starts with ch2(count as 1hdc) — that ch2 IS your first half double crochet, not a turning chain to ignore. When you get to the end of the round, slip stitch into the TOP of that ch2, not into the base stitch beside it. If your stitch count keeps drifting down by one each round, this is almost always why. Mark the top of the ch2 with a removable stitch marker on the first round and you'll never lose the join again",
          "raw_text": "Every round in this pattern starts with ch2(count as 1hdc) — that ch2 IS your first half double crochet, not a turning chain to ignore. When you get to the end of the round, slip stitch into the TOP of that ch2, not into the base stitch beside it. If your stitch count keeps drifting down by one each round, this is almost always why. Mark the top of the ch2 with a removable stitch marker on the first round and you'll never lose the join again",
          "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": "Letting the magic ring loosen so a hole",
          "value": "The center starts with just 7 hdc in a magic ring, which means the ring is doing a lot of work holding that tiny circle closed. Pull the tail firmly after you complete round one, then again after round two once the surrounding stitches have locked it in place. Weave the tail in going in at least two different directions before you trim it — a magic ring that has only been pulled tight but never secured will pop open the first time the square gets washed",
          "raw_text": "The center starts with just 7 hdc in a magic ring, which means the ring is doing a lot of work holding that tiny circle closed. Pull the tail firmly after you complete round one, then again after round two once the surrounding stitches have locked it in place. Weave the tail in going in at least two different directions before you trim it — a magic ring that has only been pulled tight but never secured will pop open the first time the square gets washed",
          "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": "Working the hdc-increases into the",
          "value": "The shaping in this pattern comes from grouped increases — [hdc-inc]×3 in round four, [hdc-inc]×4 in round five — and each group must sit directly above the previous round's increase group. Before you start a new round, look at your piece and find the four increase points; your new group should be centered on each one. If your circle is turning into a hexagon or going wavy, your increases have shifted sideways. Place a stitch marker in the middle stitch of each increase group as you finish a round so you have four anchors to line up against",
          "raw_text": "The shaping in this pattern comes from grouped increases — [hdc-inc]×3 in round four, [hdc-inc]×4 in round five — and each group must sit directly above the previous round's increase group. Before you start a new round, look at your piece and find the four increase points; your new group should be centered on each one. If your circle is turning into a hexagon or going wavy, your increases have shifted sideways. Place a stitch marker in the middle stitch of each increase group as you finish a round so you have four anchors to line up against",
          "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": "Repeating the * * section a different",
          "value": "Several rounds read like \"*2hdc, hdc-inc, [3hdc]* rep 3 times\" — meaning that sequence is worked three MORE times after the initial one you already did before the asterisk, giving you four repeats in total. Miscounting this is the number one reason a finished square has the dog's muzzle sitting off to one side. Count your four increase groups after every round; if you only have three, you stopped one repeat early",
          "raw_text": "Several rounds read like \"*2hdc, hdc-inc, [3hdc]* rep 3 times\" — meaning that sequence is worked three MORE times after the initial one you already did before the asterisk, giving you four repeats in total. Miscounting this is the number one reason a finished square has the dog's muzzle sitting off to one side. Count your four increase groups after every round; if you only have three, you stopped one repeat early",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "mistake",
          "code": "mistake-7",
          "label": "Sewing the ears down all the way",
          "value": "The two ear pieces are meant to hang, not to be laminated to the square. Secure only the TOP edge of each ear to the side of the head with its yarn tail, using a few whip stitches, and leave the bottom edge and the remaining sides completely unsewn so the ears move naturally. If you sew all the way around, you lose the floppy-puppy effect and that part of the square gets stiff and thick, which makes it awkward to join into a blanket",
          "raw_text": "The two ear pieces are meant to hang, not to be laminated to the square. Secure only the TOP edge of each ear to the side of the head with its yarn tail, using a few whip stitches, and leave the bottom edge and the remaining sides completely unsewn so the ears move naturally. If you sew all the way around, you lose the floppy-puppy effect and that part of the square gets stiff and thick, which makes it awkward to join into a blanket",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 3.9 inches by 3.9 inches.",
              "raw_text": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 3.9 inches by 3.9 inches."
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook- we are using a 3.00mm hook",
              "raw_text": "Crochet hook- we are using a 3.00mm hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Darning Needle",
              "raw_text": "Darning Needle"
            },
            {
              "order": 4,
              "row_type": "item",
              "code": "mat-1-4",
              "label": "",
              "value": "Scissors",
              "raw_text": "Scissors"
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain stitch",
          "raw_text": "ch = chain stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain stitch"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-ch-sp",
          "label": "ch-sp",
          "value": "chain space",
          "raw_text": "ch-sp = chain space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch-sp",
          "meaning": "chain space"
        },
        {
          "order": 3,
          "row_type": "abbrev",
          "code": "abbrev-dc",
          "label": "dc",
          "value": "double crochet",
          "raw_text": "dc = double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc",
          "meaning": "double crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-sc",
          "label": "sc",
          "value": "single crochet",
          "raw_text": "sc = single crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc",
          "meaning": "single crochet"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-tr",
          "label": "tr",
          "value": "treble crochet",
          "raw_text": "tr = treble crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "tr",
          "meaning": "treble crochet"
        },
        {
          "order": 6,
          "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": 7,
          "row_type": "abbrev",
          "code": "abbrev-inc",
          "label": "inc",
          "value": "increase",
          "raw_text": "inc = increase",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "inc",
          "meaning": "increase"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-rep",
          "label": "rep",
          "value": "repeat",
          "raw_text": "rep = repeat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rep",
          "meaning": "repeat"
        },
        {
          "order": 9,
          "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": 10,
          "row_type": "abbrev",
          "code": "abbrev-slst-/-sl-st",
          "label": "slst / sl st",
          "value": "slip stitch for joining different rounds",
          "raw_text": "slst / sl st = slip stitch for joining different rounds",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "slst / sl st",
          "meaning": "slip stitch for joining different rounds"
        },
        {
          "order": 11,
          "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": 12,
          "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": 13,
          "row_type": "abbrev",
          "code": "abbrev-tl",
          "label": "TL",
          "value": "third loop",
          "raw_text": "TL = third loop",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "TL",
          "meaning": "third loop"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Start From the Dog's Head",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "About This Square",
          "value": "There is a cute 3-color little puppy in the center with floppy, long ears. The dog's face is a crocheted circle, but we change the color to mimic a real dog's face. After finishing the main granny square, we will crochet ears on the round face, creating a lovely 3D effect.",
          "raw_text": "There is a cute 3-color little puppy in the center with floppy, long ears. The dog's face is a crocheted circle, but we change the color to mimic a real dog's face. After finishing the main granny square, we will crochet ears on the round face, creating a lovely 3D effect.",
          "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": "main-pattern-info-8",
          "label": "Note on Color Changes",
          "value": "Work your stitch until you reach the final yarn over. When you have 2 loops left on your hook (before the last yarn over and pull through), drop the old color and pick up the new color. Complete the stitch by yarning over with the new color and pulling through both loops. Then continue with the new color for subsequent stitches.",
          "raw_text": "Note on Color Changes: Work your stitch until you reach the final yarn over. When you have 2 loops left on your hook (before the last yarn over and pull through), drop the old color and pick up the new color. Complete the stitch by yarning over with the new color and pulling through both loops. Then continue with the new color for subsequent 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": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "Magic ring, ch2(count as 1hdc), 7hdc in this ring, slst to the top of the first ch2.",
          "raw_text": "Round 1 Magic ring, ch2(count as 1hdc), 7hdc in this ring, slst to the top of the first ch2.",
          "round_start": 1,
          "round_end": 1,
          "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": "ch2(count as 1hdc)+1hdc to complete a hdc-inc. hdc-inc, hdc-inc(change to  yellow  during the 1st hdc), hdc-inc, hdc-inc(change to  white  during the 1st hdc), [hdc-inc]×3. sl st to the top of the first ch2.",
          "raw_text": "Round 2 ch2(count as 1hdc)+1hdc to complete a hdc-inc. hdc-inc, hdc-inc(change to  yellow  during the 1st hdc), hdc-inc, hdc-inc(change to  white  during the 1st hdc), [hdc-inc]×3. sl st to the top of the first ch2.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "main-pattern-round-3",
          "label": "Round 3",
          "value": "ch2(count as 1hdc), 1hdc, hdc-inc, [3hdc] in next st(change to  yellow  during 3rd hdc). *2hdc, hdc-inc, [3hdc]* rep 3 times. change to  white  during 2nd hdc in second rep. sl st to the top of the first ch2.",
          "raw_text": "Round 3 ch2(count as 1hdc), 1hdc, hdc-inc, [3hdc] in next st(change to  yellow  during 3rd hdc). *2hdc, hdc-inc, [3hdc]* rep 3 times. change to  white  during 2nd hdc in second rep. sl st to the top of the first ch2.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "main-pattern-round-4",
          "label": "Round 4",
          "value": "ch2(count as 1hdc), 2hdc, [hdc-inc]×3 (change to  yellow  during the final hdc), 1hdc. *3hdc, [hdc-inc]×3, 1hdc* rep 3 times. change to  white  during the 3rd hdc in second rep. slst to the top of the first ch2.",
          "raw_text": "Round 4 ch2(count as 1hdc), 2hdc, [hdc-inc]×3 (change to  yellow  during the final hdc), 1hdc. *3hdc, [hdc-inc]×3, 1hdc* rep 3 times. change to  white  during the 3rd hdc in second rep. slst to the top of the first ch2.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "round",
          "code": "main-pattern-round-5",
          "label": "Round 5",
          "value": "ch2(count as 1hdc), 3hdc, [hdc-inc]×4, 2hdc(change to  yellow  during the 1st hdc). *4hdc, [hdc-inc]×4, 2hdc* rep 3 times. change to  white  during 3rd hdc in second rep. sl st to the top of the first ch2, fasten off.",
          "raw_text": "Round 5 ch2(count as 1hdc), 3hdc, [hdc-inc]×4, 2hdc(change to  yellow  during the 1st hdc). *4hdc, [hdc-inc]×4, 2hdc* rep 3 times. change to  white  during 3rd hdc in second rep. sl st to the top of the first ch2, fasten off.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "info",
          "code": "main-pattern-info-2",
          "label": "Crochet Dog's Nose",
          "value": "Knot, ch5. Return, sk1.  BLO  for next 4 chains: sl st, 2sc, sl st to 1st ch.  Turn Over . ch1 to start, sk1, 2sc, ch1, sk1, sl st to the original slst. Leave both tails of two ends for easy attachment.",
          "raw_text": "Crochet Dog's Nose: Knot, ch5. Return, sk1.  BLO  for next 4 chains: sl st, 2sc, sl st to 1st ch.  Turn Over . ch1 to start, sk1, 2sc, ch1, sk1, sl st to the original slst. Leave both tails of two ends for easy attachment.",
          "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": "main-pattern-info-3",
          "label": "Attach the Nose",
          "value": "Tie this Nose Piece securely to the lower part close to the center.",
          "raw_text": "Tie this Nose Piece securely to the lower part close to the center.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Make Two Eyes",
          "value": "Make two French Knots on each side above the nose to form the eyes. Add a small stitch in the center of each for a highlight or pupil. I also recommend you create lines extending down from the nose to signify the mouth; all these give the dog that classic sweet expression!",
          "raw_text": "Make Two Eyes: Make two French Knots on each side above the nose to form the eyes. Add a small stitch in the center of each for a highlight or pupil. I also recommend you create lines extending down from the nose to signify the mouth; all these give the dog that classic sweet expression!",
          "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": "part-2",
      "title": "Turn It into a Square",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "part-2-round-1",
          "label": "Round 1",
          "value": "Work in the TL of the stitches from Round 5 . Join new yarn to the 1st hdc of the right corner hdc-inc. ch3(count as 1dc)+1dc to complete a dc-inc, 12hdc, dc-inc, ch3. *dc-inc, 12hdc, dc-inc, ch3*rep 3 times, sl st to the top of the first ch3.",
          "raw_text": "Round 1 Work in the TL of the stitches from Round 5 . Join new yarn to the 1st hdc of the right corner hdc-inc. ch3(count as 1dc)+1dc to complete a dc-inc, 12hdc, dc-inc, ch3. *dc-inc, 12hdc, dc-inc, ch3*rep 3 times, sl st to the top of the first ch3.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "part-2-round-2",
          "label": "Round 2",
          "value": "ch3(count as 1dc), (2dc+ch3+2dc) in each corner, dc in remaining sts. Finish with sl st to the true dc after first ch3.",
          "raw_text": "Round 2 ch3(count as 1dc), (2dc+ch3+2dc) in each corner, dc in remaining sts. Finish with sl st to the true dc after first ch3.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "part-2-info-2",
          "label": "Two Floppy Ears",
          "value": "Leave long yarn tails at the beginning for attaching.  Knot, ch10.  Return , sk2.  BL  for next 8 chains(from 8th ch): 1hdc, 3dc, 1hdc, 2sc, (3sc) in 1st ch and turn to work on the opposite side of this chain.  FL  of next 7 chains(from 2nd ch): 2sc, 1hdc, 3dc, (1hdc+1dc). sl st to the first hdc.",
          "raw_text": "Two Floppy Ears: Leave long yarn tails at the beginning for attaching.  Knot, ch10.  Return , sk2.  BL  for next 8 chains(from 8th ch): 1hdc, 3dc, 1hdc, 2sc, (3sc) in 1st ch and turn to work on the opposite side of this chain.  FL  of next 7 chains(from 2nd ch): 2sc, 1hdc, 3dc, (1hdc+1dc). sl st to the first hdc.",
          "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": "part-2-info-3",
          "label": "Attach the Ears",
          "value": "Make the other ear following the same steps.  Secure only the top edge of each ear to the sides of the head with the yarn tail . Leave the bottom edge and remaining sides unsewn so the ears hang freely and move naturally, creating that adorable floppy effect.",
          "raw_text": "Make the other ear following the same steps.  Secure only the top edge of each ear to the sides of the head with the yarn tail . Leave the bottom edge and remaining sides unsewn so the ears hang freely and move naturally, creating that adorable floppy effect.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "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 a 3.00mm hook with DK Sports yarn, which is a full size or two smaller than the ball band would suggest — that's intentional. The tight gauge is what keeps the half double crochet fabric dense enough that the dog's face doesn't distort and nothing shows through when the square is used in a blanket",
          "raw_text": "💡 The sample uses a 3.00mm hook with DK Sports yarn, which is a full size or two smaller than the ball band would suggest — that's intentional. The tight gauge is what keeps the half double crochet fabric dense enough that the dog's face doesn't distort and nothing shows through when the square is used in a 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": "note-2",
          "label": "Note",
          "value": "💡 Gauge matters more here than in most granny squares because you'll be joining many of these together. Make one square first and measure it: you're aiming for about 3.9 inches by 3.9 inches. If yours comes out at 4.3 inches, drop to a 2.75mm hook; if it's under 3.6 inches, go up to a 3.25mm. Do this before you make twenty squares that don't match",
          "raw_text": "💡 Gauge matters more here than in most granny squares because you'll be joining many of these together. Make one square first and measure it: you're aiming for about 3.9 inches by 3.9 inches. If yours comes out at 4.3 inches, drop to a 2.75mm hook; if it's under 3.6 inches, go up to a 3.25mm. Do this before you make twenty squares that don't match",
          "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": "💡 Wind small bobbins or butterfly bundles for your yellow and white before you start a round with multiple changes. Full skeins dangling off the back of a 3.9-inch square will tangle within two rounds, and untangling mid-round is how stitch counts get lost. A few yards on a clothespin per color is plenty",
          "raw_text": "💡 Wind small bobbins or butterfly bundles for your yellow and white before you start a round with multiple changes. Full skeins dangling off the back of a 3.9-inch square will tangle within two rounds, and untangling mid-round is how stitch counts get lost. A few yards on a clothespin per color is plenty",
          "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": "💡 Use a removable stitch marker in the top of each round's beginning ch2. Because every round is joined with a slip stitch to that exact spot, and because half double crochet tops can look ambiguous, marking it saves you from the most common error in this pattern — joining into the wrong stitch and gaining or losing a stitch each round",
          "raw_text": "💡 Use a removable stitch marker in the top of each round's beginning ch2. Because every round is joined with a slip stitch to that exact spot, and because half double crochet tops can look ambiguous, marking it saves you from the most common error in this pattern — joining into the wrong stitch and gaining or losing a stitch each round",
          "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": "💡 Weave your color-change ends in as you finish each round rather than saving them all for the end. A four-color square generates a surprising number of tails, and burying them into the dense hdc fabric of the round you just finished is far easier than digging through five completed rounds later. Weave each tail in two directions before trimming so it survives washing",
          "raw_text": "💡 Weave your color-change ends in as you finish each round rather than saving them all for the end. A four-color square generates a surprising number of tails, and burying them into the dense hdc fabric of the round you just finished is far easier than digging through five completed rounds later. Weave each tail in two directions before trimming so it survives washing",
          "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": "💡 Block your squares before joining them. Half double crochet worked at tight gauge with color changes will always want to curl slightly at the corners. A light steam or wet block, pinned to 3.9 inches square on a towel, evens out the shaping and makes seaming dramatically faster and neater",
          "raw_text": "💡 Block your squares before joining them. Half double crochet worked at tight gauge with color changes will always want to curl slightly at the corners. A light steam or wet block, pinned to 3.9 inches square on a towel, evens out the shaping and makes seaming dramatically faster and neater",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "How many colors do I actually need",
          "value": "The sample uses four colors: a main body color, yellow, white, and one more for the surrounding square. You could simplify to three by using the same shade for the square rounds as for the face, and the dog will still read clearly. Just avoid dropping below three, since the face detail depends on contrast between the sections",
          "raw_text": "The sample uses four colors: a main body color, yellow, white, and one more for the surrounding square. You could simplify to three by using the same shade for the square rounds as for the face, and the dog will still read clearly. Just avoid dropping below three, since the face detail depends on contrast between the sections",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many colors do I actually need for this dog granny square?",
          "answer": "The sample uses four colors: a main body color, yellow, white, and one more for the surrounding square. You could simplify to three by using the same shade for the square rounds as for the face, and the dog will still read clearly. Just avoid dropping below three, since the face detail depends on contrast between the sections",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Why is the face made in half double",
          "value": "Half double crochet creates a solid, mostly gap-free fabric, which is what lets a picture like a dog's face show up cleanly. Traditional 3-dc clusters with chain spaces would break the image into holes and blur the color changes. The clusters come back for the two dc rounds that turn the circle into a square, where the openwork doesn't affect the picture",
          "raw_text": "Half double crochet creates a solid, mostly gap-free fabric, which is what lets a picture like a dog's face show up cleanly. Traditional 3-dc clusters with chain spaces would break the image into holes and blur the color changes. The clusters come back for the two dc rounds that turn the circle into a square, where the openwork doesn't affect the picture",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why is the face made in half double crochet instead of the usual granny square clusters?",
          "answer": "Half double crochet creates a solid, mostly gap-free fabric, which is what lets a picture like a dog's face show up cleanly. Traditional 3-dc clusters with chain spaces would break the image into holes and blur the color changes. The clusters come back for the two dc rounds that turn the circle into a square, where the openwork doesn't affect the picture",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "My square is curling at the corners",
          "value": "Probably not. Tight-gauge half double crochet in the round naturally cups a little, especially when increases are clustered at four points. A wet block or light steam, pinned flat to 3.9 inches, fixes it completely. If it's still cupping badly after blocking, your increase groups may be one stitch short of what the round calls for",
          "raw_text": "Probably not. Tight-gauge half double crochet in the round naturally cups a little, especially when increases are clustered at four points. A wet block or light steam, pinned flat to 3.9 inches, fixes it completely. If it's still cupping badly after blocking, your increase groups may be one stitch short of what the round calls for",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "My square is curling at the corners — did I do something wrong?",
          "answer": "Probably not. Tight-gauge half double crochet in the round naturally cups a little, especially when increases are clustered at four points. A wet block or light steam, pinned flat to 3.9 inches, fixes it completely. If it's still cupping badly after blocking, your increase groups may be one stitch short of what the round calls for",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How many squares do I need for a baby blanket?",
          "value": "about 3.9 inches each, you'd need roughly 8 squares across and 10 down — around 80 squares — for a 32 x 40 inch baby blanket, before adding a border. Many crocheters mix dog squares with plain solid squares in a checkerboard to cut that number roughly in half while keeping the theme",
          "raw_text": "about 3.9 inches each, you'd need roughly 8 squares across and 10 down — around 80 squares — for a 32 x 40 inch baby blanket, before adding a border. Many crocheters mix dog squares with plain solid squares in a checkerboard to cut that number roughly in half while keeping the theme",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a baby blanket?",
          "answer": "about 3.9 inches each, you'd need roughly 8 squares across and 10 down — around 80 squares — for a 32 x 40 inch baby blanket, before adding a border. Many crocheters mix dog squares with plain solid squares in a checkerboard to cut that number roughly in half while keeping the theme",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "faq",
          "code": "faq-6",
          "label": "What's the best way to attach the two floppy ears?",
          "value": "Secure only the top edge of each ear to the side of the head with a few whip stitches, using the long tail you left at the start of the ear, and leave the bottom edge and remaining sides unsewn so the ears hang freely. Sew them on before you join squares into a blanket, while you still have easy access to the back of the fabric. Using the ear's own yarn tail means you're not adding another end to weave",
          "raw_text": "Secure only the top edge of each ear to the side of the head with a few whip stitches, using the long tail you left at the start of the ear, and leave the bottom edge and remaining sides unsewn so the ears hang freely. Sew them on before you join squares into a blanket, while you still have easy access to the back of the fabric. Using the ear's own yarn tail means you're not adding another end to weave",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What's the best way to attach the two floppy ears?",
          "answer": "Secure only the top edge of each ear to the side of the head with a few whip stitches, using the long tail you left at the start of the ear, and leave the bottom edge and remaining sides unsewn so the ears hang freely. Sew them on before you join squares into a blanket, while you still have easy access to the back of the fabric. Using the ear's own yarn tail means you're not adding another end to weave",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/easy-dog-granny-square-free-crochet-pattern-hero.webp",
    "data/images/easy-dog-granny-square-free-crochet-pattern-step-2.webp",
    "data/images/easy-dog-granny-square-free-crochet-pattern-step-3.webp",
    "data/images/easy-dog-granny-square-free-crochet-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/easy-dog-granny-square-free-crochet-pattern-hero.webp",
      "alt": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/easy-dog-granny-square-free-crochet-pattern-hero.webp",
      "alt": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/easy-dog-granny-square-free-crochet-pattern-step-2.webp",
      "alt": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/easy-dog-granny-square-free-crochet-pattern-step-3.webp",
      "alt": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/easy-dog-granny-square-free-crochet-pattern-step-4.webp",
      "alt": "Easy Dog Granny Square — Free Crochet Pattern with Color Changes — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 4
}