{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "spiral-granny-square-crochet-pattern",
  "title": "Two-Color Spiral Granny Square – Free Crochet Pattern",
  "meta_description": "Crochet a mesmerizing two-color spiral granny square with this free pattern — parked-loop color changes, dc increases, and a perfect 5-inch finish",
  "published_at": "2026-08-09",
  "updated_at": "2026-08-09",
  "author": "Nora",
  "thumbnail_url": "data/images/spiral-granny-square-crochet-pattern-hero.webp",
  "meta": {
    "title": "Two-Color Spiral Granny Square – Free Crochet Pattern",
    "pattern_name": "Two-Color Spiral Granny Square – Free Crochet Pattern",
    "difficulty": "Intermediate",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "980",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Intermediate",
      "yarn_weight": "Worsted",
      "tags": [
        "granny square",
        "spiral crochet",
        "two-color crochet",
        "free crochet pattern",
        "spiral granny square",
        "magic ring",
        "blanket square",
        "crochet motif",
        "stash buster",
        "modern crochet",
        "pinwheel square"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Two-Color Spiral Granny Square – Free Crochet Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Intermediate Level",
          "value": "Comfortable with magic rings, dc increases, and juggling two live loops",
          "raw_text": "Comfortable with magic rings, dc increases, and juggling two live loops",
          "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 Win Project",
          "value": "1-2 hours per square — a whole stack in a single weekend",
          "raw_text": "1-2 hours per square — a whole stack in a single weekend",
          "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": "Hypnotic Two-Color Spin",
          "value": "A pinwheel spiral that squares off into a modern blanket block",
          "raw_text": "A pinwheel spiral that squares off into a modern blanket block",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 2,
      "card_type": "about",
      "code": "about",
      "title": "About",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "about-info-1",
          "label": "",
          "value": "This spiral granny square starts life as a mesmerizing two-color circle — orange and white in the original — that whirls out from a single magic ring before settling into a crisp granny block. The pinwheel effect looks far more complicated than it actually is, which makes it perfect for crocheters who are a little bored of the classic three-dc-cluster square and want something with genuine visual movement for blankets, bags, cushion fronts, and table mats",
          "raw_text": "This spiral granny square starts life as a mesmerizing two-color circle — orange and white in the original — that whirls out from a single magic ring before settling into a crisp granny block. The pinwheel effect looks far more complicated than it actually is, which makes it perfect for crocheters who are a little bored of the classic three-dc-cluster square and want something with genuine visual movement for blankets, bags, cushion fronts, and table mats",
          "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 begin with a magic ring and a clever height gradient — chain 1, single crochet, half double, then three doubles — worked once in each color, parking the resting loop on a stitch marker while the other color takes its turn. From there it's simply five double-crochet increases per pass, alternating strands, across 8 rounds total. If you can make a magic ring and a dc increase, you can absolutely handle this, and each square takes about one to two relaxed hours",
          "raw_text": "You'll begin with a magic ring and a clever height gradient — chain 1, single crochet, half double, then three doubles — worked once in each color, parking the resting loop on a stitch marker while the other color takes its turn. From there it's simply five double-crochet increases per pass, alternating strands, across 8 rounds total. If you can make a magic ring and a dc increase, you can absolutely handle this, and each square takes 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 square measures roughly 4.92 inches (about 12.5 cm) per side, with a dense, even fabric and a center that genuinely looks like it is spinning. One square makes a lovely oversized coaster or mug rug, four become a pillow front, and a whole stack whip-stitched together turns into a show-stopping throw. Because the spiral reads as modern rather than traditional, these blocks also make wonderful handmade gifts for friends who insist granny squares 'aren't their style.'",
          "raw_text": "The finished square measures roughly 4.92 inches (about 12.5 cm) per side, with a dense, even fabric and a center that genuinely looks like it is spinning. One square makes a lovely oversized coaster or mug rug, four become a pillow front, and a whole stack whip-stitched together turns into a show-stopping throw. Because the spiral reads as modern rather than traditional, these blocks also make wonderful handmade gifts for friends who insist granny squares 'aren't their style.'",
          "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'll be honest: the first time I parked a loop on a stitch marker, joined my second color into the same magic ring, and watched two little sc-hdc-3dc ramps curl around each other, I actually said 'ohhh' out loud. That height gradient is the secret handshake of this pattern — it's why the spiral flows smoothly instead of starting with a clunky step. After that, the rhythm is pure comfort crochet: five dc increases in white, swap the marker, five dc increases in orange, swap again. There are no slip-stitch joins and no chain-up seams cutting through the design — just one continuous, hypnotic swirl. I love that the two strands keep you gently engaged; it feels like a dance where you get to be both partners. And the final rounds are the best part — watching a spinning circle settle into a tidy 4.92-inch block feels like a little magic trick every single time. At only 8 rounds, it's the kind of quick win you can finish in one cozy evening",
          "raw_text": "I'll be honest: the first time I parked a loop on a stitch marker, joined my second color into the same magic ring, and watched two little sc-hdc-3dc ramps curl around each other, I actually said 'ohhh' out loud. That height gradient is the secret handshake of this pattern — it's why the spiral flows smoothly instead of starting with a clunky step. After that, the rhythm is pure comfort crochet: five dc increases in white, swap the marker, five dc increases in orange, swap again. There are no slip-stitch joins and no chain-up seams cutting through the design — just one continuous, hypnotic swirl. I love that the two strands keep you gently engaged; it feels like a dance where you get to be both partners. And the final rounds are the best part — watching a spinning circle settle into a tidy 4.92-inch block feels like a little magic trick every single time. At only 8 rounds, it's the kind of quick win you can finish in one cozy evening",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 4,
      "card_type": "switch_things_up",
      "code": "switch-things-up",
      "title": "Switch Things Up",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "switch-1",
          "label": "",
          "value": "Color is where this square really plays. The original orange-and-white combo reads like a citrus swirl, but try navy and mustard for a retro vibe, blush pink and cream for a nursery-soft block, or teal and silver gray for something calm and modern — just keep strong contrast between the two shades, or the spiral visually melts away. For yarn, a smooth cotton like Scheepjes Catona or 24/7 Cotton gives razor-sharp stitch definition, while Stylecraft Special DK or Caron Simply Soft makes a drapier blanket block. Sizing is flexible too: DK yarn on a 3.5 mm hook shrinks the square to roughly 4 inches, worsted with a 5 mm hook lands near the pattern's 4.92 inches, and holding your yarn doubled with a 6.5 mm hook pushes it toward 6-7 inches — perfect for a fast pillow front from just four squares. Want a bigger circle before it squares off? Keep spiraling extra passes, adding one more dc increase segment per revolution so the circle stays flat. The designer also suggests a lovely 'florid twist' variation: skip the two live loops entirely and simply change colors every few rounds for a soft, bloom-like ripple instead of a strict spiral. For seasonal sets, spin up rust and cream squares in autumn, ice blue and snow white in winter, and mint and lavender in spring, then join nine blocks into a sampler that deserves a spot on the wall",
          "raw_text": "Color is where this square really plays. The original orange-and-white combo reads like a citrus swirl, but try navy and mustard for a retro vibe, blush pink and cream for a nursery-soft block, or teal and silver gray for something calm and modern — just keep strong contrast between the two shades, or the spiral visually melts away. For yarn, a smooth cotton like Scheepjes Catona or 24/7 Cotton gives razor-sharp stitch definition, while Stylecraft Special DK or Caron Simply Soft makes a drapier blanket block. Sizing is flexible too: DK yarn on a 3.5 mm hook shrinks the square to roughly 4 inches, worsted with a 5 mm hook lands near the pattern's 4.92 inches, and holding your yarn doubled with a 6.5 mm hook pushes it toward 6-7 inches — perfect for a fast pillow front from just four squares. Want a bigger circle before it squares off? Keep spiraling extra passes, adding one more dc increase segment per revolution so the circle stays flat. The designer also suggests a lovely 'florid twist' variation: skip the two live loops entirely and simply change colors every few rounds for a soft, bloom-like ripple instead of a strict spiral. For seasonal sets, spin up rust and cream squares in autumn, ice blue and snow white in winter, and mint and lavender in spring, then join nine blocks into a sampler that deserves a spot on the wall",
          "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": "Starting both colors with all double",
          "value": "That little ramp — chain 1, single crochet, half double, then three doubles — is what lets each color climb smoothly out of the magic ring. Skip it and you get an abrupt stair-step where the spiral begins. Work the gradient exactly as written for both strands and the two arms will flow into their dc passes without any visible bump",
          "raw_text": "That little ramp — chain 1, single crochet, half double, then three doubles — is what lets each color climb smoothly out of the magic ring. Skip it and you get an abrupt stair-step where the spiral begins. Work the gradient exactly as written for both strands and the two arms will flow into their dc passes without any visible bump",
          "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": "Letting the parked loop slip off the",
          "value": "The resting loop is a live stitch — if it escapes, that whole arm can unravel. Use locking stitch markers rather than open rings, pull the loop up generously before clipping it, and double-check the marker is fully closed before you turn your attention to the other strand",
          "raw_text": "The resting loop is a live stitch — if it escapes, that whole arm can unravel. Use locking stitch markers rather than open rings, pull the loop up generously before clipping it, and double-check the marker is fully closed before you turn your attention to the other strand",
          "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": "Tightening the magic ring before the",
          "value": "The pattern has you work the white ramp, park it, join orange into the same ring, work its ramp, and only then snug the ring closed. Close it early and there's no room for the second strand; forget it entirely and you're left with a hole in the center. Tighten firmly once both starts are in, then secure the tail so it can't creep loose",
          "raw_text": "The pattern has you work the white ramp, park it, join orange into the same ring, work its ramp, and only then snug the ring closed. Close it early and there's no room for the second strand; forget it entirely and you're left with a hole in the center. Tighten firmly once both starts are in, then secure the tail so it can't creep loose",
          "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": "Losing count of the five dc increases in each pass",
          "value": "Each pass is (dc inc) x5 — two doubles in each of the next five stitches. Miss an increase and the circle starts to cup; add extras and it ruffles. Count out loud, or slip a scrap of contrast yarn after each increase pair until the rhythm becomes automatic",
          "raw_text": "Each pass is (dc inc) x5 — two doubles in each of the next five stitches. Miss an increase and the circle starts to cup; add extras and it ruffles. Count out loud, or slip a scrap of contrast yarn after each increase pair until the rhythm becomes automatic",
          "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": "Working into your own color's stitches",
          "value": "In a two-strand spiral you're almost always crocheting into the other color's stitches from the revolution below — that's what creates the swirl. Always work into the very next unworked stitches in line, whatever their color. If you suddenly see two orange ridges stacked directly on top of each other, you've jumped the track: rip back to your marker and rejoin",
          "raw_text": "In a two-strand spiral you're almost always crocheting into the other color's stitches from the revolution below — that's what creates the swirl. Always work into the very next unworked stitches in line, whatever their color. If you suddenly see two orange ridges stacked directly on top of each other, you've jumped the track: rip back to your marker and rejoin",
          "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": "Uneven tension between the two strands",
          "value": "If your orange stitches are looser than your white ones, one arm of the spiral will bulge and the square won't sit flat. Make sure both balls feed with the same ease, give the parked loop a gentle snug each time you retrieve it, and check the fabric every couple of passes while it's still easy to fix",
          "raw_text": "If your orange stitches are looser than your white ones, one arm of the spiral will bulge and the square won't sit flat. Make sure both balls feed with the same ease, give the parked loop a gentle snug each time you retrieve it, and check the fabric every couple of passes while it's still easy to fix",
          "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"
            },
            {
              "order": 5,
              "row_type": "item",
              "code": "mat-1-5",
              "label": "",
              "value": "stitch markers",
              "raw_text": "stitch markers"
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain stitch",
          "raw_text": "ch = chain stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain stitch"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-ch-sp",
          "label": "ch-sp",
          "value": "chain space",
          "raw_text": "ch-sp = chain space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch-sp",
          "meaning": "chain space"
        },
        {
          "order": 3,
          "row_type": "abbrev",
          "code": "abbrev-dc",
          "label": "dc",
          "value": "double crochet",
          "raw_text": "dc = double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc",
          "meaning": "double crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-rep",
          "label": "rep",
          "value": "repeat",
          "raw_text": "rep = repeat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rep",
          "meaning": "repeat"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-slst",
          "label": "slst",
          "value": "slip stitch for joining for different round.",
          "raw_text": "slst = slip stitch for joining for different round.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "slst",
          "meaning": "slip stitch for joining for different round."
        },
        {
          "order": 6,
          "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": 7,
          "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": 8,
          "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": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "Magic ring, ch, sc, hdc, 3dc. Insert a stitch marker into the loop on your hook and join orange yarn into the ring, ch, sc, hdc, 3dc, tighten the ring to close.",
          "raw_text": "Round 1 Magic ring, ch, sc, hdc, 3dc. Insert a stitch marker into the loop on your hook and join orange yarn into the ring, ch, sc, hdc, 3dc, tighten the ring to close.",
          "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-info-4",
          "label": "Step by step",
          "value": "Start with a magic ring. Ch1 as standing st. Make sc, hdc, 3dc. Insert a stitch marker into the loop on your hook and join orange yarn into the ring. Ch1 as a standing st. Make sc, hdc, 3dc. Tighten the ring to close.",
          "raw_text": "start with a magic ring. ch1 as standing st. make sc, hdc, 3dc. insert a stitch marker into the loop on your hook and join orange yarn into the ring. ch1 as a standing st. make sc, hdc, 3dc. tighten the ring to close.",
          "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": "Marker on orange loop, with white:  (dc inc)×5 . Marker on white loop, with orange:  (dc inc)×5 .",
          "raw_text": "Round 2 Marker on orange loop, with white:  (dc inc)×5 . Marker on white loop, with orange:  (dc inc)×5 .",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Step by step",
          "value": "Insert another stitch marker into the orange loop on your hook, and remove the stitch marker on the white loop. With white yarn and work on the orange stitches: work (dc inc) 5 times. Insert a stitch marker into the white loop on your hook, and remove the stitch marker on the orange loop. With orange yarn and work on the white stitches: work (dc inc) 5 times.",
          "raw_text": "Insert another stitch marker into the orange loop on your hook, and remove the stitch marker on the white loop. With white yarn and work on the orange stitches: work  (dc inc) 5 times. Insert a stitch marker into the white loop on your hook, and remove the stitch marker on the orange loop. With orange yarn and work on the white stitches: work  (dc inc) 5 times.",
          "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": "Marker on orange loop, with white:  [dc inc, dc] rep 5 times. Marker on white loop, with orange:  [dc inc, dc] rep 5 times.",
          "raw_text": "Round 3 Marker on orange loop, with white:  [dc inc, dc] rep 5 times. Marker on white loop, with orange:  [dc inc, dc] rep 5 times.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "Step by step",
          "value": "Marker on orange loop, remove marker in white loop. With white yarn: [dc inc in next st, dc in next st] rep 5 times. Marker on white loop, remove marker in orange loop. With orange yarn: [dc inc in next st, dc in next st] rep 5 times.",
          "raw_text": "Marker on orange loop, remove marker in white loop. With white yarn:  [dc inc in next st, dc in next st] rep 5 times. Marker on white loop, remove marker in orange loop. With orange yarn:  [dc inc in next st, dc in next st] rep 5 times.",
          "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": "Marker on orange loop, with white:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc. Marker on white loop, with orange:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc.",
          "raw_text": "Round 4 Marker on orange loop, with white:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc. Marker on white loop, with orange:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "Step by step",
          "value": "Marker on orange loop, remove marker in white loop. With white yarn: dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc. Marker on white loop. With orange yarn: dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc.",
          "raw_text": "Marker on orange loop, remove marker in white loop. With white yarn:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc. Marker on white loop. With orange yarn:  dc inc, dc, [dc inc, 2dc] rep 4 times, dc inc.",
          "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": "Marker on orange loop, with white:  [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc. Marker on white loop, with orange:  [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc.",
          "raw_text": "Round 5 Marker on orange loop, with white:  [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc. Marker on white loop, with orange:  [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "info",
          "code": "main-pattern-info-8",
          "label": "Step by step",
          "value": "Marker on orange loop. With white: [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc. Marker on white loop. With orange: [2dc, dc inc] rep 2 times, [3dc, dc inc] rep 3 times, 3dc.",
          "raw_text": "Marker on orange loop. With white:  [2dc, dc inc] rep 2 times,  [3dc, dc inc] rep 3 times , 3dc. Marker on white loop. With orange:  [2dc, dc inc] rep 2 times,  [3dc, dc inc] rep 3 times , 3dc.",
          "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": "Marker on orange loop, with white:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Marker on white loop, with orange:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc.  slst to the next st, fasten off.",
          "raw_text": "Round 6 Marker on orange loop, with white:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Marker on white loop, with orange:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc.  slst to the next st, 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-9",
          "label": "Step by step",
          "value": "Marker on orange loop. With white: dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Marker on white loop. With orange: dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Slst to next st, and fasten off.",
          "raw_text": "Marker on orange loop. With white:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Marker on white loop. With orange:  dc inc, 3dc, dc+hdc, 2hdc, (sc inc) rep 2 times, sc. Slst to next st, and fasten off.",
          "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": "With white: [2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc] rep 4 times, sl st to the next st.",
          "raw_text": "Round 7 With white: [2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc] rep 4 times, sl st to the next st.",
          "round_start": 7,
          "round_end": 7,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "info",
          "code": "main-pattern-info-10",
          "label": "Step by step",
          "value": "With white: 2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc. Then [2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc] rep 3 times, sl st to the next st.",
          "raw_text": "With white: 2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc. [2hdc, 2dc, tr, 2tr+ch3+2tr in next st, tr, 2dc, 2hdc, 4sc] rep 3 times, sl st to the next st.",
          "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": "ch3(count as dc), 6dc, 2dc+ch3+2dc in next ch-sp, 11dc. *7dc, 2dc+ch3+2dc in next ch-sp, 11dc*rep 3 times, sl st to the top of the first ch3, fasten off.",
          "raw_text": "Round 8 ch3(count as dc), 6dc, 2dc+ch3+2dc in next ch-sp, 11dc. *7dc, 2dc+ch3+2dc in next ch-sp, 11dc*rep 3 times, sl st to the top of the first ch3, 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": "info",
          "code": "main-pattern-info-11",
          "label": "Step by step",
          "value": "Ch3 as a standing st (count as dc), 6dc, 2dc+ch3+2dc in next ch-sp, 11dc. Then [7dc, 2dc+ch3+2dc in next ch-sp, 11dc] rep 3 times, sl st to the top of the first ch3, fasten off.",
          "raw_text": "ch3 as a standing st(count as dc), 6dc, 2dc+ch3+2dc in next ch-sp, 11dc. [7dc, 2dc+ch3+2dc in next ch-sp, 11dc]rep 3 times, sl st to the top of the first ch3, 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": "💡 Use locking, lever-style stitch markers rather than open rings — the parked loop is a live stitch, and if it slides off while you're working the other color, that entire arm of the spiral can unravel in seconds",
          "raw_text": "💡 Use locking, lever-style stitch markers rather than open rings — the parked loop is a live stitch, and if it slides off while you're working the other color, that entire arm of the spiral can unravel in seconds",
          "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": "💡 Keep the two yarn balls in separate bowls or bags on opposite sides of your lap. Because the strands take turns around the same center, they will twist around each other — pausing to untwist every couple of passes saves a serious tangle later",
          "raw_text": "💡 Keep the two yarn balls in separate bowls or bags on opposite sides of your lap. Because the strands take turns around the same center, they will twist around each other — pausing to untwist every couple of passes saves a serious tangle later",
          "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": "💡 A 4-5 mm hook with worsted-weight yarn lands you close to the stated 4.92-inch square. If your granny squares usually run loose, drop half a millimeter — a spiral shows sloppy tension far more than clusters do",
          "raw_text": "💡 A 4-5 mm hook with worsted-weight yarn lands you close to the stated 4.92-inch square. If your granny squares usually run loose, drop half a millimeter — a spiral shows sloppy tension far more than clusters do",
          "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": "💡 Make the marker swap part of one motion: finish the fifth increase, clip the marker into your working loop, then pick up the other color's loop. Doing it in the same order every time means you never have to wonder which loop is live",
          "raw_text": "💡 Make the marker swap part of one motion: finish the fifth increase, clip the marker into your working loop, then pick up the other color's loop. Doing it in the same order every time means you never have to wonder which loop is live",
          "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": "💡 Pick two colors with strong light-dark contrast, like the orange and white in the original. The spiral is the whole show here, and two close shades will blur it into a muddle from arm's length",
          "raw_text": "💡 Pick two colors with strong light-dark contrast, like the orange and white in the original. The spiral is the whole show here, and two close shades will blur it into a muddle from arm's length",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "note-6",
          "label": "Note",
          "value": "💡 Block finished squares to a uniform 4.92 inches (12.5 cm) before joining them. The square-off rounds can pull slightly at the corners, and pinning each block out ensures your blanket seams line up beautifully",
          "raw_text": "💡 Block finished squares to a uniform 4.92 inches (12.5 cm) before joining them. The square-off rounds can pull slightly at the corners, and pinning each block out ensures your blanket seams line up beautifully",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "note-7",
          "label": "Note",
          "value": "💡 Designer's color combination suggestion: the square is worked with two strands for the beautiful spin effect. If you want a more florid twist, you can simply change colors every few rounds instead",
          "raw_text": "We're working with two strands held together for a beautiful spin effect. If you want a more florid twist, you can simply change colors every few rounds instead",
          "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": "Why does this pattern need stitch markers?",
          "value": "Because two colors are worked at once, one loop is always resting while the other is on your hook. The marker holds that resting loop safely so it can't unravel, and it also shows you exactly where to resume when the colors swap",
          "raw_text": "Because two colors are worked at once, one loop is always resting while the other is on your hook. The marker holds that resting loop safely so it can't unravel, and it also shows you exactly where to resume when the colors swap",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why does this pattern need stitch markers?",
          "answer": "Because two colors are worked at once, one loop is always resting while the other is on your hook. The marker holds that resting loop safely so it can't unravel, and it also shows you exactly where to resume when the colors swap",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Do I join each round with a slip stitch?",
          "value": "No — this square is worked as a continuous spiral, which is exactly why the colors swirl with no visible seam or join line. The stitch markers, not slip stitches, keep track of where each color's pass ends",
          "raw_text": "No — this square is worked as a continuous spiral, which is exactly why the colors swirl with no visible seam or join line. The stitch markers, not slip stitches, keep track of where each color's pass ends",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I join each round with a slip stitch?",
          "answer": "No — this square is worked as a continuous spiral, which is exactly why the colors swirl with no visible seam or join line. The stitch markers, not slip stitches, keep track of where each color's pass ends",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "Can I make this square bigger for a blanket block?",
          "value": "Yes. The quickest route is heavier yarn and a larger hook — doubled worsted on a 6.5 mm hook gives roughly a 6-7 inch block. You can also keep spiraling additional increase passes before squaring off, adding one more increase segment per revolution so the circle stays flat",
          "raw_text": "Yes. The quickest route is heavier yarn and a larger hook — doubled worsted on a 6.5 mm hook gives roughly a 6-7 inch block. You can also keep spiraling additional increase passes before squaring off, adding one more increase segment per revolution so the circle stays flat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I make this square bigger for a blanket block?",
          "answer": "Yes. The quickest route is heavier yarn and a larger hook — doubled worsted on a 6.5 mm hook gives roughly a 6-7 inch block. You can also keep spiraling additional increase passes before squaring off, adding one more increase segment per revolution so the circle stays flat",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "My two yarn balls keep twisting",
          "value": "Not at all; it's a natural side effect of alternating two strands around the same center. Keep the balls in separate bowls on either side of you and pause to untwist them every couple of passes",
          "raw_text": "Not at all; it's a natural side effect of alternating two strands around the same center. Keep the balls in separate bowls on either side of you and pause to untwist them every couple of passes",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "My two yarn balls keep twisting together — am I doing something wrong?",
          "answer": "Not at all; it's a natural side effect of alternating two strands around the same center. Keep the balls in separate bowls on either side of you and pause to untwist them every couple of passes",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "Why do I start with sc, hdc, and 3 dc",
          "value": "That sequence is a height gradient: it ramps each color up from short to tall so the spiral flows smoothly out of the magic ring. Starting with all doubles creates a visible step where each arm begins, and the swirl loses its seamless look",
          "raw_text": "That sequence is a height gradient: it ramps each color up from short to tall so the spiral flows smoothly out of the magic ring. Starting with all doubles creates a visible step where each arm begins, and the swirl loses its seamless look",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why do I start with sc, hdc, and 3 dc instead of all double crochets?",
          "answer": "That sequence is a height gradient: it ramps each color up from short to tall so the spiral flows smoothly out of the magic ring. Starting with all doubles creates a visible step where each arm begins, and the swirl loses its seamless look",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/spiral-granny-square-crochet-pattern-hero.webp",
    "data/images/spiral-granny-square-crochet-pattern-step-2.webp",
    "data/images/spiral-granny-square-crochet-pattern-step-3.webp",
    "data/images/spiral-granny-square-crochet-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/spiral-granny-square-crochet-pattern-hero.webp",
      "alt": "Two-Color Spiral Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/spiral-granny-square-crochet-pattern-hero.webp",
      "alt": "Two-Color Spiral Granny Square – Free Crochet Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/spiral-granny-square-crochet-pattern-step-2.webp",
      "alt": "Two-Color Spiral Granny Square – Free Crochet Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/spiral-granny-square-crochet-pattern-step-3.webp",
      "alt": "Two-Color Spiral Granny Square – Free Crochet Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/spiral-granny-square-crochet-pattern-step-4.webp",
      "alt": "Two-Color Spiral Granny Square – Free Crochet Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 0
}