This fish-shaped plastic bag holder keeps the bag pile under control and looks good doing it. It has a solid, rounded head with an open mouth at the bottom, a stretchy diamond-mesh body that narrows toward the tail, and cream fins that give it a friendly look. Two round eyes with a black pupil, white ring, and black outline finish the face.
The sample uses sage green for the head and mesh, cream for the fins, tail, and hanging loop, and small amounts of black and white for the eyes. A dusty rose body with the same cream trims works just as well. The look is soft, modern, and a little playful, and it suits a kitchen cabinet door or a pantry hook.
The pattern uses US crochet terms. The finished body measures about 18.25 in (46.4 cm) from mouth to tail cap and about 20.75 in (52.7 cm) to the tips of the tail fin, not counting the hanging loop. The head is 7.5 in (19.1 cm) wide when laid flat.
The body is one seamless piece worked in the round from the mouth up. You work the head in single crochet, switch to a chain-loop mesh, decrease the mesh in three steps, and then close the top. The fins, tail lobes, eyes, and hanging loop are small separate appliqués that you sew on at the end.
Finished Size and Construction
- Finished size: 7.5 in (19.1 cm) wide at the head, 18.25 in (46.4 cm) body length, 20.75 in (52.7 cm) including the tail fin
- Skill level: Easy-Intermediate
- Terminology: US crochet terms
- Yarn weight: Worsted (#4), cotton or cotton blend
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 main body plus 7 small appliqués (2 pectoral fins, 2 tail lobes, 2 eyes, 1 hanging loop), all sewn into one finished holder
- Layout: Single item: vertical fish with the mouth at the bottom and the tail at the top
- Head size: 15 in (38.1 cm) around, 4 in (10.2 cm) tall
- Size before border: Mouth opening 6 in (15.2 cm) around, 3 in (7.6 cm) wide flat
- Border depth: 0.4 in (1.0 cm) mouth edging
Materials
Pick a smooth worsted-weight cotton or cotton blend. Cotton holds its shape when the mesh is full of bags and doesn’t fuzz much. Acrylic also works, but it will stretch more over time.
- Sage green (Color A): 70 g, about 133 m
- Cream (Color B): 20 g, about 38 m
- White (Color C): 5 g, about 10 m
- Black (Color D): 5 g, about 10 m
All quantities include a small safety margin.
Tools:
- 5.0 mm (H-8) crochet hook
- Tapestry needle
- Stitch markers (at least 4)
- Scissors
- Measuring tape
- Rustproof pins for blocking and placing appliqués
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- sc2tog – single crochet 2 together
- inc – 2 sc in the same stitch
- rev sc – reverse single crochet (crab stitch)
- sk – skip
- st(s) – stitch(es)
- rnd(s) – round(s)
- ch-5 loop – a chain-5 space in the mesh
Special stitch – Mesh loop: Ch 5, then sc in the next ch-5 loop of the previous round. Each mesh round stacks a new row of diamonds on top of the last.
Reverse sc: Work single crochet from left to right (right-handed), inserting the hook into the next stitch to the right. This makes a corded edge.
Gauge and Checkpoints
Gauge: 16 sc and 18 rnds = 4 in (10.2 cm) in sc worked in the round.
Mesh gauge: 1 mesh round with ch-5 loops = about 0.75 in (1.9 cm) tall, unstretched.
The body is the gauge swatch. Work the head first and check it before you start the mesh.
Checkpoints:
- After Rnd 1: The mouth ring measures 6 in (15.2 cm) around.
- After Rnd 7: The head measures 15 in (38.1 cm) around, or 7.5 in (19.1 cm) across when flattened.
- After Rnd 18: The head is 4 in (10.2 cm) tall from the mouth.
- After Rnd 27: The mesh section is about 6.75 in (17.1 cm) tall, and the total length from the mouth is 10.75 in (27.3 cm).
- After Rnd 39: The body is 18.25 in (46.4 cm) long, lying flat and unstretched.
If the head is too big: Go down a hook size, to 4.5 mm. If it’s too small: Go up to 5.5 mm. A head that’s 0.5 in (1.3 cm) off in width will make the whole fish noticeably slimmer or wider, so fix it before moving on. The mesh is forgiving in length, so you can add or remove one straight mesh round in Rnds 20–27 if needed.

Main Body (Color A, Sage)
Work in continuous joined rounds. Join each round with a sl st to the first sc, and ch 1 at the start of each round (the ch 1 doesn’t count as a stitch).
Head (Mouth Up)
Foundation: Ch 24, sl st into the first ch to form a ring. Be careful not to twist it.
Rnd 1: Ch 1, sc in each ch around, sl st to the first sc. (24 sts)
Rnd 2: (Sc 3, inc) 6 times. (30 sts)
Rnd 3: (Sc 4, inc) 6 times. (36 sts)
Rnd 4: (Sc 5, inc) 6 times. (42 sts)
Rnd 5: (Sc 6, inc) 6 times. (48 sts)
Rnd 6: (Sc 7, inc) 6 times. (54 sts)
Rnd 7: (Sc 8, inc) 6 times. (60 sts)
The head is now 15 in (38.1 cm) around. This is Checkpoint 2.
Rnds 8–18: Sc in each st around. (60 sts each round)
You now have a rounded bowl, 4 in (10.2 cm) tall, with the mouth opening at the base. Place a marker at the round’s start. That point is the center back, so the eyes go on the opposite side.
Mesh Body
Rnd 19 (mesh setup): Ch 1, sc in the first st, *ch 5, sk 3 sts, sc in the next st; rep from * 13 more times, ch 5, sk 3 sts, sl st in the first sc. (15 sc + 15 ch-5 loops: 60 sts ÷ 4 = 15 loops)
Rnds 20–27: Sl st into each of the next 3 ch to reach the center of the first loop, ch 1, sc in the same loop, *ch 5, sc in the next loop; rep from * 13 more times, ch 5, sl st in the first sc. (15 loops each round)
Checkpoint 4: the mesh is about 6.75 in (17.1 cm) tall.
Rnd 28 (decrease): Sl st to the center of the first loop, ch 1, sc in the same loop, (ch 5, sc in next loop) 3 times, ch 5, sk next loop, *sc in next loop, (ch 5, sc in next loop) 3 times, ch 5, sk next loop; rep from * once more, sl st in the first sc. (12 loops: 15 loops − 3 skipped)
Rnds 29–31: Work as Rnds 20–27, with 11 repeats from * instead of 14. (12 loops each round)
Rnd 32 (decrease): Sl st to the center of the first loop, ch 1, sc in the same loop, (ch 5, sc in next loop) 2 times, ch 5, sk next loop, *sc in next loop, (ch 5, sc in next loop) 2 times, ch 5, sk next loop; rep from * once more, sl st in the first sc. (9 loops: 12 loops − 3 skipped)
Rnds 33–34: Work as Rnds 20–27, with 8 repeats from * instead of 14. (9 loops each round)
Rnd 35 (decrease): Sl st to the center of the first loop, ch 1, sc in the same loop, ch 5, sc in next loop, ch 5, sk next loop, *sc in next loop, ch 5, sc in next loop, ch 5, sk next loop; rep from * once more, sl st in the first sc. (6 loops: 9 loops − 3 skipped)
Rnd 36: Work as Rnds 20–27, with 5 repeats from * instead of 14. (6 loops)
The 18 mesh rounds (Rnds 19–36) measure about 13.5 in (34.3 cm), and the body now tapers toward the tail.
Tail Cap
Rnd 37 (conversion): Sl st to the center of the first loop, ch 1, 3 sc in each ch-5 loop around, sl st in the first sc. (6 loops × 3 sc = 18 sts)
Change to Color B (cream).
Rnd 38: (Sc 1, sc2tog) 6 times. (12 sts)
Rnd 39: Sc2tog 6 times. (6 sts)
Fasten off, leaving a 6 in (15.2 cm) tail. Thread it through the front loops of the last 6 sts, pull tight to close, and secure. The body is now 18.25 in (46.4 cm) long.
Appliqués
Eyes (Make 2)
Rnd 1: With Color D (black), make a magic ring, 6 sc in the ring, sl st to the first sc. (6 sts) Change to Color C.
Rnd 2: With Color C (white), 2 sc in each st around, sl st to the first sc. (12 sts) Change to Color D.
Rnd 3: With Color D, sl st loosely in each st around. (12 sl sts)
Fasten off, leaving a 10 in (25.4 cm) tail for sewing. Each eye is about 1.1 in (2.8 cm) across.
Pectoral Fins (Make 2, Color B)
These are flat triangles that you edge into pointed, leaf-shaped fins.
Row 1: Ch 11, sc in the 2nd ch from the hook and in each ch across. (10 sts)
Row 2: Ch 1, turn, sc2tog, sc to the end. (9 sts)
Row 3: Ch 1, turn, sc to the last 2 sts, sc2tog. (8 sts)
Rows 4–10: Repeat Rows 2 and 3 alternately, finishing with a Row 2 repeat. (7, 6, 5, 4, 3, 2, 1 sts)
Edging: Ch 1, do not turn. Sc evenly down the side, along the base, and up the other side, working 3 sc in the tip st. Sl st to join.
Fasten off, leaving a 12 in (30.5 cm) sewing tail. Each fin measures about 2.75 in (7.0 cm) across the base and 2.5 in (6.4 cm) to the point.
Tail Lobes (Make 2, Color B)
Work as for the pectoral fins, but start with ch 13 (12 sts in Row 1) and decrease every row through Row 12, which ends with 1 st. Then work the same edging. Each lobe measures about 3.25 in (8.3 cm) across the base and 3 in (7.6 cm) to the point.
Hanging Loop (Color B)
Ch 16, then sl st in the 2nd ch from the hook and in each ch across. (15 sl sts) Fasten off, leaving long tails at both ends. Folded in half, the loop stands about 1.75 in (4.4 cm) tall.
Border (Mouth Edging)
This item is a single fish, so the border is one round edging worked around the mouth opening. There are no corners or sides to count.
Border gauge: Same as the body, 16 sc = 4 in (10.2 cm).
Turn the body upside down so the mouth faces up. Join Color A in any free loop of the foundation chain.
Border Rnd 1: Ch 1, sc in each foundation ch around, sl st to the first sc. (24 sc worked 1 per existing ch + 0 extra = 24 sts)
Border Rnd 2: Ch 1, rev sc in each st around, sl st to the first st. (24 sts)
Fasten off and weave in the end.
Why the math works: At 16 sts per 4 in, 24 sts give exactly 6 in (15.2 cm) around. That matches the foundation ring, so the edge won’t ruffle or pucker. The rev sc adds firmness without adding stitches, and the opening stays 3 in (7.6 cm) wide flat. That’s wide enough to pull a bag out, but snug enough to hold the rest in.
Assembly
- Flatten the head. Lay the body flat with the center-back marker at the back. The two side folds are where the fins go.
- Eyes: Center them on the front between Rnds 10 and 14, with 8 sts between the eye centers, about 2 in (5.1 cm). Pin them, then whipstitch around the outer black round.
- Pectoral fins: Pin the base of each fin vertically along a side fold, between Rnds 12 and 16. Tilt the points slightly upward toward the tail. Whipstitch along the full base.
- Tail lobes: Pin the two lobe bases together at the closed cream cap, then angle the points up and outward to make a V. Sew the bases to Rnds 38–39 and to each other.
- Hanging loop: Fold the loop in half and sew both ends securely to the center top, between the two lobes.
Final Blocking
- Weave in all ends before blocking.
- Lightly spray the whole holder with water until it’s damp but not soaked.
- Lay it flat on a blocking mat. Pat the head into a rounded shape 7.5 in (19.1 cm) wide.
- Straighten the mesh into even diamonds without stretching it lengthwise. Check that the body is 18.25 in (46.4 cm) long.
- Pin each fin and tail lobe flat at its point so the tips stay crisp.
- Let it dry completely, about 12–24 hours, before you hang it.
Final Quality-Control Checklist
- Head width is 7.5 in (19.1 cm) flat.
- Mouth opening is 6 in (15.2 cm) around, and the rev sc edge lies flat.
- Every mesh round has the correct loop count: 15, 12, 9, 6.
- The diamonds are evenly sized, with no twisted loops.
- The tail cap is fully closed, with no gap.
- The eyes are level and symmetrical.
- The fins point upward at matching angles.
- The hanging loop holds firmly when you pull on it.
- All ends are woven in and trimmed.
Troubleshooting
The mesh spirals or leans: You probably missed the 3 sl sts that move you to the center of the loop. Always start each round from the middle of the first loop.
Wrong loop count after a decrease round: Count your ch-5 loops before joining. Each decrease round should skip exactly 3 loops.
The head cups or ruffles: If it cups, your tension is tight, so go up a hook size. If it ruffles, it’s loose, so go down a hook size.
The fins flop: Use a slightly tighter tension, or add a second sc edging round.
The mouth stretches open: Work Border Rnd 1 with a 4.5 mm hook.
The eyes sit crooked: Count the stitches from the center-back marker before pinning.
Care
Hand wash in cool water and lay flat to dry, reshaping the mesh while it’s damp. Don’t tumble dry, because the heat can distort the fins.

Final Notes
The measurement chain is simple. A 24-st mouth gives you 6 in (15.2 cm). Seven increase rounds build a head 15 in (38.1 cm) around. The 60 sts divide evenly into 15 mesh loops, which decrease to 12, then 9, then 6. Those 6 loops convert to 18 sc and close to 6. If your head matches gauge, the rest of the fish follows, giving you a body 18.25 in (46.4 cm) long and a total length of 20.75 in (52.7 cm) to the tail tips.
To fill the holder, push bags in through the mouth and up into the mesh. Then pull them out one at a time from the bottom. The same pattern works in any color, so try a rose fish next to a sage one.
Happy crocheting!