This hanging toilet paper holder puts three spare rolls in a tidy column right where you need them. Each roll sits in its own soft basket. The cream basketweave walls give texture, the dusty teal bands frame each basket, and a small cream bow on the front adds a sweet cottage touch.
The palette is just two colors: muted teal for the bases, rims and straps, and warm cream for the woven blocks and bows. It suits a farmhouse, coastal or neutral bathroom and works up in sturdy worsted cotton.
This pattern uses US crochet terms. The assembled holder is about 6 in (15.2 cm) wide and hangs about 18 in (45.7 cm) from the top of the loop to the bottom of the lowest basket.
You’ll make three baskets from the bottom up. Each starts with a flat single-crochet base, turns upward on a back-loop round, and builds a post-stitch basketweave wall before the teal rim. Then you’ll make two flat straps and three bows, sew the baskets between the straps, and fold the strap tops into hanging loops.
Finished Size and Construction
- Finished holder: about 6 in (15.2 cm) wide × 18 in (45.7 cm) hanging length
- Skill level: Intermediate (front and back post stitches)
- Terminology: US
- Yarn weight: Worsted (#4), cotton
- Hook: H-8 (5.0 mm)
- Number of pieces: 8 (3 baskets, 2 straps, 3 bows)
- Layout: 3 baskets stacked vertically between 2 straps
- Basket size: 5.5 in (14.0 cm) wide × 4.5 in (11.4 cm) deep × 3.9 in (9.9 cm) tall
- Basket height before rim: 3.2 in (8.1 cm)
- Rim (border) depth: 3 rounds, about 0.7 in (1.8 cm)
- Strap: 20.9 in (53.1 cm) × 1.4 in (3.6 cm) after edging
Materials
Use a smooth, firm worsted cotton or cotton blend, about 180 m per 100 g. Cotton holds its shape and stands up to bathroom humidity. Acrylic works too, but the baskets will be softer.
- Teal (Color A): 250 g, about 450 m
- Cream (Color B): 200 g, about 360 m
Both quantities include a margin of about 20% for gauge swatches and sewing tails.
Tools:
– H-8 (5.0 mm) crochet hook
– Tapestry needle
– Stitch markers (at least 4)
– Locking pins or clips
– Measuring tape
– Scissors
– A hand towel for shaping during blocking
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- dc – double crochet
- BLO – back loop only
- st(s) – stitch(es)
- rnd – round
- FPdc (front post double crochet): Yarn over, insert the hook from front to back to front around the post of the stitch below, and complete a dc. The stitch sits raised on the right side.
- BPdc (back post double crochet): Yarn over, insert the hook from back to front to back around the post of the stitch below, and complete a dc. The stitch sits recessed on the right side.
Gauge and Checkpoints
- Single crochet gauge: 16 sc × 18 rows = 4 in (10.2 cm)
- Basketweave gauge: 16 sts × 10 rnds = 4 in (10.2 cm), so each post-stitch round is about 0.4 in (1.0 cm) tall
Make one complete basket before starting the others. It is your real gauge swatch.
Checkpoints:
– Base after Row 20: 5.5 in (14.0 cm) × 4.4 in (11.2 cm)
– Rnd 1 perimeter: 20 in (50.8 cm)
– After Rnd 10: walls measure 3.2 in (8.1 cm) from the fold line
– After Rnd 13: walls measure 3.9 in (9.9 cm), and a standard roll fits snugly
If your basket is too big, go down one hook size. If it is too small, or the roll will not go in, go up one hook size. Post stitches tend to tighten, so if only the cream section pulls in, go up half a size for Rnds 4–10.

Basket (Make 3)
Base
Use Color A.
Row 1: Ch 23. Sc in 2nd ch from hook and in each ch across. (22 sc)
Rows 2–20: Ch 1, turn, sc in each st across. (22 sc)
Checkpoint: 5.5 in (14.0 cm) × 4.4 in (11.2 cm). Do not fasten off.
Wall
The rounds are joined, and you do not turn. Join each round with a sl st to the first st. The beginning ch does not count as a stitch.
Rnd 1 (perimeter conversion round): Ch 1, do not turn.
– Long side: sc in each of the 22 sts of Row 20.
– Short side: work 18 sc evenly across the 20 row ends, skipping the 7th and 14th row ends.
– Long side: sc in the opposite loop of each of the 22 foundation chains.
– Short side: work 18 sc evenly across the remaining 20 row ends, skipping the same positions.
– Join.
Count: 22 + 18 + 22 + 18 worked 1-per-stitch or row end, + 0 extra = 80 sc. Place a marker at each corner.
Rnd 2: Ch 1, sc in BLO of each st around. Join. (80 sc) This round creates the fold line, so the wall rises straight up.
Rnd 3: Ch 1, sc in each st around. Join. (80 sc) Fasten off Color A.
Rnd 4: Join Color B at a back corner. Ch 2, dc in each st around. Join. (80 dc) This plain round gives the post stitches a foundation.
Rnds 5–6: Ch 2, [FPdc around each of the next 4 sts, BPdc around each of the next 4 sts] 10 times. Join. (80 sts)
Rnds 7–8: Ch 2, [BPdc around each of the next 4 sts, FPdc around each of the next 4 sts] 10 times. Join. (80 sts)
Rnds 9–10: Repeat Rnds 5–6. (80 sts) Fasten off Color B.
You now have three bands of blocks. Each block is 4 sts wide by 2 rnds tall, about 1 in (2.5 cm) × 0.8 in (2.0 cm), and the blocks alternate raised and recessed. Because the 8-stitch repeat runs continuously, some blocks wrap around the corners. That is expected.
Checkpoint: the wall measures 3.2 in (8.1 cm) from the Rnd 2 fold.
The teal rim (Rnds 11–13) is worked in the Border section below.
Strap (Make 2)
Use Color A.
Row 1: Ch 5. Sc in 2nd ch from hook and in each ch across. (4 sc)
Rows 2–92: Ch 1, turn, sc in each st across. (4 sc)
Checkpoint: 1 in (2.5 cm) wide × about 20.4 in (51.8 cm) long. Don’t fasten off; the edging is worked next (see Border).
Bow (Make 3)
Use Color B.
Row 1: Ch 8. Sc in 2nd ch from hook and in each ch across. (7 sc)
Rows 2–4: Ch 1, turn, sc in each st across. (7 sc)
Fasten off, leaving a 12 in (30.5 cm) tail. The rectangle measures 1.75 in (4.4 cm) × 0.9 in (2.3 cm).
To shape the bow: Thread the tail onto the needle and bring it to the center of the long edge. Wrap it firmly around the middle 6 times to pinch the rectangle into two rounded loops, then pass the needle under the wraps to lock them. Keep the tail for sewing.
Make All Pieces
| Piece | Qty | Colors |
|---|---|---|
| Basket | 3 | A (base, bands, rim), B (basketweave) |
| Strap | 2 | A |
| Bow | 3 | B |
Layout grid (front view):
[loop] [loop]
Strap (rows 65–80) Strap
Strap | TOP BASKET | Strap rows 47–64
Strap (gap) Strap rows 42–46
Strap | MID BASKET | Strap rows 24–41
Strap (gap) Strap rows 19–23
Strap | LOW BASKET | Strap rows 1–18
Joining
Method: Whipstitch with Color A and a tapestry needle, using 24 in (61.0 cm) lengths.
Placement: Lay a strap vertically against one short (18-st) side wall of a basket, with the strap’s back edge flush with the basket’s back corner. The strap is positioned by its rows:
- Lowest basket: strap rows 1–18. The strap’s foundation end lines up with the basket’s base.
- Middle basket: rows 24–41.
- Top basket: rows 47–64.
Each 5-row gap between baskets is about 1.1 in (2.8 cm).
Stitch-to-stitch logic: Each basket wall (Rnds 1–13, 3.9 in / 9.9 cm) spans 18 strap rows. Pin the strap at the basket rim and at the base, then sew one whipstitch into each of the 18 edging sc along each long edge of the strap. With each stitch, catch the matching height of the basket wall, easing 13 basket rounds across 18 strap stitches. Sew both long edges of the strap, then repeat on the other side of the basket with the second strap.
Tension: Pull each stitch snug enough to close the seam but not tight enough to pucker the basketweave. Check that every basket hangs level before you fasten off.
Loop: Fold the top 12 rows (rows 81–92, about 2.7 in / 6.9 cm) to the back over the rod. Whipstitch the strap end across the back of the strap at row 68. The loop is about 5.3 in (13.5 cm) around and fits rods up to 1.5 in (3.8 cm) across. For a fixed towel bar, sew on a snap instead of stitching the end down.
Size checkpoint: From the bottom of the lowest basket to the top of the top basket is about 14.4 in (36.6 cm). The total hanging length to the fold is about 18 in (45.7 cm).
Border
Border gauge: 16 sc = 4 in (10.2 cm), the same as the base.
Basket Rim (each basket)
Rnd 11: Join Color A at the back corner. Ch 1, sc in each st around. Join. (80 sc)
Per side: 22 front, 18 side, 22 back, 18 side = 80.
Rnds 12–13: Ch 1, sc in each st around. Join. (80 sc per round, same per-side counts) Fasten off and weave in the ends.
Why the math works: At 16 sts per 4 in, 80 sts equals 20 in (50.8 cm), which is exactly the base perimeter. The rim neither flares nor pulls in, so the walls stay straight.
Strap Edging (each strap)
Edging Rnd: Continuing from Row 92, ch 1. Work 3 sc in the first st, sc in the next 2 sts, and 3 sc in the last st. Short end: 4 sts worked 1-per-stitch + 4 extra = 8 sc.
- Long side: sc in each row end. (92 sc)
- Foundation end: 3 sc in the first ch, sc in the next 2 ch, 3 sc in the last ch. (8 sc)
- Second long side: sc in each row end. (92 sc)
- Join.
Total: 8 + 92 + 8 + 92 = 200 sc.
Why the math works: One sc per row end matches the strap’s own row gauge, so the long edges stay flat. The 3-sc corners turn each corner cleanly. After edging, the strap measures 1.4 in (3.6 cm) × 20.9 in (53.1 cm).
Bows
Sew each bow centered on the front wall of a basket, with its top edge touching Rnd 11 of the rim. Stitch through the center wraps and the tip of each loop.
Final Blocking
- Weave in all ends securely before blocking.
- Lightly mist each basket with water, or steam it from 1 in (2.5 cm) away without touching the yarn.
- Stuff each basket firmly with a rolled hand towel so the walls are square and upright.
- Pinch along the Rnd 2 fold line to sharpen the base edge.
- Lay the straps flat, pat them to 1.4 in (3.6 cm) wide, and pin them straight.
- Pat the bows flat and fluff the two loops.
- Let everything dry completely, then remove the towels.
Final Quality-Control Checklist
- Each basket has 80 sts in every round from Rnd 1 to Rnd 13.
- The baskets measure 5.5 × 4.5 × 3.9 in (14.0 × 11.4 × 9.9 cm).
- The basketweave blocks alternate cleanly across all three bands.
- Each strap has 92 rows and 200 edging sts.
- The baskets sit at strap rows 1–18, 24–41 and 47–64 on both straps.
- All baskets hang level.
- The loops are secure and fit your rod.
- The bows are centered and firmly attached.
- No loose ends show on the front.
Troubleshooting
- Walls flare outward: Your post stitches are too loose. Go down a hook size for Rnds 4–10.
- Walls lean inward: Your rim is too tight. Work Rnds 11–13 with a hook one size larger.
- Blocks don’t alternate: Check that Rnds 7–8 start with BPdc.
- Basket tilts: One strap seam sits higher than the other. Re-pin by row number and re-sew.
- The roll won’t fit: Block over a slightly larger towel roll, or remake the base with 20 more rows… use 22 rows instead of 20 and pick up 20 sc on each short side. Note that the round count changes to 84, which is not a multiple of 8.
- Strap ripples: You worked more than one sc per row end. Redo the edging at 1 sc per row end.
Care
Hand wash or machine wash cold on a gentle cycle, then reshape the baskets over a towel and lay flat to dry. Don’t tumble dry, so the walls keep their shape.

Final Notes
Everything in this pattern follows one measurement chain. The 22 × 20 base converts to an 80-st perimeter of 20 in (50.8 cm). The 80 sts carry straight up through the basketweave to a 3.9 in (9.9 cm) wall with a matching 80-st rim. Each basket fills exactly 18 rows of a 92-row strap, and the three baskets plus two gaps stack to 14.4 in (36.6 cm). The strap tops fold into loops, for a total hang of about 18 in (45.7 cm). Check your gauge on the first basket and the rest will follow.
Happy crocheting!