{
  "schema_version": "2.0",
  "page_type": "crochet_pattern_article",
  "source_id": null,
  "slug": "crochet-shark-granny-square-free-pattern",
  "title": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block",
  "meta_description": "Free crochet shark granny square pattern: work the head flat in hdc and sc, add picot fins, embroider the face, then sew it onto a solid 3.35-inch square",
  "published_at": "2026-08-08",
  "updated_at": "2026-08-08",
  "author": "Nora",
  "thumbnail_url": "data/images/crochet-shark-granny-square-free-pattern-hero.webp",
  "meta": {
    "title": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block",
    "pattern_name": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block",
    "difficulty": "Intermediate",
    "time_needed": "1-2 Hours",
    "rating": 4.8,
    "made_count": "3.4K",
    "taxonomy": {
      "category": "Granny Squares",
      "skill_level": "Intermediate",
      "yarn_weight": "DK",
      "tags": [
        "granny square",
        "shark granny square",
        "crochet shark",
        "free crochet pattern",
        "dk yarn",
        "hdc increase",
        "color change crochet",
        "blanket square",
        "ocean crochet",
        "summer crochet",
        "crochet applique",
        "intarsia granny square"
      ]
    }
  },
  "cards": [
    {
      "order": 1,
      "card_type": "hero",
      "code": "hero",
      "title": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "hero-info-1",
          "label": "Confident Beginner",
          "value": "You'll need hdc and sc increases, a ch-3 picot, and a little embroidery",
          "raw_text": "You'll need hdc and sc increases, a ch-3 picot, and a little embroidery",
          "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 Make",
          "value": "About 1-2 hours per square once you've made the first one",
          "raw_text": "About 1-2 hours per square once you've made the first one",
          "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 Cute",
          "value": "A grinning little shark block for blankets, bags, and beach gifts",
          "raw_text": "A grinning little shark block for blankets, bags, and beach 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 plain granny square into a grinning shark, and it does it without a single tapestry-crochet float. The shark's head is worked flat in rows from a small ch-4 foundation loop - blue yarn for the upper part of the face, then white joined back into that same loop for the lower belly. After the two halves are seamed, you add two side fins and a pointed dorsal fin, embroider the mouth and eyes, and sew the whole appliqué onto a solid granny square background. It's perfect for anyone who loves character squares, ocean themes, or blanket projects that make kids gasp",
          "raw_text": "This pattern turns a plain granny square into a grinning shark, and it does it without a single tapestry-crochet float. The shark's head is worked flat in rows from a small ch-4 foundation loop - blue yarn for the upper part of the face, then white joined back into that same loop for the lower belly. After the two halves are seamed, you add two side fins and a pointed dorsal fin, embroider the mouth and eyes, and sew the whole appliqué onto a solid granny square background. It's perfect for anyone who loves character squares, ocean themes, or blanket projects that make kids gasp",
          "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": "Everything in the shark itself is half double crochet and single crochet, so there are no unfamiliar stitches to learn. What you're really practicing is shaping: stacked hdc-increases that fan the head open, sc-increases that square off the outer edge, and the Turn Over rhythm that keeps every row lying flat instead of curling. Joining the white yarn back into the foundation loop for the belly is the one move that takes a moment to click. The fins add a single new trick each - a ch-3 picot for the side fins, and a ch6 worked back down through the back loops for the dorsal. Budget one to two hours for your first square, then closer to forty-five minutes",
          "raw_text": "Everything in the shark itself is half double crochet and single crochet, so there are no unfamiliar stitches to learn. What you're really practicing is shaping: stacked hdc-increases that fan the head open, sc-increases that square off the outer edge, and the Turn Over rhythm that keeps every row lying flat instead of curling. Joining the white yarn back into the foundation loop for the belly is the one move that takes a moment to click. The fins add a single new trick each - a ch-3 picot for the side fins, and a ch6 worked back down through the back loops for the dorsal. Budget one to two hours for your first square, then closer to forty-five minutes",
          "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 granny square measures about 3.35 inches by 3.35 inches in DK weight on a 3.00mm hook - small, dense, and pleasingly stiff, the kind of fabric that holds a crisp edge when you seam it. The shark reads clearly even at that scale: a blue upper face, a white belly, a jagged red mouth embroidered across the white, and French-knot eyes with a tiny white shine stitch. Grey makes a great background because it reads as turbulent ocean water. Make one as a coaster or bag patch, or make thirty for a shark blanket that will absolutely be someone's favorite thing. It's a brilliant scrap-buster and a very giftable little object",
          "raw_text": "The finished granny square measures about 3.35 inches by 3.35 inches in DK weight on a 3.00mm hook - small, dense, and pleasingly stiff, the kind of fabric that holds a crisp edge when you seam it. The shark reads clearly even at that scale: a blue upper face, a white belly, a jagged red mouth embroidered across the white, and French-knot eyes with a tiny white shine stitch. Grey makes a great background because it reads as turbulent ocean water. Make one as a coaster or bag patch, or make thirty for a shark blanket that will absolutely be someone's favorite thing. It's a brilliant scrap-buster and a very giftable little object",
          "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 fell for this square the moment the second color went in. You work the blue upper face first - six hdc, turn over, a row of increases, a row of sc - and it looks like nothing much. Then you join white back into that original ch-4 loop, work three quick rows, seam the edges where the blue and white meet, and suddenly there's a face looking at you. That's the trick I keep coming back to: the whole head grows out of one tiny foundation loop, with no floats, no bobbins, and no tangled mess in my lap. I also love that the final sc row does double duty - the (sc-inc)×3 groups fill the corners so the piece sits flat, and they give you a tidy surface to sew into later. The fins are almost comically fast: ch1, (1hdc + ch-3 pic + 1hdc), ch1, sl st and you have a side fin, while the dorsal is just a ch6 worked back down through the back loops into a point. And the size is so satisfying. At 3.35 inches on a 3.00mm hook, the fabric is dense enough that the shark's grin holds its shape after a wash. I've made a stack of them while half-watching a film, and every single one made me laugh a little",
          "raw_text": "I fell for this square the moment the second color went in. You work the blue upper face first - six hdc, turn over, a row of increases, a row of sc - and it looks like nothing much. Then you join white back into that original ch-4 loop, work three quick rows, seam the edges where the blue and white meet, and suddenly there's a face looking at you. That's the trick I keep coming back to: the whole head grows out of one tiny foundation loop, with no floats, no bobbins, and no tangled mess in my lap. I also love that the final sc row does double duty - the (sc-inc)×3 groups fill the corners so the piece sits flat, and they give you a tidy surface to sew into later. The fins are almost comically fast: ch1, (1hdc + ch-3 pic + 1hdc), ch1, sl st and you have a side fin, while the dorsal is just a ch6 worked back down through the back loops into a point. And the size is so satisfying. At 3.35 inches on a 3.00mm hook, the fabric is dense enough that the shark's grin holds its shape after a wash. I've made a stack of them while half-watching a film, and every single one made me laugh a little",
          "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 gets fun. The sample uses blue for the upper face, white for the belly, red for the jagged teeth, black for the eyes, and grey for the background square that stands in for turbulent ocean water. Swap the blue for storm grey and you get a classic great white; charcoal on top with a near-white belly gives a hammerhead feel; bright coral or lilac makes a cartoon shark that kids adore, and a deep navy body over a silver-grey belly turns it into a moody deep-sea version. Try Paintbox Simply DK or Scheepjes Catona (go up a hook size for Catona's finer gauge) - both come in enough shades to build a full ocean palette, and the background square is a great place to use a variegated blue. Size is easy to change. Swapping DK and a 3.00mm hook for worsted and a 4.00mm pushes the finished square closer to 4.5 inches, which is handy if you're combining it with standard granny squares in a blanket. To grow the block without changing yarn, work an extra repeat or two of Round 2-3 on the background granny square before the final round, and give the shark a little more breathing room in the middle. For a truly oversized cushion panel, hold two strands of DK together with a 5.00mm hook. Seasonally, a pale mint shark on a white background feels like summer, while a grey shark trimmed in tinsel-flecked white yarn is a surprisingly charming winter joke. Make a shoal in five graded blues and arrange them light to dark across a blanket. And if you'd rather not build a whole blanket, sew a single shark appliqué straight onto a tote pocket, a beach bag, or the front of a kid's hoodie",
          "raw_text": "Color is where this square gets fun. The sample uses blue for the upper face, white for the belly, red for the jagged teeth, black for the eyes, and grey for the background square that stands in for turbulent ocean water. Swap the blue for storm grey and you get a classic great white; charcoal on top with a near-white belly gives a hammerhead feel; bright coral or lilac makes a cartoon shark that kids adore, and a deep navy body over a silver-grey belly turns it into a moody deep-sea version. Try Paintbox Simply DK or Scheepjes Catona (go up a hook size for Catona's finer gauge) - both come in enough shades to build a full ocean palette, and the background square is a great place to use a variegated blue. Size is easy to change. Swapping DK and a 3.00mm hook for worsted and a 4.00mm pushes the finished square closer to 4.5 inches, which is handy if you're combining it with standard granny squares in a blanket. To grow the block without changing yarn, work an extra repeat or two of Round 2-3 on the background granny square before the final round, and give the shark a little more breathing room in the middle. For a truly oversized cushion panel, hold two strands of DK together with a 5.00mm hook. Seasonally, a pale mint shark on a white background feels like summer, while a grey shark trimmed in tinsel-flecked white yarn is a surprisingly charming winter joke. Make a shoal in five graded blues and arrange them light to dark across a blanket. And if you'd rather not build a whole blanket, sew a single shark appliqué straight onto a tote pocket, a beach bag, or the front of a kid's hoodie",
          "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": "Treating the ch-2 as a turning chain",
          "value": "The pattern says ch2 as a standing st - that chain IS your first hdc. Do not work another hdc into the same base stitch, and do count it when you get to the end of the row. If you finish a row one stitch short every time, this is almost always why",
          "raw_text": "The pattern says ch2 as a standing st - that chain IS your first hdc. Do not work another hdc into the same base stitch, and do count it when you get to the end of the row. If you finish a row one stitch short every time, this is almost always why",
          "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 into the foundation loop's",
          "value": "Row 5 joins the white yarn back into the same ch-4 foundation loop the blue half started from. Insert your hook into the ring's open center, not into one of the four chain stitches, so both halves of the face pivot around one clean point. If the center starts to gape, snug the loop's tail gently once the two halves are seamed together",
          "raw_text": "Row 5 joins the white yarn back into the same ch-4 foundation loop the blue half started from. Insert your hook into the ring's open center, not into one of the four chain stitches, so both halves of the face pivot around one clean point. If the center starts to gape, snug the loop's tail gently once the two halves are seamed together",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "mistake",
          "code": "mistake-3",
          "label": "Skipping the Turn Over instruction and",
          "value": "Rows 3, 4, 6 and 7 all begin with Turn Over - that alternation is what keeps the piece flat and the fabric identical front and back. Working every row on one face makes the head bow, and it will not lie flat when you sew it to the background square. If a section cups, unpick to the last turn and check your row order",
          "raw_text": "Rows 3, 4, 6 and 7 all begin with Turn Over - that alternation is what keeps the piece flat and the fabric identical front and back. Working every row on one face makes the head bow, and it will not lie flat when you sew it to the background square. If a section cups, unpick to the last turn and check your row order",
          "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": "Misreading (hdc-inc)×2 as two separate",
          "value": "An hdc-inc means two hdc worked into the SAME stitch, so (hdc-inc)×2 consumes two base stitches and produces four hdc. Getting this wrong halves your growth rate and the head ends up narrow and pointed instead of fanning out",
          "raw_text": "An hdc-inc means two hdc worked into the SAME stitch, so (hdc-inc)×2 consumes two base stitches and produces four hdc. Getting this wrong halves your growth rate and the head ends up narrow and pointed instead of fanning out",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "mistake",
          "code": "mistake-5",
          "label": "Cutting the yarn flush at each fasten",
          "value": "Rows 4 and 7 and all three fins end with a fasten off, so you'll collect a lot of ends. Leave at least a 6-inch tail on each one - Row 7 asks you to seam the blue and white edges together with white yarn, and the fin tails are what anchor those little picot flaps neatly. Using the tails saves you weaving in twice and makes the joins invisible",
          "raw_text": "Rows 4 and 7 and all three fins end with a fasten off, so you'll collect a lot of ends. Leave at least a 6-inch tail on each one - Row 7 asks you to seam the blue and white edges together with white yarn, and the fin tails are what anchor those little picot flaps neatly. Using the tails saves you weaving in twice and makes the joins invisible",
          "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": "Letting the outer sc rows pull tight so",
          "value": "The sc rows with their (sc-inc)×3 groups set the size of the shark, and Round 4 of the background sets the size of the block. Crocheters tend to tension single crochet more firmly than hdc, so consciously loosen up on those rows, or step up to a 3.25mm hook just for them. Block the finished square lightly to true up the edges before assembly",
          "raw_text": "The sc rows with their (sc-inc)×3 groups set the size of the shark, and Round 4 of the background sets the size of the block. Crocheters tend to tension single crochet more firmly than hdc, so consciously loosen up on those rows, or step up to a 3.25mm hook just for them. Block the finished square lightly to true up the edges before assembly",
          "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 —5 colors, the sample is made with DK Sports. The finished granny square is about 3.35 inches by 3.35 inches.",
              "raw_text": "Yarn of your choice —5 colors, the sample is made with DK Sports. The finished granny square is about 3.35 inches by 3.35 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": "Sample colors: blue for the upper face, white for the belly, red for the mouth, black for the eyes, and grey for the background square",
              "raw_text": "We use red yarn to highlight the awful teeth. White yarn for the lower part of the shark's face and blue yarn for the upper part. Black yarn for the French knot eyes. I used grey yarn to represent the turbulent waves of the ocean."
            }
          ]
        }
      ],
      "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-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": 13,
          "row_type": "abbrev",
          "code": "abbrev-pic",
          "label": "pic",
          "value": "picot stitch",
          "raw_text": "pic = picot stitch",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": "pic",
          "meaning": "picot stitch"
        }
      ]
    },
    {
      "order": 8,
      "card_type": "part",
      "code": "main-pattern",
      "title": "Shark's Body",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "main-pattern-info-3",
          "label": "Info",
          "value": "We start by crocheting the shark head in rows, using blue yarn for the upper part of the shark's face and white yarn for the lower part. After that, we add the dorsal fin and the side fins. Row 1 makes the foundation loop that both halves of the face are worked from.",
          "raw_text": "We will start by crocheting the shark head in rows, using white yarn for the lower part of the shark's face and blue yarn for the upper part. After that, we will add the dorsal fin and side fins in the last round of the body. Row 1-Foundation Loop",
          "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": "main-pattern-round-1",
          "label": "Row 1",
          "value": "Knot, ch4, sl st to the first ch to form a loop.",
          "raw_text": "Row 1 Knot, ch4, sl st to the first ch to form a loop.",
          "round_start": 1,
          "round_end": 1,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "info",
          "code": "main-pattern-info-1",
          "label": "Info",
          "value": "Row 2 starts the upper blue part of the shark's face.",
          "raw_text": "Row 2- start crochet the upper blue part",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "main-pattern-round-2",
          "label": "Row 2",
          "value": "ch2 as a standing st, 6hdc.",
          "raw_text": "Row 2 ch2 as a standing st, 6hdc.",
          "round_start": 2,
          "round_end": 2,
          "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": "Row 3",
          "value": "Turn Over. ch2 as a standing st, (hdc-inc)×2, 2hdc, (hdc-inc)×2.",
          "raw_text": "Row 3 Turn Over . ch2 as a standing st, (hdc-inc)×2, 2hdc, (hdc-inc)×2.",
          "round_start": 3,
          "round_end": 3,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 6,
          "row_type": "round",
          "code": "main-pattern-round-4",
          "label": "Row 4",
          "value": "Turn Over. ch1, 1sc, (sc-inc)×3, 2sc, (sc-inc)×3, 1sc, fasten off (16).",
          "raw_text": "Row 4 Turn Over . ch1, 1sc, (sc-inc)×3, 2sc, (sc-inc)×3, 1sc, fasten off (16).",
          "round_start": 4,
          "round_end": 4,
          "is_range": false,
          "stitch_count": 16,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 7,
          "row_type": "info",
          "code": "main-pattern-info-2",
          "label": "Info",
          "value": "Row 5 starts the white belly - the lower part of the shark's face. Join the white yarn back into the original ch-4 foundation loop.",
          "raw_text": "Row 5- the white belly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 8,
          "row_type": "round",
          "code": "main-pattern-round-5",
          "label": "Row 5",
          "value": "Join white yarn to the foundation loop, ch2 as a standing st, 4hdc.",
          "raw_text": "Row 5 Join white yarn to the foundation loop, ch2 as a standing st, 4hdc.",
          "round_start": 5,
          "round_end": 5,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 9,
          "row_type": "round",
          "code": "main-pattern-round-6",
          "label": "Row 6",
          "value": "Turn over. ch2 as a standing st, (hdc-inc)×4.",
          "raw_text": "Row 6 Turn over. ch2 as a standing st, (hdc-inc)×4.",
          "round_start": 6,
          "round_end": 6,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 10,
          "row_type": "round",
          "code": "main-pattern-round-7",
          "label": "Row 7",
          "value": "Turn Over. ch1, (sc-inc)×3, 2sc, (sc-inc)×3. With white yarn, seam the edges where the blue and white parts meet, then fasten off.",
          "raw_text": "Row 7 Turn Over . ch1, (sc-inc)×3, 2sc, (sc-inc)×3. With white yarn,  seam the edges  where the blue and white parts meet, then fasten off.",
          "round_start": 7,
          "round_end": 7,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 11,
          "row_type": "info",
          "code": "main-pattern-info-4",
          "label": "Add Three Fins",
          "value": "Two side fins and one pointed dorsal fin are worked into the third loop only (TLO) around the edge of the finished head. Turn the piece as directed before each one so the fins point the right way.",
          "raw_text": "Add Three Fins. TLO . Position it with the white part at the bottom.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 12,
          "row_type": "round",
          "code": "main-pattern-fin-1",
          "label": "Side Fin 1",
          "value": "TLO. Position it with the white part at the bottom. Join blue yarn to the 2nd white st on the right. ch1, (1hdc + ch-3 pic + 1hdc), ch1, sl st, fasten off.",
          "raw_text": "TLO . Position it  with the white part at the bottom . Join blue yarn to the 2nd white st on the right.  ch1 , ( 1hdc+ ch-3 pic+1hdc ),  ch1 , sl st, 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-fin-2",
          "label": "Side Fin 2",
          "value": "Rotate with the blue part at the bottom. Join blue yarn to the 1st white st on the right. ch1, (1hdc + ch-3 pic + 1hdc), ch1, sl st, fasten off. Then position it with the white part at the bottom again.",
          "raw_text": "Rotate with the blue part at the bottom . Join blue yarn to the 1st white st on the right.  ch1 , ( 1hdc+ ch-3 pic+1hdc ),  ch1 , sl st, fasten off. Then position it  with the white part at the bottom .",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 14,
          "row_type": "round",
          "code": "main-pattern-fin-3",
          "label": "Dorsal Fin",
          "value": "Join new yarn to the 2nd st right of the center top. ch6, return, sk1, BL of next 5 ch: slst, sc2tog, 1hdc, 1dc. sk2, sl st, fasten off.",
          "raw_text": "Join new yarn to the 2nd st right of the center top. ch6, return, sk1, BL of next 5 ch: slst, sc2tog, 1hdc, 1dc. sk2, sl st, fasten off.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 15,
          "row_type": "info",
          "code": "main-pattern-info-5",
          "label": "Facial Details",
          "value": "For the mouth: using red yarn, embroider a jagged zigzag line across the center of the white belly part.",
          "raw_text": "For the mouth:  Using red yarn,  embroider  a  jagged zigzag line  across the center of the white belly part.",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 16,
          "row_type": "info",
          "code": "main-pattern-info-6",
          "label": "Facial Details",
          "value": "For the eyes: embroider two French knots for the eyes with black yarn on the upper blue section of the shark's head, spacing them evenly on both sides and placing them above the white area. Then add a small white stitch in the center of each knot to create a shine effect.",
          "raw_text": "For the eyes:  Embroider  two French knots for the eyes  with black yarn on the upper blue section of the shark's head, spacing them evenly on both sides and placing  them above the white area. Then add  a small white stitch in the center of each knot  to create a shine effect.",
          "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": "Background - Solid Granny Square",
      "raw_heading": "",
      "quantity": 1,
      "groups": [],
      "rows": [
        {
          "order": 1,
          "row_type": "info",
          "code": "part-2-info-1",
          "label": "Info",
          "value": "Crochet a solid granny square as the background for the shark. I used grey yarn to represent the turbulent waves of the ocean.",
          "raw_text": "Crochet a  Solid Granny Square  as a background. I used grey yarn to represent the turbulent waves of the ocean.",
          "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-round-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-3",
          "label": "Round 2-3",
          "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-3: 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": 3,
          "is_range": true,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "round",
          "code": "part-2-round-4",
          "label": "Round 4",
          "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 4: 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": 4,
          "round_end": 4,
          "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": "Assemble",
          "value": "Sew the shark appliqué to the center of the solid granny square.",
          "raw_text": "Assemble Sew the shark piece to the center of the solid granny square.",
          "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": "💡 Gauge matters more than usual here because you'll be seaming these together. Make one square first and measure it — if it's noticeably off 3.35 inches, adjust your hook by 0.25mm rather than changing your tension, since inconsistent tension across thirty squares is far worse than a slightly different hook",
          "raw_text": "💡 Gauge matters more than usual here because you'll be seaming these together. Make one square first and measure it — if it's noticeably off 3.35 inches, adjust your hook by 0.25mm rather than changing your tension, since inconsistent tension across thirty squares is far worse than a slightly different hook",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "info",
          "code": "note-2",
          "label": "Note",
          "value": "💡 The 3.00mm hook is deliberately small for DK weight. That tight gauge is what makes the shark's shape crisp and stops the join between the blue and white halves from gaping. Resist the urge to size up for speed — a loose fabric here makes the face blur",
          "raw_text": "💡 The 3.00mm hook is deliberately small for DK weight. That tight gauge is what makes the shark's shape crisp and stops the join between the blue and white halves from gaping. Resist the urge to size up for speed — a loose fabric here makes the face blur",
          "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 bundles of each of your five colors before you start rather than working from full balls. The fins and facial details only use a few yards each, and having five full skeins rolling around while you rotate the piece is genuinely miserable",
          "raw_text": "💡 Wind small butterfly bundles of each of your five colors before you start rather than working from full balls. The fins and facial details only use a few yards each, and having five full skeins rolling around while you rotate the piece is genuinely miserable",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "info",
          "code": "note-4",
          "label": "Note",
          "value": "💡 Drop a stitch marker into the first stitch of each row while you work the head. When you Turn Over repeatedly it's very easy to lose track of which end is the start, and a marker saves you recounting a whole row of hdc",
          "raw_text": "💡 Drop a stitch marker into the first stitch of each row while you work the head. When you Turn Over repeatedly it's very easy to lose track of which end is the start, and a marker saves you recounting a whole row of hdc",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": null,
          "answer": null,
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "info",
          "code": "note-5",
          "label": "Note",
          "value": "💡 Weave your ends in as you finish each stage, not at the end. Between the two halves of the head, three fins, the embroidery and the background square you can accumulate a dozen tails, and a wall of ends at the finish line is the reason half-made shark blankets live in cupboards",
          "raw_text": "💡 Weave your ends in as you finish each stage, not at the end. Between the two halves of the head, three fins, the embroidery and the background square you can accumulate a dozen tails, and a wall of ends at the finish line is the reason half-made shark blankets live in cupboards",
          "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 each square before you seam. A quick spray-block on a foam mat, pinned to a 3.35-inch template square, makes every block identical and turns a wobbly blanket into a professional-looking one",
          "raw_text": "💡 Block each square before you seam. A quick spray-block on a foam mat, pinned to a 3.35-inch template square, makes every block identical and turns a wobbly blanket into a professional-looking one",
          "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 know tapestry crochet or",
          "value": "No — and that's the whole appeal. The shark head is worked flat in rows, blue first and then white joined back into the same foundation loop, so you only ever carry one color at a time. The finished piece is sewn onto a plain granny square as an appliqué, which gives you colorwork results with nothing but hdc and sc",
          "raw_text": "No — and that's the whole appeal. The shark head is worked flat in rows, blue first and then white joined back into the same foundation loop, so you only ever carry one color at a time. The finished piece is sewn onto a plain granny square as an appliqué, which gives you colorwork results with nothing but hdc and sc",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Do I need to know tapestry crochet or intarsia for this shark square?",
          "answer": "No — and that's the whole appeal. The shark head is worked flat in rows, blue first and then white joined back into the same foundation loop, so you only ever carry one color at a time. The finished piece is sewn onto a plain granny square as an appliqué, which gives you colorwork results with nothing but hdc and sc",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 2,
          "row_type": "faq",
          "code": "faq-2",
          "label": "What if I only have worsted weight yarn instead of DK?",
          "value": "Worsted works fine — use a 4.00mm or 4.50mm hook and your square will come out closer to 4 to 4.5 inches instead of 3.35. Just be consistent across every square in a project so they seam together evenly",
          "raw_text": "Worsted works fine — use a 4.00mm or 4.50mm hook and your square will come out closer to 4 to 4.5 inches instead of 3.35. Just be consistent across every square in a project so they seam together evenly",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "What if I only have worsted weight yarn instead of DK?",
          "answer": "Worsted works fine — use a 4.00mm or 4.50mm hook and your square will come out closer to 4 to 4.5 inches instead of 3.35. Just be consistent across every square in a project so they seam together evenly",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 3,
          "row_type": "faq",
          "code": "faq-3",
          "label": "How many squares do I need for a baby blanket?",
          "value": "3.35 inches per square, a 30 x 36 inch baby blanket needs roughly 9 squares across by 11 down, so about 99 squares. Many makers alternate shark squares with plain solid granny squares to cut that number in half and let the sharks stand out",
          "raw_text": "3.35 inches per square, a 30 x 36 inch baby blanket needs roughly 9 squares across by 11 down, so about 99 squares. Many makers alternate shark squares with plain solid granny squares to cut that number in half and let the sharks stand out",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How many squares do I need for a baby blanket?",
          "answer": "3.35 inches per square, a 30 x 36 inch baby blanket needs roughly 9 squares across by 11 down, so about 99 squares. Many makers alternate shark squares with plain solid granny squares to cut that number in half and let the sharks stand out",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 4,
          "row_type": "faq",
          "code": "faq-4",
          "label": "Why does my square curl or refuse to lie flat?",
          "value": "Nine times out of ten it's a missed Turn Over, which stacks all your rows on one face. The other cause is too few increases — check that each (hdc-inc)×2 or (sc-inc)×3 group is worked as increases into the same stitch, not as plain stitches",
          "raw_text": "Nine times out of ten it's a missed Turn Over, which stacks all your rows on one face. The other cause is too few increases — check that each (hdc-inc)×2 or (sc-inc)×3 group is worked as increases into the same stitch, not as plain stitches",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "Why does my square curl or refuse to lie flat?",
          "answer": "Nine times out of ten it's a missed Turn Over, which stacks all your rows on one face. The other cause is too few increases — check that each (hdc-inc)×2 or (sc-inc)×3 group is worked as increases into the same stitch, not as plain stitches",
          "abbr": null,
          "meaning": null
        },
        {
          "order": 5,
          "row_type": "faq",
          "code": "faq-5",
          "label": "How do I add the shark's eye and mouth?",
          "value": "Both are embroidered after the head is finished. For the mouth, use red yarn to work a jagged zigzag line across the center of the white belly part. For the eyes, embroider two French knots in black yarn on the upper blue section, spaced evenly on both sides and sitting above the white area, then add a small white stitch in the center of each knot for a shine effect. Do this while the piece still lies flat, before you sew it to the background square",
          "raw_text": "Both are embroidered after the head is finished. For the mouth, use red yarn to work a jagged zigzag line across the center of the white belly part. For the eyes, embroider two French knots in black yarn on the upper blue section, spaced evenly on both sides and sitting above the white area, then add a small white stitch in the center of each knot for a shine effect. Do this while the piece still lies flat, before you sew it to the background square",
          "round_start": null,
          "round_end": null,
          "is_range": false,
          "stitch_count": null,
          "question": "How do I add the shark's eye and mouth?",
          "answer": "Both are embroidered after the head is finished. For the mouth, use red yarn to work a jagged zigzag line across the center of the white belly part. For the eyes, embroider two French knots in black yarn on the upper blue section, spaced evenly on both sides and sitting above the white area, then add a small white stitch in the center of each knot for a shine effect. Do this while the piece still lies flat, before you sew it to the background square",
          "abbr": null,
          "meaning": null
        }
      ]
    }
  ],
  "conflicts": [],
  "validation_warnings": [],
  "images": [
    "data/images/crochet-shark-granny-square-free-pattern-hero.webp",
    "data/images/crochet-shark-granny-square-free-pattern-step-2.webp",
    "data/images/crochet-shark-granny-square-free-pattern-step-3.webp",
    "data/images/crochet-shark-granny-square-free-pattern-step-4.webp"
  ],
  "source_url": null,
  "thumbnail_images": [
    {
      "url": "data/images/crochet-shark-granny-square-free-pattern-hero.webp",
      "alt": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block — photo 1",
      "is_featured": true
    }
  ],
  "gallery_images": [
    {
      "url": "data/images/crochet-shark-granny-square-free-pattern-hero.webp",
      "alt": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block — photo 1",
      "is_featured": true
    },
    {
      "url": "data/images/crochet-shark-granny-square-free-pattern-step-2.webp",
      "alt": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block — photo 2",
      "is_featured": false
    },
    {
      "url": "data/images/crochet-shark-granny-square-free-pattern-step-3.webp",
      "alt": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block — photo 3",
      "is_featured": false
    },
    {
      "url": "data/images/crochet-shark-granny-square-free-pattern-step-4.webp",
      "alt": "Crochet Shark Granny Square - Free Pattern for a Playful 3.35\" Block — photo 4",
      "is_featured": false
    }
  ],
  "_sanitized_holiday_count": 0,
  "_squarelab_heal": {
    "ts": 1786167984,
    "rounds_healed": 1,
    "note": "stitch counts derived by the Square Lab math brain"
  }
}