This plastic bag holder keeps a pile of grocery bags tidy inside one soft cream tube. The body is an open filet mesh with a solid heart centered on the front. A beaded drawstring gathers the top under a small ruffle, and a fuller shell ruffle frames the narrow bottom opening where you pull the bags out.
The sample uses one color, a warm natural cream, in worsted-weight cotton. The style is farmhouse kitchen: simple, textured, and made to hang on a cabinet knob or wall peg. Deep red or sage green work just as well.
The pattern uses US crochet terms. The finished holder is about 7.3 in (18.5 cm) wide laid flat and 19.5 in (49.5 cm) long from ruffle to ruffle, not counting the hanging loop.
You crochet one flat filet panel in rows from the bottom up, seam it into a tube, and then work edging rounds around the top and bottom openings. A chain drawstring with two wooden beads and a slip-stitch hanging loop finish it off.
Finished Size and Construction
- Finished size: 7.3 in (18.5 cm) wide flat x 19.5 in (49.5 cm) long, plus a loop of about 4 in (10.2 cm)
- Skill level: Easy
- Terminology: US crochet terms
- Yarn weight: Worsted (#4) cotton
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 body panel, plus 1 drawstring and 1 hanging loop
- Layout: One rectangle seamed into a tube; seam at center back, heart at center front
- Panel size before seaming: 14.7 in (37.3 cm) wide x 16 in (40.6 cm) tall
- Size before edgings: 7.3 in (18.5 cm) flat x 16 in (40.6 cm) tall
- Edging depth: top about 1.5 in (3.8 cm); bottom about 2 in (5.1 cm)
Materials
Yarn: Choose a smooth worsted-weight cotton or cotton blend. Cotton keeps the filet squares crisp and won’t sag under the weight of the bags. Fuzzy yarns blur the open squares, so skip them.
- Cream: 140 g, about 266 m (291 yd)
This amount includes about a 15% margin for the gauge swatch, the cords, and any reworking.
Tools:
- 5.0 mm (H-8) crochet hook
- Tapestry needle
- 2 wooden beads, 5/8 in (1.6 cm)
- Stitch markers
- Measuring tape and scissors
- Rust-proof pins and a blocking surface
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 – right side
Filet terms:
- Open square (OS): ch 2, sk 2, dc in next dc. Each square uses 3 sts.
- Solid square (SS): dc in next 3 dc (over a solid square below), or 2 dc in ch-2 sp and dc in next dc (over an open square below).
- Starting OS: ch 5 (counts as dc + ch 2), sk 2, dc in next dc.
Every panel row has 18 squares and 55 sts: 18 squares x 3 sts, plus the final dc that closes the last square.
Shell: 5 dc in the same st.
Gauge and Checkpoints
Gauge: 5 filet squares (15 sts) and 7 rows = 4 in (10.2 cm). One square is 0.8 in (2.0 cm) wide. Single crochet gauge is 15 sc = 4 in (10.2 cm).
Test first: Ch 21. Dc in 4th ch from hook and in each ch across (19 sts). Work 7 rows of open squares (6 squares). The 5 center squares should measure 4 in (10.2 cm) wide, and the 7 rows 4 in (10.2 cm) tall.
- Too big: go down one hook size.
- Too small: go up one hook size.
Checkpoints:
- Row 2: panel is 14.7 in (37.3 cm) wide.
- Row 11: panel is 6.3 in (16.0 cm) tall.
- Row 19: panel is 10.9 in (27.7 cm) tall.
- Row 28: panel is 16 in (40.6 cm) tall.
Being within 0.25 in (0.6 cm) is fine.

Body Panel
The heart is centered on the panel and symmetrical, so each row reads the same from either side. The seam ends up at the center back.
Foundation: Leave a 12 in (30.5 cm) tail. Ch 56.
Row 1 (RS): Dc in 4th ch from hook (skipped chs count as dc) and in each ch across. Turn. (55 sts)
Row 2: Ch 3 (counts as dc), dc in each st across. Turn. (55 sts)
Row 3: Starting OS, ch 2, sk 2, dc in next st; repeat across, with the last dc in top of turning ch. Turn. (18 OS; 19 dc + 18 ch-2 sps = 55 sts)
Rows 4–11: Starting OS, ch 2, dc in next dc; repeat across, with the last dc in 3rd ch of turning ch-5. Turn. (18 OS; 55 sts)
Heart Section
The starting OS counts as the first open square. Each row totals 18 squares (55 sts).
- Row 12: 8 OS, 2 SS, 8 OS
- Row 13: 7 OS, 4 SS, 7 OS
- Row 14: 6 OS, 6 SS, 6 OS
- Rows 15–17: 5 OS, 8 SS, 5 OS
- Row 18: 5 OS, 3 SS, 2 OS, 3 SS, 5 OS
- Row 19: 6 OS, 2 SS, 2 OS, 2 SS, 6 OS
These rows build the downward point, the solid middle, and two lobes with a dip between them. The heart covers squares 6–13 and is 6.4 in (16.3 cm) wide and about 4.6 in (11.7 cm) tall. Five open squares frame each side at its widest point.
When you work an OS over a SS, ch 2, sk 2 dc, and dc in the next dc.
Rows 20–26: Work all open squares as in Row 4. (18 OS; 55 sts)
Row 27: Ch 3, 2 dc in ch-2 sp, dc in next dc; repeat across. Turn. (55 sts)
Row 28: Ch 3, dc in each st across. (55 sts) Fasten off, leaving a 12 in (30.5 cm) tail.
Seaming the Tube
Fold the panel RS together so the side edges meet. Whipstitch through the outer post of the end stitch on each side, 2 stitches per dc row. Keep the seam firm but flat. Turn the tube RS out. The tube now lies at 7.3 in (18.5 cm) wide.
Border (Top and Bottom Edgings)
Work the edgings in rounds at 15 sc = 4 in (10.2 cm). Each opening has 55 edge sts: the stitch tops at the top and the foundation loops at the bottom. The first round of each edging works one sc2tog across the seam, which makes 54. That number divides evenly into every repeat below.
Top Edging
With RS facing, join yarn in the first st left of the seam.
Round 1: Ch 1, sc in same st and each st around to last 2 sts, sc2tog across the seam. Sl st in first sc. (53 sc + 1 sc2tog = 54 sts)
Round 2 (eyelets): Ch 4 (counts as dc + ch 1), sk 1, dc in next st, ch 1, sk 1; repeat around. Sl st in 3rd ch of ch-4. (27 dc + 27 ch-1 sps = 54 sts; 27 eyelets)
Round 3: Ch 1, sc in each dc and each ch-1 sp. Sl st in first sc. (27 + 27 = 54 sc)
Round 4 (small ruffle): Ch 1, sc in next st, 3 dc in next st; repeat around. Sl st in first sc. Fasten off. (27 sc + 81 dc = 108 sts)
Bottom Edging
Turn the tube upside down. With RS facing, join yarn in the first foundation loop left of the seam.
Round 1: Ch 1, sc in each loop to last 2, sc2tog across the seam. Sl st in first sc. (53 sc + 1 sc2tog = 54 sts)
Round 2 (gather): Ch 1, sc in next st, sc2tog; repeat 18 times. Sl st in first sc. (18 sc + 18 sc2tog = 36 sts)
Round 3: Ch 1, sc in each st. Sl st in first sc. (36 sc)
Checkpoint: the opening measures 9.6 in (24.4 cm) around, about 3 in (7.6 cm) across.
Round 4: Ch 3 (counts as dc), dc in same st, 2 dc in each st around. Sl st in top of ch-3. (72 dc)
Round 5 (shells): Ch 1, sc in next st, sk 1, shell in next st, sk 1; repeat 18 times. Sl st in first sc. Fasten off. (18 sc + 90 dc = 108 sts; 18 shells)
Why the math works: 55 edge sts minus one seam decrease gives 54. At the top, 54 / 2 makes 27 eyelets and 27 ruffles. At the bottom, 54 / 3 makes 18 decrease repeats, leaving 36. Doubling gives 72, and 72 / 4 makes 18 shells. There are no partial repeats.
Drawstring and Hanging Loop
Drawstring: Ch 100. Sl st in the back bump of the 2nd ch from hook and each ch across. Fasten off. The cord is about 32 in (81.3 cm) long.
Start at one of the two center-front eyelets above the heart. Weave the cord in and out of all 27 eyelets and bring it out through the neighboring center eyelet. Thread a bead onto each end, knot below it, and trim to 0.5 in (1.3 cm).
Hanging loop: Ch 36 and work sl sts back along the chain the same way, for a 10 in (25.4 cm) cord. Sew the ends inside Round 3, one on each side of the seam, 1 in (2.5 cm) apart.
Final Blocking
- Weave in all ends along the seam or inside the solid stitches.
- Soak the holder in cool water, squeeze gently, and roll it in a towel.
- Slide a rolled towel inside so the body lies at 7.3 in (18.5 cm) wide.
- Pin the body to 16 in (40.6 cm) between the first edging rounds.
- Square up the heart and open each mesh square with your fingers.
- Fan out the ruffles, let the holder dry completely, then gather the drawstring.
Final Quality-Control Checklist
- Every panel row has 55 sts and 18 squares.
- The heart is centered, with 5 open squares on each side at its widest point.
- The seam lies flat at the center back.
- The cord passes through all 27 eyelets.
- The bottom opening is about 3 in (7.6 cm) across, with 18 even shells.
- The beads and loop are secure.
Troubleshooting
The squares slant: Work each dc into the dc below, not into the ch-2 sp.
The heart is off-center: Recount Row 12. It should be 8 OS, 2 SS, 8 OS.
A row isn’t 55 sts: An all-open row has 19 dc posts. Count them to find the lost or extra square.
The bottom opening is too loose: Before Round 4, add sc in next 4, sc2tog 6 times (30 sts). Then Round 4 gives 60 dc and Round 5 gives 15 shells.
The ruffles curl: Steam them lightly and pin them flat to dry.
Care
Wash by hand or on a gentle cool cycle in a laundry bag, then reshape and dry flat. Take out the beaded drawstring first if the beads are unfinished wood.

Final Notes
A gauge of 5 squares and 7 rows to 4 in (10.2 cm) gives a 55-stitch, 28-row panel that is 14.7 in (37.3 cm) x 16 in (40.6 cm), with the heart on squares 6–13 in Rows 12–19. Seamed, it lies at 7.3 in (18.5 cm) flat. One seam decrease turns 55 edge stitches into 54. At the top that makes 27 eyelets and 27 ruffles. At the bottom it gathers to a 3 in (7.6 cm) opening with 18 shells. The finished holder is about 19.5 in (49.5 cm) long.
Happy crocheting!