This heart-themed bag holder makes storing plastic bags look nice. It is a soft, tapered pouch of open filet mesh with two solid hearts stacked down the front, a sturdy rim at the top, and a small band at the bottom for pulling bags out one at a time.
The sample is dusty rose, and it looks just as good in deep teal. Choose a matte cotton in any color that suits your kitchen, laundry room, or entryway. The mesh lets you see the bags inside, so bright bags show through like stained glass.
The pattern uses US crochet terms. The finished holder is 9 in (22.9 cm) wide laid flat at its widest point and 12.25 in (31.1 cm) tall for the body. With the hanging ring, it is about 15.75 in (40.0 cm) tall.
The holder is worked in one piece with no seams. You start at the bottom opening with a ring of single crochet, switch to filet mesh, and increase quickly to full width. Then you work the hearts in straight rounds, decrease slightly, and finish with a single crochet rim. A covered ring is attached to a small tab at the center back.
Finished Size and Construction
- Finished size: 9 in (22.9 cm) wide flat; body 12.25 in (31.1 cm) tall; 15.75 in (40.0 cm) tall with ring
- Skill level: Intermediate (basic filet mesh and blocks, working in joined rounds)
- Terminology: US terms
- Yarn weight: Worsted (#4), cotton or cotton blend
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 body, plus 1 covered hanging ring attached to it
- Layout: Worked bottom-up in joined rounds, right side always facing
- Piece size: Full-width circumference 18 in (45.7 cm); top opening 8 in (20.3 cm) flat; bottom opening 3 in (7.6 cm) flat
- Size before border: 11.25 in (28.6 cm) tall, before the top rim band
- Border depth: Top rim 1 in (2.5 cm); bottom band 0.75 in (1.9 cm)
Materials
Use a smooth, firm worsted cotton. Cotton holds the mesh open and does not stretch out when the holder is full. Acrylic works, but the holder will sag more over time.
- Main color (dusty rose, or teal for the alternate colorway): 100 g, about 190 m (208 yd)
- 5.0 mm (H-8) crochet hook
- One 2 in (5.1 cm) plastic or metal ring
- 4 locking stitch markers
- Tapestry needle
- Scissors
- A rolled towel or small balloon for blocking
The yarn amount includes about 25 percent extra for differences in tension. The holder itself uses about 75 g.
Abbreviations (US Terms)
- ch: chain
- sl st: slip stitch
- sc: single crochet
- dc: double crochet
- dc2tog: double crochet two together
- sp: space
- st(s): stitch(es)
- rnd(s): round(s)
- beg: beginning
Special stitches
- Square: Every square is 2 sts wide: a first st (always a dc) and a second st. Work a dc in the first st of the square below, then work the second st.
- Mesh square: Dc in the first st, ch 1, skip the second st.
- Block square: Dc in the first st, dc in the second st (whether that is a ch-1 sp or a dc).
- Inc (increase square): Dc in the first st, ch 1, dc in the second st, ch 1. One square becomes two mesh squares.
- Dec (decrease square): Dc2tog, placing the first leg in the first dc and the second leg in the next square’s first dc (skip the ch-1 sp between), ch 1. Two squares become one.
For square 1 of each rnd, a ch 4 (counts as dc and ch 1) replaces the first dc and ch 1. Join every rnd with sl st to the 3rd ch of the beg ch, unless the round says otherwise. The joining st is the first st of square 1 on the next rnd.
Gauge and Checkpoints
Gauge: 8 squares (16 sts) and 8 mesh rnds = 4 in (10.2 cm) in filet mesh. 16 sc and 16 sc rnds = 4 in (10.2 cm). Each square is 0.5 in (1.3 cm) wide, and each mesh rnd is 0.5 in (1.3 cm) tall.
Test the gauge on the holder itself. Work Rnds 1–10, then stop and measure.
- After Rnd 3: Bottom band lies 3 in (7.6 cm) wide flat and 0.75 in (1.9 cm) tall.
- After Rnd 10: Laid flat, the top edge measures 9 in (22.9 cm) across. Total height is 4.25 in (10.8 cm).
- After Rnd 22: Height is 10.25 in (26.0 cm). Width stays 9 in (22.9 cm).
- After Rnd 28: Height is 12.25 in (31.1 cm). Top opening lies 8 in (20.3 cm) flat.
If your piece is too big, go down to a 4.5 mm (US 7) hook. If it is too small, go up to a 5.5 mm (I-9) hook. Small differences are fine for a bag holder, but squares that are too tall make the hearts look stretched.

Body Pattern
Place a marker in the first st of each rnd. The first square of every rnd sits at the left side of the holder. The first half of the squares in a rnd are the front; the rest are the back.
Bottom Band
Rnd 1: Ch 24, join with sl st to the first ch, taking care not to twist. Ch 1, sc in each ch around, join to first sc. (24 sc)
Rnds 2–3: Ch 1, sc in each st around, join. (24 sc)
The band measures 6 in (15.2 cm) around, or 3 in (7.6 cm) flat.
Mesh Conversion
Rnd 4 (conversion): Ch 4 (counts as dc and ch 1), skip next sc, *dc in next sc, ch 1, skip next sc; rep from * 10 more times, join to 3rd ch of beg ch-4. (12 dc + 12 ch-1 sps = 24 sts, the same 24 as Rnd 3, now grouped as 12 mesh squares)
Growth Rounds
Each growth rnd adds 4 squares. Work an inc in the first and last square of the front and in the first and last square of the back.
Rnd 5: Inc, 4 mesh, inc (front: 8 squares); inc, 4 mesh, inc (back: 8 squares). Join. (16 squares, 32 sts)
Rnd 6: Inc, 6 mesh, inc; inc, 6 mesh, inc. Join. (20 squares, 40 sts)
Rnd 7: Inc, 8 mesh, inc; inc, 8 mesh, inc. Join. (24 squares, 48 sts)
Rnd 8: Inc, 10 mesh, inc; inc, 10 mesh, inc. Join. (28 squares, 56 sts)
Rnd 9: Inc, 12 mesh, inc; inc, 12 mesh, inc. Join. (32 squares, 64 sts)
Rnd 10: Inc, 14 mesh, inc; inc, 14 mesh, inc. Join. (36 squares, 72 sts)
The holder is now 18 in (45.7 cm) around and 9 in (22.9 cm) wide flat. The front is squares 1–18, and the back is squares 19–36.
Straight Rounds with Hearts
Every straight rnd has 36 squares (72 sts). Work all squares as mesh except the block squares listed. The hearts sit in front squares 6–13, leaving 5 mesh squares on each side.
Rnd 11: Mesh around. (36 squares)
Lower heart
Rnd 12: Blocks in squares 9–10.
Rnd 13: Blocks in squares 8–11.
Rnd 14: Blocks in squares 7–12.
Rnd 15: Blocks in squares 6–13.
Rnd 16: Blocks in squares 6–8 and 11–13; squares 9–10 stay mesh. This forms the two rounded tops of the heart.
Rnd 17: Mesh around. (36 squares)
Upper heart
Rnds 18–22: Repeat Rnds 12–16.
Each heart is 8 squares wide and 5 rnds tall, or 4 in (10.2 cm) wide and 2.5 in (6.4 cm) tall. Count 36 squares after every rnd. The total height is now 10.25 in (26.0 cm).
Shaping the Top
Rnd 23: Ch 2, dc in next square’s first dc (the beg ch-2 and this dc count as the first dc2tog), ch 1, 14 mesh, dec (front: 16 squares); dec, 14 mesh, dec (back: 16 squares). Join to the first dc, not the ch-2. (32 squares, 64 sts)
Rnd 24: Mesh around. (32 squares, 64 sts)
Before the rim, the body measures 11.25 in (28.6 cm) tall and 16 in (40.6 cm) around.
Border (Top Rim and Bottom Edge)
Border gauge: 4 sc per inch (2.5 cm) wide, 4 sc rnds per inch (2.5 cm) tall. The mesh has 2 sts per square at 2 squares per inch, which is also 4 sts per inch. That is why the rim takes 1 sc in every st without ruffling or pulling in.
Rnd 25 (conversion): Ch 1, sc in each dc and each ch-1 sp around, join. (64 sts worked 1-per-existing-st + 0 extra = 64 sc: 32 front, 32 back)
Rnds 26–28: Ch 1, sc in each st around, join. (64 sc: 32 front, 32 back)
The rim is 1 in (2.5 cm) deep. 64 sc ÷ 4 per inch = 16 in (40.6 cm) around, or 8 in (20.3 cm) flat. Fasten off.
Bottom edge: With the right side facing, join yarn at the left side of the foundation edge. Sl st loosely in each foundation ch around, join. (24 chs worked 1-per-existing-ch + 0 extra = 24 sl st: 12 front, 12 back) Fasten off. This firms up the bottom opening so it keeps its shape.
Hanging Tab and Ring
Sc 1–32 are the front; sc 33–64 are the back. The center back falls between sc 48 and 49.
Tab Row 1: With the right side facing, join yarn in sc 46 of Rnd 28. Ch 1, sc in same st and next 5 sts. (6 sc)
Rows 2–6: Ch 1, turn, sc in each st across. (6 sc)
The tab is 1.5 in (3.8 cm) wide and 1.5 in (3.8 cm) tall. Leave a 12 in (30.5 cm) tail.
Ring: Join yarn to the 2 in (5.1 cm) ring. Work 36 sc around it, pushing the sts close together so no ring shows. Join and fasten off. The covered ring is about 2.5 in (6.4 cm) across.
Attach: Slip the ring over the tab. Fold Rows 5–6 around the ring to the inside of the holder. Whipstitch the last row to Row 3 with the tail. About 1 in (2.5 cm) of tab shows above the rim.
Final Blocking
- Weave in all ends along the sc rims, not through the mesh.
- Soak the holder in cool water for 10 minutes. Gently press out the water in a towel; do not wring.
- Fill the body with a rolled towel or a small inflated balloon to shape the teardrop.
- Pat the body to 9 in (22.9 cm) wide and 12.25 in (31.1 cm) tall. Straighten the hearts so their edges run straight.
- Pin the mesh squares so they sit open and even.
- Let it dry completely, about 24 hours. Remove the filling.
Final Quality-Control Checklist
- Bottom band: 24 sc, 3 in (7.6 cm) flat
- Rnds 10–22: 36 squares in every rnd
- Rnds 23–24: 32 squares in every rnd
- Rim: 64 sc, 8 in (20.3 cm) flat
- Width at widest: 9 in (22.9 cm)
- Body height: 12.25 in (31.1 cm)
- Both hearts centered, with 5 mesh squares on each side
- No twisted rounds
- Tab centered at the back, ring secure
- All ends woven into solid sc areas
Troubleshooting
The rounds slant or the hearts drift sideways. You may be skipping or adding a st at the join. Always start in the joining st and end at the 3rd ch of the beg ch.
The square count is off. Count squares, not dc, after each growth rnd. Mark the four inc squares on Rnd 5 and move the markers up each rnd.
The mesh looks uneven. Make each ch-1 the same width as the top of a dc. A loose ch makes the squares look rectangular.
The rim ruffles. Go down one hook size for Rnds 25–28 only.
The bottom opening is too tight. Work the bottom-edge sl st rnd more loosely, or leave it off.
The hearts look squashed. Your rnds are too short. Check your vertical gauge and try a hook one size up.
Care
Hand wash in cool water and lay flat to dry, reshaping it over a towel. Avoid a hot dryer, since cotton may shrink slightly.

Final Notes
The measurements build on each other. The bottom band of 24 sc is 6 in (15.2 cm) around. Rnd 4 turns those 24 sts into 12 squares, and six growth rnds bring you to 36 squares, or 18 in (45.7 cm) around. Twelve straight rnds hold both hearts, and one dec rnd brings you to 32 squares. The 64-sc rim then matches the mesh exactly at 16 in (40.6 cm) around.
If your measurements match at Rnds 3, 10, 22, and 28, your holder will finish at 9 in (22.9 cm) wide and 12.25 in (31.1 cm) tall. Hang it on a hook, fill it from the top, and pull bags out from the bottom.
Happy crocheting!