This hanging toilet paper holder stacks three oval baskets on two slim straps and hangs from a single wooden ring. Each basket holds one standard roll on its side, so spare rolls stay visible, dry and within reach.
The look comes from rounds of offset fan shells. A teal shell round sits above a solid base, two beige rounds form a soft wavy band, and two teal rounds finish in a scalloped rim. The palette is just teal and natural beige, which suits a calm, coastal bathroom.
The pattern uses US crochet terms. The finished holder measures about 7 in (17.8 cm) wide, 4.25 in (10.8 cm) deep and 18.5 in (47.0 cm) tall including the ring. Each basket is 6.5 x 4.25 x 3.25 in (16.5 x 10.8 x 8.3 cm).
You start with an oval single-crochet base, then turn the walls up with a back-loop round and work five shell rounds. Next you make two flat straps, sew them to the ends of the baskets and fold them over the ring. The rim edging is worked last.
Finished Size and Construction
- Finished size: about 7 in (17.8 cm) wide x 4.25 in (10.8 cm) deep x 18.5 in (47.0 cm) tall, ring included
- Skill level: Easy (advanced beginner)
- Terminology: US
- Yarn weight: worsted (4) cotton
- Hook: 4.5 mm (US 7)
- Number of pieces: 5 crocheted pieces (3 baskets, 2 straps) plus 1 wooden ring
- Layout: 3 baskets in a vertical column, 1.5 in (3.8 cm) apart
- Piece size: basket 6.5 x 4.25 x 3.25 in (16.5 x 10.8 x 8.3 cm); strap 1.25 x 19.5 in (3.2 x 49.5 cm)
- Basket height before border: 3 in (7.6 cm)
- Border depth: 0.25 in (0.6 cm), one single-crochet rim round
Materials
Use a smooth 100% cotton or cotton-blend worsted yarn of about 165–185 m per 100 g. Cotton keeps the basket’s shape and copes well with bathroom humidity. Avoid acrylic; it is too soft to keep the walls upright.
- Teal (Color A): 150 g, about 255 m
- Natural beige (Color B): 65 g, about 110 m
These quantities include a margin of about 15% for swatching and joining.
Tools:
- 4.5 mm (US 7) crochet hook
- 1 wooden ring, 2.75 in (7.0 cm) diameter
- Tapestry needle
- 8 locking stitch markers
- Scissors and measuring tape
- Rustproof pins and a container about 6.5 x 4.25 in (16.5 x 10.8 cm) for blocking
Abbreviations (US Terms)
- ch – chain
- sc – single crochet
- dc – double crochet
- sl st – slip stitch
- sk – skip
- st(s) – stitch(es)
- BLO – back loop only
- rnd – round
- rep – repeat
Special stitch – Shell: 5 dc worked in the same stitch. The center dc of a shell is its 3rd dc.
Half shell: At the start of the round, ch 3 (counts as dc) and work 2 dc in the same stitch. At the end of the round, work 2 more dc in that same stitch to complete a 5-st shell.
Gauge and Checkpoints
Gauge: 16 sc and 16 sc rnds = 4 in (10.2 cm). In the shell pattern, 1 repeat (6 sts) = 1.5 in (3.8 cm) and 2 shell rnds = 1 in (2.5 cm).
Make one complete basket before anything else. It serves as your swatch, and every later measurement depends on it.
Checkpoints:
- After Rnd 5: about 4.75 x 2.5 in (12.1 x 6.4 cm)
- After Rnd 9: 6.5 x 4.25 in (16.5 x 10.8 cm), perimeter 18 in (45.7 cm)
- After Rnd 11: walls 0.5 in (1.3 cm) tall
- After Rnd 16: walls 3 in (7.6 cm) tall
- Strap: 5 sts = 1.25 in (3.2 cm); 4 rows = 1 in (2.5 cm)
If your base is too big, go down 0.5 mm. If it is too small, or the fabric feels stiff, go up 0.5 mm. Fix your gauge at the base, because the shell rounds carry forward any error in it.

