This is a neat, textured way to store plastic grocery bags. The Diagonal Puff Bag Holder is a soft tube covered in raised puff stitches that slant across the body in diagonal lines. Ribbed cuffs at both ends give it a tidy, knit-like finish.
The palette is cream and light taupe. The puffs alternate between the two colors along each diagonal, so the texture reads as a gentle stripe that suits farmhouse or neutral kitchens. A cream strap at the top hangs from a cabinet knob, hook, or door handle.
The pattern is written in US crochet terms. The finished holder is 6 in (15.2 cm) wide when flat, which is 12 in (30.5 cm) around, and 20 in (50.8 cm) long, not counting the strap.
Construction is simple. You crochet one flat rectangle in single crochet and puff stitches, then seam it into a tube. Next you work a ribbed cuff in rounds around each opening. Last, you crochet the strap directly onto the top cuff. You end up with one continuous piece and nothing to assemble.
Finished Size and Construction
- Finished size: 6 in (15.2 cm) wide flat × 20 in (50.8 cm) long
- Skill level: Advanced beginner / easy intermediate
- Terminology: US crochet terms
- Yarn weight: Worsted (#4)
- Hook: 5.0 mm (H-8)
- Number of pieces: 1 (the body is seamed into a tube; the cuffs and strap are worked directly onto it)
- Layout: Single vertical tube with a top hanging strap
- Piece size (flat body before seaming): 12.5 in × 15 in (31.8 cm × 38.1 cm)
- Size before border (seamed tube): 6 in × 15 in (15.2 cm × 38.1 cm) flat
- Border depth: 2.5 in (6.4 cm) ribbed cuff at each end
Materials
Choose a smooth worsted-weight yarn. Cotton or a cotton blend holds its shape well and wipes clean. Acrylic is softer and a little stretchier. Avoid fuzzy yarns, because they hide the puff definition.
- Color A, Cream: 120 g (about 222 m)
- Color B, Light Taupe: 50 g (about 93 m)
Both quantities include a margin of roughly 15% for swatching and seaming.
Tools:
– 5.0 mm (H-8) crochet hook
– Tapestry needle
– Scissors
– 4 locking stitch markers
– Measuring tape
– Blocking mat and pins (optional)
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- sc2tog – single crochet 2 together
- dc – double crochet
- fpdc – front post double crochet
- bpdc – back post double crochet
- st(s) – stitch(es)
- rep – repeat
- RS / WS – right side / wrong side
Special stitch – Puff: Yarn over, insert your hook in the stitch, yarn over and pull up a loop about ½ in (1.3 cm) tall. Repeat from * to * 3 more times, so you have 9 loops on the hook. Yarn over and pull through all 9 loops, then ch 1 to close. The closing ch-1 does not count as a stitch. Each puff counts as 1 stitch.
Gauge and Checkpoints
Gauge: 16 sts and 16 rows = 4 in (10.2 cm) in the puff pattern.
Test swatch: Ch 19 and sc in the 2nd ch from the hook (18 sc). Follow the body instructions on these 18 sts, which is 1 edge st + 4 repeats of 4 + 1 edge st. Work 2 plain rows and then 2 full 8-row repeats, for 18 rows in total. Your swatch should measure 4.5 in × 4.5 in (11.4 cm × 11.4 cm).
- Too big? Go down 0.5 mm in hook size.
- Too small? Go up 0.5 mm.
- Width right but height wrong? Pull your puff loops up to a more consistent height. The row gauge depends mostly on the puffs.
Checkpoints:
– After Row 2: width is 12.5 in (31.8 cm).
– After Row 10: height is 2.5 in (6.4 cm).
– After Row 34: height is 8.5 in (21.6 cm).
– After Row 60: height is 15 in (38.1 cm).
– After seaming: the tube is 6 in (15.2 cm) wide flat.
– After both cuffs: the holder is 20 in (50.8 cm) long.

Body Panel
The body is worked flat in rows. Each row has 50 sts: 1 edge stitch at each end (these are used up in the seam) plus 48 pattern stitches, which is 12 repeats of 4.
Color changes: Every color change happens at the right-hand edge at the start of a RS row. For the last yarn over of the final sc on the previous WS row, use the new color. Carry the unused color loosely up the edge; the seam will hide it.
Foundation: With Cream, ch 51.
Row 1 (RS, Cream): Sc in the 2nd ch from the hook and in each ch across. Turn. (50 sc)
Row 2 (WS, Cream): Ch 1, sc in each st across. Change to Taupe on the last st. Turn. (50 sc)
The 8-row repeat (Rows 3–10)
Row 3 (RS, Taupe): Ch 1, sc in the first st, puff in the next st, sc in the next 3 sts; rep from * 11 more times, sc in the last st. Turn. (50 sts: 12 puffs + 38 sc)
Row 4 (WS, Taupe): Ch 1, sc in each st across. Work into the top of each puff and skip its closing ch. Change to Cream on the last st. Turn. (50 sc)
Row 5 (RS, Cream): Ch 1, sc in the first 2 sts, puff in the next st, sc in the next 3 sts; rep from * 10 more times, puff in the next st, sc in the last 3 sts. Turn. (50 sts: 12 puffs + 38 sc)
Row 6 (WS, Cream): Same as Row 4, but change to Taupe on the last st. (50 sc)
Row 7 (RS, Taupe): Ch 1, sc in the first 3 sts, puff in the next st, sc in the next 3 sts; rep from * 10 more times, puff in the next st, sc in the last 2 sts. Turn. (50 sts: 12 puffs + 38 sc)
Row 8 (WS, Taupe): Same as Row 4. Change to Cream. (50 sc)
Row 9 (RS, Cream): Ch 1, sc in the first 4 sts, puff in the next st, sc in the next 3 sts; rep from * 10 more times, puff in the next st, sc in the last st. Turn. (50 sts: 12 puffs + 38 sc)
Row 10 (WS, Cream): Same as Row 4. Change to Taupe. (50 sc)
Each puff row moves the puffs one pattern stitch to the left: positions 1, 2, 3, then 4 of each 4-stitch repeat. That shift stacks the puffs into diagonal lines. Because the puff rows alternate colors, each diagonal runs taupe, cream, taupe, cream.
Rows 11–58: Rep Rows 3–10 six more times, for 7 repeats in total. At the end of Row 58, do not change to Taupe; stay in Cream.
Rows 59–60 (Cream): Ch 1, sc in each st across. Turn. (50 sc)
Fasten off and leave a 24 in (61.0 cm) Cream tail for seaming.
Checkpoint: The panel should be 12.5 in × 15 in (31.8 cm × 38.1 cm), with 14 puff rows forming 12 clear diagonal lines.
Seaming the Tube
Fold the panel RS out so the two long edges meet. Using the tail and the tapestry needle, mattress-stitch the edge stitches together row by row, from Row 1 up to Row 60.
Pull each stitch snug but not tight; the seam should lie flat without puckering. Weave in the color carries along the seam allowance as you go.
Checkpoint: The tube is 6 in (15.2 cm) wide flat, which is 12 in (30.5 cm) around. Each opening still has 50 sts: 25 on the front half and 25 on the back half when the tube is flattened with the seam at one side fold.
Border: Ribbed Cuffs (Make 2)
Border gauge: 16 sts = 4 in (10.2 cm) around, and 6 dc-height rounds = 2.25 in (5.7 cm).
Work the cuffs in joined rounds with the RS facing. Work the top cuff into the Row 60 stitches. Work the bottom cuff into the free loops of the foundation chain under Row 1.
Setup: With Cream, join with a sl st in the stitch beside the seam.
Rnd 1: Ch 1, sc in the next 3 sts, sc2tog; rep from * 9 more times. Sl st to the first sc. (40 sts: 30 sc + 10 sc2tog; 20 on the front half, 20 on the back half)
Rnd 2: Ch 2 (does not count), dc in each st around. Sl st to the first dc. (40 dc; 20 per half)
Rnd 3: Ch 2 (does not count), fpdc around the next st, bpdc around the next st; rep from * 19 more times. Sl st to the first fpdc. (40 sts: 20 fpdc + 20 bpdc; 10 ribs per half)
Rnds 4–7: Rep Rnd 3, working fpdc around each fpdc and bpdc around each bpdc. (40 sts each round)
Fasten off. Make the bottom cuff the same way. For the top cuff, leave the yarn attached and go straight on to the strap.
Why the math works: Each half drops from 25 sts to 20 sts because every 5 stitches become 4. That is 5 decreases per half and 10 in total. At 16 sts per 4 in, 40 sts measure 10 in (25.4 cm) around, or 5 in (12.7 cm) flat. That is 1 in (2.5 cm) narrower than the 6 in (15.2 cm) body, which gives the gentle pull-in that keeps bags inside. The count of 40 is even, so the 1×1 rib works out perfectly with no leftover stitch at the join.
Each cuff is 0.25 in (0.6 cm) for Rnd 1 plus 2.25 in (5.7 cm) for Rnds 2–7, so 2.5 in (6.4 cm) in total. Two cuffs plus the 15 in (38.1 cm) body give 20 in (50.8 cm).
Hanging Strap
Flatten the tube so the seam sits at one side fold. Place a marker in the Rnd 7 stitch directly above the seam (call it st 1). Place a second marker in st 21, which sits at the opposite fold.
Strap Row 1: Sl st into st 1, ch 30, then sl st into st 21. Turn.
Strap Row 2: Sc in each of the 30 ch, then sl st into st 1. Turn. (30 sc)
Strap Row 3: Sc in each sc across, then sl st into st 21. (30 sc)
Fasten off. The strap is 7.5 in (19.1 cm) long and about 0.5 in (1.3 cm) wide, and it arches over the top opening.
Final Blocking
- Weave in all the ends along the seam or inside the cuffs.
- Mist the holder lightly with water, or steam it gently for acrylic. Don’t press the puffs flat.
- Lay it flat with the seam at one side fold and pat it out to 6 in × 15 in (15.2 cm × 38.1 cm) for the body.
- Ease each cuff to 5 in (12.7 cm) wide and 2.5 in (6.4 cm) deep without stretching the ribs.
- Straighten the strap and pin it flat.
- Leave it to dry completely, then flip it and fluff the puffs with your fingertips.
Final Quality-Control Checklist
- [ ] The body is 12.5 in × 15 in (31.8 cm × 38.1 cm) before seaming.
- [ ] Every puff row has 12 puffs, and every row has 50 sts.
- [ ] The diagonals run straight with no skipped shift.
- [ ] The colors alternate taupe and cream along each diagonal.
- [ ] The seam is flat and the carried strands are hidden.
- [ ] Both cuffs have 40 sts and 20 ribs.
- [ ] The holder measures 6 in (15.2 cm) wide and 20 in (50.8 cm) long.
- [ ] The strap is secure at both folds.
Troubleshooting
The diagonal breaks or zigzags. A puff row was started at the wrong position. Re-check the opening sc count of each RS row: 1, 2, 3, then 4.
The stitch count drifts to 49 or 51. You either skipped the top of a puff or worked into its closing ch on a WS row. Mark the top of each puff until it becomes second nature.
The puffs look flat or uneven. Keep every loop pulled up to the same ½ in (1.3 cm) height before closing the puff.
The cuff flares. Go down to a 4.5 mm hook for Rnds 2–7.
Bags fall out of the bottom. On the bottom cuff only, add one more round: sc in the next 2 sts, sc2tog; rep around, for 30 sts.
The seam puckers. Your mattress stitches are too tight. Loosen them and match the rows one to one.
Care
Hand wash in cool water or machine wash on a gentle cycle inside a mesh bag, then reshape and lay flat to dry. Don’t tumble dry cotton versions, because they can shrink in length.

Final Notes
Here is the whole measurement chain. A gauge of 16 sts and 16 rows per 4 in (10.2 cm) gives a 50-stitch, 60-row panel of 12.5 in × 15 in (31.8 cm × 38.1 cm). Seaming turns it into a 6 in (15.2 cm) wide tube. Decreasing to 40 sts makes 5 in (12.7 cm) ribbed cuffs, each 2.5 in (6.4 cm) deep, for a finished holder of 20 in (50.8 cm). If you check your swatch and these checkpoints as you go, the holder will finish at exactly this size. For a darker version, swap the two colors.
Happy crocheting!