This three-tier holder stores spare toilet paper rolls on the wall. It has three round baskets, one above the other, joined by short side straps. A tapered tab at the top wraps around a wooden ring so the whole thing hangs from a single hook.
The colors are dusty mauve and soft light gray. Each basket has a mauve base, then offset rounds of fan-shaped shells in alternating gray and mauve, and a light gray rim at the top. The straps are mauve, and the hanger tab is gray with mauve edges.
All instructions use US crochet terms. Each basket is about 5 in (12.7 cm) across and 4 in (10.2 cm) tall, which fits a standard roll with a little of the roll showing above the rim. Assembled, the holder is about 18 in (45.7 cm) long without the ring.
Each basket is worked in joined rounds. You start with a flat double crochet base, turn up the wall with a back-loop round, work four rounds of shells, then finish with a single crochet rim. Then you make four straps, sew them between the baskets, work the hanger tab straight off the top basket’s rim, and fold the tab over the ring.
Finished Size and Construction
- Finished size: about 5 in (12.7 cm) wide x 18 in (45.7 cm) long, without the ring
- Skill level: Easy+ / confident beginner
- Terminology: US crochet terms
- Yarn weight: Worsted (#4), cotton or cotton blend
- Hook: 5.0 mm (H-8)
- Number of pieces: 3 baskets, 4 straps, 1 hanger tab (worked onto the top basket)
- Layout: 1 column of 3 baskets, stacked vertically
- Piece size: each basket is 5 in (12.7 cm) across x 4 in (10.2 cm) tall
- Size before rim border: 3 in (7.6 cm) tall after the shell rounds
- Rim border depth: about 1 in (2.5 cm)
- Gap between baskets: 1.5 in (3.8 cm) of open strap
Materials
Use a firm worsted cotton or cotton blend. It keeps the walls upright and handles a humid bathroom well. A soft, drapey yarn will sag under the weight of the rolls.
The amounts below assume a cotton with about 170 m per 100 g.
- Color A, dusty mauve: 160 g (about 272 m)
- Color B, light gray: 110 g (about 187 m)
Both amounts include roughly a 15% margin for your swatch, color changes and weaving in ends.
Tools:
- 5.0 mm (H-8) crochet hook
- 1 wooden ring, 3 in (7.6 cm) across
- 4 locking stitch markers
- Tapestry needle
- Scissors
- Measuring tape
- 1 roll of toilet paper, used as a blocking form
Abbreviations (US Terms)
- ch: chain
- sl st: slip stitch
- sc: single crochet
- dc: double crochet
- sc2tog: single crochet 2 together
- BLO: back loop only
- sk: skip
- sp: space
- st(s): stitch(es)
- rnd(s): round(s)
Special stitch: Shell: 3 dc worked into the same stitch or space.
Note: At the start of a round, ch 3 counts as the first dc. At the end of each round, join with a sl st to the top of the beginning ch 3 (or to the first sc on sc rounds). Keep every join at the back of the basket.
Gauge and Checkpoints
Gauge: 15 dc = 4 in (10.2 cm). In sc, 15 sts and 16 rows = 4 in (10.2 cm).
Make one complete basket before you start the others. It works as your gauge swatch, and the checkpoints are easier to measure on the real piece.
Checkpoints:
- After Rnd 3, the base measures 3 in (7.6 cm) across.
- After Rnd 5, the base measures 5 in (12.7 cm) across and lies flat.
- After Rnd 8, the wall is 0.75 in (1.9 cm) tall, measured up from the base edge.
- After Rnd 12, the wall is 3 in (7.6 cm) tall.
- After Rnd 17, the basket is 4 in (10.2 cm) tall.
If your basket is too big, switch to a 4.5 mm hook. A base wider than 5.25 in (13.3 cm) makes the holder look floppy.
If your basket is too small, switch to a 5.5 mm hook. The base needs to be at least 4.75 in (12.1 cm) across, or a standard roll (about 4.5 in / 11.4 cm across) will not drop in easily.

Basket (Make 3)
Base
Use Color A.
Rnd 1: Make a magic ring. Ch 3, then work 11 dc into the ring. Join. (12 dc)
Rnd 2: Ch 3, dc in the same st. Work 2 dc in each st around. Join. (24 dc)
Rnd 3: Ch 3, 2 dc in the next st. Dc in the next st, 2 dc in the next st; repeat from * around. Join. (36 dc)
Rnd 4: Ch 3, dc in the next st, 2 dc in the next st. Dc in each of the next 2 sts, 2 dc in the next st; repeat from * around. Join. (48 dc)
Rnd 5: Ch 3, dc in each of the next 2 sts, 2 dc in the next st. Dc in each of the next 3 sts, 2 dc in the next st; repeat from * around. Join. (60 dc)
The base should now measure 5 in (12.7 cm) across.
Turning the Wall
Rnd 6: Ch 1. Sc BLO in each st around. Join. (60 sc)
The unused front loops leave a crisp ridge, and the work starts to turn upward.
Rnds 7–8: Ch 1. Sc in each st around. Join. (60 sc each round)
Fasten off Color A.
Shell Band
Each shell sits in the gap between two shells of the round below. This offsets each round by half a shell and creates the bricked pattern.
Rnd 9 (Color B): Join B in the st just after the Rnd 8 join. Ch 3, then work 2 dc in the same st. Sk 2 sts, work a shell in the next st; repeat from * 18 more times. Sk the last 2 sts. Join. (20 shells, 60 dc)
Fasten off B.
Rnd 10 (Color A): Join A in the gap just after the previous join. Ch 3, then work 2 dc in the same sp. Work a shell in each gap between shells around. Join. (20 shells, 60 dc)
Fasten off A.
Rnd 11 (Color B): Repeat Rnd 10 using Color B. (20 shells, 60 dc)
Rnd 12 (Color A): Repeat Rnd 10 using Color A. (20 shells, 60 dc)
Fasten off. The wall should now be 3 in (7.6 cm) tall. Drop a roll into the basket. It should slide in without stretching the shells.
Make All Pieces
Baskets: Make 3, following the instructions above. Each basket uses about 40 g of Color A and 28 g of Color B, including the rim.
Straps (make 4, Color A): Ch 5.
- Row 1: Sc in the 2nd ch from the hook and in each ch across. Turn. (4 sc)
- Rows 2–14: Ch 1, sc in each st across. Turn. (4 sc each row)
Fasten off and leave a 12 in (30.5 cm) tail. Each strap measures 1.1 in x 3.5 in (2.8 cm x 8.9 cm).
Layout (front view):
( ring )
[ hanger tab ]
[ Basket 1 (top) ]
| | <- 2 straps
[ Basket 2 (middle) ]
| | <- 2 straps
[ Basket 3 (bottom) ]
Rim Border
Work the rim on each basket. The rim uses the sc gauge: 15 sts = 4 in (10.2 cm).
Rnd 13 (Color B): Join B in the dc just after the previous join. Ch 1. Sc in each dc around. Join. (60 sc = 60 sts worked one per existing dc + 0 extra)
Rnds 14–16: Ch 1. Sc in each st around. Join. (60 sc each round)
Rnd 17: Sl st BLO in each st around. Join. (60 sl sts)
Fasten off and weave in the ends.
Counts per side: Lay the basket flat with the join at the center back. Number the Rnd 17 sts 1–60, starting with the first st after the join.
- Back half: sts 46–60 and 1–15 (30 sts)
- Front half: sts 16–45 (30 sts)
- Strap zones: sts 14–17 on one side and sts 44–47 on the other side (4 sts each)
- Hanger zone (top basket only): sts 55–60 and 1–6 (12 sts)
Why the math works: All 60 stitches carry straight up from Rnd 5. The shell rounds hold 60 because 20 shells x 3 dc = 60, and the rim is worked one sc per dc. With no increases in the wall, it stays straight. Each strap zone matches the strap’s 4-stitch width, and the two zones sit 30 sts apart, directly opposite each other.
Joining
Use whipstitch with the strap tails. Work stitch-to-stitch: each of the 4 stitches in a strap’s end row is sewn to 1 basket stitch.
Step 1: Lower ends. Put a marker at sts 14 and 44 on the Rnd 17 rim of Basket 3. Place 1 in (2.5 cm) of a strap (4 rows) against the inside of the rim, over sts 14–17. Whipstitch the strap’s 4 end stitches to the 4 Rnd 14 stitches behind them. Then tack both side edges of the strap to the rim, sewing 1 st into each row. Repeat with a second strap over sts 44–47. Attach the other 2 straps to Basket 2 the same way.
Step 2: Upper ends. Hold Basket 2 above Basket 3. Lay the free top 1 in (2.5 cm) of each strap against the outside of Basket 2 on Rnds 6–9, over sts 14–17 and 44–47. All the joins are at the back, so Rnd 6 uses the same stitch numbers as Rnd 17. Whipstitch the strap edges and end row in place. Join Basket 1 above Basket 2 the same way.
Tension: Sew snug but not tight. If the seam is too tight, it puckers and the strap twists. If it is too loose, the basket below tilts forward.
Size checkpoint: The open strap between baskets measures 1.5 in (3.8 cm). From the bottom of Basket 3 to the rim of Basket 1, the holder should measure 15 in (38.1 cm): 3 baskets x 4 in plus 2 gaps x 1.5 in.
Hanger Tab
Work in rows on the top rim of Basket 1. The tab uses the free front loops of Rnd 16 at the back of the basket.
Row 1 (Color B): Join B in the free front loop of Rnd 16, st 55. Ch 1. Sc in sts 55–60 and 1–6. Turn. (12 sc)
Row 2: Ch 1, sc across. Turn. (12 sc)
Row 3: Ch 1, sc2tog, sc in each of the next 8 sts, sc2tog. Turn. (10 sc)
Row 4: Ch 1, sc across. Turn. (10 sc)
Row 5: Ch 1, sc2tog, sc in each of the next 6 sts, sc2tog. Turn. (8 sc)
Row 6: Ch 1, sc across. Turn. (8 sc)
Row 7: Ch 1, sc2tog, sc in each of the next 4 sts, sc2tog. (6 sc) Fasten off B.
Rows 8–16 (Color A): Join A. Ch 1, sc across, turn. (6 sc each row)
Edging (Color A): Do not fasten off after Row 16. Ch 1 and sc down one side of the tab, working 1 sc per row end (16 sc). Then sc up the other side the same way (16 sc). Fasten off and leave a 12 in (30.5 cm) tail.
The tab measures 3.2 in (8.1 cm) wide at the base and 1.6 in (4.1 cm) wide at the strip. The gray section is 1.75 in (4.4 cm) tall and the mauve strip is 2.25 in (5.7 cm) long.
Fold the mauve strip back over the wooden ring. Whipstitch Row 16 to the back of Row 8, sewing stitch to stitch (6 sts).
Final Blocking
- Put one roll of toilet paper inside each basket.
- Mist the baskets lightly with water until they are damp, not soaked.
- Push out each base with your fingers so it sits flat at 5 in (12.7 cm) across.
- Shape the walls straight around the roll so the shells line up vertically.
- Pinch each rim upright so it sits 4 in (10.2 cm) above the base.
- Lay the straps flat and straight, with 1.5 in (3.8 cm) between baskets.
- Let everything dry flat for 24 hours, then remove the rolls and hang the holder.
Final Quality-Control Checklist
- Each basket has 60 sts in every round from Rnd 5 to Rnd 17.
- Each basket has 4 shell rounds in alternating colors, with 20 shells per round.
- All color-change joins sit at the back of each basket.
- The bases are 5 in (12.7 cm) across and the baskets are 4 in (10.2 cm) tall.
- The straps sit directly opposite each other.
- The gaps between baskets are an even 1.5 in (3.8 cm).
- The hanger tab is centered over the back join.
- The total length is about 18 in (45.7 cm).
- All ends are woven in securely.
Troubleshooting
The basket flares outward. Your Rnd 6 BLO round was too loose. Redo it with tighter tension, or work it with a hook one size smaller.
The shells lean or spiral. Join each new color in a gap, not in a stitch, and work only one shell per gap.
There is a gap at the color joins. Pull the first ch 3 snug, and weave the tail through the base of the shell next to it.
The baskets tilt forward. The straps were sewn too far toward the front. Sew them again, centered on sts 14–17 and 44–47.
The tab stretches. Make the tab again with a hook one size smaller.
Care
Hand wash in cool water with mild soap, roll it in a towel to press out the water, and dry it flat with rolls inside to keep the shape. Do not tumble dry.

Final Notes
The measurement chain is short and easy to check. A 60-stitch base that measures 5 in (12.7 cm) gives you 20 shells per round. Four shell rounds bring the wall to 3 in (7.6 cm), and the rim brings each basket to 4 in (10.2 cm). Three baskets plus two 1.5 in (3.8 cm) gaps make 15 in (38.1 cm), and the hanger tab brings the total to about 18 in (45.7 cm).
Happy crocheting!