This holder keeps grocery bags tidy and still looks nice on a kitchen wall. It is a tall filet mesh tube with columns of solid hearts. Solid single crochet bands sit at the top and bottom, a corded rim finishes the top, and a covered ring lets it hang from a hook.
Use one color per holder. Lavender looks soft and calm, and bright red is bold and cheerful. Both work well, and making one of each gives you a matching pair. All terms are US crochet terms.
The finished holder is 14 in (35.6 cm) around, about 4.5 in (11.4 cm) across and 17.75 in (45.1 cm) tall. With the ring it hangs about 20.5 in (52.1 cm) tall.
You work the body flat in rows: a sc band, 28 filet rows and a second sc band. Then you seam the panel into a tube, work a gathered bottom opening and a corded top rim, and sew on a covered ring.
Finished Size and Construction
- Finished size: 14 in (35.6 cm) around, 7 in (17.8 cm) wide laid flat, 17.75 in (45.1 cm) tall
- Height including ring: about 20.5 in (52.1 cm)
- Skill level: Easy to intermediate (basic filet crochet)
- Terminology: US
- Yarn weight: Worsted (#4)
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 body panel (seamed into a tube) and 1 covered ring
- Layout: One tube with 2 heart columns, one facing front and one facing back, 3 hearts each
- Flat panel size: 14.25 in × 16 in (36.2 cm × 40.6 cm)
- Size before edging: 14 in (35.6 cm) around × 16 in (40.6 cm) tall
- Edging depth: bottom about 1.25 in (3.2 cm), top rim 0.5 in (1.3 cm)
- Bottom opening: about 2.5 in (6.4 cm) across
Materials
Choose a smooth worsted cotton or cotton blend. Cotton keeps the mesh crisp and stands up to being pulled every day. Acrylic also works, but it stretches more, so block it lightly.
- Main color (lavender or red): 140 g, about 280 m (306 yd)
These quantities include a margin of about 10% for the gauge swatch and small differences in tension.
Tools:
– 5.0 mm (H-8) crochet hook
– 1 metal or wooden ring, 2.75 in (7.0 cm) outer diameter
– Tapestry needle
– 4 stitch markers
– Scissors
– Measuring tape
– Rust-proof pins and a blocking mat
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- dc – double crochet
- sc2tog – single crochet 2 together
- sk – skip
- sp – space
- st(s) – stitch(es)
- RS / WS – right side / wrong side
Special stitches:
– Open block: ch 1, sk 1 st, dc in next st. (2 sts)
– Solid block: over a ch-1 sp, dc in the sp, then dc in the next dc. Over a solid block, dc in each of the next 2 dc. (2 sts)
– Reverse sc (crab stitch): Work sc from left to right (right-handed). Insert the hook in the next st to the right, yo, pull up a loop, yo, pull through both loops.
Each row begins with ch 3, which counts as the first dc. Each block is 2 sts wide, so 28 blocks + 1 starting dc = 57 sts.
Gauge and Checkpoints
Gauge: 16 sts and 8 dc rows = 4 in (10.2 cm) in filet. One block measures 0.5 in (1.3 cm) square. In sc, 16 sts and 16 rows = 4 in (10.2 cm).
Test piece: Ch 18. Work 4 rows of 17 sc, then 8 rows of open blocks (8 blocks per row). Block it flat. It should measure 4.25 in (10.8 cm) wide and 3 in (7.6 cm) tall: 1 in (2.5 cm) of sc plus 2 in (5.1 cm) of filet… Measure and compare:
- After the 4 sc rows: 1 in (2.5 cm) tall
- After the 8 filet rows: 3 in (7.6 cm) tall in total
If your swatch is too big, use a 4.5 mm hook. If it is too small, use a 5.5 mm hook. If only the row height is off, adjust how far you pull up the loop on each dc. Do not change the stitch counts.
Panel checkpoints:
– After Row 4: 14.25 in (36.2 cm) wide, 1 in (2.5 cm) tall
– After Row 12: 5 in (12.7 cm) tall
– After Row 32: 15 in (38.1 cm) tall
– After Row 36: 16 in (40.6 cm) tall

Body Panel
Bottom Band
Foundation: Ch 58.
Row 1 (RS): Sc in the 2nd ch from the hook and in each ch across, turn. (57 sc)
Rows 2–4: Ch 1, sc in each st across, turn. (57 sc)
Filet Section
Every filet row starts with ch 3, which counts as a dc. After that, work the blocks shown, each ending with a dc. Each row has 57 sts: dc plus ch-1 sps.
The layout is the same on RS and WS rows, so it reads the same from either end:
3 blocks open, Heart (7 blocks), 8 blocks open, Heart (7 blocks), 3 blocks open = 28 blocks
Heart rows (7 blocks each):
– H1: 3 open, 1 solid, 3 open
– H2: 2 open, 3 solid, 2 open
– H3: 1 open, 5 solid, 1 open
– H4: 7 solid
– H5: 7 solid
– H6: 1 open, 2 solid, 1 open, 2 solid, 1 open
The heart grows from its point (H1) up to its two lobes (H6). The single open block in the center of H6 makes the notch at the top.
Row 5: Ch 3, ch 1, sk 1 st, dc in next st; repeat from * 27 more times, turn. (28 open blocks: 29 dc, 28 ch-1 sps = 57 sts)
Row 6: Ch 3, ch 1, sk ch-1 sp, dc in next dc; repeat from * 27 more times, turn. (57 sts)
Row 7: Work the layout using H1. (31 dc, 26 ch-1 sps = 57 sts)
Row 8: Use H2. (35 dc, 22 ch-1 sps = 57 sts)
Row 9: Use H3. (39 dc, 18 ch-1 sps = 57 sts)
Rows 10–11: Use H4, then H5. (43 dc, 14 ch-1 sps = 57 sts each)
Row 12: Use H6. (37 dc, 20 ch-1 sps = 57 sts)
Checkpoint: 5 in (12.7 cm) tall. Each heart is 3.5 in (8.9 cm) wide and 3 in (7.6 cm) tall.
Rows 13–15: Repeat Row 6. (57 sts each)
Rows 16–21: Repeat Rows 7–12. (second pair of hearts)
Rows 22–24: Repeat Row 6.
Rows 25–30: Repeat Rows 7–12. (third pair of hearts)
Rows 31–32: Repeat Row 6.
Checkpoint: 15 in (38.1 cm) tall, with 28 filet rows.
Top Band
Row 33: Ch 1, sc in each dc and each ch-1 sp across, turn. That is 29 sc in the dc + 28 sc in the ch-1 sps = 57 sc.
Rows 34–36: Ch 1, sc in each st across, turn. (57 sc)
Fasten off and leave a 24 in (61 cm) tail.
Checkpoint: the panel measures 14.25 in × 16 in (36.2 cm × 40.6 cm).
Seaming the Tube
Fold the panel with the RS together so the two side edges line up row for row. Thread the tail onto the needle and whipstitch the edges together. Take one stitch per sc row and two stitches per dc row, catching the full edge stitch on each side. Keep the seam firm but flat. Turn the tube RS out.
The two edge stitches now lie side by side at the seam. In the edging rounds, treat them as one stitch: 57 − 1 = 56 sts around. That gives 56 sts ÷ 16 sts per 4 in = 14 in (35.6 cm).
Edging (Bottom Opening and Top Rim)
Edging gauge: 16 sc = 4 in (10.2 cm), one round = 0.25 in (0.6 cm). Mark the front center (block 7.5, the middle of the first heart column) and the back center (block 22).
Bottom Opening
Work into the free loops on the underside of the foundation chain. Start at the seam with the RS facing.
Rnd 1: Join yarn at the seam. Ch 1, sc in each st around, working the seam pair as one. Sl st to the first sc. (56 sc: 28 front half, 28 back half)
Rnd 2: Ch 1, sc in next 5 sts, sc2tog; repeat from * 7 more times, sl st to join. (48 sc: 24 + 24)
Rnd 3: Ch 1, sc in next 4 sts, sc2tog; repeat 8 times in total, join. (40 sc: 20 + 20)
Rnd 4: Ch 1, sc in next 3 sts, sc2tog; repeat 8 times in total, join. (32 sc: 16 + 16)
Rnd 5: Ch 1, reverse sc in each st around, join. (32 reverse sc)
Fasten off. The opening is 32 sts = 8 in (20.3 cm) around, which is about 2.5 in (6.4 cm) across.
Why the math works: 56 divides evenly into 8 repeats of 7 sts. Each round removes one stitch per repeat, so you lose 8 sts per round, spread evenly around. This makes the bottom curve in smoothly instead of forming points. The opening is wide enough to pull a bag out but small enough that the bags don’t fall out.
Top Rim
Rnd 1: Join at the seam into Row 36. Ch 1, sc in each st around, working the seam pair as one. Join. (56 sc: 28 + 28)
Rnd 2: Ch 1, reverse sc in each st around, join. (56 reverse sc)
Fasten off. Each edge is worked one stitch for one stitch, so the rim stays exactly 14 in (35.6 cm) around and doesn’t ruffle or pull in.
Covered Ring
Join yarn to the ring with a sl st. Work sc around the ring, about 54 sc, until the sts sit packed side by side with no metal or wood showing. Join with a sl st and leave a 16 in (40.6 cm) tail. The covered ring is about 3.25 in (8.3 cm) across.
Turn the seam at the joining round so it faces the bottom. Center the bottom 8 sc of the ring over the 8 rim sts centered on the back marker. The ring should overlap the inside of the rim by 0.5 in (1.3 cm). Whipstitch through both layers. Go around twice so the ring can carry the weight of a full load of bags.
Final Blocking
- Weave in all ends along the sc bands or inside dc posts, not across open meshes.
- Wet block: soak the holder in cool water, press out the water in a towel, and don’t wring it.
- Slide a rolled towel or a 4.5 in (11.4 cm) wide jar into the tube.
- Pat the tube to 14 in (35.6 cm) around and 16 in (40.6 cm) tall from the bottom of the foundation to the top of Row 36.
- Square up the meshes with your fingers so each open block is about 0.5 in (1.3 cm) square.
- Shape the bottom edging inward around the tube. Smooth the top rim flat.
- Let it dry completely standing upright, then take out the form.
Final Quality-Control Checklist
- [ ] Every filet row has 57 sts
- [ ] The panel is 14.25 in × 16 in (36.2 cm × 40.6 cm) before seaming
- [ ] There are 3 hearts in each of the 2 columns, and the H6 notches line up
- [ ] The seam is flat and has no gaps
- [ ] The tube is 14 in (35.6 cm) around, 56 sts in edging Rnd 1
- [ ] The bottom edging ends at 32 sts with an even curve
- [ ] The top rim lies flat at 56 sts
- [ ] The ring is centered on the back and sewn on twice
- [ ] All ends are hidden in the solid areas
Troubleshooting
The meshes are tall rectangles. Your dc are too tall. Pull up shorter loops or switch to a 4.5 mm hook.
The panel is getting narrower. You may be missing the last dc, which goes into the top of the turning ch-3. Count to 57 at the end of every row.
The heart is off-center. Check the 3 open blocks at the start of the row. Count blocks, not stitches.
The bottom edging has points. The decreases have drifted. Restart the round and place a marker after each sc2tog.
The ring tilts forward. Sew it lower and tighter to the inside of the rim, across all 8 sts.
The rim ruffles. You have more than 56 sts. Make sure you worked the seam pair as one stitch.
Care
Hand wash or machine wash cold on a gentle cycle. Reshape while damp and lay it flat or stand it upright to dry. If you use cotton, a warm iron through a cloth sharpens the mesh again.

Final Notes
The measurements build on each other. Your gauge is 16 sts and 8 rows = 4 in (10.2 cm), so each block is 0.5 in (1.3 cm). The 57-stitch panel measures 14.25 in (36.2 cm) wide and closes into a 56-stitch tube that is 14 in (35.6 cm) around. 28 filet rows plus 8 sc rows make 16 in (40.6 cm) of height. The edging adds about 1.75 in (4.4 cm), for a total of 17.75 in (45.1 cm). The bottom closes in from 56 to 32 sts, for an opening about 2.5 in (6.4 cm) across.
Check your gauge first, count every row, and the hearts will line up.
Happy crocheting!