This hanging holder keeps three spare toilet rolls stacked neatly on the bathroom wall. It is made of three small mustard-yellow baskets, one above the other. Two narrow side straps connect them, then meet at the top and wrap around a natural wooden ring. Hang the ring on a hook and the whole piece falls straight down.
Each basket has a flat hexagonal base in single crochet and walls of staggered puff stitches. The puffs give a thick, bubbly texture, and a neat single crochet rim finishes the top. The holder uses a single warm mustard color, so it looks calm next to white towels, cream walls, and green plants.
The pattern uses US crochet terms. The finished holder is about 5.5 in (14.0 cm) wide. It measures 18.25 in (46.4 cm) from the bottom of the lowest basket to the top fold at the ring. Each basket is 5 in (12.7 cm) across its base, measured from flat side to flat side, and 3.75 in (9.5 cm) tall. That fits a standard roll about 4.5 in (11.4 cm) wide.
You make three identical baskets and two straps. Each basket starts at the center of the base and is worked upward in joined rounds. The straps are worked in rows of single crochet. Finally, you sew the straps to opposite sides of the baskets, slide both ends through the ring, and fold them back.
Finished Size and Construction
- Finished size: 5.5 in (14.0 cm) wide x 18.25 in (46.4 cm) long, not counting the ring
- Skill level: Easy to intermediate
- Terminology: US crochet terms
- Yarn weight: Worsted (weight 4)
- Hook: 5.0 mm (H-8)
- Number of pieces: 5 (3 baskets + 2 straps)
- Layout: 3 baskets in one vertical column, 1.5 in (3.8 cm) apart
- Basket base: 5 in (12.7 cm) from flat side to flat side, 60 stitches around
- Basket height before rim: 3.25 in (8.3 cm)
- Rim depth: 0.5 in (1.3 cm), 2 rounds
- Strap size: 1.1 in (2.8 cm) wide x 19.5 in (49.5 cm) long
Materials
Choose a smooth worsted-weight yarn. Cotton or a cotton blend makes firm walls that hold their shape in a humid bathroom. Acrylic is softer and also works. Avoid fuzzy yarns, because they hide the puff texture.
- Mustard yellow: 200 g, about 400 m (worsted weight, roughly 200 m per 100 g)
- 5.0 mm (H-8) crochet hook
- 1 wooden ring, 2 in (5.1 cm) inner diameter
- Stitch marker
- Tapestry needle
- Scissors
- Tape measure
- Pins or clips for assembly
The yarn amount includes a margin of about 10%. Puff stitches use a lot of yarn, so it’s worth having a little extra.
Abbreviations (US Terms)
- ch: chain
- sl st: slip stitch
- sc: single crochet
- inc: 2 sc in the same stitch
- BLO: back loop only
- sk: skip
- sp: space
- st(s): stitch(es)
- rnd(s): round(s)
Special stitch – Puff stitch (puff): Yarn over, insert the hook in the stated stitch or space, yarn over, and pull up a loop to half double crochet height. Repeat from * to * 2 more times, so you have 7 loops on the hook. Yarn over and pull through all 7 loops. The ch-1 after each puff closes the puff and counts as its own stitch.
Gauge and Checkpoints
Gauge: 14 sc and 16 rows = 4 in (10.2 cm) in single crochet. In the puff pattern, 2 puff rounds = 1 in (2.5 cm) tall.
Make one basket first and check it before you start the others:
- After Rnd 5 (30 sts): the base measures 2.5 in (6.4 cm) from flat side to flat side.
- After Rnd 10 (60 sts): the base measures 5 in (12.7 cm) from flat side to flat side, and about 17.1 in (43.4 cm) around the edge.
- After Rnd 17: the wall measures 3.25 in (8.3 cm) from the base edge.
- After Rnd 19: the full wall measures 3.75 in (9.5 cm).
If your base is too big, switch to a 4.5 mm hook. If it’s too small, switch to a 5.5 mm hook. If the base is right but the walls are too tall, pull the puff loops up a little shorter. If the walls are too short, pull them up a little taller. Test with a toilet roll: it should slide in easily with about 0.25 in (0.6 cm) of space all around.

