{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "crochet-whale-granny-square",
  "title": "How to Crochet a Whale Granny Square - Free Pattern",
  "meta_description": "Crochet an adorable whale granny square with this free pattern. Sculpted tail flukes, FLO belly and fin, embroidered water spout, 4.2 inch square in DK yarn",
  "published_at": "2026-08-06",
  "updated_at": "2026-08-06",
  "author": "Nora",
  "thumbnail_url": "data/images/crochet-whale-granny-square-hero.webp",
  "meta": {
    "title": "How to Crochet a Whale Granny Square - Free Pattern",
    "pattern_name": "How to Crochet a Whale Granny Square - Free Pattern",
    "difficulty": "Intermediate",
    "time_needed": "2-3 Hours",
    "rating": 4.8,
    "made_count": "1.4K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Intermediate",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "whale granny square",
        "free crochet pattern",
        "ocean crochet",
        "back loop only",
        "front loop only",
        "dk weight",
        "crochet blanket square",
        "sea creature crochet",
        "colorwork granny square",
        "nautical crochet",
        "intermediate crochet"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "How to Crochet a Whale Granny Square - Free Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Intermediate Level",
          "value": "Comfortable with magic rings, hdc increases, and working in back and front loops",
          "raw_text": "Comfortable with magic rings, hdc increases, and working in back and front 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": "Afternoon Project",
          "value": "2-3 hours per square, with the whale body worked in a single sitting",
          "raw_text": "2-3 hours per square, with the whale body worked in a single sitting",
          "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": "Ocean Vibes",
          "value": "A friendly little whale for nautical blankets, bags, and baby gifts",
          "raw_text": "A friendly little whale for nautical blankets, bags, and baby gifts",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 2,
      "card_type": "about",
      "code": "about",
      "title": "About",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "about-info-1",
          "label": "",
          "value": "This pattern turns a humble granny square into a plump, smiling whale complete with a curved back, a forked tail, an expressive eye, and a jaunty water spout. Instead of stacking rounds of clusters, you build the whale organically from a magic ring, shaping the body with half double crochet increases and single crochet increases so the belly curves the way a real whale's does. The finished whale is then sewn as an applique onto a five-round solid granny square background. It is perfect for crocheters who love themed blanket squares, ocean nurseries, or anyone who wants a granny square with genuine personality rather than plain repeating rounds",
          "raw_text": "This pattern turns a humble granny square into a plump, smiling whale complete with a curved back, a forked tail, an expressive eye, and a jaunty water spout. Instead of stacking rounds of clusters, you build the whale organically from a magic ring, shaping the body with half double crochet increases and single crochet increases so the belly curves the way a real whale's does. The finished whale is then sewn as an applique onto a five-round solid granny square background. It is perfect for crocheters who love themed blanket squares, ocean nurseries, or anyone who wants a granny square with genuine personality rather than plain repeating rounds",
          "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 will use a magic ring, ch2 standing half double crochet starts, hdc and sc increases, back loop only work along the chain-9 tail, a front loop only row for the belly and fin, and post stitches worked around the hdc before the tail chain. Treble crochet stitches shape the fin tip, and a short sc2tog finishes each tail fluke. The eye is a small ch5 ring with a black French knot in the centre, and the water spout is embroidered as a fan-shaped spray on the background square. If you can read a stitch-by-stitch line and count as you go, you can absolutely handle this. Expect roughly two to three hours for your first square and closer to ninety minutes once the shaping clicks",
          "raw_text": "You will use a magic ring, ch2 standing half double crochet starts, hdc and sc increases, back loop only work along the chain-9 tail, a front loop only row for the belly and fin, and post stitches worked around the hdc before the tail chain. Treble crochet stitches shape the fin tip, and a short sc2tog finishes each tail fluke. The eye is a small ch5 ring with a black French knot in the centre, and the water spout is embroidered as a fan-shaped spray on the background square. If you can read a stitch-by-stitch line and count as you go, you can absolutely handle this. Expect roughly two to three hours for your first square and closer to ninety minutes once the shaping clicks",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "about-info-3",
          "label": "",
          "value": "The finished square measures about 4.2 inches by 4.2 inches in DK sport weight yarn on a 3.00mm hook, which makes it an ideal building block for blankets, cushion fronts, tote bag panels, and baby playmats. Four colors give you a darker navy blue back, a lighter sky blue belly, a contrast fin, and a bright spout, and the sewn separating line between the two body colors gives the whole square a crisp, finished, almost appliqued look. One square makes a sweet coaster or gift tag; twelve make a nursery blanket that people will ask about",
          "raw_text": "The finished square measures about 4.2 inches by 4.2 inches in DK sport weight yarn on a 3.00mm hook, which makes it an ideal building block for blankets, cushion fronts, tote bag panels, and baby playmats. Four colors give you a darker navy blue back, a lighter sky blue belly, a contrast fin, and a bright spout, and the sewn separating line between the two body colors gives the whole square a crisp, finished, almost appliqued look. One square makes a sweet coaster or gift tag; twelve make a nursery blanket that people will ask about",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 3,
      "card_type": "why_love",
      "code": "why-love",
      "title": "Why You'll Love This Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "why-love-1",
          "label": "",
          "value": "I have made a lot of granny squares in my life, and this whale is one of the few that made me grin the moment the shaping appeared. The magic moment for me is the chain-9 tail: you chain out into thin air, turn around, and work back through the back loops with a slip stitch, a sc-inc, and those two hdc, and suddenly a tail exists where there was nothing. Then you work two hdc around the post of the hdc before that chain-9, and the tail anchors itself to the body like it grew there. I also love how the front loop only belly row uses treble crochet to push out a long, elegant flipper without any extra sewing or piecing. The four tr in a row are the most satisfying stitches in the whole square. And that final touch, sewing along the separating line between the two colors with deep blue yarn, is the step I would never skip. It takes four minutes and it turns a nice square into one that looks professionally designed",
          "raw_text": "I have made a lot of granny squares in my life, and this whale is one of the few that made me grin the moment the shaping appeared. The magic moment for me is the chain-9 tail: you chain out into thin air, turn around, and work back through the back loops with a slip stitch, a sc-inc, and those two hdc, and suddenly a tail exists where there was nothing. Then you work two hdc around the post of the hdc before that chain-9, and the tail anchors itself to the body like it grew there. I also love how the front loop only belly row uses treble crochet to push out a long, elegant flipper without any extra sewing or piecing. The four tr in a row are the most satisfying stitches in the whole square. And that final touch, sewing along the separating line between the two colors with deep blue yarn, is the step I would never skip. It takes four minutes and it turns a nice square into one that looks professionally designed",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 5,
      "card_type": "common_mistakes",
      "code": "common-mistakes",
      "title": "Common Mistakes & How to Fix Them",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "mistake",
          "code": "mistake-1",
          "label": "Counting the ch2 as a stitch inconsistently across rounds",
          "value": "In this pattern the ch2 always counts as one hdc, and in several places you add a second hdc into the same space to form the hdc-inc. If you sometimes count it and sometimes do not, your stitch counts drift by one every round and the body loses its curve. Place a stitch marker in the top of that ch2 the moment you make it, and always slip stitch into that marked loop at the end of the round",
          "raw_text": "In this pattern the ch2 always counts as one hdc, and in several places you add a second hdc into the same space to form the hdc-inc. If you sometimes count it and sometimes do not, your stitch counts drift by one every round and the body loses its curve. Place a stitch marker in the top of that ch2 the moment you make it, and always slip stitch into that marked loop at the end of the round",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "mistake",
          "code": "mistake-2",
          "label": "Working the chain-9 tail return row",
          "value": "The pattern specifies BL for the return along the tail chain, and this matters because the free front loops create the ridge that makes the tail stand out and lie flat. If you work through both loops the tail curls and looks like a stubby tab. Skip the first chain, then work only into the back loop of each remaining chain for the slst, (slst+1sc), 1sc, sc-inc, 2sc, and 2hdc",
          "raw_text": "The pattern specifies BL for the return along the tail chain, and this matters because the free front loops create the ridge that makes the tail stand out and lie flat. If you work through both loops the tail curls and looks like a stubby tab. Skip the first chain, then work only into the back loop of each remaining chain for the slst, (slst+1sc), 1sc, sc-inc, 2sc, and 2hdc",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "mistake",
          "code": "mistake-3",
          "label": "Missing the two hdc worked around the",
          "value": "This is the single most skipped instruction in the whole pattern. Those two post stitches are what close the gap between the tail and the body. Without them you end up with a visible hole where the tail meets the whale. After finishing the tail return row, do not go back into the top of the next stitch. Instead, wrap your hook around the vertical post of the hdc that sat immediately before your ch9 and work both hdc around it",
          "raw_text": "This is the single most skipped instruction in the whole pattern. Those two post stitches are what close the gap between the tail and the body. Without them you end up with a visible hole where the tail meets the whale. After finishing the tail return row, do not go back into the top of the next stitch. Instead, wrap your hook around the vertical post of the hdc that sat immediately before your ch9 and work both hdc around it",
          "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": "Joining the belly yarn to the wrong",
          "value": "Row 4 says to rotate 180 degrees, work in FLO, and join new yarn to the left st of the sc-inc from the end. Crocheters often count from the wrong end and start the row a stitch or two off, which makes the fin point down instead of out. Before fastening off Round 3, put a locking marker in that sc-inc so you can find it instantly after you rotate",
          "raw_text": "Row 4 says to rotate 180 degrees, work in FLO, and join new yarn to the left st of the sc-inc from the end. Crocheters often count from the wrong end and start the row a stitch or two off, which makes the fin point down instead of out. Before fastening off Round 3, put a locking marker in that sc-inc so you can find it instantly after you rotate",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "mistake",
          "code": "mistake-6",
          "label": "Skipping the sewn separating line",
          "value": "This step reads like an optional flourish but it is structural to the look. Without it the color change between the whale's back and belly looks jagged and the two sections can pull apart slightly under tension. Turn the square over, thread a darning needle with deep blue yarn, and run a small even running stitch or backstitch directly along the boundary, catching only the color-change loops so nothing shows on the front",
          "raw_text": "This step reads like an optional flourish but it is structural to the look. Without it the color change between the whale's back and belly looks jagged and the two sections can pull apart slightly under tension. Turn the square over, thread a darning needle with deep blue yarn, and run a small even running stitch or backstitch directly along the boundary, catching only the color-change loops so nothing shows on the front",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "mistake",
          "code": "mistake-7",
          "label": "Working the two tail flukes",
          "value": "The tail section repeats the ch5, return, sk1, BL of next 4 ch, sc-inc, sc, sc2tog sequence twice, and any tension difference between the two flukes shows immediately because they sit side by side. Make both flukes back to back in one sitting and count your chains out loud. If one comes out longer, frog it rather than blocking it into shape, because chain tension does not block out",
          "raw_text": "The tail section repeats the ch5, return, sk1, BL of next 4 ch, sc-inc, sc, sc2tog sequence twice, and any tension difference between the two flukes shows immediately because they sit side by side. Make both flukes back to back in one sitting and count your chains out loud. If one comes out longer, frog it rather than blocking it into shape, because chain tension does not block out",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 6,
      "card_type": "materials",
      "code": "materials",
      "title": "Materials",
      "raw_heading": "",
      "quantity": 1,
      "groups": [
        {
          "order": 1,
          "group_code": "group-1",
          "group_name": "",
          "rows": [
            {
              "order": 1,
              "row_type": "item",
              "code": "mat-1-1",
              "label": "",
              "value": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 4.2 inches by 4.2 inches.",
              "raw_text": "Yarn of your choice —4 colors; the sample is made with DK Sports. The finished granny square is about 4.2 inches by 4.2 inches."
            },
            {
              "order": 2,
              "row_type": "item",
              "code": "mat-1-2",
              "label": "",
              "value": "Crochet hook- we are using a 3.00mm hook",
              "raw_text": "Crochet hook- we are using a 3.00mm hook"
            },
            {
              "order": 3,
              "row_type": "item",
              "code": "mat-1-3",
              "label": "",
              "value": "Darning Needle",
              "raw_text": "Darning Needle"
            },
            {
              "order": 4,
              "row_type": "item",
              "code": "mat-1-4",
              "label": "",
              "value": "Scissors",
              "raw_text": "Scissors"
            },
            {
              "order": 5,
              "row_type": "item",
              "code": "mat-1-5",
              "label": "",
              "value": "Deep blue yarn for sewing along the separating line between the 2 colors, plus a small amount of black yarn for the French knot eye",
              "raw_text": "Sew along the separating line between 2 colors with deep blue yarn. Then work a small black French knot in the center of the ring."
            }
          ]
        }
      ],
      "rows": []
    },
    {
      "order": 7,
      "card_type": "abbreviations",
      "code": "abbreviations",
      "title": "Abbreviations",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "abbrev",
          "code": "abbrev-ch",
          "label": "ch",
          "value": "chain stitch",
          "raw_text": "ch = chain stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch",
          "meaning": "chain stitch"
        },
        {
          "order": 2,
          "row_type": "abbrev",
          "code": "abbrev-ch-sp",
          "label": "ch-sp",
          "value": "chain space",
          "raw_text": "ch-sp = chain space",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "ch-sp",
          "meaning": "chain space"
        },
        {
          "order": 3,
          "row_type": "abbrev",
          "code": "abbrev-dc",
          "label": "dc",
          "value": "double crochet",
          "raw_text": "dc = double crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc",
          "meaning": "double crochet"
        },
        {
          "order": 4,
          "row_type": "abbrev",
          "code": "abbrev-sc",
          "label": "sc",
          "value": "single crochet",
          "raw_text": "sc = single crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc",
          "meaning": "single crochet"
        },
        {
          "order": 5,
          "row_type": "abbrev",
          "code": "abbrev-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": 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-rep",
          "label": "rep",
          "value": "repeat",
          "raw_text": "rep = repeat",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "rep",
          "meaning": "repeat"
        },
        {
          "order": 8,
          "row_type": "abbrev",
          "code": "abbrev-st",
          "label": "st",
          "value": "stitch",
          "raw_text": "st = stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "st",
          "meaning": "stitch"
        },
        {
          "order": 9,
          "row_type": "abbrev",
          "code": "abbrev-slst-/-sl-st",
          "label": "slst / sl st",
          "value": "slip stitch for joining different rounds",
          "raw_text": "slst / sl st = slip stitch for joining different rounds",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "slst / sl st",
          "meaning": "slip stitch for joining different rounds"
        },
        {
          "order": 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-sc2tog",
          "label": "sc2tog",
          "value": "single crochet 2 stitches together",
          "raw_text": "sc2tog = single crochet 2 stitches together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "sc2tog",
          "meaning": "single crochet 2 stitches together"
        },
        {
          "order": 12,
          "row_type": "abbrev",
          "code": "abbrev-hdc2tog",
          "label": "hdc2tog",
          "value": "half double crochet 2 stitches together",
          "raw_text": "hdc2tog = half double crochet 2 stitches together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "hdc2tog",
          "meaning": "half double crochet 2 stitches together"
        },
        {
          "order": 13,
          "row_type": "abbrev",
          "code": "abbrev-dc2tog",
          "label": "dc2tog",
          "value": "double crochet 2 stitches together",
          "raw_text": "dc2tog = double crochet 2 stitches together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "dc2tog",
          "meaning": "double crochet 2 stitches together"
        },
        {
          "order": 14,
          "row_type": "abbrev",
          "code": "abbrev-tlo",
          "label": "TLO",
          "value": "third loop only",
          "raw_text": "TLO = third loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "TLO",
          "meaning": "third loop only"
        },
        {
          "order": 15,
          "row_type": "abbrev",
          "code": "abbrev-blo",
          "label": "BLO",
          "value": "back loop only",
          "raw_text": "BLO = back loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "BLO",
          "meaning": "back loop only"
        },
        {
          "order": 16,
          "row_type": "abbrev",
          "code": "abbrev-bl",
          "label": "BL",
          "value": "back loop",
          "raw_text": "BL = back loop",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "BL",
          "meaning": "back loop"
        },
        {
          "order": 17,
          "row_type": "abbrev",
          "code": "abbrev-flo",
          "label": "FLO",
          "value": "front loop only",
          "raw_text": "FLO = front loop only",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "FLO",
          "meaning": "front loop only"
        },
        {
          "order": 18,
          "row_type": "abbrev",
          "code": "abbrev-tr",
          "label": "tr",
          "value": "treble crochet",
          "raw_text": "tr = treble crochet",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "tr",
          "meaning": "treble crochet"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Main Pattern",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "main-pattern-info-4",
          "label": "Info",
          "value": "A small tip for assembly: leave a small yarn tail when finishing some parts (noted below). These tails make assembly easier, allowing you to whip-stitch your appliques directly onto the background square.",
          "raw_text": "A small tip  for assembly : leave a small yarn tail when finishing some parts  (will be noted). These tails make assembly easier, allowing you to whip-stitch your appliqués directly onto the background square.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Info",
          "value": "Round 1 is the foundation round: a magic ring and 11 hdc set up the base of the whale's body.",
          "raw_text": "Round 1 – Foundation 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": "round",
          "code": "main-pattern-round-1",
          "label": "Round 1",
          "value": "Magic ring, ch2 as a standing st(count as hdc), 11hdc, sl st to the top of the first ch2.",
          "raw_text": "Round 1 Magic ring, ch2 as a standing st(count as hdc), 11hdc, sl st to the top of the first ch2.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "Info",
          "value": "Round 2 constructs the whale's shape: the hdc and sc increases curve the body, then the ch9 worked out from the body becomes the tail before you return back along it in the back loops. The 2hdc worked around the post of the hdc before the ch9 close the gap where the tail meets the body.",
          "raw_text": "Round 2- Construct the Whale's Shape",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Round 2",
          "value": "ch2(count as 1hdc)+1hdc to form hdc-inc. sc-inc, hdc-inc, 1hdc+1sc, (sc-inc)×2, 1sc+1hdc, hdc-inc. Ch9, return. sk1, BL: slst, (slst+1sc), 1sc, sc-inc, 2sc, 2hdc. 2hdc around the post of the hdc before ch9. 1hdc, 3sc, sl st to the top of the first ch2.",
          "raw_text": "Round 2 ch2(count as 1hdc)+1hdc to form hdc-inc. sc-inc, hdc-inc, 1hdc+1sc, (sc-inc)×2, 1sc+1hdc, hdc-inc. Ch9,  return . sk1,  BL : slst, (slst+1sc), 1sc, sc-inc, 2sc, 2hdc. 2hdc around the post of the hdc before ch9. 1hdc, 3sc, sl st to the top of the first ch2.",
          "round_start": 2,
          "round_end": 2,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "info",
          "code": "main-pattern-info-7",
          "label": "Info",
          "value": "Round 3 enlarges the whale, working another round of increases around the body before you fasten off.",
          "raw_text": "Round 3 – Enlarge",
          "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-3",
          "label": "Round 3",
          "value": "ch2(count as 1hdc)+1hdc to form a hdc-inc. 1hdc, 1sc, sc-inc, 13sc, sl st, fasten off.",
          "raw_text": "Round 3 ch2(count as 1hdc)+1hdc to form a hdc-inc. 1hdc, 1sc, sc-inc, 13sc, sl st, fasten off.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "info",
          "code": "main-pattern-info-8",
          "label": "Info",
          "value": "Row 4 makes the whale's belly in the lighter color. Rotate the square 180 degrees, work in the front loops only, and join the new yarn to the left st of the sc-inc from the end. The 4tr and the 1tr+1dc shape the fin.",
          "raw_text": "Row 4 – Whale Belly. Rotate 180 degrees . FLO . Join new yarn to the left st of the sc-inc from the end.",
          "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-4",
          "label": "Row 4",
          "value": "Rotate 180 degrees. FLO. Join new yarn to the left st of the sc-inc from the end. ch1, 1sc, sc-inc, 2hdc, 1dc, 4tr, 1tr+1dc, 1hdc+1sc, slst to next ch, fasten off.",
          "raw_text": "Row 4 Rotate 180 degrees .   FLO . Join new yarn to the left st of the sc-inc from the end. ch1, 1sc, sc-inc, 2hdc, 1dc, 4tr, 1tr+1dc, 1hdc+1sc, slst to next ch, fasten off.",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "info",
          "code": "main-pattern-info-2",
          "label": "Info",
          "value": "Finish the Whale Tail Flukes",
          "raw_text": "Finish WhaleTail Flukes",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "info",
          "code": "main-pattern-info-3",
          "label": "Info",
          "value": "Turn Over. Sew along the separating line between 2 colors with deep blue yarn for a polished look. Then join new yarn to the tail's tip. *ch5, return. sk1, BL of next 4 ch: sc-inc, sc, sc2tog. slst to the joining st* rep 2 times, fasten off and leave the tail.",
          "raw_text": "Turn Over .  Sew along the separating line  between 2 colors with deep blue yarn for a polished look. Then join new yarn to the tail's tip. *ch5, return. sk1,  BL  of next 4 ch: sc-inc, sc, sc2tog. slst to the joining st* rep 2 times, fasten off and leave the tail.",
          "round_start": null,
          "round_end": null,
          "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": "Info",
          "value": "Add an Eye",
          "raw_text": "Add an Eye",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 13,
          "row_type": "info",
          "code": "main-pattern-info-10",
          "label": "Info",
          "value": "Step by step: Knot, ch5, sl st to the first ch to form a ring. Sew it to the center of the whale's head as the eye base. Then work a small black French knot in the center of the ring.",
          "raw_text": "Knot, ch5, sl st to the first ch to form a ring. Sew it to the center of the whale's head as the eye base. Then work a small black French knot in the center of the ring.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 9,
      "card_type": "part",
      "code": "part-2",
      "title": "The Background - Solid Granny Square",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "part-2-info-4",
          "label": "Info",
          "value": "In this whale granny square, we need a larger solid granny square of 5 Rounds as the background.",
          "raw_text": "In this whale granny square, we need a larger solid granny square of 5 Rounds as the background.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "round",
          "code": "part-2-info-1",
          "label": "Round 1",
          "value": "Start with a magic loop. ch3 as a standing st(count as 1dc). 3dc, ch3. *(4dc, ch3) * rep 3 times omitting final ch3, ch1, 1hdc connects back to your starting ch3.",
          "raw_text": "Round 1: Start with a magic loop. ch3 as a standing st(count as 1dc). 3dc, ch3. *(4dc, ch3) * rep 3 times omitting final ch3, ch1, 1hdc connects back to your starting ch3.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "round",
          "code": "part-2-round-2-4",
          "label": "Round 2-4",
          "value": "ch3(counts as dc), 1dc in this corner. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the start corner. ch1, 1hdc connect back to the first ch3.",
          "raw_text": "Round 2-4: ch3(counts as dc), 1dc in this corner. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the start corner. ch1, 1hdc connect back to the first ch3.",
          "round_start": 2,
          "round_end": 4,
          "is_range": true,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "part-2-round-5",
          "label": "Round 5",
          "value": "ch3 as a standing st(count as 1dc), 1dc in this corner sp. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the starting corner, ch3, sl st to the true dc after first ch3, fasten off.",
          "raw_text": "Round 5: ch3 as a standing st(count as 1dc), 1dc in this corner sp. (2dc+ch3+2dc) in remaining corners. 1dc in remaining sts. 2dc in the starting corner, ch3, sl st to the true dc after first ch3, fasten off.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "part-2-info-2",
          "label": "Info",
          "value": "Assemble",
          "raw_text": "Assemble",
          "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": "part-2-info-5",
          "label": "Info",
          "value": "This design catches a playful whale happily spouting, so we will create a water fountain effect there.",
          "raw_text": "This design catches a playful whale happily sprouting. So we will create a water fountain effect there.",
          "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": "part-2-info-3",
          "label": "Info",
          "value": "Step by step: First, sew the whale applique to the lower center of the solid granny square, threading the tail left from finishing in and out through both the applique and base square loops to secure everything tightly in place. Then, join new yarn to the top center st of the whale's head( back loop ), and embroider a fan-shaped spray of stitches radiating upward on the background. Fasten off, but keep a 7 inch tail to strengthen the assembly.",
          "raw_text": "First, sew the whale appliqué to the lower center of the solid granny square: threading the tail left from finishing in and out through both the appliqué and base square loops to secure everything tightly in place. Then, join new yarn to the top center st of the whale's head( back loop ), and embroider a fan-shaped spray of stitches radiating upward on the background. Fasten off, but keep 7 inch tail to strengthen the assembly.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 10,
      "card_type": "important_notes",
      "code": "important-notes",
      "title": "Important Notes",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "note-1",
          "label": "Note",
          "value": "💡 The sample uses DK sport weight yarn with a 3.00mm hook, which is a full size smaller than the yarn band usually suggests. That tight gauge is intentional here because the sculpted tail and fin need firm fabric to hold their shape. If your square comes out floppy or larger than 4.2 inches, drop to a 2.75mm hook before changing anything else",
          "raw_text": "💡 The sample uses DK sport weight yarn with a 3.00mm hook, which is a full size smaller than the yarn band usually suggests. That tight gauge is intentional here because the sculpted tail and fin need firm fabric to hold their shape. If your square comes out floppy or larger than 4.2 inches, drop to a 2.75mm hook before changing anything else",
          "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": "💡 Use locking stitch markers rather than scrap yarn for this pattern. You need markers in the top of each ch2, in the sc-inc where the belly row joins, and in the tail joining stitch, and you will be rotating the square 180 degrees and turning it over as you work. Locking markers survive that handling; loose yarn scraps fall out exactly when you need them",
          "raw_text": "💡 Use locking stitch markers rather than scrap yarn for this pattern. You need markers in the top of each ch2, in the sc-inc where the belly row joins, and in the tail joining stitch, and you will be rotating the square 180 degrees and turning it over as you work. Locking markers survive that handling; loose yarn scraps fall out exactly when you need them",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "note-3",
          "label": "Note",
          "value": "💡 Wind small butterfly bobbins for the four colors instead of pulling from full skeins. You join new yarn several separate times in this pattern, at the belly row, at the tail's tip, and again at the whale's head for the spout, and tangled full balls are the main reason people set a project like this down mid-row. Ten grams per accent color is plenty",
          "raw_text": "💡 Wind small butterfly bobbins for the four colors instead of pulling from full skeins. You join new yarn several separate times in this pattern, at the belly row, at the tail's tip, and again at the whale's head for the spout, and tangled full balls are the main reason people set a project like this down mid-row. Ten grams per accent color is plenty",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "note-4",
          "label": "Note",
          "value": "💡 Leave a generous yarn tail every time you fasten off. The pattern explicitly says to fasten off and leave the tail at the end of the tail fluke section, to keep a 7 inch tail after embroidering the spout, and the tutorial's assembly tip asks for a small tail whenever you finish a piece. Those tails are what you whip-stitch the applique down with, and they are far easier to leave now than to add later",
          "raw_text": "💡 Leave a generous yarn tail every time you fasten off. The pattern explicitly says to fasten off and leave the tail at the end of the tail fluke section, to keep a 7 inch tail after embroidering the spout, and the tutorial's assembly tip asks for a small tail whenever you finish a piece. Those tails are what you whip-stitch the applique down with, and they are far easier to leave now than to add later",
          "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": "💡 When you rotate the whale 180 degrees for Row 4, mark which side is the right side with a safety pin first. That row is worked in FLO from what becomes the wrong side at that moment, and it is very easy to work it on the opposite face, which leaves the belly and fin sitting on the back of your whale",
          "raw_text": "💡 When you rotate the whale 180 degrees for Row 4, mark which side is the right side with a safety pin first. That row is worked in FLO from what becomes the wrong side at that moment, and it is very easy to work it on the opposite face, which leaves the belly and fin sitting on the back of your whale",
          "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 the square gently with steam or a light spritz and pin it into a true 4.2-inch square before joining. Pin the fin and tail flat as well. Because the whale is built organically rather than in concentric rounds, unblocked squares vary by a few millimetres and that adds up fast across a blanket",
          "raw_text": "💡 Block the square gently with steam or a light spritz and pin it into a true 4.2-inch square before joining. Pin the fin and tail flat as well. Because the whale is built organically rather than in concentric rounds, unblocked squares vary by a few millimetres and that adds up fast across a blanket",
          "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": "💡 Color guide from the designer: the whale is made with two blues, a darker navy blue for the body and a lighter sky blue for the belly, inspired by a real whale. Beyond the regular tail and eye, the special feature of this design is the water spout embroidered above the head, which is what gives the square its happy, playful feeling",
          "raw_text": "We make the whale with two blues, a darker navy blue for the body and a lighter sky blue for the belly. A real whale inspires it. In addition to the regular tail and eyes, this whale granny square features a special design: the water spout. Via this, you can feel the happy emotion",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        }
      ]
    },
    {
      "order": 11,
      "card_type": "faq",
      "code": "faq",
      "title": "FAQ",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "faq",
          "code": "faq-1",
          "label": "Do I need to stuff this whale granny square?",
          "value": "No, this is a flat granny square, not a 3D amigurumi, so there is no stuffing involved at any stage. The whale gets its shape entirely from the hdc and sc increases and from the raised tail and fin worked in back and front loops",
          "raw_text": "No, this is a flat granny square, not a 3D amigurumi, so there is no stuffing involved at any stage. The whale gets its shape entirely from the hdc and sc increases and from the raised tail and fin worked in back and front loops",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to stuff this whale granny square?",
          "answer": "No, this is a flat granny square, not a 3D amigurumi, so there is no stuffing involved at any stage. The whale gets its shape entirely from the hdc and sc increases and from the raised tail and fin worked in back and front loops",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "Can I make this square with worsted",
          "value": "Absolutely, and it is a popular substitution. Use a 4.00mm hook with worsted and your finished square will land around 5.5 inches instead of 4.2 inches, with no changes to the stitch counts. Just make every square in your project from the same weight so they join evenly",
          "raw_text": "Absolutely, and it is a popular substitution. Use a 4.00mm hook with worsted and your finished square will land around 5.5 inches instead of 4.2 inches, with no changes to the stitch counts. Just make every square in your project from the same weight so they join evenly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Can I make this square with worsted weight yarn instead of DK?",
          "answer": "Absolutely, and it is a popular substitution. Use a 4.00mm hook with worsted and your finished square will land around 5.5 inches instead of 4.2 inches, with no changes to the stitch counts. Just make every square in your project from the same weight so they join evenly",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "What does BL and FLO mean in this pattern?",
          "value": "BL means back loop only and FLO means front loop only, referring to which of the two loops at the top of a stitch you insert your hook into. The tail return row uses back loops to create a flat ridge, while the belly row uses front loops so it sits raised on top of the body fabric",
          "raw_text": "BL means back loop only and FLO means front loop only, referring to which of the two loops at the top of a stitch you insert your hook into. The tail return row uses back loops to create a flat ridge, while the belly row uses front loops so it sits raised on top of the body fabric",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What does BL and FLO mean in this pattern?",
          "answer": "BL means back loop only and FLO means front loop only, referring to which of the two loops at the top of a stitch you insert your hook into. The tail return row uses back loops to create a flat ridge, while the belly row uses front loops so it sits raised on top of the body fabric",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "How many squares do I need for a baby blanket?",
          "value": "4.2 inches per square, a 30 by 36 inch baby blanket takes roughly 7 squares across by 8 down, so 56 squares plus a border. Most crocheters mix whale squares with plain solid squares in the same colorway so the whales have room to breathe visually",
          "raw_text": "4.2 inches per square, a 30 by 36 inch baby blanket takes roughly 7 squares across by 8 down, so 56 squares plus a border. Most crocheters mix whale squares with plain solid squares in the same colorway so the whales have room to breathe visually",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a baby blanket?",
          "answer": "4.2 inches per square, a 30 by 36 inch baby blanket takes roughly 7 squares across by 8 down, so 56 squares plus a border. Most crocheters mix whale squares with plain solid squares in the same colorway so the whales have room to breathe visually",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "My tail looks lumpy where it meets the",
          "value": "This is almost always the two hdc worked around the post of the hdc before the ch9 being skipped or worked into the top of the stitch instead of around the post. Those stitches fill the gap at the base of the tail. Undo back to that point and wrap your hook horizontally around the vertical bar of that hdc",
          "raw_text": "This is almost always the two hdc worked around the post of the hdc before the ch9 being skipped or worked into the top of the stitch instead of around the post. Those stitches fill the gap at the base of the tail. Undo back to that point and wrap your hook horizontally around the vertical bar of that hdc",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "My tail looks lumpy where it meets the body. What went wrong?",
          "answer": "This is almost always the two hdc worked around the post of the hdc before the ch9 being skipped or worked into the top of the stitch instead of around the post. Those stitches fill the gap at the base of the tail. Undo back to that point and wrap your hook horizontally around the vertical bar of that hdc",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "faq",
          "code": "faq-6",
          "label": "How do I make the whale's eye?",
          "value": "The eye is a tiny crocheted ring: knot, ch5, then sl st to the first ch to form a ring. Sew that ring to the center of the whale's head as the eye base, then work a small black French knot in the center of the ring for the pupil",
          "raw_text": "The eye is a tiny crocheted ring: knot, ch5, then sl st to the first ch to form a ring. Sew that ring to the center of the whale's head as the eye base, then work a small black French knot in the center of the ring for the pupil",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How do I make the whale's eye?",
          "answer": "The eye is a tiny crocheted ring: knot, ch5, then sl st to the first ch to form a ring. Sew that ring to the center of the whale's head as the eye base, then work a small black French knot in the center of the ring for the pupil",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "faq",
          "code": "faq-7",
          "label": "Is the water spout crocheted or embroidered?",
          "value": "It is embroidered. After the whale is sewn to the lower center of the solid granny square, you join new yarn to the top center st of the whale's head through the back loop and embroider a fan-shaped spray of stitches radiating upward across the background, then fasten off leaving a 7 inch tail to strengthen the assembly",
          "raw_text": "It is embroidered. After the whale is sewn to the lower center of the solid granny square, you join new yarn to the top center st of the whale's head through the back loop and embroider a fan-shaped spray of stitches radiating upward across the background, then fasten off leaving a 7 inch tail to strengthen the assembly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Is the water spout crocheted or embroidered?",
          "answer": "It is embroidered. After the whale is sewn to the lower center of the solid granny square, you join new yarn to the top center st of the whale's head through the back loop and embroider a fan-shaped spray of stitches radiating upward across the background, then fasten off leaving a 7 inch tail to strengthen the assembly",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/crochet-whale-granny-square-hero.webp",
    "data/images/crochet-whale-granny-square-step-2.webp",
    "data/images/crochet-whale-granny-square-step-3.webp",
    "data/images/crochet-whale-granny-square-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/crochet-whale-granny-square-hero.webp",
      "alt": "How to Crochet a Whale Granny Square - Free Pattern — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/crochet-whale-granny-square-hero.webp",
      "alt": "How to Crochet a Whale Granny Square - Free Pattern — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/crochet-whale-granny-square-step-2.webp",
      "alt": "How to Crochet a Whale Granny Square - Free Pattern — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/crochet-whale-granny-square-step-3.webp",
      "alt": "How to Crochet a Whale Granny Square - Free Pattern — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/crochet-whale-granny-square-step-4.webp",
      "alt": "How to Crochet a Whale Granny Square - Free Pattern — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 3
}