This hanging toilet roll holder has two parts. The first is a round basket with an open lattice wall. The second is a hanger: a covered ring with a petal edge, plus a mesh triangle that fans down to meet the basket. Hang it from a hook or knob and put a spare roll inside.
The photos show the holder in deep teal and in soft coral, and each holder uses just one color. The style is bohemian and suits a bathroom: a solid single crochet base, a diamond lattice wall, a scalloped rim and a ring with a petal edge for hanging.
This pattern uses US crochet terms. The finished holder is about 12.75 in (32.4 cm) long from the top of the hanging loop to the bottom of the basket. The basket is 5 in (12.7 cm) across and 4.5 in (11.4 cm) tall, so it holds one standard roll.
Here’s the construction in brief. You crochet the basket from the bottom up, starting with a flat circle. For the hanger, you cover a 3 in (7.6 cm) ring with single crochet, add petals, then work a filet mesh triangle down from the bottom of the ring. You sew the triangle inside the back wall of the basket. Last, you add the scalloped rim and edge both sides of the triangle.
Finished Size and Construction
- Finished size: about 12.75 in (32.4 cm) long × 5 in (12.7 cm) wide
- Skill level: Easy–Intermediate
- Terminology: US crochet terms
- Yarn weight: worsted (#4) cotton or cotton cord
- Hook: 5.0 mm (US H-8)
- Number of pieces: 2 crocheted pieces per holder (basket and hanger), plus 1 ring
- Layout: hanger on top, basket below; the bottom of the triangle is sewn inside the back of the basket
- Piece sizes: basket 5 in (12.7 cm) across; flower ring 4.5 in (11.4 cm) across; triangle 4.5 in (11.4 cm) tall × about 5.5 in (14.0 cm) wide at the bottom
- Basket height before border: 3.75 in (9.5 cm)
- Border depth: 0.75 in (1.9 cm), so the finished basket is 4.5 in (11.4 cm) tall
Materials
Yarn: Use a firm worsted-weight cotton or a smooth 3 mm cotton cord. Cotton holds its shape, handles bathroom humidity and shows the lattice clearly. Soft acrylic will work, but the basket will sag more.
- Color A (teal or coral): 110 g, about 190 m, for one holder
For both colorways shown, buy 110 g (about 190 m) of each color and make two holders. These amounts include a margin of about 15% for your gauge check and for weaving in ends.
Tools:
- 5.0 mm (US H-8) crochet hook
- One 3 in (7.6 cm) wooden or plastic macramé ring
- Stitch marker
- Tapestry needle
- Scissors
- Measuring tape
- Rustproof pins
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- dc – double crochet
- inc – 2 sc in the same stitch
- BLO / FLO – back loop only / front loop only
- sp – space
- st(s) – stitch(es)
Special stitch – Scallop: 5 dc in the same stitch.
Mesh square: one dc plus one ch-1 space. To count squares, count the ch-1 spaces in a row.
Gauge and Checkpoints
Gauge: 15 sc × 16 rounds = 4 in (10.2 cm). In the mesh, 4 squares × 4 rows = about 2 in (5.1 cm).
Make the basket base first, because it works as your gauge test. Check these measurements as you go:
- After Rnd 6 (36 sts): 3 in (7.6 cm) across
- After Rnd 10 (60 sts): 5 in (12.7 cm) across and 16 in (40.6 cm) around
- After Rnd 16: the solid wall is 1.5 in (3.8 cm) tall
- After Rnd 21: the basket is 3.75 in (9.5 cm) tall
- Ring after Rnd 1: 3.5 in (8.9 cm) across; after the petals, 4.5 in (11.4 cm)
- Triangle after Row 9: 4.5 in (11.4 cm) tall
If the base is too big (more than 5.25 in / 13.3 cm across), 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. Don’t add or remove rounds to fix the size, because the lattice and scallop repeats only work with 60 stitches.

Part 1: The Basket
Base
Join each round with a sl st to the first sc. Start each round with ch 1, which doesn’t count as a stitch.
- Rnd 1: Magic ring, 6 sc in ring. Join. (6)
- Rnd 2: Inc in each st around. (12)
- Rnd 3: Sc 1, inc 6 times. (18)
- Rnd 4: Sc 2, inc 6 times. (24)
- Rnd 5: Sc 3, inc 6 times. (30)
- Rnd 6: Sc 4, inc 6 times. (36)
- Rnd 7: Sc 5, inc 6 times. (42)
- Rnd 8: Sc 6, inc 6 times. (48)
- Rnd 9: Sc 7, inc 6 times. (54)
- Rnd 10: Sc 8, inc 6 times. (60)
The base should lie flat and measure 5 in (12.7 cm) across.
Solid Wall
- Rnd 11: Sc in BLO of each st around. (60) This makes a clean fold where the base turns up into the wall.
- Rnds 12–16: Sc in each st around. (60)
The wall is now 1.5 in (3.8 cm) tall.
Diamond Lattice
- Rnd 17: Ch 1, sc in first st, ch 5, skip 3 sts, sc in next st 14 times, ch 5, skip last 3 sts, join with sl st to first sc. (15 ch-5 loops)
- Rnds 18–20: Sl st in each of the first 3 ch of the next loop to reach its center, ch 1, sc in same loop, ch 5, sc in next loop 14 times, ch 5, join with sl st to first sc. (15 ch-5 loops)
Each round’s sc sit in the centers of the loops below, which offsets the loops and creates the diamonds. These four lattice rounds add about 2 in (5.1 cm) of height.
Conversion Round
- Rnd 21: Ch 1, sc in the joining sc, 3 sc in next loop, sc in next sc, 3 sc in next loop around. Join. (15 sc worked 1 per existing sc + 45 sc added into the loops = 60)
This round brings you back to the 60 solid stitches the rim needs. Fasten off and weave in the end. The basket is now 3.75 in (9.5 cm) tall.
Part 2: The Hanger
Covered Ring
- Rnd 1: Join yarn to the ring with a sl st, ch 1. Work 48 sc over the ring, packed tightly enough that no ring shows. Join with sl st to first sc. (48)
Slide the stitches until they are evenly spaced. The covered ring measures 3.5 in (8.9 cm) across.
Petal Edge
- Rnd 2 (FLO only): Sl st in first sc, skip next sc, 5 dc in next sc, skip next sc, sl st in next sc 11 times, skip next sc, 5 dc in next sc, skip last sc, join with sl st to first sl st. (12 petals: 60 dc + 12 sl st = 72 sts)
Check: 1 + (11 × 4) + 3 = 48 stitches used, so the petals fit the ring exactly. Because you worked in the front loops only, all 48 back loops are still free on the back of the ring. Fasten off.
Hanging Loop
Choose one petal to be the top. Join yarn in its center (3rd) dc, ch 8, then sl st in the same dc. Ch 1 and work 12 sc into the ch-8 loop. Sl st at the base of the loop and fasten off. The loop stands about 0.75 in (1.9 cm) above the petals.
Mesh Triangle
Find the petal directly opposite the hanging loop. Mark the 5 free back loops centered under it. In every row, the ch 4 at the start counts as 1 dc + ch 1.
- Row 1: Join with sl st in the first marked BLO, ch 4, skip next, dc in next BLO, ch 1, skip next, dc in last marked BLO. Turn. (3 dc, 2 sps = 5 sts; 2 squares)
- Row 2 (increase): Ch 4, dc in first dc, ch 1, dc in next dc across, working the last dc in 3rd ch of turning ch, ch 1, dc in same ch. Turn. (4 squares; 9 sts)
- Row 3 (straight): Ch 4, skip first ch-1 sp, dc in next dc, ch 1, dc in next dc across, ending in 3rd ch of turning ch. Turn. (4 squares; 9 sts)
- Row 4: Repeat Row 2. (6 squares; 13 sts)
- Row 5: Repeat Row 3. (6 squares; 13 sts)
- Row 6: Repeat Row 2. (8 squares; 17 sts)
- Row 7: Repeat Row 3. (8 squares; 17 sts)
- Row 8: Repeat Row 2. (10 squares; 21 sts)
- Row 9: Repeat Row 3. (10 squares; 21 sts)
Each row has (2 × squares) + 1 stitches. The triangle is 4.5 in (11.4 cm) tall and about 5.5 in (14.0 cm) wide at the bottom. Fasten off, leaving a 24 in (61.0 cm) tail for sewing.
Joining
Method: Whipstitch, using the tail left on the hanger.
Placement: Turn the basket so the line where the rounds were joined faces the front. Put the bottom row of the triangle inside the back wall, level with Rnd 21. Center it on the 21 stitches directly opposite that join line. The hanger should rise straight up from the back of the basket.
Stitch-to-stitch logic: Row 9 has 21 stitches, and so does the back section of Rnd 21. Sew them together one to one: each dc or ch of Row 9 goes to one sc of Rnd 21, through the back loop of the basket stitch. Because the counts match, the seam won’t need easing and won’t pucker. Then tack the side ends of Rows 8 and 9 to the wall with two small stitches each.
Tension: Pull each stitch just snug. If the seam is too tight, the back wall dents inward. If it’s too loose, the basket tips forward when you load it.
Size checkpoint: Hold the holder up by the loop. It should measure about 12.75 in (32.4 cm) long, and the basket should hang level.
Border
After joining, add two borders: the basket rim and the edging along the sides of the triangle.
Border gauge: the same 15 sc = 4 in (10.2 cm). Each scallop takes 6 base stitches, or 1.6 in (4.1 cm) of the rim.
Basket Rim
- Rnd 22: Join yarn in the joining sc of Rnd 21. Ch 1, sc in each st around, working through the basket only, not through the hanger seam. Join. (60)
- Rnd 23: Ch 1, sc in first st, skip 2 sts, 5 dc in next st, skip 2 sts, sc in next st 9 times, skip 2 sts, 5 dc in next st, skip last 2 sts, join with sl st to first sc. (10 scallops: 50 dc + 10 sc = 60 sts)
Why the math works: Each repeat uses 6 stitches (2 skipped + 1 scallop + 2 skipped + 1 sc), and 60 ÷ 6 = 10 scallops with none left over. The rim adds 0.75 in (1.9 cm), bringing the basket to 4.5 in (11.4 cm) tall. The scallops sit in front of the seam and hide it.
Triangle Side Edging
- Right side: Join at the lower right corner of Row 9. Working up the slanted edge, put 2 sc around the post at the end of each row: 9 rows × 2 = 18 sc. Sl st in the next free back loop of the ring. Fasten off.
- Left side: Join at the ring and work down the left edge in the same way. (18 sc)
Why the math works: A dc is about as tall as 2 sc, so 2 sc per row end keeps the edge flat. Both sides get 18 stitches, so the triangle stays symmetrical.
Final Blocking
- Weave in all ends through solid sc sections, not through the lattice.
- Mist the whole holder with water until it’s damp but not soaked.
- To help the wall dry upright, put a toilet roll wrapped in a plastic bag, or a jar about 5 in (12.7 cm) wide, inside the basket.
- Lay the hanger flat. Pin each petal into a round shape and pin the triangle edges straight.
- Open each lattice diamond with your fingertips so they’re all even.
- Let it dry completely, which takes 12–24 hours.
Final Quality-Control Checklist
- Base lies flat at 5 in (12.7 cm) across
- Rnd 11 forms a clean fold
- Each lattice round has 15 loops, with the diamonds evenly offset
- Rnds 21 and 22 each have 60 sts
- 10 scallops around the rim
- 12 petals, with the hanging loop centered on the top petal
- Row 9 of the triangle has 21 sts and is centered under the ring
- Seam is inside the back wall and hidden by the scallops
- Total length is about 12.75 in (32.4 cm)
Troubleshooting
- Base cups or ruffles: Your tension is inconsistent. Check your gauge, and offset the increases from round to round so they don’t stack up.
- Lattice slants: You didn’t reach the center of the loop. Always sl st across exactly 3 ch.
- Ring shows through: Work 52 sc in Rnd 1. In Rnd 2, skip 2 sc instead of 1 at four of the skips. That keeps 12 petals.
- Triangle leans: Row 1 wasn’t centered under the bottom petal. Rip back and re-mark.
- Basket tips forward: Tack the bottom corners of the triangle a little lower, onto Rnd 20.
- Scallops are uneven: Count the 60 stitches of Rnd 22 before you start Rnd 23.
Care
Hand wash in cool water with mild soap, then press out the water in a towel. Reshape, put something inside the basket to hold its shape, and leave it to dry.

Final Notes
Here is how the measurements build up. The 60-stitch base is 5 in (12.7 cm) across. The basket wall adds 1.5 in (3.8 cm) of solid sc, about 2 in (5.1 cm) of lattice and one conversion round, for 3.75 in (9.5 cm) before the rim. The 0.75 in (1.9 cm) scalloped rim brings it to 4.5 in (11.4 cm). Above the seam, the loop, the flower ring and the triangle add about 9.25 in (23.5 cm). With the 3.5 in (8.9 cm) of basket below the seam, the total length is about 12.75 in (32.4 cm). If your base measures 5 in (12.7 cm), the rest of the measurements should come out right.
Happy crocheting!