{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "sunny-pineapple-granny-square-a-cheerful-beginner-pattern",
  "title": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern",
  "meta_description": "A sunny pineapple appliqué blooms in cream, leaf green, and golden yellow across 6 easy rounds plus a border—an ideal beginner granny square.",
  "published_at": "2026-08-12",
  "updated_at": "2026-08-12",
  "author": "Nora",
  "thumbnail_url": "data/images/sunny-pineapple-granny-square-a-cheerful-beginner-pattern-hero.webp",
  "meta": {
    "title": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern",
    "pattern_name": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern",
    "difficulty": "Beginner",
    "time_needed": "1-1.5 Hours",
    "rating": 4.7,
    "made_count": "1.6K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Beginner",
      "yarn_weight": "Worsted",
      "tags": [
        "granny square",
        "pineapple crochet",
        "beginner crochet pattern",
        "crochet appliqué",
        "worsted weight crochet",
        "classic granny square",
        "crochet motif",
        "cream and yellow crochet",
        "crochet square pattern",
        "easy crochet pattern"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Beginner Friendly",
          "value": "Just basic stitches and simple color changes make this a wonderful first pictorial square.",
          "raw_text": "Just basic stitches and simple color changes make this a wonderful first pictorial square.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "hero-info-2",
          "label": "Cheerful Appliqué",
          "value": "A dimensional pineapple with a fanned leafy crown sits right at the center, sewn on after the background rounds are done.",
          "raw_text": "A dimensional pineapple with a fanned leafy crown sits right at the center, sewn on after the background rounds are done.",
          "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": "Quick 6 Rounds",
          "value": "Six rounds plus a tidy border come together fast, so you'll have a finished square in one cozy sitting.",
          "raw_text": "Six rounds plus a tidy border come together fast, so you'll have a finished square in one cozy sitting.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 2,
      "card_type": "about",
      "code": "about",
      "title": "About",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "about-info-1",
          "label": "",
          "value": "The Sunny Pineapple Granny Square starts life as a classic granny square worked flat in the round, then gets its personality from a sweet pineapple appliqué—Body, Center Leaf, and two Side Leaves—stitched separately in leaf green and golden yellow, then sewn onto the finished background. It's the kind of square that makes you smile every time you spot it in a stack, since the fruity little motif turns an ordinary granny into a tiny piece of sunshine.",
          "raw_text": "The Sunny Pineapple Granny Square starts life as a classic granny square worked flat in the round, then gets its personality from a sweet pineapple appliqué—Body, Center Leaf, and two Side Leaves—stitched separately in leaf green and golden yellow, then sewn onto the finished background. It's the kind of square that makes you smile every time you spot it in a stack, since the fruity little motif turns an ordinary granny into a tiny piece of sunshine.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "about-info-2",
          "label": "",
          "value": "You'll work double crochet corners and chain spaces the whole way through, building up from 12 stitches in round one to 60 by round five, then finishing with an 88-stitch single crochet border that squares off every edge. Because every round uses the same rhythm—corner, chain-1 spaces, groups of three double crochets—it's a forgiving pattern for anyone who has made a handful of granny squares before and wants to try a simple appliqué for the first time.",
          "raw_text": "You'll work double crochet corners and chain spaces the whole way through, building up from 12 stitches in round one to 60 by round five, then finishing with an 88-stitch single crochet border that squares off every edge. Because every round uses the same rhythm—corner, chain-1 spaces, groups of three double crochets—it's a forgiving pattern for anyone who has made a handful of granny squares before and wants to try a simple appliqué for the first time.",
          "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": "Once assembled, the square measures about 7 by 7 inches, with the golden pineapple body cross-hatched in chain spaces and its leafy crown fanning out in leaf green against the cream background. Stitch up a stack of them for a cheerful baby blanket, a set of coordinating placemats, or scatter a few as accent squares in a bigger cream-and-green throw.",
          "raw_text": "Once assembled, the square measures about 7 by 7 inches, with the golden pineapple body cross-hatched in chain spaces and its leafy crown fanning out in leaf green against the cream background. Stitch up a stack of them for a cheerful baby blanket, a set of coordinating placemats, or scatter a few as accent squares in a bigger cream-and-green throw.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 3,
      "card_type": "why_love",
      "code": "why-love",
      "title": "Why You'll Love This Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "why-love-1",
          "label": "",
          "value": "I designed this square on a morning when I wanted something that felt playful without being fussy, and the little pineapple appliqué turned out to be exactly that—simple shapes, sewn on at the end, that instantly read as fruit the moment you step back and squint. I love that the background rounds are pure classic granny square, so if you've made even one before, you already know the rhythm in your hands. What sold me on it, though, is how the golden body catches the light differently from the cream border, giving the whole thing a little glow. It's become one of my go-to squares whenever I want a project that feels a bit special but never stops being relaxing.",
          "raw_text": "I designed this square on a morning when I wanted something that felt playful without being fussy, and the little pineapple appliqué turned out to be exactly that—simple shapes, sewn on at the end, that instantly read as fruit the moment you step back and squint. I love that the background rounds are pure classic granny square, so if you've made even one before, you already know the rhythm in your hands. What sold me on it, though, is how the golden body catches the light differently from the cream border, giving the whole thing a little glow. It's become one of my go-to squares whenever I want a project that feels a bit special but never stops being relaxing.",
          "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": "If sunny yellow isn't your palette, this design flexes easily—try a coral or blush body with sage leaves for a softer look, or deep amber and forest green for something richer and more autumnal. Swapping worsted for a lighter DK yarn with a smaller hook gives you a daintier square perfect for coasters or a delicate baby blanket, while moving up to chunky yarn and a bigger hook turns the same pattern into an oversized statement square for a lap blanket in just a few rounds. You could also skip the appliqué colors entirely and work the whole background in one cream shade for a subtler, tone-on-tone version, then add the pineapple in a single accent color for a cleaner, more modern finish.",
          "raw_text": "If sunny yellow isn't your palette, this design flexes easily—try a coral or blush body with sage leaves for a softer look, or deep amber and forest green for something richer and more autumnal. Swapping worsted for a lighter DK yarn with a smaller hook gives you a daintier square perfect for coasters or a delicate baby blanket, while moving up to chunky yarn and a bigger hook turns the same pattern into an oversized statement square for a lap blanket in just a few rounds. You could also skip the appliqué colors entirely and work the whole background in one cream shade for a subtler, tone-on-tone version, then add the pineapple in a single accent color for a cleaner, more modern finish.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 5,
      "card_type": "common_mistakes",
      "code": "common-mistakes",
      "title": "Common Mistakes & How to Fix Them",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "mistake",
          "code": "mistake-1",
          "label": "Losing track of corner spaces",
          "value": "It's easy to stitch into the wrong chain space once the square grows past round three. Slip a stitch marker into each ch-2 corner as you finish a round so you always know exactly where to begin the next one.",
          "raw_text": "It's easy to stitch into the wrong chain space once the square grows past round three. Slip a stitch marker into each ch-2 corner as you finish a round so you always know exactly where to begin the next one.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "mistake",
          "code": "mistake-2",
          "label": "Pulling the magic ring too loose",
          "value": "A loose starting ring leaves a visible gap in the very center of your pineapple body. Give the tail a firm tug once your first round of stitches locks the ring closed, then tug again before weaving in the end.",
          "raw_text": "A loose starting ring leaves a visible gap in the very center of your pineapple body. Give the tail a firm tug once your first round of stitches locks the ring closed, then tug again before weaving in the end.",
          "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": "Mismatching corner stitch counts",
          "value": "Adding an extra stitch or missing one in a corner group throws off every round after it. Count your stitches between corners before joining each round, and recount if your square starts looking lopsided.",
          "raw_text": "Adding an extra stitch or missing one in a corner group throws off every round after it. Count your stitches between corners before joining each round, and recount if your square starts looking lopsided.",
          "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": "Sewing the appliqué on crooked",
          "value": "Stitching the pineapple pieces onto the background without checking placement first can leave it looking off-center. Pin the Body, Center Leaf, and Side Leaves in place and step back to check the balance before you sew a single stitch.",
          "raw_text": "Stitching the pineapple pieces onto the background without checking placement first can leave it looking off-center. Pin the Body, Center Leaf, and Side Leaves in place and step back to check the balance before you sew a single stitch.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "Worsted-weight yarn in 3 colors (cream, leaf green, golden yellow) — about 25–40 g total per square",
              "raw_text": "Worsted-weight yarn in 3 colors (cream, leaf green, golden yellow) — about 25–40 g total per square"
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "5.0 mm crochet hook",
              "raw_text": "5.0 mm crochet hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Yarn needle for weaving in ends",
              "raw_text": "Yarn needle for weaving in ends"
            },
            {
              "order": 4,
              "row_type": "item",
              "code": "mat-1-4",
              "label": "",
              "value": "Scissors",
              "raw_text": "Scissors"
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain",
          "raw_text": "ch = chain",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-dc",
          "label": "dc",
          "value": "double crochet",
          "raw_text": "dc = double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc",
          "meaning": "double crochet"
        },
        {
          "order": 3,
          "row_type": "abbrev",
          "code": "abbrev-sc",
          "label": "sc",
          "value": "single crochet",
          "raw_text": "sc = single crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc",
          "meaning": "single crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-sl-st",
          "label": "sl st",
          "value": "slip stitch",
          "raw_text": "sl st = slip stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sl st",
          "meaning": "slip stitch"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-sp",
          "label": "sp",
          "value": "space",
          "raw_text": "sp = space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sp",
          "meaning": "space"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-st-s",
          "label": "st(s)",
          "value": "stitch(es)",
          "raw_text": "st(s) = stitch(es)",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "st(s)",
          "meaning": "stitch(es)"
        },
        {
          "order": 7,
          "row_type": "abbrev",
          "code": "abbrev-rnd",
          "label": "rnd",
          "value": "round",
          "raw_text": "rnd = round",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rnd",
          "meaning": "round"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-mr",
          "label": "MR",
          "value": "magic ring",
          "raw_text": "MR = magic ring",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "MR",
          "meaning": "magic ring"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "the-background-square",
      "title": "The Background Square",
      "raw_heading": "The Background Square",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "part-info-1",
          "label": "Info",
          "value": "Work the plain background square first — the sunny pineapple pieces are sewn on at the end. Every count below is math-verified.",
          "raw_text": "Work the plain background square first — the sunny pineapple pieces are sewn on at the end. Every count below is math-verified.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "part-round-1",
          "label": "Round 1",
          "value": "With cream, in a magic ring: ch 3, 2 dc, ch 2, [3 dc, ch 2] 3 times; sl st to top of ch-3 to join (12)",
          "raw_text": "With cream, in a magic ring: ch 3, 2 dc, ch 2, [3 dc, ch 2] 3 times; sl st to top of ch-3 to join (12)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 12,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "part-step-1",
          "label": "Step by step",
          "value": "Step by step: Using cream yarn, in a magic ring: make 3 chain stitches, 2 double crochet, make 2 chain stitches, [3 double crochet, make 2 chain stitches] 3 times; slip stitch to top of ch-3 to join.",
          "raw_text": "Step by step: Using cream yarn, in a magic ring: make 3 chain stitches, 2 double crochet, make 2 chain stitches, [3 double crochet, make 2 chain stitches] 3 times; slip stitch to top of ch-3 to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "part-round-2",
          "label": "Round 2",
          "value": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, ] 3 times; sl st to join (24)",
          "raw_text": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, ] 3 times; sl st to join (24)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 24,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "part-step-2",
          "label": "Step by step",
          "value": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "part-round-3",
          "label": "Round 3",
          "value": "With leaf green, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (36)",
          "raw_text": "With leaf green, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (36)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 36,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "part-step-3",
          "label": "Step by step",
          "value": "Step by step: Using leaf green yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Using leaf green yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "round",
          "code": "part-round-4",
          "label": "Round 4",
          "value": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (48)",
          "raw_text": "sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (48)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 48,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "info",
          "code": "part-step-4",
          "label": "Step by step",
          "value": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "round",
          "code": "part-round-5",
          "label": "Round 5",
          "value": "With cream, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (60)",
          "raw_text": "With cream, sl st to corner sp, ch 3, 2 dc, ch 2, 3 dc in same corner, ch 1, 3 dc, ch 1, 3 dc, ch 1, 3 dc, ch 1, [(3 dc, ch 2, 3 dc) in corner sp, ch 1, 3 dc, ch 1, 3 dc, ch 1, 3 dc, ch 1, ] 3 times; sl st to join (60)",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": 60,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "info",
          "code": "part-step-5",
          "label": "Step by step",
          "value": "Step by step: Using cream yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "raw_text": "Step by step: Using cream yarn, slip stitch to corner space, make 3 chain stitches, 2 double crochet, make 2 chain stitches, 3 double crochet in same corner, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, [(3 double crochet, make 2 chain stitches, 3 double crochet) in corner space, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, 3 double crochet, make 1 chain stitch, ] 3 times; slip stitch to join.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "round",
          "code": "part-round-6",
          "label": "Border",
          "value": "sl st into the corner ch-2 sp, ch 1, [3 sc in the corner sp, (sc in next 3 sts, sc in next sp) 4 times, sc in next 3 sts] 4 times; sl st to the first sc (88)",
          "raw_text": "sl st into the corner ch-2 sp, ch 1, [3 sc in the corner sp, (sc in next 3 sts, sc in next sp) 4 times, sc in next 3 sts] 4 times; sl st to the first sc (88)",
          "round_start": 6,
          "round_end": 6,
          "is_range": false,
          "stitch_count": 88,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "info",
          "code": "part-step-6",
          "label": "Step by step",
          "value": "Step by step: Slip stitch into the corner ch-2 space, make 1 chain stitch, [3 single crochet in the corner space, (single crochet in next 3 stitches, single crochet in next space) 4 times, single crochet in next 3 stitches] 4 times; slip stitch to the first single crochet.",
          "raw_text": "Step by step: Slip stitch into the corner ch-2 space, make 1 chain stitch, [3 single crochet in the corner space, (single crochet in next 3 stitches, single crochet in next space) 4 times, single crochet in next 3 stitches] 4 times; slip stitch to the first single crochet.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 9,
      "card_type": "part",
      "code": "the-body",
      "title": "The Body",
      "raw_heading": "The Body",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc1-info",
          "label": "Info",
          "value": "Worked in golden yellow. Leave a long tail for sewing.",
          "raw_text": "Worked in golden yellow. Leave a long tail for sewing.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "pc1-round-1",
          "label": "Round 1",
          "value": "6 sc in a magic ring (6)",
          "raw_text": "6 sc in a magic ring (6)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 6,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "pc1-round-2",
          "label": "Round 2",
          "value": "[inc] repeat 6 times (12)",
          "raw_text": "[inc] repeat 6 times (12)",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": 12,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "pc1-round-3",
          "label": "Round 3",
          "value": "[sc, inc] repeat 6 times (18)",
          "raw_text": "[sc, inc] repeat 6 times (18)",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": 18,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "pc1-round-4",
          "label": "Round 4",
          "value": "[sc in next 2 sts, inc] repeat 6 times (24)",
          "raw_text": "[sc in next 2 sts, inc] repeat 6 times (24)",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 24,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "pc1-round-5",
          "label": "Round 5",
          "value": "sc in next 24 sts (24)",
          "raw_text": "sc in next 24 sts (24)",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": 24,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "round",
          "code": "pc1-round-6",
          "label": "Round 6",
          "value": "[sc in next 2 sts, dec] repeat 6 times (18)",
          "raw_text": "[sc in next 2 sts, dec] repeat 6 times (18)",
          "round_start": 6,
          "round_end": 6,
          "is_range": false,
          "stitch_count": 18,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "part",
      "code": "the-center-leaf",
      "title": "The Center Leaf",
      "raw_heading": "The Center Leaf",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc2-info",
          "label": "Info",
          "value": "Worked in leaf green. Leave a long tail for sewing.",
          "raw_text": "Worked in leaf green. Leave a long tail for sewing.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "pc2-round-1",
          "label": "Round 1",
          "value": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "raw_text": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "part",
      "code": "the-side-leaf-left",
      "title": "The Side Leaf Left",
      "raw_heading": "The Side Leaf Left",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc3-info",
          "label": "Info",
          "value": "Worked in leaf green. Leave a long tail for sewing.",
          "raw_text": "Worked in leaf green. Leave a long tail for sewing.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "pc3-round-1",
          "label": "Round 1",
          "value": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "raw_text": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 12,
      "card_type": "part",
      "code": "the-side-leaf-right",
      "title": "The Side Leaf Right",
      "raw_heading": "The Side Leaf Right",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "pc4-info",
          "label": "Info",
          "value": "Worked in leaf green. Leave a long tail for sewing.",
          "raw_text": "Worked in leaf green. Leave a long tail for sewing.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "pc4-round-1",
          "label": "Round 1",
          "value": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "raw_text": "ch 5, sl st in 2nd ch from hook, sc in next ch, hdc in next ch, dc in next ch (3)",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": 3,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 13,
      "card_type": "part",
      "code": "assembly",
      "title": "Assembly — Bringing It Together",
      "raw_heading": "Assembly",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "asm-1",
          "label": "Step 1",
          "value": "Step 1: Pin the Body centered on the background square, tapered Rnd 6 edge facing up toward the top of the square, wider Rnd 4/5 bulge sitting in the lower-middle.",
          "raw_text": "Step 1: Pin the Body centered on the background square, tapered Rnd 6 edge facing up toward the top of the square, wider Rnd 4/5 bulge sitting in the lower-middle.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "asm-2",
          "label": "Step 2",
          "value": "Step 2: Whip stitch the Body's outer edge to the background square all the way around, keeping it flat (no stuffing).",
          "raw_text": "Step 2: Whip stitch the Body's outer edge to the background square all the way around, keeping it flat (no stuffing).",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "asm-3",
          "label": "Step 3",
          "value": "Step 3: Fan the leaves above the Body's top edge like a crown: pin the Center Leaf pointing straight up, then the Side Leaf Left and Side Leaf Right angled outward about 30 degrees on either side, tips just touching.",
          "raw_text": "Step 3: Fan the leaves above the Body's top edge like a crown: pin the Center Leaf pointing straight up, then the Side Leaf Left and Side Leaf Right angled outward about 30 degrees on either side, tips just touching.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "asm-4",
          "label": "Step 4",
          "value": "Step 4: Sew the chain-edge base of each leaf to the top of the Body and to the background square, overlapping the leaf bases slightly so no gap shows.",
          "raw_text": "Step 4: Sew the chain-edge base of each leaf to the top of the Body and to the background square, overlapping the leaf bases slightly so no gap shows.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "asm-5",
          "label": "Step 5",
          "value": "Step 5: Work the cream cross-hatch embroidery over the Body once all pieces are secured, then weave in all ends on the wrong side.",
          "raw_text": "Step 5: Work the cream cross-hatch embroidery over the Body once all pieces are secured, then weave in all ends on the wrong side.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "asm-6",
          "label": "Embroidery",
          "value": "With cream, work a set of diagonal straight stitches across the Body running from lower-left to upper-right, spaced evenly to suggest the pineapple's woven skin texture",
          "raw_text": "With cream, work a set of diagonal straight stitches across the Body running from lower-left to upper-right, spaced evenly to suggest the pineapple's woven skin texture",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "asm-7",
          "label": "Embroidery",
          "value": "With cream, work a second set of diagonal straight stitches crossing the first (lower-right to upper-left), forming a diamond cross-hatch over the golden yellow Body",
          "raw_text": "With cream, work a second set of diagonal straight stitches crossing the first (lower-right to upper-left), forming a diamond cross-hatch over the golden yellow Body",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "info",
          "code": "asm-8",
          "label": "Embroidery",
          "value": "Optionally add one tiny cream straight stitch inside a few of the diamonds as a highlight fleck",
          "raw_text": "Optionally add one tiny cream straight stitch inside a few of the diamonds as a highlight fleck",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 14,
      "card_type": "important_notes",
      "code": "important-notes",
      "title": "Important Notes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 Gauge: the finished square is about 7 x 7 inches in Worsted weight yarn with a 5.0 mm hook. Tight crocheters can go up half a hook size; loose ones down half.",
          "raw_text": "💡 Gauge: the finished square is about 7 x 7 inches in Worsted weight yarn with a 5.0 mm hook. Tight crocheters can go up half a hook size; loose ones down half.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "note-2",
          "label": "Note",
          "value": "💡 Color plan: the sample uses cream, leaf green, golden yellow in round order — change colors with a slip-stitch join in the first stitch of the new round.",
          "raw_text": "💡 Color plan: the sample uses cream, leaf green, golden yellow in round order — change colors with a slip-stitch join in the first stitch of the new round.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "note-3",
          "label": "Note",
          "value": "💡 Weave in your color-change tails as you go rather than saving them all for the end—it keeps the back of your square tidy and makes the final finishing pass much faster.",
          "raw_text": "💡 Weave in your color-change tails as you go rather than saving them all for the end—it keeps the back of your square tidy and makes the final finishing pass much faster.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "note-4",
          "label": "Note",
          "value": "💡 Block your finished square lightly with a spritz of water and a press under a towel; it squares up the corners and helps the pineapple appliqué sit flatter against the background.",
          "raw_text": "💡 Block your finished square lightly with a spritz of water and a press under a towel; it squares up the corners and helps the pineapple appliqué sit flatter against the background.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 15,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "What skill level do I need for the Sunny Pineapple Granny Square?",
          "value": "This is a beginner-friendly pattern built on classic granny square stitches—double crochet, chain spaces, and simple corners. If you've completed even one or two granny squares before, you'll pick up the rhythm quickly.",
          "raw_text": "This is a beginner-friendly pattern built on classic granny square stitches—double crochet, chain spaces, and simple corners. If you've completed even one or two granny squares before, you'll pick up the rhythm quickly.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What skill level do I need for the Sunny Pineapple Granny Square?",
          "answer": "This is a beginner-friendly pattern built on classic granny square stitches—double crochet, chain spaces, and simple corners. If you've completed even one or two granny squares before, you'll pick up the rhythm quickly.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Do I need to know how to sew an appliqué?",
          "value": "Not really—the pineapple pieces are simple crocheted shapes that you tack on with a few whip stitches once the background square is finished. No special sewing skills are required, just a yarn needle and a little patience.",
          "raw_text": "Not really—the pineapple pieces are simple crocheted shapes that you tack on with a few whip stitches once the background square is finished. No special sewing skills are required, just a yarn needle and a little patience.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to know how to sew an appliqué?",
          "answer": "Not really—the pineapple pieces are simple crocheted shapes that you tack on with a few whip stitches once the background square is finished. No special sewing skills are required, just a yarn needle and a little patience.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "How much yarn do I need for one square?",
          "value": "Since this pattern uses worsted weight yarn across three colors—cream, leaf green, and golden yellow—a small amount of each is enough for one square. Keep partial skeins on hand if you're planning to make several.",
          "raw_text": "Since this pattern uses worsted weight yarn across three colors—cream, leaf green, and golden yellow—a small amount of each is enough for one square. Keep partial skeins on hand if you're planning to make several.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How much yarn do I need for one square?",
          "answer": "Since this pattern uses worsted weight yarn across three colors—cream, leaf green, and golden yellow—a small amount of each is enough for one square. Keep partial skeins on hand if you're planning to make several.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Can I use a different hook size?",
          "value": "You can, though a 5.0 mm hook with worsted yarn gives you the gauge this pattern is designed around. Sizing up or down will change your finished measurements, so swatch a square first if you want a specific size.",
          "raw_text": "You can, though a 5.0 mm hook with worsted yarn gives you the gauge this pattern is designed around. Sizing up or down will change your finished measurements, so swatch a square first if you want a specific size.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I use a different hook size?",
          "answer": "You can, though a 5.0 mm hook with worsted yarn gives you the gauge this pattern is designed around. Sizing up or down will change your finished measurements, so swatch a square first if you want a specific size.",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "What can I make with this square?",
          "value": "At about 7 by 7 inches, it's a lovely size for joining into a baby blanket, a set of pillow covers, or a run of coordinating placemats. A handful scattered through a bigger cream-toned blanket also makes a sweet accent.",
          "raw_text": "At about 7 by 7 inches, it's a lovely size for joining into a baby blanket, a set of pillow covers, or a run of coordinating placemats. A handful scattered through a bigger cream-toned blanket also makes a sweet accent.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What can I make with this square?",
          "answer": "At about 7 by 7 inches, it's a lovely size for joining into a baby blanket, a set of pillow covers, or a run of coordinating placemats. A handful scattered through a bigger cream-toned blanket also makes a sweet accent.",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/sunny-pineapple-granny-square-a-cheerful-beginner-pattern-hero.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/sunny-pineapple-granny-square-a-cheerful-beginner-pattern-hero.webp",
      "alt": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern — finished granny square",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/sunny-pineapple-granny-square-a-cheerful-beginner-pattern-hero.webp",
      "alt": "Sunny Pineapple Granny Square — A Cheerful Beginner Pattern — finished granny square",
      "is_featured": true
    }
  ],
  "_squarelab": {
    "original_design": true,
    "square_id": "sunny-pineapple-granny-square--b90c3d02",
    "family": "classic",
    "path": "classic",
    "recipe": [
      "classic_center",
      "granny_grow",
      "granny_grow",
      "granny_grow",
      "granny_grow",
      "sc_border"
    ],
    "verdict": "ship",
    "all_counts_verified": true
  },
  "_sanitized_holiday_count": 0
}