Basket (Make 3)
Work in joined rounds. Join each round with a sl st to the first st, then ch 1. The ch 1 doesn’t count as a stitch.
Hexagon Base
Stack the increases directly on top of each other in every round. This creates the six straight sides and six corners of the hexagon.
Rnd 1: Make a magic ring, ch 1, work 6 sc in the ring. Join. (6 sts)
Rnd 2: Inc in each st around. Join. (12 sts)
Rnd 3: Sc in next st, inc in next st. Repeat from * 5 more times. Join. (18 sts)
Rnd 4: Sc in next 2 sts, inc in next st, 6 times. Join. (24 sts)
Rnd 5: Sc in next 3 sts, inc in next st, 6 times. Join. (30 sts)
Rnd 6: Sc in next 4 sts, inc in next st, 6 times. Join. (36 sts)
Rnd 7: Sc in next 5 sts, inc in next st, 6 times. Join. (42 sts)
Rnd 8: Sc in next 6 sts, inc in next st, 6 times. Join. (48 sts)
Rnd 9: Sc in next 7 sts, inc in next st, 6 times. Join. (54 sts)
Rnd 10: Sc in next 8 sts, inc in next st, 6 times. Join. (60 sts)
Each round adds 6 sts, one per side. After Rnd 10, each side of the hexagon has 10 sts (6 x 10 = 60). If the corners drift out of line, the base will come out round instead of six-sided.
Walls
Rnd 11 (turning round): Ch 1, sc in BLO of each st around. Join. (60 sts)
This round makes a fold line at the base edge so the walls stand up.
Rnd 12 (puff round A): Ch 2 (doesn’t count as a st). Puff in the first st, ch 1, sk next st. Puff in next st, ch 1, sk next st. Repeat from * around. Join with a sl st to the top of the first puff. (30 puffs + 30 ch-1 sps = 60 sts)
Rnd 13 (puff round B): Sl st in the next ch-1 sp, ch 2, puff in the same sp, ch 1. Puff in next ch-1 sp, ch 1. Repeat from * around. Join to the top of the first puff. (30 puffs + 30 ch-1 sps = 60 sts)
The puffs in Rnd 13 sit between the puffs of Rnd 12, which creates the staggered, brick-like texture.
Rnds 14–17: Repeat Rnd 13 four more times. (30 puffs + 30 ch-1 sps = 60 sts in each round)
You now have 6 puff rounds. The wall measures 3.25 in (8.3 cm): 0.25 in (0.6 cm) from Rnd 11 plus 3 in (7.6 cm) of puff rounds. Don’t fasten off; go straight on to the rim.
Rim (Border)
The rim is each basket’s border: 2 rounds of sc worked on top of the last puff round.
Border gauge: 14 sc = 4 in (10.2 cm), the same as the base.
Rim Rnd 1 (Rnd 18, conversion round): Ch 1, sc in the top of each puff and in each ch-1 sp around. Join. (30 sc in puffs + 30 sc in ch-1 sps = 60 sts)
Rim Rnd 2 (Rnd 19): Ch 1, sc in each st around. Join. (60 sts) Fasten off and weave in the ends.
Why the math works: The base edge has 60 sts, which is 10 sts per hexagon side with no separate corner stitches. Each puff round has 30 puffs + 30 ch-1 sps, which is still 60 sts. Rim Rnd 1 puts one sc in each of those 60 sts and adds 0 extra, so the rim has 10 sts above each side, 60 in total. Because the count never changes, the walls rise straight without flaring out or pulling in. The rim adds 0.5 in (1.3 cm), for a finished wall of 3.75 in (9.5 cm).
Strap (Make 2)
Row 1: Ch 5, sc in the 2nd ch from the hook and in each ch across. (4 sts)
Rows 2–78: Ch 1, turn, sc in each st across. (4 sts)
Fasten off, leaving a 24 in (61.0 cm) tail for sewing. Each strap measures 1.1 in (2.8 cm) wide and 19.5 in (49.5 cm) long. The rows are used like this:
- Rows 1–15: sewn to the bottom basket, 3.75 in (9.5 cm)
- Rows 16–21: free gap, 1.5 in (3.8 cm)
- Rows 22–36: sewn to the middle basket, 3.75 in (9.5 cm)
- Rows 37–42: free gap, 1.5 in (3.8 cm)
- Rows 43–57: sewn to the top basket, 3.75 in (9.5 cm)
- Rows 58–73: free rise to the ring, 4 in (10.2 cm)
- Rows 74–78: wrapped around the ring and folded back, 1.25 in (3.2 cm)
Total: 15 + 6 + 15 + 6 + 15 + 16 + 5 = 78 rows.
Make All Pieces
Make 5 pieces, all in mustard yellow: 3 baskets and 2 straps.
Layout (front view, top to bottom):
[ ring ]
/ \
[ Basket 1 ]
| |
[ Basket 2 ]
| |
[ Basket 3 ]
The two straps run down the left and right sides of all three baskets.
Joining
Method: Whipstitch with the yarn tail, sewing through the outside of the basket wall and both long edges of the strap.
Stitch-to-stitch logic: On each basket, pick two opposite sides of the hexagon, such as side 1 and side 4. Each side has 10 sts. Center the 4-st strap on the side so 3 sts stay free on each side of it (3 + 4 + 3 = 10). Going up the wall, Rnd 11 matches 1 strap row. The 6 puff rounds match 12 strap rows (2 rows per round), and the 2 rim rounds match 2 rows. That’s 1 + 12 + 2 = 15 strap rows per basket.
- Pin Row 1 of the first strap to the Rnd 11 fold line of Basket 3, centered on side 1. Pin Row 15 to the top of the rim. Whipstitch both long edges, and sew Row 1 to the fold line.
- Repeat with the second strap on side 4.
- Leave Rows 16–21 free. Sew Rows 22–36 to Basket 2 on the same sides.
- Leave Rows 37–42 free. Sew Rows 43–57 to Basket 1.
- Check that neither strap is twisted. Pass each free end through the wooden ring from front to back.
- Fold Rows 74–78 down behind the strap so they lie over Rows 69–73. Whipstitch all edges flat.
Tension: Sew firmly but don’t pull. Tight stitches make the wall pucker. The strap should lie flat with no ripples.
Size checkpoint: Lay the holder flat. Both gaps should be 1.5 in (3.8 cm). From the bottom of Basket 3 to the top fold should be 18.25 in (46.4 cm): 3 x 3.75 in (9.5 cm) + 2 x 1.5 in (3.8 cm) + 4 in (10.2 cm). The 4 in (10.2 cm) rise is measured along the strap. Because the straps angle in toward the ring, the rise looks a little shorter when the holder hangs.
Final Blocking
- Weave in any remaining ends on the inside of the baskets.
- Put a toilet roll in each basket to support its shape.
- Hold a steam iron about 1 in (2.5 cm) above the fabric and lightly steam the walls and straps. Don’t press the puffs flat.
- Shape the base corners with your fingers so the six sides are even.
- Smooth the straps so they hang straight.
- Let the holder dry completely, hanging from the ring with the rolls inside.
- Measure again: each basket should be 5 in (12.7 cm) across and 3.75 in (9.5 cm) tall.
Final Quality-Control Checklist
- Each base has 60 sts and six clear corners.
- Each wall has 6 staggered puff rounds of 30 puffs.
- Each rim has 60 sc and lies flat.
- All three baskets measure 5 in (12.7 cm) by 3.75 in (9.5 cm).
- Both straps have 78 rows and measure 19.5 in (49.5 cm).
- The straps are centered on opposite hexagon sides.
- Both gaps measure 1.5 in (3.8 cm).
- The ring fold is sewn securely, with no twists.
- The holder hangs straight when filled.
Troubleshooting
The base is round, not hexagonal. The increases aren’t stacked. Line up each increase with the one below it.
The base curls into a bowl. Your tension is too tight. Use a larger hook for the base only.
The base ripples. Your tension is too loose. Use a smaller hook.
The walls flare out. The puffs are too tall. Pull up shorter loops, or use a smaller hook for the walls.
The roll doesn’t fit. Check your base gauge first. If your rolls are wider than 4.5 in (11.4 cm), add one increase round (66 sts) and work 33 puffs per round.
The holder leans. One strap is sewn higher than the other. Unpick it and match the rows on both sides.
Care
Hand wash in cool water with mild soap and press out the water in a towel. Dry flat with a roll inside each basket, and don’t tumble dry.

Final Notes
Each measurement in this holder builds on the one before it. The 60-st base gives 10 sts per side and 5 in (12.7 cm) across. The puff rounds keep the same 60 sts, so the walls rise straight to 3.25 in (8.3 cm). The 2-round rim adds 0.5 in (1.3 cm), for a 3.75 in (9.5 cm) wall that matches 15 strap rows. Three baskets, two 1.5 in (3.8 cm) gaps, and a 4 in (10.2 cm) rise give the full 18.25 in (46.4 cm) length. If each step matches its checkpoint, the finished holder will too.
Happy crocheting!