This three-tier hanging toilet paper holder gives a bathroom a soft cottage-garden look. Three round cream baskets hang one above the other on two braided cream cords. At the top, the cords meet in a hanging loop that slips over a wall peg or hook. Each basket holds one standard roll, and the roll sits a little above the rim so it is easy to grab.
The colors are cream, warm coral and olive green. Each basket has a smooth cream base, a band of coral puff stitches, a thin green stripe, a row of cream puffs, a second green stripe, a coral shell band and a firm cream rim. You change colors only at the end of a round and never carry more than one color at a time.
The pattern uses US crochet terms. Each basket measures 5 in (12.7 cm) across and 3.5 in (8.9 cm) tall. The finished holder hangs about 24.6 in (62.5 cm) from the top of the loop to the bottom of the lowest basket.
The construction is simple. You work a flat circle base in double crochet, turn the wall up with a back-loop round, and then work the wall in joined rounds with no increases. When all three baskets are done, you make two Romanian cord straps and sew them to opposite sides of each basket. Then you join the straps at the top to form the hanging loop.
Finished Size and Construction
- Finished size: about 5 in (12.7 cm) wide x 24.6 in (62.5 cm) long, including the loop
- Skill level: Easy-Intermediate
- Terminology: US crochet terms
- Yarn weight: Worsted (medium #4), cotton or cotton blend
- Hook: 5.0 mm (US H-8)
- Number of pieces: 5 (3 baskets, 2 straps)
- Layout: 3 baskets stacked vertically, 2 in (5.1 cm) apart, hung from a triangle of cord
- Piece size: each basket is 5 in (12.7 cm) across x 3.5 in (8.9 cm) tall
- Size before border: wall height 2.9 in (7.4 cm) after Round 13
- Border depth: 0.6 in (1.5 cm), Rounds 14 and 15
Materials
Choose a smooth worsted-weight cotton or cotton blend. Cotton holds its shape well in a bathroom and shows puffs and shells clearly. Acrylic also works, but the baskets will be softer. The amounts below assume a yarn with about 85 m per 50 g.
- Color A, Cream: 150 g (255 m) for the bases, cream rounds, rims and both straps
- Color B, Coral: 50 g (85 m) for the puff band and the shell band
- Color C, Olive Green: 50 g (85 m) for the two green stripes
You will actually use about 140 g of cream, 30 g of coral and 18 g of green. All quantities include a margin for a gauge swatch and for weaving in ends.
Tools:
- 5.0 mm (US H-8) crochet hook
- Stitch markers (at least 3)
- Tapestry needle
- Scissors
- Measuring tape
- Wooden peg or wall hook for hanging (optional)
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- hdc – half double crochet
- dc – double crochet
- BLO – back loop only
- st(s) – stitch(es)
- sk – skip
- rep – repeat
Special stitches:
- Puff stitch (puff): (Yo, insert hook in st, yo, pull up a loop to about 0.5 in / 1.3 cm tall) 3 times in the same st. Yo and draw through all 7 loops on the hook, then ch 1 to close. The closing ch 1 does not count as a stitch.
- Shell: 5 dc in the same st.
- Romanian cord: Ch 2, sc in 2nd ch from hook. Turn the work clockwise like a page, insert hook under the 2 loops now on the left side, yo, pull up a loop, yo, draw through both loops. Each repeat adds one cord row.
Gauge and Checkpoints
Gauge: 15 dc = 4 in (10.2 cm), worked in rounds. Romanian cord: 4 rows = 1 in (2.5 cm).
Make one complete basket before starting the others. It is both your gauge swatch and your fit test. Drop a standard roll inside to check the fit.
Checkpoints:
- After Round 1: the base is about 1.5 in (3.8 cm) across
- After Round 3: the base is about 3 in (7.6 cm) across
- After Round 5: the base is 5 in (12.7 cm) across and lies flat
- After Round 13: the wall is 2.9 in (7.4 cm) tall
- After Round 15: the wall is 3.5 in (8.9 cm) tall
If the base is too big (more than 5.25 in / 13.3 cm), switch to a 4.5 mm hook. If it is too small (less than 4.75 in / 12.1 cm), switch to a 5.5 mm hook. The base must be at least 4.75 in (12.1 cm) across so a standard 4.5 in (11.4 cm) roll drops in easily. If the base ruffles, your tension is too loose. If it cups, your tension is too tight.

Basket (Make 3)
Work every round with the right side facing you and the outside of the basket facing out. Join each round with a sl st to the first st. The starting ch does not count as a stitch. Place a marker in the first st of each round.
Base
With Color A, make a magic ring.
Round 1: Ch 2, 12 dc in ring, pull the ring closed, join. (12 dc)
Round 2: Ch 2, 2 dc in each st around, join. (24 dc)
Round 3: Ch 2, dc in next st, 2 dc in next st, rep 12 times, join. (36 dc)
Round 4: Ch 2, dc in next 2 sts, 2 dc in next st, rep 12 times, join. (48 dc)
Round 5: Ch 2, dc in next 3 sts, 2 dc in next st, rep 12 times, join. (60 dc)
Check: the base should measure 5 in (12.7 cm) across. A small hole stays open in the center, which is normal.
Wall
There are no increases from here on. Every round has 60 sts.
Round 6 (turning round): Ch 1, sc in BLO of each st around, join. (60 sc)
The unworked front loops form a crisp edge, and the wall now turns upward.
Round 7: Ch 1, hdc in each st around, join. (60 hdc) Change to Color B on the final yo of the joining sl st. Fasten off Color A.
Round 8 (coral puffs): With Color B, ch 1, puff in next st, sc in next 3 sts, rep 15 times, join. (15 puffs + 45 sc = 60 sts) Change to Color C. Fasten off Color B.
Push each puff outward with your finger so it sits on the outside of the wall.
Round 9: With Color C, ch 1, sc in each st around, working into the top of each puff (not the closing ch), join. (60 sc) Change to Color A. Fasten off Color C.
Round 10 (cream puffs): With Color A, ch 1, sc in next 2 sts, puff in next st, sc in next st, rep 15 times, join. (15 puffs + 45 sc = 60 sts) Change to Color C.
Each cream puff sits halfway between two coral puffs below, which creates the staggered look.
Round 11: With Color C, ch 1, sc in each st around, join. (60 sc) Change to Color A. Fasten off Color C.
Round 12: With Color A, ch 1, hdc in each st around, join. (60 hdc) Change to Color B.
Round 13 (coral shells): With Color B, ch 1, sc in first st, sk 2 sts, shell in next st, sk 2 sts, sc in next st, rep 9 times, sk 2 sts, shell in next st, sk 2 sts, join to first sc. (10 shells + 10 sc = 60 sts) Change to Color A. Fasten off Color B.
Each repeat uses 6 sts of Round 12 and makes 6 sts (5 dc + 1 sc), so the count stays at 60. Check: the wall is now 2.9 in (7.4 cm) tall.
Work the Border (Rounds 14–15, below) now, then make the next basket.
Make All Pieces
Make 3 baskets exactly as above, each with its Border, then make 2 straps as below.
Per basket: about 40 g Color A, 10 g Color B and 6 g Color C. Both straps together: about 20 g Color A.
Strap (Make 2): With Color A, work Romanian cord for 94 rows. The cord should measure 23.5 in (59.7 cm). Do not fasten off Strap A yet. Fasten off Strap B, leaving a 12 in (30.5 cm) tail.
The 94 rows break down like this:
- 14 rows along the bottom basket (3.5 in / 8.9 cm)
- 8 rows for the first gap (2 in / 5.1 cm)
- 14 rows along the middle basket
- 8 rows for the second gap
- 14 rows along the top basket
- 36 rows for the top leg (9 in / 22.9 cm)
Check: 14 + 8 + 14 + 8 + 14 + 36 = 94 rows.
Hanging loop (Strap A only): After Row 94, ch 10 and sl st into the last cord row to form a loop about 1.5 in (3.8 cm) tall. Fasten off, leaving a 12 in (30.5 cm) tail.
Layout grid:
[ loop ]
/ \
Strap A / \ Strap B (9 in / 22.9 cm legs)
/ \
|[ Basket 3 ]| top
| 2 in gap |
|[ Basket 2 ]| middle
| 2 in gap |
|[ Basket 1 ]| bottom
Joining
Method: Whipstitch with a tapestry needle and Color A.
On each basket, mark st 1 and st 31 of Round 15. These two stitches sit directly opposite each other, 30 sts apart. Both sit above a valley sc of the shell round, so the straps fall neatly between shells.
Stitch-to-stitch logic: The wall has 10 rounds (Rounds 6 to 15) over 3.5 in (8.9 cm). The strap covers the same height in 14 cord rows, so sew 7 cord rows to every 5 wall rounds. Sew one cord row to each wall round, and add one extra cord row at the 2nd and 4th round of every 5. Sew through both loops of the cord edge and around the post of the wall stitch.
- Line up Row 1 of Strap A with Round 6 of Basket 1 at st 1. Sew cord Rows 1–14 up to Round 15.
- Leave cord Rows 15–22 free (2 in / 5.1 cm gap).
- Sew cord Rows 23–36 to Basket 2 at st 1.
- Leave Rows 37–44 free.
- Sew Rows 45–58 to Basket 3 at st 1.
- Rows 59–94 form the free top leg.
- Repeat Steps 1–6 with Strap B at st 31 of each basket.
- Bring the top of Strap B to the base of the hanging loop. Sew Row 94 of Strap B firmly to Row 94 of Strap A.
Tension: Keep the whipstitch snug but not tight. If you pull hard, the wall puckers and the basket tips. Make several extra passes at the top junction, because it carries all the weight.
Size checkpoint: Hang the piece. Each gap should be 2 in (5.1 cm), both legs should be 9 in (22.9 cm), and all baskets should hang level.
Border (Top Rim)
The rim finishes each basket. Work it on every basket right after Round 13, before you make the straps or do any joining.
Border gauge: 60 sts around a 15.7 in (39.9 cm) circumference, about 3.8 sts per inch. For counting, split the round into two halves of 30 sts: st 1 to st 30 and st 31 to st 60. Each half holds exactly 5 shell repeats.
Round 14 (leveling round): With Color A, ch 1, hdc in next sc, sc in each of next 5 dc, rep 10 times, join. (10 hdc + 50 sc = 60 sts; 30 sts per half)
The taller hdc fills each valley between shells, which levels the top edge.
Round 15: Ch 1, sc in each st around, join. (60 sc; 30 sts per half) Fasten off and weave in all ends on the inside.
Why the math works: The shell repeat is 6 sts, and 60 ÷ 6 = 10 repeats. Each repeat in Round 14 is 1 hdc + 5 sc = 6 sts, so 10 x 6 = 60. Round 15 has 1 sc in each existing st, so it stays at 60. With 30 sts per half, the strap points at st 1 and st 31 both land on a valley hdc. The rim adds 0.6 in (1.5 cm), which brings the wall from 2.9 in (7.4 cm) to 3.5 in (8.9 cm).
Final Blocking
- Soak the finished baskets in cool water for 10 minutes. Squeeze out water gently, without wringing.
- Roll each basket in a towel to remove extra water.
- Slide each basket over a toilet roll wrapped in plastic, or over a can about 4.5 in (11.4 cm) across.
- Push the base flat and the wall straight. Shape each puff and shell with your fingers.
- Lay the straps flat and straight so each measures 23.5 in (59.7 cm).
- Let everything dry completely, for at least 24 hours.
- Sew the straps on as described in Joining.
Final Quality-Control Checklist
- Each base is 5 in (12.7 cm) across and lies flat.
- Each wall is 3.5 in (8.9 cm) tall and straight.
- Every wall round has 60 sts.
- Each basket has 15 coral puffs and 15 cream puffs, staggered.
- Each basket has 10 evenly spaced shells.
- The rim is level with no dips.
- Each strap has 94 rows and measures 23.5 in (59.7 cm).
- Gaps are 2 in (5.1 cm) and the baskets hang level.
- The hanging loop is secure and all ends are woven in.
Troubleshooting
The base ruffles. There are too many sts or the tension is loose. Go down a hook size and recount Round 5.
The base cups up. The tension is too tight. Go up a hook size.
The wall flares out. You may have increased in the wall. Recount to make sure every round has 60 sts.
The puffs show on the inside. Push them outward as you go, or pull up the puff loops a little taller.
The shells crowd together. Check that you skip 2 sts on each side of each shell.
A basket hangs crooked. The straps are not directly opposite each other. Check that they sit at st 1 and st 31.
A strap is too long or too short. Add or remove rows in the top leg only.
Care
Hand wash in cool water with mild soap. Reshape each basket over a roll and lay it flat to dry. Don’t use a dryer, which can shrink cotton.

Final Notes
The measurement chain is simple. A 60-st base measures 5 in (12.7 cm) across. The wall turns up at Round 6 and reaches 2.9 in (7.4 cm) by Round 13. The rim brings it to 3.5 in (8.9 cm). Each 94-row strap measures 23.5 in (59.7 cm): it runs along all three baskets, spans two 2 in (5.1 cm) gaps and ends in a 9 in (22.9 cm) top leg. With the loop on top, the holder hangs about 24.6 in (62.5 cm).
Check your base at Round 5, and the rest of the measurements will follow.
Happy crocheting!