Basket (Make 3)
Oval Base
With Color B, ch 12.
Rnd 1: 3 sc in 2nd ch from hook, sc in next 9 ch, 3 sc in last ch; rotate and work along the other side of the chain: sc in next 9 ch. Sl st to first sc. (24 sts)
The 3-st groups form the two curved ends. Each round adds 3 sts to each end, and the 9 straight stitches on each side stay the same.
Rnd 2: Ch 1, [2 sc in each of next 3 sts, sc in next 9 sts] twice. Sl st to first sc. (30 sts)
Rnd 3: Ch 1, [(sc in next st, 2 sc in next st) 3 times, sc in next 9 sts] twice. (36 sts)
Rnd 4: Ch 1, [(sc in next 2 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (42 sts)
Rnd 5: Ch 1, [(sc in next 3 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (48 sts)
Change to Color A on the final sl st. Fasten off B.
Rnd 6: Ch 1, [(sc in next 4 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (54 sts)
Rnd 7: Ch 1, [(sc in next 5 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (60 sts)
Rnd 8: Ch 1, [(sc in next 6 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (66 sts)
Rnd 9: Ch 1, [(sc in next 7 sts, 2 sc in next st) 3 times, sc in next 9 sts] twice. (72 sts)
Check that each end has 27 sts and each side has 9 sts (27 + 9 + 27 + 9 = 72). The base should lie flat and measure 6.5 x 4.25 in (16.5 x 10.8 cm).
Walls
Continue with Color A.
Rnd 10: Ch 1, sc BLO in each st around. Sl st to first sc. (72 sts) This round makes the crisp fold line where the wall turns up.
Rnd 11: Ch 1, sc in each st around. (72 sts)
Rnd 12 (teal shells): Ch 1, sc in first st, sk 2 sts, shell in next st, sk 2 sts, sc in next st; rep from * 10 more times, then sk 2 sts, shell in next st, sk 2 sts. Sl st to first sc. (12 shells + 12 sc = 72 sts)
Change to Color B on the final sl st.
Rnd 13 (beige, offset): Half shell in the joining sc, sc in center dc of next shell, shell in next sc; rep from * 10 more times, sc in center dc of last shell, 2 dc in first st to complete the half shell. Sl st to top of ch-3. (12 shells + 12 sc = 72 sts)
The ch-3 now sits at the center of the first shell.
Rnd 14 (beige): Ch 1, sc in top of ch-3, sk 2 dc, shell in next sc, sk 2 dc, sc in center dc of next shell; rep from * 10 more times, then sk 2 dc, shell in next sc, sk 2 dc. Sl st to first sc. (72 sts)
Change to Color A on the final sl st. Fasten off B.
Rnd 15 (teal): Work as Rnd 13. (72 sts)
Rnd 16 (teal scallops): Work as Rnd 14. (72 sts)
All shells now point up as scallops, with 12 scallops around the rim. The walls measure 3 in (7.6 cm). Fasten off. You will work the rim edging (Rnd 17) after joining.
Strap (Make 2)
With Color A, ch 6.
Row 1: Sc in 2nd ch from hook and in each ch across. Turn. (5 sts)
Rows 2–78: Ch 1, sc in each st across. Turn. (5 sts)
Fasten off, leaving a 30 in (76.2 cm) tail for sewing. The strap measures 1.25 x 19.5 in (3.2 x 49.5 cm).
Mark each strap at the end of Rows 4, 17, 23, 36, 42, 55 and 73. The markers divide the strap into these zones:
- Rows 1–4: fold under the bottom basket (1 in / 2.5 cm)
- Rows 5–17: bottom basket (3.25 in / 8.3 cm)
- Rows 18–23: gap (1.5 in / 3.8 cm)
- Rows 24–36: middle basket (3.25 in / 8.3 cm)
- Rows 37–42: gap (1.5 in / 3.8 cm)
- Rows 43–55: top basket (3.25 in / 8.3 cm)
- Rows 56–73: free rise to the ring (4.5 in / 11.4 cm)
- Rows 74–78: fold over the ring (1.25 in / 3.2 cm)
Each basket zone is 13 rows, which matches the wall height after the rim edging: 3 in (7.6 cm) plus 0.25 in (0.6 cm).
Make All Pieces
- Baskets: 3. Each uses Color B for Rnds 1–5 and 13–14 and Color A for Rnds 6–12 and 15–17, about 17 g B and 34 g A per basket.
- Straps: 2, in Color A only, about 15 g each.
Layout (front view):
( ring )
/ \
strap A strap B
| [ Basket 1 - top ] |
| 1.5 in gap |
| [ Basket 2 - middle ]|
| 1.5 in gap |
| [ Basket 3 - bottom ]|
\__ fold under base __/
The long sides of each basket face front and back, and the straps run up the two curved ends.
Joining
Mark the strap lines. Flatten each basket so the long sides face front and back. At each curved end, mark the center dc of the most central shell in Rnd 16. Make sure there are 6 scallops between the markers on each side so the holder hangs evenly.
Method: Whipstitch with the Color A tail through both loops of the strap edge and one strand of the wall fabric.
Bottom basket: Center strap A on one marked end, wrong side against the wall. Fold Rows 1–4 under the base and whipstitch them flat, with Row 4 lined up with the Rnd 10 fold line. Whipstitch both long edges of Rows 5–17 to the wall, one whipstitch per strap row (13 per edge), so that each stitch covers 0.25 in (0.6 cm) of wall. Repeat with strap B on the opposite end.
Middle and top baskets: Leave Rows 18–23 free. Line up the middle basket’s Rnd 10 fold line with the boundary between Rows 23 and 24, then sew Rows 24–36 the same way. Leave Rows 37–42 free, then sew Rows 43–55 to the top basket.
Ring: Pass Rows 74–78 of both straps through the ring from front to back, with strap B on top of strap A. Fold them down over Rows 69–73 and whipstitch around all edges through every layer.
Tension: Pull the whipstitches snug enough to close any gaps but not so tight that the wall dimples. If the basket ends pucker, loosen up.
Size checkpoint: Lay the holder flat. From the bottom of the lowest base to the top of the top basket’s strap zone should measure 12.75 in (32.4 cm). That is 3 baskets at 3.25 in (8.3 cm) each plus 2 gaps at 1.5 in (3.8 cm) each.
Border (Rim Edging)
Border gauge: 4 sc per 1 in (2.5 cm) along the rim, the same as the base.
Work this on each basket after joining. With Color A, join at the marked center dc at one strap end.
Rnd 17: Ch 1, sc in same st and in each st around. Over the 5 strap sts at each end, insert the hook through both the rim stitch and the strap row behind it to lock the strap in place. Sl st to first sc. (72 sts: 72 worked 1 per existing st + 0 added)
Per side: The front has 36 sc and the back has 36 sc, counted from marker to marker. Each side covers 6 scallops of 6 sts.
Why the math works: The rim has 12 repeats of 6 sts (5 dc + 1 sc), and 12 x 6 = 72. Working 1 sc per stitch keeps the rim at 18 in (45.7 cm) at 4 sc per inch, the same perimeter as the base. Extra stitches would ruffle the scallops, and skipped stitches would pull the rim in and squeeze the roll.
Fasten off and weave in all ends inside the baskets.
Final Blocking
- Soak the holder in cool water for 15 minutes.
- Press out the water in a towel. Do not wring.
- Put a container about 6.5 x 4.25 in (16.5 x 10.8 cm) inside each basket, or use a roll wrapped in a plastic bag.
- Pin each scallop upward so all 12 peaks stand evenly.
- Lay the holder flat with the straps straight and the gaps at 1.5 in (3.8 cm).
- Let it dry flat completely. Do not hang it while wet, because wet cotton stretches.
- Remove the forms and hang the holder from a sturdy hook.
Final Quality-Control Checklist
- Each basket measures 6.5 x 4.25 x 3.25 in (16.5 x 10.8 x 8.3 cm)
- Rnd 17 has 72 sts and 12 even scallops on every basket
- The beige band is in the same two rounds on all three baskets
- Straps are 5 sts wide and 78 rows long
- Gaps between baskets are 1.5 in (3.8 cm)
- Each basket hangs level, with 6 scallops on each side
- The ring fold is sewn through all layers
- All ends are woven in on the inside
Troubleshooting
Base cups upward: Your increases are too tight. Go up 0.5 mm for Rnds 1–9.
Base ruffles: You may have increased in the 9 side stitches. Recount each round.
Shells drift sideways: Make sure each sc goes into the center (3rd) dc of a shell.
Basket tilts: One strap is sewn higher than the other. Check that the Rnd 10 fold line meets the same marked row on both straps.
Straps stretch: Make the straps with a hook 0.5 mm smaller.
Roll does not fit: If your rolls are more than 4.5 in (11.4 cm) across, add one base round (78 sts) and work 13 shells per round.
Care
Hand wash in cool water, press out the excess water, and dry flat with the forms back inside. Reshape the scallops while they are still damp.

Final Notes
All the measurements build from the base. A 72-st base gives an 18 in (45.7 cm) perimeter and a 6.5 x 4.25 in (16.5 x 10.8 cm) floor. Twelve 6-st shell repeats keep that perimeter all the way up, and the 72-st rim edging holds it at 3.25 in (8.3 cm) tall. With 13 strap rows per basket and 6 rows per gap, the three baskets make a 12.75 in (32.4 cm) stack. The free rise and the ring bring the total height to about 18.5 in (47.0 cm).
Check the base, check the walls, and the rest will fall into place.
Happy crocheting!