The Lattice Ruffle Plastic Bag Holder is a tidy way to store grocery bags. You push the bags in at the top and pull them out one at a time through the bottom. The body is an open diamond net, so you can see at a glance how many bags are left, and the solid bands at each end keep the holder’s shape.
The sample is worked in a warm tangerine orange, and a second holder in crimson red shows how well the design takes a bold solid color. Each holder is made in one color. The look is cheerful farmhouse kitchen: a plain sturdy band at the bottom, a light lattice through the middle, and a full ruffle at the top.
This pattern uses US crochet terms. The finished holder measures 19 in (48.3 cm) long, not counting the hanging loop, and 6 in (15.2 cm) wide when laid flat, which is a 12 in (30.5 cm) circumference.
The holder is one seamless piece worked in joined rounds from the bottom up. You make the bottom band in single crochet, then work 20 rounds of chain-loop mesh, gather the top into a single crochet neck, add a two-round ruffle, and finish with a hanging loop worked across the neck.
Finished Size and Construction
- Finished size: 19 in (48.3 cm) long × 6 in (15.2 cm) wide flat
- Skill level: Easy
- Terminology: US crochet terms
- Yarn weight: Worsted (#4), 100% cotton
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 seamless tube (the hanging loop is worked onto it)
- Layout: One vertical tube, open at both ends
- Piece size: 12 in (30.5 cm) circumference at the band and mesh, 9 in (22.9 cm) at the neck
- Size before border (ruffle): 18 in (45.7 cm) long
- Border (ruffle) depth: 1 in (2.5 cm)
Materials
Yarn: Use a smooth worsted-weight cotton or cotton blend. Cotton holds the mesh open, doesn’t stretch out under the weight of the bags, and can be machine washed. Avoid fuzzy or very stretchy acrylic, because the net will sag.
- Main color, tangerine orange: 75 g, about 140 m (153 yd)
- Optional second holder, crimson red: 75 g, about 140 m (153 yd)
The quantities include a margin of about 15% for your gauge swatch and weaving in ends. Each holder takes only one color.
Tools:
– 5.0 mm (H-8) crochet hook
– 1 locking stitch marker
– Tapestry needle
– Scissors
– Measuring tape
– Rust-proof pins
– A 2-liter bottle or a rolled towel, for blocking
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- dc – double crochet
- sk – skip
- st(s) – stitch(es)
- rnd(s) – round(s)
- ch-6 loop – a 6-chain space in the mesh
Special stitch, joining loop: Work “ch 3, dc in first sc of the round.” The ch 3 plus the dc is about as long as a ch-6 loop, so it counts as the last loop of the round. It also leaves your hook at the center of that loop, ready for the next round, so you don’t need any slip stitches to get into position.
Gauge and Checkpoints
Single crochet gauge: 16 sc and 16 rnds = 4 in (10.2 cm) in joined rounds.
Mesh gauge: 4 mesh rounds = 3 in (7.6 cm) when gently stretched lengthwise, so 1 mesh round = 0.75 in (1.9 cm).
Your test piece is the bottom band itself. Work Rnds 1–8 and check them before you start the mesh.
Checkpoints:
1. After Rnd 8: The band lies flat at 6 in (15.2 cm) wide and is 2 in (5.1 cm) tall.
2. After Rnd 16 (8 mesh rounds): The piece measures 8 in (20.3 cm) long.
3. After Rnd 28 (all 20 mesh rounds): The piece measures 17 in (43.2 cm) long.
4. After Rnd 32 (neck): The piece measures 18 in (45.7 cm) long, and the neck lies flat at 4.5 in (11.4 cm) wide.
5. After Rnd 34 (ruffle): The piece measures 19 in (48.3 cm) long.
If the band is too wide (more than 6.25 in / 15.9 cm flat), go down to a 4.5 mm hook. If it’s too narrow (less than 5.75 in / 14.6 cm), go up to a 5.5 mm hook. Change hooks and start again. Don’t add or remove stitches, because the mesh repeat depends on exactly 48 stitches.
If the mesh rounds come out shorter than 0.75 in (1.9 cm), add mesh rounds in pairs until you reach 17 in (43.2 cm) at Checkpoint 3. If they come out longer, remove mesh rounds in pairs.

Pattern
Bottom Band
Ch 48 and join with a sl st into the first ch. Make sure the chain isn’t twisted. You can use 48 foundation single crochet instead if you prefer a stretchier edge.
Rnd 1: Ch 1 (does not count as a st), sc in each ch around, sl st in first sc to join. (48 sc)
Rnds 2–8: Ch 1, sc in each st around, sl st in first sc to join. (48 sc in each round)
Checkpoint: 2 in (5.1 cm) tall × 6 in (15.2 cm) wide flat. Place the marker on the joining stitch so you can see where each round starts. This band is the opening the bags come out of, so it should feel firm.
Diamond Mesh Body
Rnd 9 (first mesh round): Ch 1, sc in first st, ch 6, sk 3 sts, sc in next st. Repeat from * 10 more times (11 ch-6 loops so far). Then ch 3, sk last 3 sts, dc in first sc to make the joining loop.
Count: 12 loops (11 ch-6 loops + 1 joining loop).
Check: the round uses 12 sc and skips 12 × 3 = 36 sts, and 12 + 36 = 48.
Rnd 10: Ch 1, sc around the post of the joining dc, ch 6, sc in next ch-6 loop. Repeat from * 10 more times. Then ch 3, dc in first sc. (12 loops)
Rnds 11–28: Repeat Rnd 10. (12 loops in each round)
Each sc sits in the center of a loop from the round below, so the loops shift by half a repeat every round. That offset is what makes the diamond lattice in the photo. You end up with 20 mesh rounds (Rnds 9–28).
Checkpoint: 17 in (43.2 cm) long when gently stretched.
Neck
Rnd 29 (conversion round): Ch 1, work 3 sc around the joining loop (the dc post and ch 3 together), then 3 sc in each of the remaining 11 ch-6 loops, sl st in first sc to join.
Count: 12 loops × 3 sc = 36 sc.
This round gathers the top in from 12 in (30.5 cm) around to 9 in (22.9 cm) around, which gives the narrower neck you see under the ruffle.
Rnds 30–32: Ch 1, sc in each st around, sl st to join. (36 sc in each round)
Checkpoint: 18 in (45.7 cm) long, with the neck 4.5 in (11.4 cm) wide flat.
Ruffle Border
The ruffle is the border on this piece. Because the holder is a tube, it has no corners. Counts are given for the full round and for each quarter of the round so you can check your work as you go.
Border gauge: 1 dc round = 0.75 in (1.9 cm) and 1 sc round = 0.25 in (0.6 cm), for a total depth of 1 in (2.5 cm).
Rnd 33 (conversion round): Ch 3 (counts as dc), 2 dc in the same st, then 3 dc in each remaining st around, sl st in top of ch 3 to join.
Count: 36 dc (1 per existing st) + 72 extra dc = 108 dc. That is 27 dc per quarter.
Rnd 34 (trim round): Ch 1, sc in each st around, sl st to join. (108 sc, 27 per quarter)
Fasten off and leave a 6 in (15.2 cm) tail.
Why the math works: Three stitches into each of 36 neck stitches puts three times as much edge around the same neck. That extra length has nowhere to go, so it folds into the deep waves of the ruffle. The single crochet trim round then firms up the edge so the ruffle holds its shape.
Hanging Loop
Look into the top of the holder and find the inside of Rnd 32, the last neck round, which sits behind the ruffle. Join yarn with a sl st in any stitch of Rnd 32. Ch 36, which is about 9 in (22.9 cm). Count 18 sts along Rnd 32 and sl st into the 18th stitch, which is directly opposite your starting point.
Strap row: Turn and sc in each ch back along the chain. (36 sc) Sl st into the starting stitch and fasten off.
The finished strap is a solid band that rises about 4 in (10.2 cm) above the ruffle. Both of its ends are hidden behind the ruffle.
Final Blocking
- Weave in all ends along the inside of a solid round. Weave in the strap ends through the back of the neck.
- Soak the holder in cool water for 10 minutes, then press the water out gently. Don’t wring it.
- Slide the damp holder over a 2-liter bottle or a towel rolled to about 3.8 in (9.7 cm) across.
- Stretch the mesh lengthwise until the body reaches 15 in (38.1 cm) between the band and the neck.
- Line up the diamonds so the columns run straight up the tube.
- Pinch each wave of the ruffle into shape with your fingers. Pin the ruffle only if it flattens.
- Let the holder dry completely, then slide it off the form.
Final Quality-Control Checklist
- The band has exactly 48 sc and lies flat at 6 in (15.2 cm).
- Every mesh round has 12 loops, and the diamonds line up in straight columns.
- There are 20 mesh rounds, measuring 15 in (38.1 cm) after blocking.
- The neck has 36 sc and lies flat at 4.5 in (11.4 cm).
- The ruffle has 108 sts and is 1 in (2.5 cm) deep.
- The total length is 19 in (48.3 cm).
- The strap is centered, with its ends on opposite sides of the neck.
- All ends are secure, and the bottom opening has no loose loops.
Troubleshooting
The mesh spirals or leans: You probably worked into the wrong loop at the start of a round. Always start each round around the post of the joining dc.
You have 11 or 13 loops: Count the loops after every mesh round. Fix any miscount before the round above locks it in.
The bottom band flares: Your band tension is looser than your foundation chain. Rework the band with a smaller hook.
The ruffle lies flat: Make sure you worked 3 dc in every stitch of Rnd 33. You should have 108 stitches, not 72.
Bags fall straight through: Close the bottom band down by about 1 in (2.5 cm). Work one round of sc2tog every 6 sts (40 sts) after Rnd 1.
The strap twists: Check that your chain wasn’t twisted before you worked the sc row.
Care
Machine wash on cool in a mesh laundry bag, then reshape the holder and lay it flat to dry. Don’t tumble dry, because heat can shrink the cotton and tighten the ruffle.

Final Notes
Here is the full measurement chain. The 48-stitch band measures 6 in (15.2 cm) flat and 2 in (5.1 cm) tall. Twenty mesh rounds add 15 in (38.1 cm), bringing the piece to 17 in (43.2 cm). The 36-stitch neck adds 1 in (2.5 cm), for 18 in (45.7 cm). The 108-stitch ruffle adds the last 1 in (2.5 cm), for a finished length of 19 in (48.3 cm), with the strap rising above the ruffle.
If each checkpoint matches, the next stage will match too. Fill the holder from the top and pull the bags out from the bottom. If you want a second one, make it in a bold red to hang beside the orange.
Happy crocheting!