{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "ocean-breeze-granny-square-free-pattern",
  "title": "Ocean Breeze Granny Square — Free Crochet Pattern",
  "meta_description": "Crochet the Ocean Breeze granny square, a free pattern with an airy hdc lattice and bobble texture in dreamy sea-glass colors. Beginner-friendly and quick!",
  "published_at": "2026-07-20",
  "updated_at": "2026-07-20",
  "author": "Ruby",
  "thumbnail_url": "data/images/ocean-breeze-granny-square-free-pattern-hero.webp",
  "meta": {
    "title": "Ocean Breeze Granny Square — Free Crochet Pattern",
    "pattern_name": "Ocean Breeze Granny Square — Free Crochet Pattern",
    "difficulty": "Easy",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "3.1K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Advanced Beginner",
      "yarn_weight": "Worsted",
      "tags": [
        "granny square",
        "ocean breeze",
        "free pattern",
        "hdc",
        "half double crochet",
        "two-color crochet",
        "crochet motif",
        "sea glass",
        "coastal decor",
        "beginner crochet",
        "crochet square",
        "granny square blanket"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Ocean Breeze Granny Square — Free Crochet Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Advanced Beginner",
          "value": "Comfortable working hdc into a starting loop, using standing stitches, and adding simple bobble texture",
          "raw_text": "Comfortable working hdc into a starting loop, using standing stitches, and adding simple bobble texture",
          "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": "Quick Make",
          "value": "Just 1-2 hours from the first ch7 loop to a finished 3.74-inch square",
          "raw_text": "Just 1-2 hours from the first ch7 loop to a finished 3.74-inch square",
          "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": "Coastal Vibes",
          "value": "An airy, sea-glass motif that's perfect for beachy blankets, coasters, and handmade gifts",
          "raw_text": "An airy, sea-glass motif that's perfect for beachy blankets, coasters, 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": "The Ocean Breeze granny square is a small, airy motif that turns two colors of yarn into something that genuinely looks like a piece of sea glass caught in the light. It starts life as a tidy little ring — a ch7 slip-stitched into a loop — then blooms outward into a soft square worked in half double crochet and a delicate hdc-and-chain lattice. It's perfect for anyone who loves coastal, watery palettes and wants a motif that feels special without demanding hours of concentration",
          "raw_text": "The Ocean Breeze granny square is a small, airy motif that turns two colors of yarn into something that genuinely looks like a piece of sea glass caught in the light. It starts life as a tidy little ring — a ch7 slip-stitched into a loop — then blooms outward into a soft square worked in half double crochet and a delicate hdc-and-chain lattice. It's perfect for anyone who loves coastal, watery palettes and wants a motif that feels special without demanding hours of concentration",
          "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 lean on a handful of friendly techniques here: forming a starting loop, packing hdc stitches into that loop, using a ch2 that counts as your first hdc, and building an open hdc+ch mesh that gives the square its breezy, wave-like feel. Later rounds add gentle bobble texture for that raised, glassy pop. If you can work half double crochet and count your stitches, you're ready. Most makers finish a single square in about one to two relaxed hours",
          "raw_text": "You'll lean on a handful of friendly techniques here: forming a starting loop, packing hdc stitches into that loop, using a ch2 that counts as your first hdc, and building an open hdc+ch mesh that gives the square its breezy, wave-like feel. Later rounds add gentle bobble texture for that raised, glassy pop. If you can work half double crochet and count your stitches, you're ready. Most makers finish a single square in about one to two relaxed hours",
          "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 Ocean Breeze square measures roughly 3.74 × 3.74 inches — a sweet, palm-sized motif with a soft drape and just enough openwork to feel light and beachy. In a crisp two-color combo it reads instantly as coastal: cool, calm, and a little bit nautical. Make one as a coaster, stitch a stack into a throw pillow, or join a whole ocean of them into a blanket. It's the kind of little square that makes a lovely, thoughtful handmade gift for anyone who loves the sea",
          "raw_text": "The finished Ocean Breeze square measures roughly 3.74 × 3.74 inches — a sweet, palm-sized motif with a soft drape and just enough openwork to feel light and beachy. In a crisp two-color combo it reads instantly as coastal: cool, calm, and a little bit nautical. Make one as a coaster, stitch a stack into a throw pillow, or join a whole ocean of them into a blanket. It's the kind of little square that makes a lovely, thoughtful handmade gift for anyone who loves the sea",
          "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 such a soft spot for this little square. There's something so satisfying about starting with that humble ch7 loop and then crowding all those half double crochets into the ring — it feels like watching a tiny sun rise out of nothing. My favorite part, honestly, is the moment the hdc+ch mesh rounds kick in and the whole thing suddenly turns airy and lacy, like light rippling across shallow water. That's where the 'ocean breeze' name really earns itself. I also love the ch2-as-standing-stitch trick at the start of each round; once it clicks, your joins look so clean and professional. And when the bobble texture shows up in the later rounds, it adds these little raised bumps that catch the light like foam on a wave. It's fast, it's forgiving, and it's endlessly repeatable — I can knock one out during a single episode of something cozy. Best of all, the two-color contrast means every square feels like a fresh little seascape depending on the shades you reach for. It's my go-to motif when I want quick, pretty, and just a touch fancy",
          "raw_text": "I have such a soft spot for this little square. There's something so satisfying about starting with that humble ch7 loop and then crowding all those half double crochets into the ring — it feels like watching a tiny sun rise out of nothing. My favorite part, honestly, is the moment the hdc+ch mesh rounds kick in and the whole thing suddenly turns airy and lacy, like light rippling across shallow water. That's where the 'ocean breeze' name really earns itself. I also love the ch2-as-standing-stitch trick at the start of each round; once it clicks, your joins look so clean and professional. And when the bobble texture shows up in the later rounds, it adds these little raised bumps that catch the light like foam on a wave. It's fast, it's forgiving, and it's endlessly repeatable — I can knock one out during a single episode of something cozy. Best of all, the two-color contrast means every square feels like a fresh little seascape depending on the shades you reach for. It's my go-to motif when I want quick, pretty, and just a touch fancy",
          "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 magic of this square is contrast, so let your color pairings do the heavy lifting. My all-time favorite is mint with white — it looks exactly like sea glass and lets the bobble texture glow. Navy paired with cream gives you an instant crisp, nautical vibe (think sailor stripes), while coral with beige reads like a warm sunset beach. Steer clear of same-family tones though; I tried teal with turquoise once and the bobbles completely vanished into the background, so keep at least one high-contrast color in the mix. Want it bigger? This motif grows beautifully — simply repeat the hdc+ch mesh logic for extra rounds beyond the ninth, adding one hdc+ch repeat per corner section as you go, and it scales into a chunky 6-inch square in no time. For a denser, cozier version, drop the chain spaces in a round or two and work solid hdc for a firmer coaster or potholder. Yarn-wise, a smooth cotton like Lily Sugar'n Cream or Paintbox Cotton DK shows off the stitch definition and makes it machine-washable for coasters and dishcloths, while a soft acrylic or wool blend like Stylecraft Special DK gives a squishier, blanket-friendly square. Feeling seasonal? Icy blue with silvery grey turns it into a frosty winter snowflake, seafoam with sandy tan nails summer, and a moody indigo-with-white version looks gorgeous stitched into a coastal throw pillow. Join a grid of them for a full 'ocean' afghan",
          "raw_text": "The magic of this square is contrast, so let your color pairings do the heavy lifting. My all-time favorite is mint with white — it looks exactly like sea glass and lets the bobble texture glow. Navy paired with cream gives you an instant crisp, nautical vibe (think sailor stripes), while coral with beige reads like a warm sunset beach. Steer clear of same-family tones though; I tried teal with turquoise once and the bobbles completely vanished into the background, so keep at least one high-contrast color in the mix. Want it bigger? This motif grows beautifully — simply repeat the hdc+ch mesh logic for extra rounds beyond the ninth, adding one hdc+ch repeat per corner section as you go, and it scales into a chunky 6-inch square in no time. For a denser, cozier version, drop the chain spaces in a round or two and work solid hdc for a firmer coaster or potholder. Yarn-wise, a smooth cotton like Lily Sugar'n Cream or Paintbox Cotton DK shows off the stitch definition and makes it machine-washable for coasters and dishcloths, while a soft acrylic or wool blend like Stylecraft Special DK gives a squishier, blanket-friendly square. Feeling seasonal? Icy blue with silvery grey turns it into a frosty winter snowflake, seafoam with sandy tan nails summer, and a moody indigo-with-white version looks gorgeous stitched into a coastal throw pillow. Join a grid of them for a full 'ocean' afghan",
          "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": "Forgetting that the ch2 at the start of",
          "value": "Whenever you begin a round with ch2, treat it as stitch number one and do NOT work another hdc into that same base stitch. If you add an extra, you'll end up with one too many stitches per round and the square will start to ruffle and wave instead of lying flat",
          "raw_text": "Whenever you begin a round with ch2, treat it as stitch number one and do NOT work another hdc into that same base stitch. If you add an extra, you'll end up with one too many stitches per round and the square will start to ruffle and wave instead of lying flat",
          "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": "Accidentally working your final stitch",
          "value": "the end of the round you slip stitch INTO the top of that first ch2 to close the round — you don't crochet a new stitch there. Place a marker in the top of the starting ch2 so you can always find the correct join point and avoid an off-count round",
          "raw_text": "the end of the round you slip stitch INTO the top of that first ch2 to close the round — you don't crochet a new stitch there. Place a marker in the top of the starting ch2 so you can always find the correct join point and avoid an off-count 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": "mistake",
          "code": "mistake-3",
          "label": "Skipping the chain in the hdc+ch mesh",
          "value": "The 'hdc + ch' repeat is what gives Ocean Breeze its airy, breezy look. Make sure you actually chain between each hdc and skip the correct stitch underneath. If your square looks solid and stiff, you've been leaving out the chains — rip back and keep the little spaces intact",
          "raw_text": "The 'hdc + ch' repeat is what gives Ocean Breeze its airy, breezy look. Make sure you actually chain between each hdc and skip the correct stitch underneath. If your square looks solid and stiff, you've been leaving out the chains — rip back and keep the little spaces intact",
          "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": "Choosing two colors that are too",
          "value": "As the source note warns, tone-on-tone combos like teal with turquoise make the raised stitches vanish. Pair a light color with a distinctly darker or brighter one — mint/white, navy/cream, coral/beige — so the texture and openwork actually pop",
          "raw_text": "As the source note warns, tone-on-tone combos like teal with turquoise make the raised stitches vanish. Pair a light color with a distinctly darker or brighter one — mint/white, navy/cream, coral/beige — so the texture and openwork actually pop",
          "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": "Cramming the first-round hdc stitches",
          "value": "That first hdc round packs 18 hdc into the ch7 ring (the ch2 counts as the first, plus 17 more), and it's easy to lose track. Count out loud or drop a marker every few stitches, and gently snug the starting loop closed once the round is done so there's no gaping hole in the center",
          "raw_text": "That first hdc round packs 18 hdc into the ch7 ring (the ch2 counts as the first, plus 17 more), and it's easy to lose track. Count out loud or drop a marker every few stitches, and gently snug the starting loop closed once the round is done so there's no gaping hole in the center",
          "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": "Pulling the slip-stitch join too tight",
          "value": "A death-grip join puckers the edge and makes the next round harder to work into. Keep your joining slip stitch relaxed and matched to your general tension so the square stays flat and even all the way to round nine",
          "raw_text": "A death-grip join puckers the edge and makes the next round harder to work into. Keep your joining slip stitch relaxed and matched to your general tension so the square stays flat and even all the way to round nine",
          "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- 2 color",
              "raw_text": "Yarn of your choice- 2 color"
            },
            {
              "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-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-hdc",
          "label": "hdc",
          "value": "half double crochet",
          "raw_text": "hdc = half double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "hdc",
          "meaning": "half double crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-sc",
          "label": "sc",
          "value": "single crochet",
          "raw_text": "sc = single crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc",
          "meaning": "single crochet"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-bo",
          "label": "bo",
          "value": "bobble stitch",
          "raw_text": "bo = bobble stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "bo",
          "meaning": "bobble stitch"
        },
        {
          "order": 6,
          "row_type": "abbrev",
          "code": "abbrev-sl-st",
          "label": "Sl St",
          "value": "slip stitch for joining to different round",
          "raw_text": "Sl St = slip stitch for joining to different round",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "Sl St",
          "meaning": "slip stitch for joining to different round"
        },
        {
          "order": 7,
          "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": 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-inc",
          "label": "inc",
          "value": "increase",
          "raw_text": "inc = increase",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "inc",
          "meaning": "increase"
        },
        {
          "order": 10,
          "row_type": "abbrev",
          "code": "abbrev-sk",
          "label": "sk",
          "value": "skip",
          "raw_text": "sk = skip",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sk",
          "meaning": "skip"
        },
        {
          "order": 11,
          "row_type": "abbrev",
          "code": "abbrev-tl",
          "label": "tl",
          "value": "third loop",
          "raw_text": "tl = third loop",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "tl",
          "meaning": "third loop"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "knot, ch7, sl st to the first ch to form a loop.",
          "raw_text": "Round 1 knot, ch7, sl st to the first ch to form a loop.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "main-pattern-round-1-steps",
          "label": "Step by step",
          "value": "Start with a knot, ch7. sl st to the first ch to form a loop.",
          "raw_text": "Start with a knot, ch7. sl st to the first ch to form a loop.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Round 2",
          "value": "ch2(count as hdc), 17hdc in the loop, sl st to the top of first ch2.",
          "raw_text": "Round 2 ch2(count as hdc), 17hdc in the loop, sl st to the top of first ch2.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "instruction",
          "code": "main-pattern-round-2-steps",
          "label": "Steps",
          "value": "ch2 as a standing st (count as hdc). hdc in the loop. Another 16hdc in the loop, sl st to the top of the first ch2. Round 2 finished.",
          "raw_text": "ch2 as a standing st (count as hdc). hdc in the loop. Another 16hdc in the loop, sl st to the top of the first ch2. Round 2 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-3",
          "label": "Round 3",
          "value": "ch2(count as hdc)+ch, *hdc+ch in next st*rep 17 times, sl st to the top of the first ch2.",
          "raw_text": "Round 3 ch2(count as hdc)+ch, *hdc+ch in next st*rep 17 times, sl st to the top of the first ch2.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "instruction",
          "code": "main-pattern-round-3-steps",
          "label": "Steps",
          "value": "ch2 as a standing st (count as hdc), ch. hdc+ch in next st. *hdc+ch in next st*rep 16 times, sl st to the top of the first ch2. Round 3 finished.",
          "raw_text": "ch2 as a standing st (count as hdc), ch. hdc+ch in next st. *hdc+ch in next st*rep 16 times, sl st to the top of the first ch2. Round 3 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "round",
          "code": "main-pattern-round-4",
          "label": "Round 4",
          "value": "For this round: starting ch works in st, all other sts work in ch-sps only. ch, *2sc in the next ch-sp* rep 4 times, sc+ch2+sc in next ch-sp, *2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp, [*2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp]rep 2 times, sl st to the top of the first sc.",
          "raw_text": "Round 4 For this round: starting ch works in st, all other sts work in ch-sps only. ch, *2sc in the next ch-sp* rep 4 times, sc+ch2+sc in next ch-sp, *2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp, [*2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp]rep 2 times, sl st to the top of the first sc.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "instruction",
          "code": "main-pattern-round-4-steps",
          "label": "Steps",
          "value": "For this round: work all sts in ch-sp. ch as a standing st. *2sc in the next ch-sp* rep 4 times, sc+ch2+sc in next ch-sp, *2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp. [*2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp]rep 2 times, sl st to the top of the first sc.",
          "raw_text": "For this round: work all sts in ch-sp. ch as a standing st. *2sc in the next ch-sp* rep 4 times, sc+ch2+sc in next ch-sp, *2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp. [*2sc in the next ch-sp*rep 3 times, 2sc+ch2 in the next ch-sp]rep 2 times, sl st to the top of the first sc.",
          "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-5",
          "label": "Round 5",
          "value": "ch, sc in this st, 3sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch, *4sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch*rep 3 times, sl st to the top of the first sc, fasten off.",
          "raw_text": "Round 5 ch, sc in this st, 3sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch, *4sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch*rep 3 times, sl st to the top of the first sc, fasten off.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "instruction",
          "code": "main-pattern-round-5-steps",
          "label": "Steps",
          "value": "ch as a standing st, sc in this st, 3sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch. *4sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch*rep 3 times, sl st to the top of the first sc, fasten off. Round 5 finished.",
          "raw_text": "ch as a standing st, sc in this st, 3sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch. *4sc, sc inc, 4sc, ch, 2-dc-bo+ch2+2-dc-bo in next ch-sp, ch*rep 3 times, sl st to the top of the first sc, fasten off. Round 5 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "round",
          "code": "main-pattern-round-6",
          "label": "Round 6",
          "value": "Third loop only for this round.  On any side, attach new yarn to 2nd st from right, ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3. *sl st to the 2nd sc on the next side, only crochet on the central 8sc. ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3*rep 3 times, sl st to the 2nd sc on the next side, fasten off.",
          "raw_text": "Round 6 Third loop only for this round.  On any side, attach new yarn to 2nd st from right, ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3. *sl st to the 2nd sc on the next side, only crochet on the central 8sc. ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3*rep 3 times, sl st to the 2nd sc on the next side, fasten off.",
          "round_start": 6,
          "round_end": 6,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "info",
          "code": "main-pattern-info-1",
          "label": "Step by step",
          "value": "Third loop (tl) only for this round. On any side, attach new yarn to 2nd st from right. ch2 as a standing st. hdc, 4sc, hdc, ch2, sl st to the next sc, ch3. *sl st to the 2nd sc on the next side, only crochet on the central 8sc. ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3*rep 3 times, sl st to the 2nd sc on the next side, fasten off. Round 6 finished.",
          "raw_text": "Third loop (tl) only for this round. On any side, attach new yarn to 2nd st from right. ch2 as a standing st. hdc, 4sc, hdc, ch2, sl st to the next sc, ch3. *sl st to the 2nd sc on the next side, only crochet on the central 8sc. ch2, hdc, 4sc, hdc, ch2, sl st to the next sc, ch3*rep 3 times, sl st to the 2nd sc on the next side, fasten off. Round 6 finished.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "round",
          "code": "main-pattern-round-7",
          "label": "Round 7",
          "value": "Add new yarn in any corner space, ch2(count as an in complete dc), make another 2 incomplete dc to form a 3-dc-bo, ch2+3-dc-bo in the same corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2, *(3-dc-bo+ch2+3-dc-bo) in the next corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2*rep 3 times, sl st to the top of the first 3-dc-bo.",
          "raw_text": "Round 7 Add new yarn in any corner space, ch2(count as an in complete dc), make another 2 incomplete dc to form a 3-dc-bo, ch2+3-dc-bo in the same corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2, *(3-dc-bo+ch2+3-dc-bo) in the next corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2*rep 3 times, sl st to the top of the first 3-dc-bo.",
          "round_start": 7,
          "round_end": 7,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "instruction",
          "code": "main-pattern-info-2",
          "label": "Steps",
          "value": "Add new yarn in any corner space, ch2 as a standing st (count as an incomplete dc). make another 2 incomplete dc to form a 3-dc-bo, ch2+3-dc-bo in the same corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2. *(3-dc-bo+ch2+3-dc-bo) in the next corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2*rep 3 times, sl st to the top of the first 3-dc-bo.",
          "raw_text": "Add new yarn in any corner space, ch2 as a standing st (count as an incomplete dc). make another 2 incomplete dc to form a 3-dc-bo, ch2+3-dc-bo in the same corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2. *(3-dc-bo+ch2+3-dc-bo) in the next corner sp, ch2, 2sc, ch4, sk4, 2sc, ch2*rep 3 times, sl st to the top of the first 3-dc-bo.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "round",
          "code": "main-pattern-round-8",
          "label": "Round 8",
          "value": "sl st to the next ch-sp, ch2 as a standing st(count as hdc), hdc+ch2+2hdc in this ch-sp, 14hdc, *2hdc+ch2+2hdc in next ch-sp, 14hdc*rep 3 times, sl st to the top of the first ch2, fasten off.",
          "raw_text": "Round 8 sl st to the next ch-sp, ch2 as a standing st(count as hdc), hdc+ch2+2hdc in this ch-sp, 14hdc, *2hdc+ch2+2hdc in next ch-sp, 14hdc*rep 3 times, sl st to the top of the first ch2, fasten off.",
          "round_start": 8,
          "round_end": 8,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "instruction",
          "code": "main-pattern-round-8-steps",
          "label": "Steps",
          "value": "sl st to the next ch-sp. ch2 as a standing st (count as hdc), hdc+ch2+2hdc in this ch-sp, 14hdc. *2hdc+ch2+2hdc in next ch-sp, 14hdc*rep 3 times, sl st to the top of the first ch2, fasten off.",
          "raw_text": "sl st to the next ch-sp. ch2 as a standing st (count as hdc), hdc+ch2+2hdc in this ch-sp, 14hdc. *2hdc+ch2+2hdc in next ch-sp, 14hdc*rep 3 times, sl st to the top of the first ch2, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 17,
          "row_type": "round",
          "code": "main-pattern-round-9",
          "label": "Round 9",
          "value": "add new yarn in any corner sp, ch, 3sc in this corner sp, 18sc, *3sc in next corner sp, 18sc*rep 3 times, sl st to the top of the first sc, fasten off.",
          "raw_text": "Round 9 add new yarn in any corner sp, ch, 3sc in this corner sp, 18sc, *3sc in next corner sp, 18sc*rep 3 times, sl st to the top of the first sc, fasten off.",
          "round_start": 9,
          "round_end": 9,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 18,
          "row_type": "instruction",
          "code": "main-pattern-round-9-steps",
          "label": "Steps",
          "value": "add new yarn in any corner sp, ch as a standing st. 3sc in this corner sp, 18sc. *3sc in next corner sp, 18sc*rep 3 times, sl st to the top of the first sc, fasten off.",
          "raw_text": "add new yarn in any corner sp, ch as a standing st. 3sc in this corner sp, 18sc. *3sc in next corner sp, 18sc*rep 3 times, sl st to the top of the first sc, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 9,
      "card_type": "important_notes",
      "code": "important-notes",
      "title": "Important Notes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 The completed Ocean Breeze granny square measures approximately 3.74 × 3.74 inches. Gauge is flexible, but if you want to hit that finished size, a standard 4mm (G/6) hook with worsted or DK yarn is a great starting point. Go up a hook size for a lacier, looser square or down for a tighter, firmer one",
          "raw_text": "💡 The completed Ocean Breeze granny square measures approximately 3.74 × 3.74 inches. Gauge is flexible, but if you want to hit that finished size, a standard 4mm (G/6) hook with worsted or DK yarn is a great starting point. Go up a hook size for a lacier, looser square or down for a tighter, firmer 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": "info",
          "code": "note-2",
          "label": "Note",
          "value": "💡 The pattern uses a ch2 as a 'standing stitch' that counts as your first hdc at the start of each round. If standing stitches feel fiddly, a regular ch2 turning chain works fine — just remember it still counts as that first hdc",
          "raw_text": "💡 The pattern uses a ch2 as a 'standing stitch' that counts as your first hdc at the start of each round. If standing stitches feel fiddly, a regular ch2 turning chain works fine — just remember it still counts as that first hdc",
          "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": "💡 Because this is a two-color square, plan your color changes at the join. Change colors on the final slip stitch of a round for the cleanest transition, and carry or cut yarn depending on how many rounds each color spans",
          "raw_text": "💡 Because this is a two-color square, plan your color changes at the join. Change colors on the final slip stitch of a round for the cleanest transition, and carry or cut yarn depending on how many rounds each color spans",
          "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": "💡 Drop a stitch marker into the top of the starting ch2 on every round. It's the single easiest way to always find your join and keep your stitch counts honest across all nine rounds",
          "raw_text": "💡 Drop a stitch marker into the top of the starting ch2 on every round. It's the single easiest way to always find your join and keep your stitch counts honest across all nine rounds",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "note-5",
          "label": "Note",
          "value": "💡 Weave in your ends as you go rather than saving them all for the end — with two colors and nine rounds, the tails add up fast, and burying them early keeps the open lattice looking neat",
          "raw_text": "💡 Weave in your ends as you go rather than saving them all for the end — with two colors and nine rounds, the tails add up fast, and burying them early keeps the open lattice looking neat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "note-6",
          "label": "Note",
          "value": "💡 Give the finished square a gentle steam or wet block. Blocking relaxes the hdc+ch mesh, opens up the airy texture, and squares up the corners so your motifs line up perfectly when you join several together",
          "raw_text": "💡 Give the finished square a gentle steam or wet block. Blocking relaxes the hdc+ch mesh, opens up the airy texture, and squares up the corners so your motifs line up perfectly when you join several together",
          "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": "How big does the Ocean Breeze granny square turn out?",
          "value": "As written it finishes at approximately 3.74 × 3.74 inches — a sweet, palm-sized motif. You can easily size it up by using a larger hook and heavier yarn, or size it down with a smaller hook and finer thread",
          "raw_text": "As written it finishes at approximately 3.74 × 3.74 inches — a sweet, palm-sized motif. You can easily size it up by using a larger hook and heavier yarn, or size it down with a smaller hook and finer thread",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How big does the Ocean Breeze granny square turn out?",
          "answer": "As written it finishes at approximately 3.74 × 3.74 inches — a sweet, palm-sized motif. You can easily size it up by using a larger hook and heavier yarn, or size it down with a smaller hook and finer thread",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Does the ch2 at the beginning of each",
          "value": "Yes! The ch2 is meant to count as your first hdc for the round. So when you finish, you slip stitch into the top of that ch2 to join, rather than working an additional stitch there",
          "raw_text": "Yes! The ch2 is meant to count as your first hdc for the round. So when you finish, you slip stitch into the top of that ch2 to join, rather than working an additional stitch there",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Does the ch2 at the beginning of each round count as a stitch?",
          "answer": "Yes! The ch2 is meant to count as your first hdc for the round. So when you finish, you slip stitch into the top of that ch2 to join, rather than working an additional stitch there",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "Can I join these squares into a blanket?",
          "value": "Absolutely — that's one of the best uses for this motif. Make a batch of squares and join them with slip stitches, whip stitch, or a join-as-you-go method. Blocking each square first makes the corners line up cleanly",
          "raw_text": "Absolutely — that's one of the best uses for this motif. Make a batch of squares and join them with slip stitches, whip stitch, or a join-as-you-go method. Blocking each square first makes the corners line up cleanly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I join these squares into a blanket?",
          "answer": "Absolutely — that's one of the best uses for this motif. Make a batch of squares and join them with slip stitches, whip stitch, or a join-as-you-go method. Blocking each square first makes the corners line up cleanly",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "What yarn weight works best for this pattern?",
          "value": "The pattern is written for 'yarn of your choice,' but a smooth worsted or DK weight in two contrasting colors shows off the hdc lattice and bobble texture beautifully. Cotton is great for coasters, while a soft acrylic or wool blend is cozier for blankets",
          "raw_text": "The pattern is written for 'yarn of your choice,' but a smooth worsted or DK weight in two contrasting colors shows off the hdc lattice and bobble texture beautifully. Cotton is great for coasters, while a soft acrylic or wool blend is cozier for blankets",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What yarn weight works best for this pattern?",
          "answer": "The pattern is written for 'yarn of your choice,' but a smooth worsted or DK weight in two contrasting colors shows off the hdc lattice and bobble texture beautifully. Cotton is great for coasters, while a soft acrylic or wool blend is cozier for blankets",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "Why is the raised texture barely showing up on my square?",
          "value": "It's almost always a color-contrast issue. When the two shades are too close in tone — like teal with turquoise — the bobbles and openwork blend together and seem to vanish. Pair a light color with a clearly darker or brighter one and the texture will pop right out",
          "raw_text": "It's almost always a color-contrast issue. When the two shades are too close in tone — like teal with turquoise — the bobbles and openwork blend together and seem to vanish. Pair a light color with a clearly darker or brighter one and the texture will pop right out",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why is the raised texture barely showing up on my square?",
          "answer": "It's almost always a color-contrast issue. When the two shades are too close in tone — like teal with turquoise — the bobbles and openwork blend together and seem to vanish. Pair a light color with a clearly darker or brighter one and the texture will pop right out",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/ocean-breeze-granny-square-free-pattern-hero.webp",
    "data/images/ocean-breeze-granny-square-free-pattern-step-2.webp",
    "data/images/ocean-breeze-granny-square-free-pattern-step-3.webp",
    "data/images/ocean-breeze-granny-square-free-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/ocean-breeze-granny-square-free-pattern-hero.webp",
      "alt": "Ocean Breeze Granny Square — Free Crochet Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/ocean-breeze-granny-square-free-pattern-hero.webp",
      "alt": "Ocean Breeze Granny Square — Free Crochet Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/ocean-breeze-granny-square-free-pattern-step-2.webp",
      "alt": "Ocean Breeze Granny Square — Free Crochet Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/ocean-breeze-granny-square-free-pattern-step-3.webp",
      "alt": "Ocean Breeze Granny Square — Free Crochet Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/ocean-breeze-granny-square-free-pattern-step-4.webp",
      "alt": "Ocean Breeze Granny Square — Free Crochet Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 0
}