This cozy bag holder turns a messy pile of grocery bags into something you’re happy to leave on display. You stuff bags in at the top and pull them out one at a time from the small opening at the bottom. The holder hangs from a crochet-covered ring, so it fits on a cabinet knob, a door hook, or a peg.
The design uses one warm chocolate-brown yarn. Rows of fan shells give it a rich, textured look that works well in farmhouse and cottage kitchens. A rounded edge finishes the top rim and the bottom opening, so both stay firm and neat.
The pattern uses US crochet terms. The finished body is 7 in (17.8 cm) wide when flattened and 19 in (48.3 cm) long. The overall length, including the hanging ring, is 24 in (61.0 cm).
You work the body top-down in joined rounds, so it’s one seamless tube. First you make a single crochet band, then 12 rounds of shells. After that, four single crochet decrease rounds alternate with shell rounds to shape the narrow bottom. Last, you cover a ring in single crochet, add a short tab, and sew the tab inside the back of the rim.
Finished Size and Construction
- Finished body: 7 in (17.8 cm) wide flat × 19 in (48.3 cm) long
- Overall length with ring: 24 in (61.0 cm)
- Skill level: Easy-Intermediate
- Terminology: US crochet terms
- Yarn weight: Bulky (#5)
- Hook: 6.0 mm (US J-10)
- Number of pieces: 1 body tube + 1 covered ring with tab, sewn together into one holder
- Layout: Vertical tube with the ring centered above the back of the rim
- Body circumference: 42 sts = 14 in (35.6 cm)
- Size before border: 7 in (17.8 cm) wide × 18 in (45.7 cm) long
- Border depth: 1/3 in (0.8 cm) at the top rim and 2/3 in (1.7 cm) at the bottom opening
Materials
Yarn: Use a bulky (#5) cotton or cotton blend with good stitch definition. Cotton holds the shells crisply, doesn’t stretch much under the weight of the bags, and washes well. Avoid very fuzzy yarns, because they hide the shell texture.
- Chocolate Brown: about 250 g / 275 m
Quantities include a margin of about 15% for your gauge swatch and small tension differences.
Tools:
- 6.0 mm (US J-10) crochet hook
- One 3 in (7.6 cm) wooden or metal ring for the hanger
- 2 stitch markers
- Tapestry needle
- Scissors
- Measuring tape
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- dc – double crochet
- sc2tog – single crochet 2 together
- rev sc – reverse single crochet (crab stitch)
- st(s) – stitch(es)
- rnd(s) – round(s)
Shell: 5 dc in the same stitch.
Half shell: 3 dc in the same stitch (the beginning ch-3 plus 2 dc), or 2 dc at the end of a round. The beginning half and the ending half sit in the same stitch and together make one full 5-stitch shell.
Reverse sc: Working from left to right (right-handers), insert your hook in the next stitch to the right, yarn over, pull up a loop, yarn over, and pull through both loops. This makes a corded edge.
Gauge and Checkpoints
Gauge in sc: 12 sc = 4 in (10.2 cm) wide, and 12 sc rnds = 4 in (10.2 cm) tall. That means 3 sts per inch and 3 sc rnds per inch.
Gauge in shell pattern: 2 shell repeats (12 sts) = 4 in (10.2 cm) wide, and 4 shell rnds = 4 in (10.2 cm) tall.
Since this is a single piece, your first few rounds are your test. Work Rnds 1–4, then lay the tube flat and measure.
Checkpoints:
- After Rnd 4: flat width 7 in (17.8 cm)
- After Rnd 14: length 12 2/3 in (32.2 cm)
- After Rnd 22 (before border): length 18 in (45.7 cm), bottom flat width 3 in (7.6 cm)
- After the border: length 19 in (48.3 cm)
Too big? Go down half a hook size (5.5 mm) and start again. A loose holder sags and lets bags fall out.
Too small? Go up half a hook size (6.5 mm). A tight tube makes it hard to stuff bags in.

Body
Make a loose foundation chain. Join each round with a sl st to the first stitch and don’t turn. Put a stitch marker in the first stitch of every round.
Foundation: Ch 42 and join with a sl st to the first ch to form a ring. Make sure the chain isn’t twisted. (42 ch)
Top Band
Rnd 1: Ch 1, sc in each ch around, join. (42 sc)
Rnd 2: Ch 1, sc in each st around, join. (42 sc)
The band is now 2/3 in (1.7 cm) tall and the tube is 7 in (17.8 cm) wide when flattened.
Straight Shell Section
The shell rounds alternate between two types. Round A puts shells over single crochet. Round B shifts the shells by half a repeat, placing new shells into the sc of the round below. Every shell round has 42 sts, which is 7 repeats of 6 sts.
Rnd 3 (Round A): Ch 1, sc in the same st as the join, skip 2 sts, shell in next st, skip 2 sts, sc in next st; repeat from * around, ending with a shell, then skip the last 2 sts. Join to the first sc. (7 shells + 7 sc = 42 sts)
Rnd 4 (Round B): Ch 3 (counts as dc), 2 dc in the same sc (half shell), skip 2 dc, sc in the center dc of the next shell, skip 2 dc, shell in the next sc; repeat from * 5 more times. Then skip 2 dc, sc in the center dc of the last shell, skip 2 dc, 2 dc in the first sc (the base of the beginning ch-3), and join to the top of the ch-3. (3 + 36 + 1 + 2 = 42 sts)
Rnd 5 (Round A): Ch 1, sc in the same st as the join (the center of the split shell). Skip 2 dc, shell in next sc, skip 2 dc, sc in the center dc of the next shell; repeat from * around, ending with a shell, then skip the last 2 dc. Join to the first sc. (42 sts)
Rnds 6–14: Keep alternating. Work Round B on even rounds and Round A on odd rounds, ending with Rnd 14 (Round B). (42 sts in each round)
You now have 12 shell rounds measuring 12 in (30.5 cm), and the total length is 12 2/3 in (32.2 cm).
Tapered Bottom
Each step of the taper is one sc decrease round followed by one Round A shell round. Every decrease round takes away exactly one shell repeat (6 sts), so the next shell round always comes out evenly.
Rnd 15: Ch 1, sc in next 5 sts, sc2tog; repeat from * 6 times, join. (6 × 7 = 42 sts used; 6 × 6 = 36 sc)
Rnd 16 (Round A): Ch 1, sc in the same st, skip 2, shell in next st, skip 2, sc in next st; repeat around, ending with a shell and skip 2. Join. (6 shells + 6 sc = 36 sts; flat width 6 in / 15.2 cm)
Rnd 17: Ch 1, sc in next 4 sts, sc2tog; repeat from * 6 times, join. (30 sc)
Rnd 18 (Round A): Work as Rnd 16. (5 shells + 5 sc = 30 sts; flat width 5 in / 12.7 cm)
Rnd 19: Ch 1, sc in next 3 sts, sc2tog; repeat from * 6 times, join. (24 sc)
Rnd 20 (Round A): Work as Rnd 16. (4 shells + 4 sc = 24 sts; flat width 4 in / 10.2 cm)
Rnd 21: Ch 1, sc in next 2 sts, sc2tog; repeat from * 6 times, join. (18 sc)
Rnd 22 (Round A): Work as Rnd 16. (3 shells + 3 sc = 18 sts; flat width 3 in / 7.6 cm)
The taper is 5 1/3 in (13.5 cm) long. The body now measures 18 in (45.7 cm). Don’t fasten off. Keep going straight into the bottom border.
Hanging Ring and Tab
Ring cover: Attach the yarn to the 3 in (7.6 cm) ring with a slip knot. Work sc over the ring, pushing the stitches together as you go, until the ring is completely covered. That takes about 40 sc. Add a few more if you can see gaps. Join to the first sc. The covered ring measures 4 in (10.2 cm) across.
Tab:
Row 1: Working into 6 neighboring sc along the outer edge of the covered ring, ch 1, sc in each of those 6 sts. (6 sc)
Rows 2–6: Ch 1, turn, sc in each st across. (6 sc)
The tab is 2 in (5.1 cm) wide and 2 in (5.1 cm) long. Fasten off and leave a 12 in (30.5 cm) tail for sewing.
Border
Border gauge: 3 sc or 3 rev sc = 1 in (2.5 cm), the same as the body sc gauge. That keeps the edges flat without flaring or pulling in.
Bottom Opening Border
Rnd B1: Continuing from Rnd 22, ch 1, sc in each st around, join. (18 sc)
Rnd B2: Ch 1, rev sc in each st around, join. (18 rev sc) Fasten off.
Why the math works: Rnd 22 has 18 sts (3 repeats × 6), and 18 sts at 3 sts per inch gives exactly 6 in (15.2 cm) around, or 3 in (7.6 cm) flat. That opening is big enough to pull a bag through but small enough to hold the rest in. The two rounds add 2/3 in (1.7 cm).
Top Rim Border
Rnd T1: Turn the tube upside down. Join the yarn in the remaining loop of any foundation ch at center back. Ch 1, rev sc in each ch around, join. (42 rev sc) Fasten off.
Why the math works: The foundation has 42 ch, so working one rev sc in each keeps the rim at 14 in (35.6 cm) around, matching the body. This round adds 1/3 in (0.8 cm). The body length becomes 18 + 1/3 + 2/3 = 19 in (48.3 cm).
Attach the Hanger
Find the center back. It lines up with the round joins, which sit in a straight line. Put Rows 4–6 of the tab (1 in / 2.5 cm) inside the tube, behind the top band, and center it over the joins. Whipstitch all four sides of the overlap through the inside layer of the band only, so no stitches show from the front. This leaves 1 in (2.5 cm) of tab showing above the rim. The overall length is 4 + 1 + 19 = 24 in (61.0 cm).
Final Blocking
- Weave in all ends along the inside of the tube.
- Spray the holder evenly with water until it’s damp but not soaked.
- Slide a rolled towel inside to fill out the tube.
- Lay it flat and shape it to 7 in (17.8 cm) wide and 19 in (48.3 cm) long.
- Gently round the taper so it curves evenly into the 3 in (7.6 cm) opening.
- Open each shell with your fingers so the fans lie evenly.
- Let it dry completely before you take out the towel.
Final Quality-Control Checklist
- Body is 7 in (17.8 cm) wide flat and 19 in (48.3 cm) long
- Each straight shell round has 7 complete shells
- Taper steps down evenly from 6 to 5 to 4 to 3 shells
- Bottom opening is 3 in (7.6 cm) flat with a smooth corded edge
- Top rim has a corded edge that doesn’t flare
- Ring is fully covered with no gaps
- Tab is centered over the round joins and firmly sewn on all four sides
- All ends are woven in securely on the inside
Troubleshooting
Shells lean or spiral: Check that every Round B starts in the sc that the join landed on, and that each sc goes into the center dc of a shell.
Wrong stitch count after a decrease round: Count 7, 6, 5, then 4 sts per decrease repeat. That’s the sc plus the 2 sts of the sc2tog.
Top rim flares: Your rev sc is too loose. Redo it with a 5.5 mm hook.
Bottom opening too tight for bags: Work Rnd B1 loosely, or skip Rnd B2 and fasten off after B1.
Bags fall out on their own: Your gauge is loose. Rework Rnd B1 with sc2tog 3 times evenly spaced to get 15 sts.
Ring gaps show: Add sc and push them tightly together before joining.
Care
Hand wash in cool water with mild soap, press out the water in a towel, and dry flat. Reshape the shells while the holder is still damp.

Final Notes
Here is the full measurement chain for this holder:
- Foundation: 42 sts gives 14 in (35.6 cm) around, or 7 in (17.8 cm) flat.
- Body: 12 shell rounds give 12 in (30.5 cm). The 2/3 in (1.7 cm) band brings it to 12 2/3 in (32.2 cm).
- Taper: Four 6-stitch decreases add 5 1/3 in (13.5 cm), for 18 in (45.7 cm).
- Border: It adds 1 in (2.5 cm), for 19 in (48.3 cm).
- Hanger: The 1 in (2.5 cm) tab and 4 in (10.2 cm) ring bring the total to 24 in (61.0 cm).
If you check your gauge at Rnd 4, every later number will fall into place.
Happy crocheting!