{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "textured-flower-granny-square",
  "title": "Textured Flower Granny Square – Free Crochet Pattern",
  "meta_description": "Learn to crochet a textured granny square with raised flower petals in 4 colors. This free 5-round pattern makes a 4-inch square perfect for blankets",
  "published_at": "2026-07-11",
  "updated_at": "2026-07-11",
  "author": "Ruby",
  "thumbnail_url": "data/images/textured-flower-granny-square-hero.webp",
  "meta": {
    "title": "Textured Flower Granny Square – Free Crochet Pattern",
    "pattern_name": "Textured Flower Granny Square – Free Crochet Pattern",
    "difficulty": "Easy",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "2.3K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Beginner",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "textured crochet",
        "flower granny square",
        "free crochet pattern",
        "DK yarn",
        "crochet motif",
        "blanket square",
        "beginner crochet",
        "stash buster",
        "crochet flowers",
        "petal texture",
        "crochet blanket"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Textured Flower Granny Square – Free Crochet Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "🧶 Confident Beginner",
          "value": "Basic granny clusters plus one fun raised-petal technique",
          "raw_text": "Basic granny clusters plus one fun raised-petal technique",
          "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 Make",
          "value": "About an hour per square — perfect relaxing take-along crochet",
          "raw_text": "About an hour per square — perfect relaxing take-along crochet",
          "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": "Stackable 4-inch flower motifs for throws, pillows, and handmade gifts",
          "raw_text": "Stackable 4-inch flower motifs for throws, pillows, and handmade gifts",
          "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 the humble granny square into a little garden. Over just five rounds, a bright center blooms into layered raised petals, all framed by a classic granny-cluster border that squares everything off to a neat four inches. It is the basic granny square you already love, with one delicious twist of texture in the middle. It is perfect for blanket-makers who want motifs with real personality, stash-busters staring down a basket of DK leftovers, and anyone who finds flat squares just a little too quiet",
          "raw_text": "This pattern turns the humble granny square into a little garden. Over just five rounds, a bright center blooms into layered raised petals, all framed by a classic granny-cluster border that squares everything off to a neat four inches. It is the basic granny square you already love, with one delicious twist of texture in the middle. It is perfect for blanket-makers who want motifs with real personality, stash-busters staring down a basket of DK leftovers, and anyone who finds flat squares just a little too quiet",
          "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": "Skill-wise, this sits comfortably in confident-beginner territory. If you can chain, double crochet, and work into a chain space, the only new trick is the petal rounds, where grouped stitches lift toward you to form a dimensional bloom — much easier done than said. You will change colors at the end of each round, four colors total in the sample, which makes this square wonderful low-stakes practice for clean color joins. Expect roughly an hour per square once you have made your first one or two",
          "raw_text": "Skill-wise, this sits comfortably in confident-beginner territory. If you can chain, double crochet, and work into a chain space, the only new trick is the petal rounds, where grouped stitches lift toward you to form a dimensional bloom — much easier done than said. You will change colors at the end of each round, four colors total in the sample, which makes this square wonderful low-stakes practice for clean color joins. Expect roughly an hour per square once you have made your first one or two",
          "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 square measures about 4 by 4 inches in DK-weight yarn, with a plush, dimensional flower at the center and a smooth, flat border that joins beautifully. Run your thumb across it and you can feel the petals lift right off the fabric — that texture is exactly what makes a whole blanket of these irresistible. Sew a batch into an heirloom throw, back a single square for a pillow front or pincushion, or gift a rainbow stack tied with ribbon to a crochet friend",
          "raw_text": "The finished square measures about 4 by 4 inches in DK-weight yarn, with a plush, dimensional flower at the center and a smooth, flat border that joins beautifully. Run your thumb across it and you can feel the petals lift right off the fabric — that texture is exactly what makes a whole blanket of these irresistible. Sew a batch into an heirloom throw, back a single square for a pillow front or pincushion, or gift a rainbow stack tied with ribbon to a crochet friend",
          "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 more granny squares than I can count, but this one keeps pulling me back to my hook. The magic happens in the middle rounds, when those petals suddenly lift off the fabric and the flat little circle in your hands becomes an actual blooming flower. It is the kind of payoff that makes you want to make just one more — and then it is midnight and you have nine. I also love how the four-color structure does the designing for you: a bright center, two rounds of petals, and that calm final border that frames everything like a tiny picture frame. Because each square takes only about an hour in DK yarn, it is my favorite take-along project; the whole thing fits in a sandwich bag with a hook and scissors. It is also a brilliant stash-buster — those lonely half-balls left over from bigger projects are exactly enough for a center or a petal round. Fair warning: once you see these joined into a blanket, you will be planning color palettes in your sleep",
          "raw_text": "I have made more granny squares than I can count, but this one keeps pulling me back to my hook. The magic happens in the middle rounds, when those petals suddenly lift off the fabric and the flat little circle in your hands becomes an actual blooming flower. It is the kind of payoff that makes you want to make just one more — and then it is midnight and you have nine. I also love how the four-color structure does the designing for you: a bright center, two rounds of petals, and that calm final border that frames everything like a tiny picture frame. Because each square takes only about an hour in DK yarn, it is my favorite take-along project; the whole thing fits in a sandwich bag with a hook and scissors. It is also a brilliant stash-buster — those lonely half-balls left over from bigger projects are exactly enough for a center or a petal round. Fair warning: once you see these joined into a blanket, you will be planning color palettes in your sleep",
          "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": "The four-color structure of this square — center, middle petals, outer petals, border — is basically an invitation to play. My favorite combination comes straight from the designer's own suggestion: a white center, pale pink middle petals, coral outer petals, and a sage green border, which reads as a soft rose or peony. For an autumn throw, try a mustard center and burnt-orange petals over rust, framed in deep chocolate brown. A fresh spring version works beautifully with a sunny yellow center, white petals, and a grass-green border, like a scattering of daisies across your lap. For a wintry look, go icy: silver-grey center, two shades of pale blue for the petals, and a snowy cream border. Yarn-wise, the sample uses DK sport, and workhorse acrylics like Stylecraft Special DK, Paintbox Simply DK, or Scheepjes Colour Crafter give you enormous palettes on a budget. Swap in a cotton such as Paintbox Cotton DK for crisper petal definition, or move up to worsted weight with a 5mm hook and each square grows to roughly 5 inches — fewer squares per blanket and a faster finish. To resize without changing yarn, stop after round 4 for a smaller motif, or simply continue in the granny-cluster border pattern: each extra round adds one 3-double-crochet cluster group per side and about three-quarters of an inch of width, so two extra rounds gives you a generous 5.5-inch square. And for a subtle, modern take, work all five rounds in a single color and let the texture do all the talking",
          "raw_text": "The four-color structure of this square — center, middle petals, outer petals, border — is basically an invitation to play. My favorite combination comes straight from the designer's own suggestion: a white center, pale pink middle petals, coral outer petals, and a sage green border, which reads as a soft rose or peony. For an autumn throw, try a mustard center and burnt-orange petals over rust, framed in deep chocolate brown. A fresh spring version works beautifully with a sunny yellow center, white petals, and a grass-green border, like a scattering of daisies across your lap. For a wintry look, go icy: silver-grey center, two shades of pale blue for the petals, and a snowy cream border. Yarn-wise, the sample uses DK sport, and workhorse acrylics like Stylecraft Special DK, Paintbox Simply DK, or Scheepjes Colour Crafter give you enormous palettes on a budget. Swap in a cotton such as Paintbox Cotton DK for crisper petal definition, or move up to worsted weight with a 5mm hook and each square grows to roughly 5 inches — fewer squares per blanket and a faster finish. To resize without changing yarn, stop after round 4 for a smaller motif, or simply continue in the granny-cluster border pattern: each extra round adds one 3-double-crochet cluster group per side and about three-quarters of an inch of width, so two extra rounds gives you a generous 5.5-inch square. And for a subtle, modern take, work all five rounds in a single color and let the texture do all the talking",
          "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": "Pulling the starting ring closed too",
          "value": "Keep the center ring relaxed and make sure every stitch of round 1 fits comfortably before you snug it up. Count your stitches at the end of the round — if the center cups, rip back and loosen the ring rather than hoping it blocks out later",
          "raw_text": "Keep the center ring relaxed and make sure every stitch of round 1 fits comfortably before you snug it up. Count your stitches at the end of the round — if the center cups, rip back and loosen the ring rather than hoping it blocks out later",
          "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": "Working the next round into the tops of",
          "value": "Fold the finished petals toward you as you work the following round, so you can clearly see where your hook should go behind them. The petals should stay free and lift off the fabric — if a petal feels pinned down, you have caught it with a stitch",
          "raw_text": "Fold the finished petals toward you as you work the following round, so you can clearly see where your hook should go behind them. The petals should stay free and lift off the fabric — if a petal feels pinned down, you have caught it with a stitch",
          "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": "Missing or misplacing the corner chain",
          "value": "Drop a stitch marker or scrap of yarn into each corner space as soon as you make it. Before fastening off, count the 3-double-crochet cluster groups along each side — all four sides should match exactly",
          "raw_text": "Drop a stitch marker or scrap of yarn into each corner space as soon as you make it. Before fastening off, count the 3-double-crochet cluster groups along each side — all four sides should match exactly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "mistake",
          "code": "mistake-4",
          "label": "Crocheting the round behind the petals",
          "value": "The rounds worked behind raised petals need a bit of extra ease. Loosen your tension deliberately on those rounds, or go up half a hook size just for them, then return to your normal hook for the border",
          "raw_text": "The rounds worked behind raised petals need a bit of extra ease. Loosen your tension deliberately on those rounds, or go up half a hook size just for them, then return to your normal hook for the border",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "mistake",
          "code": "mistake-5",
          "label": "Cutting the yarn too short at each of",
          "value": "Leave at least a 6-inch tail every time you fasten off a color, and weave each end in two different directions through the wrong side of the stitches. With four colors per square, weaving ends as you finish each round keeps the job from piling up",
          "raw_text": "Leave at least a 6-inch tail every time you fasten off a color, and weave each end in two different directions through the wrong side of the stitches. With four colors per square, weaving ends as you finish each round keeps the job from piling up",
          "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": "Skipping blocking, so edges ripple and",
          "value": "Pin every square to a true 4-by-4-inch measurement and steam gently, holding the iron above the fabric. Never press down — flattening the petals undoes the best part of this pattern",
          "raw_text": "Pin every square to a true 4-by-4-inch measurement and steam gently, holding the iron above the fabric. Never press down — flattening the petals undoes the best part of this pattern",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "Yarn of your choice- 4 colors, the sample is made with DK sports",
              "raw_text": "Yarn of your choice- 4 colors, the sample is made with DK sports"
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook",
              "raw_text": "Crochet 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-dtr",
          "label": "dtr",
          "value": "double treble crochet",
          "raw_text": "dtr = double treble crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dtr",
          "meaning": "double treble crochet"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-inv",
          "label": "inv",
          "value": "invisible",
          "raw_text": "inv = invisible",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "inv",
          "meaning": "invisible"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-fpdtr",
          "label": "FPdtr",
          "value": "front post double treble crochet",
          "raw_text": "FPdtr = front post double treble crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "FPdtr",
          "meaning": "front post double treble crochet"
        },
        {
          "order": 7,
          "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": 8,
          "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": 9,
          "row_type": "abbrev",
          "code": "abbrev-slst",
          "label": "slst",
          "value": "slip stitch for joining for different round.",
          "raw_text": "slst = slip stitch for joining for different round.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "slst",
          "meaning": "slip stitch for joining for different round."
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "Magic ring, inv standing st(count as dc), 2dc, ch2, [3dc, ch2] rep 13 times, tighten tail, slst to top of 1st inv standing st, fasten off.",
          "raw_text": "Round 1 Magic ring, inv standing st(count as dc), 2dc, ch2, [3dc, ch2] rep 13 times, tighten tail, slst to top of 1st inv standing st, fasten off.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "instruction",
          "code": "main-pattern-info-1",
          "label": "Steps",
          "value": "Start with a magic ring. Now, let’s make an invisible standing st: ch1 as standing st of invisible dc.",
          "raw_text": "Step by step: Start with a magic ring. Now, let’s make an invisible standing st: ch1 as standing st of invisible dc.",
          "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": "main-pattern-info-2",
          "label": "Info",
          "value": "Then, make 1 sc; insert your needle into the left post of the first sc to complete the second sc. This is an invisible standing stitch (count as 1dc).",
          "raw_text": "Then, make 1 sc; insert your needle into the left post of the first sc to complete the second sc. This is an invisible standing stitch (count as 1dc).",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "instruction",
          "code": "main-pattern-info-3",
          "label": "Steps",
          "value": "Make another dc; dc, ch2; [3dc, ch2] repeat 3 times; tighten the tail; slst to top of first invisible standing st, fasten off. Round 1 finished.",
          "raw_text": "Make another dc; dc, ch2; [3dc, ch2] repeat 3 times; tighten the tail; slst to top of first invisible standing st, fasten off. Round 1 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Round 2",
          "value": "Join new color yarn in any ch-sp, (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1] rep 3 times, slst to top of 1st inv standing st, fasten off.",
          "raw_text": "Round 2 Join new color yarn in any ch-sp, (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1] rep 3 times, slst to top of 1st inv standing st, fasten off.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "main-pattern-info-4",
          "label": "Info",
          "value": "Step by step: Join new color yarn in any ch-sp.",
          "raw_text": "Step by step: Join new color yarn in any ch-sp.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "instruction",
          "code": "main-pattern-info-5",
          "label": "Steps",
          "value": "Make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, then make ch1. Now we formed first shell stitch.",
          "raw_text": "Make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, then make ch1. Now we formed first shell stitch.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "instruction",
          "code": "main-pattern-info-6",
          "label": "Steps",
          "value": "[(3dc+ch2+3dc) in next ch-sp, ch1] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 2 finished.",
          "raw_text": "[(3dc+ch2+3dc) in next ch-sp, ch1] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 2 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "round",
          "code": "main-pattern-round-3",
          "label": "Round 3",
          "value": "Join new color yarn in any corner sp, (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, 3dc in next ch-sp, ch1, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1, 3dc in next ch-sp, ch1] rep 3 times, slst to top of first inv standing st, fasten off.",
          "raw_text": "Round 3 Join new color yarn in any corner sp, (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, 3dc in next ch-sp, ch1, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1, 3dc in next ch-sp, ch1] rep 3 times, slst to top of first inv standing st, fasten off.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "instruction",
          "code": "main-pattern-info-7",
          "label": "Steps",
          "value": "Join new color yarn in any corner space; make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, ch1, 3dc in next ch-sp, ch1",
          "raw_text": "Step by step: Join new color yarn in any corner space; make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, ch1, 3dc in next ch-sp, ch1",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "instruction",
          "code": "main-pattern-info-8",
          "label": "Steps",
          "value": "[(3dc+2dc+ch2+3dc) in next ch-sp, ch1, 3dc in next ch-sp, ch1] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 3 finished.",
          "raw_text": "[(3dc+2dc+ch2+3dc) in next ch-sp, ch1, 3dc in next ch-sp, ch1] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 3 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "round",
          "code": "main-pattern-round-4",
          "label": "Round 4",
          "value": "Join new color yarn in any corner sp, note: in this round we make all dc in ch-sp: (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, [3dc, ch1] rep 2 times, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1, *(3dc, ch1) rep* 2 times] rep 3 times, slst to top of 1st inv standing st, fasten off.",
          "raw_text": "Round 4 Join new color yarn in any corner sp, note: in this round we make all dc in ch-sp: (an inv standing dc+2dc+ch2+3dc) in same ch-sp, ch1, [3dc, ch1] rep 2 times, [(3dc+2dc+ch2+3dc) in next ch-sp, ch1, *(3dc, ch1) rep* 2 times] rep 3 times, slst to top of 1st inv standing st, fasten off.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "instruction",
          "code": "main-pattern-info-11",
          "label": "Steps",
          "value": "Join new color yarn in any corner space. Note: in this round we make all dc in ch-sp.",
          "raw_text": "Step by step: Join new color yarn in any corner space. Note: in this round we make all dc in ch-sp.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "instruction",
          "code": "main-pattern-info-12",
          "label": "Steps",
          "value": "Make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, ch1, [3dc in next ch-sp, ch1] repeat 2 times",
          "raw_text": "Make an invisible standing st (count as dc); dc in same ch-sp; (dc+ch2+3dc) in same ch-sp, ch1, [3dc in next ch-sp, ch1] repeat 2 times",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "instruction",
          "code": "main-pattern-info-13",
          "label": "Steps",
          "value": "[(3dc+2dc+ch2+3dc) in next ch-sp, ch1, *(3dc in next ch-sp+ch1) repeat* 2 times] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 4 finished.",
          "raw_text": "[(3dc+2dc+ch2+3dc) in next ch-sp, ch1, *(3dc in next ch-sp+ch1) repeat* 2 times] repeat 3 times, slst to top of first invisible standing st, fasten off. Round 4 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "round",
          "code": "main-pattern-round-5",
          "label": "Round 5",
          "value": "Join new color yarn in corner sp, note: make all dc in ch-sp: (inv standing st+2dc+ch2+3dc) in same ch-sp, ch1, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st inv standing dc, FPdtr in 1st shell's last inv standing dc), ch1, 3dc, ch1, [(3dc+2dc+ch2+3dc) in next corner sp, ch1, 3dc, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st inv standing dc, FPdtr in 1st shell's last inv standing dc), ch1, 3dc, ch1], slst to top of 1st inv standing st, fasten off and weave in ends.",
          "raw_text": "Round 5 Join new color yarn in corner sp, note: make all dc in ch-sp: (inv standing st+2dc+ch2+3dc) in same ch-sp, ch1, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st inv standing dc, FPdtr in 1st shell's last inv standing dc), ch1, 3dc, ch1, [(3dc+2dc+ch2+3dc) in next corner sp, ch1, 3dc, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st inv standing dc, FPdtr in 1st shell's last inv standing dc), ch1, 3dc, ch1], slst to top of 1st inv standing st, fasten off and weave in ends.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 17,
          "row_type": "instruction",
          "code": "main-pattern-info-17",
          "label": "Steps",
          "value": "Join new color yarn in corner space. Note: in this round we make all dc in ch-sp.",
          "raw_text": "Step by step: Join new color yarn in corner space. Note: in this round we make all dc in ch-sp.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 18,
          "row_type": "instruction",
          "code": "main-pattern-info-18",
          "label": "Steps",
          "value": "Make an invisible standing st (count as dc); dc in same corner space; (dc+ch2+3dc) in same corner space, ch1, 3dc, ch1, dc",
          "raw_text": "Make an invisible standing st (count as dc); dc in same corner space; (dc+ch2+3dc) in same corner space, ch1, 3dc, ch1, dc",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 19,
          "row_type": "instruction",
          "code": "main-pattern-info-19",
          "label": "Steps",
          "value": "Insert your needle from front to back to front of second shell's first invisible standing dc st of round 2; make FPdtr in second shell's first invisible standing dc st of round 2",
          "raw_text": "Insert your needle from front to back to front of second shell's first invisible standing dc st of round 2; make FPdtr in second shell's first invisible standing dc st of round 2",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 20,
          "row_type": "instruction",
          "code": "main-pattern-info-20",
          "label": "Steps",
          "value": "Insert your needle from front to back to front of first shell's last dc st of round 2; make FPdtr in first shell's last dc st of round 2; ch1, 3dc, ch1",
          "raw_text": "Insert your needle from front to back to front of first shell's last dc st of round 2; make FPdtr in first shell's last dc st of round 2; ch1, 3dc, ch1",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 21,
          "row_type": "instruction",
          "code": "main-pattern-info-21",
          "label": "Steps",
          "value": "[(3dc+2dc+ch2+3dc) in next corner sp, ch1, 3dc, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st invisible standing dc, FPdtr in 1st shell's last invisible standing dc), ch1, 3dc, ch1], slst to top of 1st invisible standing st, fasten off and weave in ends.",
          "raw_text": "[(3dc+2dc+ch2+3dc) in next corner sp, ch1, 3dc, ch1, dc, In round 2: (FPdtr in 2nd shell's 1st invisible standing dc, FPdtr in 1st shell's last invisible standing dc), ch1, 3dc, ch1], slst to top of 1st invisible standing st, fasten off and weave in ends.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 22,
          "row_type": "info",
          "code": "main-pattern-info-22",
          "label": "Info",
          "value": "Now we finished a texture basic granny square.",
          "raw_text": "Now we finished a texture basic granny square.",
          "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-gauge",
          "label": "Note",
          "value": "💡 Gauge: the completed granny square measures approximately 4 inches by 4 inches",
          "raw_text": "💡 Gauge: the completed granny square measures approximately 4 inches by 4 inches",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 DK yarn pairs best with a 3.5–4mm hook for this square. If your granny clusters tend to be loose, drop down half a size so the finished motif holds its crisp 4-inch measurement",
          "raw_text": "💡 DK yarn pairs best with a 3.5–4mm hook for this square. If your granny clusters tend to be loose, drop down half a size so the finished motif holds its crisp 4-inch measurement",
          "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-2",
          "label": "Note",
          "value": "💡 Treat your first square as your gauge swatch: measure it after round 5, and adjust your hook before starting a big batch so every square in your blanket comes out identical",
          "raw_text": "💡 Treat your first square as your gauge swatch: measure it after round 5, and adjust your hook before starting a big batch so every square in your blanket comes out identical",
          "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-3",
          "label": "Note",
          "value": "💡 With four color changes per square, wind off small bobbins of each shade before you start a batch — it keeps your project bag tidy and saves untangling time mid-round",
          "raw_text": "💡 With four color changes per square, wind off small bobbins of each shade before you start a batch — it keeps your project bag tidy and saves untangling time mid-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-4",
          "label": "Note",
          "value": "💡 Fold the petal rounds forward and hold them out of the way while you work the round behind them; this keeps the texture popping toward the front where it belongs",
          "raw_text": "💡 Fold the petal rounds forward and hold them out of the way while you work the round behind them; this keeps the texture popping toward the front where it belongs",
          "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-5",
          "label": "Note",
          "value": "💡 Place a stitch marker in each corner chain space during the border rounds, and move it up as you go — squint-free corners make joining dozens of squares painless",
          "raw_text": "💡 Place a stitch marker in each corner chain space during the border rounds, and move it up as you go — squint-free corners make joining dozens of squares painless",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "note-6",
          "label": "Note",
          "value": "💡 If an abbreviation ever feels ambiguous, trust your stitch counts: each side of the finished border should have the same number of cluster groups, and the square should measure evenly corner to corner",
          "raw_text": "💡 If an abbreviation ever feels ambiguous, trust your stitch counts: each side of the finished border should have the same number of cluster groups, and the square should measure evenly corner to corner",
          "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": "What size is the finished granny square?",
          "value": "Worked in DK-weight yarn with a suitably matched hook, the square comes out at approximately 4 by 4 inches. Your personal tension matters, so measure your first square and adjust your hook size up or down if needed",
          "raw_text": "Worked in DK-weight yarn with a suitably matched hook, the square comes out at approximately 4 by 4 inches. Your personal tension matters, so measure your first square and adjust your hook size up or down if needed",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What size is the finished granny square?",
          "answer": "Worked in DK-weight yarn with a suitably matched hook, the square comes out at approximately 4 by 4 inches. Your personal tension matters, so measure your first square and adjust your hook size up or down if needed",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Can I make this square with fewer than four colors?",
          "value": "Absolutely. Two colors — one for the flower rounds and one for the border — looks striking, and a single-color version lets the raised petal texture shine on its own. You can also use three tonal shades of one color for a gradient bloom",
          "raw_text": "Absolutely. Two colors — one for the flower rounds and one for the border — looks striking, and a single-color version lets the raised petal texture shine on its own. You can also use three tonal shades of one color for a gradient bloom",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I make this square with fewer than four colors?",
          "answer": "Absolutely. Two colors — one for the flower rounds and one for the border — looks striking, and a single-color version lets the raised petal texture shine on its own. You can also use three tonal shades of one color for a gradient bloom",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "What yarn works best for this pattern?",
          "value": "The sample uses DK sport-weight yarn, and any smooth DK acrylic or cotton will show the petal texture nicely. If you substitute worsted weight with a 5mm hook, expect a slightly larger square of around 5 inches",
          "raw_text": "The sample uses DK sport-weight yarn, and any smooth DK acrylic or cotton will show the petal texture nicely. If you substitute worsted weight with a 5mm hook, expect a slightly larger square of around 5 inches",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What yarn works best for this pattern?",
          "answer": "The sample uses DK sport-weight yarn, and any smooth DK acrylic or cotton will show the petal texture nicely. If you substitute worsted weight with a 5mm hook, expect a slightly larger square of around 5 inches",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Why won't my square lie flat?",
          "value": "The most common culprit is tight tension on the rounds worked behind the raised petals, which makes the square cup. Loosen up on those rounds or go up half a hook size, and finish with a gentle steam block pinned to 4 inches square",
          "raw_text": "The most common culprit is tight tension on the rounds worked behind the raised petals, which makes the square cup. Loosen up on those rounds or go up half a hook size, and finish with a gentle steam block pinned to 4 inches square",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why won't my square lie flat?",
          "answer": "The most common culprit is tight tension on the rounds worked behind the raised petals, which makes the square cup. Loosen up on those rounds or go up half a hook size, and finish with a gentle steam block pinned to 4 inches square",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How many squares do I need for a blanket?",
          "value": "4 inches per square, a 6-by-8 layout of 48 squares makes a sweet 24-by-32-inch baby blanket. For a full lap throw around 40 by 48 inches, plan on 120 squares in a 10-by-12 grid, plus a simple border if you like",
          "raw_text": "4 inches per square, a 6-by-8 layout of 48 squares makes a sweet 24-by-32-inch baby blanket. For a full lap throw around 40 by 48 inches, plan on 120 squares in a 10-by-12 grid, plus a simple border if you like",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a blanket?",
          "answer": "4 inches per square, a 6-by-8 layout of 48 squares makes a sweet 24-by-32-inch baby blanket. For a full lap throw around 40 by 48 inches, plan on 120 squares in a 10-by-12 grid, plus a simple border if you like",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/textured-flower-granny-square-hero.webp",
    "data/images/textured-flower-granny-square-step-2.webp",
    "data/images/textured-flower-granny-square-step-3.webp",
    "data/images/textured-flower-granny-square-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/textured-flower-granny-square-hero.webp",
      "alt": "Textured Flower Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/textured-flower-granny-square-hero.webp",
      "alt": "Textured Flower Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/textured-flower-granny-square-step-2.webp",
      "alt": "Textured Flower Granny Square – Free Crochet Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/textured-flower-granny-square-step-3.webp",
      "alt": "Textured Flower Granny Square – Free Crochet Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/textured-flower-granny-square-step-4.webp",
      "alt": "Textured Flower Granny Square – Free Crochet Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 0
}