This hanging toilet paper holder stores three spare rolls in a neat vertical column. It has three oval basket pockets stacked one above the other. A soft strap arches from the top basket over a natural wooden ring, so the whole piece hangs from a single wall hook.
The main color is a deep teal. A copper-brown contrast forms small V-shaped “tulip” motifs in three staggered bands around each basket. Each basket has a rolled crab-stitch rim, which keeps the opening firm and tidy. The look is warm and slightly rustic, and it suits a bathroom with wood and brass accents.
This pattern uses US crochet terms. The finished holder is about 8 in (20.3 cm) wide and about 16 1/4 in (41.3 cm) tall from the top of the strap arch to the bottom of the lowest basket. Each basket is 4 in (10.2 cm) tall.
You make three identical baskets and one strap, so there are four pieces. Each basket starts with a flat oval base. The sides go straight up, and you work three pattern rounds of V-spikes into them. After you finish each rim, sew the baskets together at the back and stitch the strap inside the top basket.
Finished Size and Construction
- Finished size: about 8 in (20.3 cm) wide x 16 1/4 in (41.3 cm) tall
- Skill level: Intermediate (spike stitches, carrying yarn)
- Terminology: US crochet terms
- Yarn weight: Bulky (#5) cotton or cotton blend
- Hook: 5.5 mm (I-9)
- Number of pieces: 4 (3 baskets + 1 strap)
- Layout: 1 column of 3 baskets, strap on top
- Basket base: about 8 in x 4 1/4 in (20.3 cm x 10.8 cm)
- Basket side height before border: about 3 3/4 in (9.5 cm)
- Border (rim) depth: about 1/4 in (0.6 cm), giving a 4 in (10.2 cm) basket
- Strap: 2 in (5.1 cm) wide x about 14 in (35.6 cm) long
Materials
Choose a firm bulky cotton or cotton blend. Cotton holds its shape when a roll sits in the basket, and you can wash it. Very soft acrylic will sag. The yardage below assumes a yarn of about 120 m per 100 g.
- Color A, deep teal: 400 g / 480 m
- Color B, copper brown: 100 g / 120 m
These quantities include a margin of about 15% to cover the carried yarn in the pattern rounds, your gauge swatch, and tails.
Tools:
- 5.5 mm (I-9) crochet hook
- Tapestry needle
- 4 locking stitch markers
- Wooden ring, 3 in (7.6 cm) diameter
- Scissors and tape measure
- Wall hook for hanging
Abbreviations (US Terms)
- ch – chain
- sc – single crochet
- sl st – slip stitch
- st(s) – stitch(es)
- BLO – back loop only
- rnd(s) – round(s)
- rev sc – reverse single crochet (crab stitch)
- V-sp – V-spike (see below)
V-spike (V-sp), worked over 2 sts in Color B: Find the gap between the 2 stitches that sit 2 rounds below the next 2 stitches. Insert the hook into that gap and pull up a long loop level with the working round. Yo and pull through both loops (first spike). Insert the hook into the same gap again, pull up a long loop, yo and pull through both loops (second spike). Skip the 2 stitches of the current round that are hidden behind the spikes. One V-sp counts as 2 sts. The two spikes meet at the bottom and spread apart at the top, which forms the tulip “V”.
Carrying yarn: In pattern rounds, lay the color you aren’t using along the top of the stitches and work over it. Change color on the last yo of the stitch before the new color.
Gauge and Checkpoints
Gauge: 12 sc and 13 rnds = 4 in (10.2 cm) in sc, worked firmly.
Make one complete basket before you start the others. It acts as your gauge test.
- After Rnd 7 (base): about 8 in x 4 1/4 in (20.3 cm x 10.8 cm), 60 sts.
- After Rnd 19 (sides): the side should be about 3 3/4 in (9.5 cm) tall, measured from the base ridge.
- After Rnd 20 (rim): the basket should be 4 in (10.2 cm) tall.
If your base is larger than 8 in (20.3 cm), go down a hook size. If it’s smaller than 7 3/4 in (19.7 cm), go up a hook size. Check the height, too. If you have fewer than 3 1/4 rounds per inch, the strap arch and stack height will grow.

Basket (Make 3)
Work in joined rounds with Color A. Each round begins with ch 1, which doesn’t count as a stitch, and ends with a sl st into the first sc. The round seam sits at one end of the oval.
Base
Rnd 1: Ch 12. Sc in 2nd ch from hook, sc in next 9 ch, 3 sc in last ch. Working along the opposite side of the foundation, sc in next 9 ch, then work 2 sc in the last ch (the same ch as the first sc). Join. (24 sts)
Rnd 2: Ch 1, 2 sc in first st, sc in next 9, 2 sc in each of next 3, sc in next 9, 2 sc in each of last 2. Join. (30 sts)
Rnd 3: Ch 1, sc in first st, 2 sc in next, sc in next 9, [sc in next, 2 sc in next] 3 times, sc in next 9, [sc in next, 2 sc in next] 2 times. Join. (36 sts)
Rnd 4: Ch 1, sc in first 2 sts, 2 sc in next, sc in next 9, [sc in next 2, 2 sc in next] 3 times, sc in next 9, [sc in next 2, 2 sc in next] 2 times. Join. (42 sts)
Rnd 5: Ch 1, sc in first 3 sts, 2 sc in next, sc in next 9, [sc in next 3, 2 sc in next] 3 times, sc in next 9, [sc in next 3, 2 sc in next] 2 times. Join. (48 sts)
Rnd 6: Ch 1, sc in first 4 sts, 2 sc in next, sc in next 9, [sc in next 4, 2 sc in next] 3 times, sc in next 9, [sc in next 4, 2 sc in next] 2 times. Join. (54 sts)
Rnd 7: Ch 1, sc in first 5 sts, 2 sc in next, sc in next 9, [sc in next 5, 2 sc in next] 3 times, sc in next 9, [sc in next 5, 2 sc in next] 2 times. Join. (60 sts)
The 60 sts divide like this:
- End A, part 1: sts 1–7
- Front side: sts 8–16 (9 sts)
- End B: sts 17–37 (21 sts)
- Back side: sts 38–46 (9 sts)
- End A, part 2: sts 47–60
That gives 21 sts at each end and 9 sts along each straight side. A slight cup is normal and disappears once the sides go up.
Sides
Rnd 8: Ch 1, sc in BLO of each st around. Join. (60 sts) This round leaves the front loops of Rnd 7 free as a ridge around the base. You’ll use that ridge for joining.
Rnds 9–10: Ch 1, sc in each st around. Join. (60 sts)
Rnd 11 (Pattern A): Ch 1. With Color B, V-sp over the next 2 sts, working the spikes into Rnd 9. With Color A, sc in the next 2 sts. Repeat from * 15 times in total. Join with Color A. (60 sts: 15 V-sps + 30 sc)
Leave Color B hanging on the inside of the basket and carry it loosely up the inside wall to the next pattern round.
Rnds 12–13: With Color A, ch 1, sc in each st around. Join. (60 sts)
Rnd 14 (Pattern B): Ch 1. With Color A, sc in the next 2 sts. With Color B, V-sp over the next 2 sts, working the spikes into Rnd 12. Repeat from * 15 times in total. Join. (60 sts: 15 V-sps + 30 sc) The V’s now sit between the V’s of Rnd 11.
Rnds 15–16: With Color A, ch 1, sc in each st around. Join. (60 sts)
Rnd 17 (Pattern A): Repeat Rnd 11, working the spikes into Rnd 15. (60 sts) Fasten off Color B.
Rnds 18–19: With Color A, ch 1, sc in each st around. Join. (60 sts)
Checkpoint: the side is now 12 rounds tall, about 3 3/4 in (9.5 cm). Continue to the border before you fasten off.
Make All Pieces
- Baskets: 3, each needing about 130 g of Color A and 30 g of Color B
- Strap: 1, needing about 10 g of Color A
Strap: With Color A, ch 7.
Row 1: Sc in 2nd ch from hook and in each ch across. Turn. (6 sts)
Rows 2–46: Ch 1, sc in each st across. Turn. (6 sts)
The strap measures 2 in (5.1 cm) x about 14 in (35.6 cm). Don’t fasten off. Work the strap edging in the Border section.
Layout (front view):
( wooden ring )
/ strap \
[ Basket 1 ]
[ Basket 2 ]
[ Basket 3 ]
Joining
Finish the border on all three baskets before you join them. The seams run across the back only, so each lower basket hangs from the one above.
Method: Use a whipstitch with Color A and a tapestry needle.
Stitch-to-stitch logic: On each basket, place markers at st 35 and st 49. This marks 15 sts centered on the back side: the 9 straight sts plus 3 sts on each end. Join the upper basket’s free Rnd 7 front loops, sts 35–49, to the lower basket’s rim, sts 35–49, which are the tops of the matching rev sc. The counts are 15 to 15, so the seam stays one to one with no stitches added.
- Put Basket 2 behind and slightly under Basket 1, back sides together.
- Whipstitch Basket 1’s ridge to Basket 2’s rim across the 15 marked sts.
- Join Basket 3 to Basket 2 in the same way.
Tension: Pull each whipstitch snug, but not so tight that the rim puckers. A tight seam tips the lower basket forward.
Size checkpoint: The joined column should measure 3 x 4 in = 12 in (30.5 cm) tall and 8 in (20.3 cm) wide.
Border
Border gauge: Work rev sc at the same 3 sts per inch as the sc base. Each rim is 60 sts around a perimeter of about 20 in (50.8 cm).
Basket Rim (each basket)
Rnd 20: With Color A, ch 1. Working from left to right, rev sc in each st around. Join and fasten off. (60 sts: 21 at each end, 9 along front, 9 along back)
Why the math works: The rim has one rev sc in each sc, so you work exactly 60 into 60. The rim doesn’t flare or pull in, the opening keeps the 20 in (50.8 cm) circumference of the sides, and the 15 back stitches stay lined up for joining.
Strap Edging
Edge round: Continue from Row 46 and don’t turn. Sl st down the long edge, 1 sl st in each row end (46 sts). Sl st across the foundation (6 sts), then up the second long edge (46 sts), then across Row 46 (6 sts). Join. (104 sts) Fasten off and leave a 20 in (50.8 cm) tail.
Why the math works: There is 1 sl st per row end, so 46 rows give 46 sts per side, and the 6 sts per short end match the strap width. The sl sts firm up the edges without making the strap wider than 2 in (5.1 cm).
Attaching the Strap
- Inside Basket 1, mark the center of End B (st 27) and the center of End A (the round seam).
- Center one strap end on End B so that the last 5 rows of the strap overlap Rnds 15–19 on the inside wall, about 1 1/2 in (3.8 cm). Whipstitch it on all four sides.
- Thread the strap through the wooden ring.
- Sew the other strap end over the round seam at End A in the same way. Make sure the strap isn’t twisted.
That leaves 36 rows free, about 11 in (27.9 cm). The arch rises about 4 1/4 in (10.8 cm) above the rim.
Final Blocking
- Weave in all ends on the inside of the baskets.
- Mist the holder lightly with water until it’s damp, not soaked.
- Stand a toilet roll inside each basket to round out the sides.
- Smooth each base flat and press the V-spikes evenly into place.
- Shape the strap into a smooth arch.
- Leave it to dry fully, upright and with the rolls in place, for about 24 hours.
- Hang the ring on the wall hook.
Final Quality-Control Checklist
- Each basket has exactly 60 sts on every side round and on the rim.
- Each pattern round has 15 V-spikes, and the V’s of Rnd 14 sit between the V’s of Rnds 11 and 17.
- The base ridge is even all the way around each basket.
- Back seams run across 15 sts and sit centered.
- The column is 12 in (30.5 cm) tall and 8 in (20.3 cm) wide.
- The strap is flat and untwisted, and both ends are hidden inside Basket 1.
- The total height is about 16 1/4 in (41.3 cm).
- Floats inside aren’t pulling the sides inward.
Troubleshooting
Base ruffles: Your tension is loose. Use a smaller hook or work firmer.
Base cups strongly: Your tension is tight. Use a larger hook for Rnds 1–7 only.
V-spikes pucker: You aren’t pulling the spike loops up far enough. Lift each loop fully to the working height.
V’s look lopsided: Put both spikes into the same gap, not into separate stitches.
Sides lean inward: Your carried floats are too tight. Spread the stitches on the hook as you work over the carried yarn.
Lower basket tilts forward: The seam is too tight or off-center. Re-sew it over exactly sts 35–49.
Strap stretches: Use 2 strands of Color A for the strap, or work it with a smaller hook.
Care
Hand wash the holder in cool water and lay it flat to dry, with rolls inside to keep the shape. Avoid the dryer, which can shrink cotton unevenly.

Final Notes
The measurement chain is simple. At 12 sc and 13 rnds per 4 in (10.2 cm), an 11-stitch foundation and 7 rounds give an 8 in x 4 1/4 in (20.3 cm x 10.8 cm) base with 60 sts. Twelve side rounds add 3 3/4 in (9.5 cm), and the rim brings each basket to 4 in (10.2 cm). Three baskets make a 12 in (30.5 cm) column, and the 4 1/4 in (10.8 cm) strap arch brings the finished holder to about 16 1/4 in (41.3 cm). If one basket matches its checkpoints, all three will stack evenly.
Happy crocheting!