This double pocket holder hangs from a towel bar and holds two spare toilet rolls side by side. Each pocket is a soft, rounded basket in dense single crochet. An openwork heart of small eyelets sits on the front, and the front rim dips into a gentle V just above the heart.
The sample is worked in one color, a deep raspberry pink. Two gold shank buttons on the hanging straps are the only other accent. It looks cozy and slightly vintage, and it is sturdy enough for daily use.
The pattern uses US crochet terms. The joined holder measures about 9.7 in (24.6 cm) wide across the fronts, 3.4 in (8.6 cm) deep, and 5.6 in (14.2 cm) tall at the back, plus the strap loops above.
Construction is simple. Each pocket starts with a flat rectangular base worked in rows, and the walls are then worked up from it in joined rounds. Short rows shape the V-shaped front rim. You make two pockets, join them along their adjacent side walls, and add a base border. Last, you sew on two button straps.
Finished Size and Construction
- Finished size: 9.7 in (24.6 cm) wide x 3.4 in (8.6 cm) deep x 5.6 in (14.2 cm) tall at the back
- Front height: 5.3 in (13.5 cm) at the front corners, 4.5 in (11.4 cm) at the V point
- Skill level: Easy intermediate
- Terminology: US
- Yarn weight: Worsted (#4)
- Hook: 5.0 mm (H-8)
- Number of pieces: 4 (2 pockets, 2 straps)
- Layout: 2 pockets side by side, 1 strap on each pocket
- Piece size: each pocket base is 4.9 in (12.4 cm) x 3.2 in (8.1 cm)
- Size before border: 9.7 in (24.6 cm) x 3.4 in (8.6 cm) at the base
- Border depth: about 0.25 in (0.6 cm), a raised ridge around the base edge
Materials
Choose a smooth worsted-weight cotton or cotton blend. Cotton holds its shape well, can be washed, and shows off the eyelets. Acrylic also works but makes a softer, floppier pocket.
- Raspberry (main color): 200 g / about 310 m (339 yd)
- 5.0 mm (H-8) crochet hook
- 2 gold shank buttons, 0.75 in (1.9 cm)
- 2 sew-on snaps, 0.5 in (1.3 cm)
- Sewing needle and matching thread
- Tapestry needle
- 4 locking stitch markers
- Scissors and a tape measure
The yarn quantity includes a margin of about 20 percent for your gauge swatch and small tension differences.
Abbreviations (US Terms)
- ch – chain
- sc – single crochet
- sl st – slip stitch
- sk – skip
- st(s) – stitch(es)
- sp – space
- BLO – back loop only
- FL – front loop
- RS / WS – right side / wrong side
- rnd – round
Special stitches
- Mesh (M): ch 1, sk next st. One M counts as 1 st. In the next round, work 1 sc into the ch-1 sp. Each M makes one small eyelet.
- Reverse sc (crab stitch): working from left to right (right-handed), insert the hook into the next st to the right, yarn over, pull up a loop, yarn over, and pull through both loops.
Gauge and Checkpoints
Gauge: 14 sc x 15 rows = 4 in (10.2 cm) in single crochet worked tightly.
Make one pocket first and check it before you start the second. The fabric should be firm enough that a roll can’t push the walls out of shape.
- After the base (Row 12): 4.9 in (12.4 cm) x 3.2 in (8.1 cm)
- After Rnd 5: walls stand about 1.1 in (2.8 cm) above the base edge
- After Rnd 14: the heart measures about 3.7 in (9.4 cm) wide x 2.4 in (6.1 cm) tall
- After Rnd 22: back height 5.6 in (14.2 cm)
If the base is too big, go down a hook size. If it is too small, go up one. Do not try to fix the size by changing stitch counts, because the heart and the short rows depend on exactly 58 stitches per round.

Pocket (make 2)
Base
Ch 18.
Row 1: Sc in 2nd ch from hook and in each ch across, turn: 17 sts.
Rows 2–12: Ch 1, sc in each st across, turn: 17 sts.
Do not fasten off. The base should measure 4.9 in (12.4 cm) x 3.2 in (8.1 cm).
Walls
Work in joined rounds with the RS facing. At the end of each round, sl st to the first sc. Begin each round with ch 1, which does not count as a st.
Rnd 1 (base edge): Ch 1, sc in each of the 17 sts of Row 12 (sts 1–17, the front). Sc 1 in each row-end down the side (12 sts, sts 18–29). Sc in each of the 17 foundation chains (sts 30–46, the back). Sc 1 in each row-end up the second side (12 sts, sts 47–58). Join: 58 sts.
Place a marker in st 1. The stitch numbers stay the same in every round: front 1–17, side 18–29, back 30–46, side 47–58.
Rnd 2: Ch 1, sc BLO in each st around, join: 58 sts. The walls begin to turn upward, and the free front loops of Rnd 1 are left for the border.
Rnds 3–5: Ch 1, sc in each st around, join: 58 sts.
Heart Rounds
The heart is centered on the front, over sts 3–15. All other sts are plain sc. Work 1 sc in each ch-1 sp from the previous round.
Rnd 6: Sc in sts 1–8, M, sc in sts 10–58: 58 sts.
Rnd 7: Sc in sts 1–7, M, sc in st 9, M, sc in sts 11–58: 58 sts.
Rnd 8: Sc in sts 1–6, M, sc in sts 8–10, M, sc in sts 12–58: 58 sts.
Rnd 9: Sc in sts 1–5, M, sc in sts 7–11, M, sc in sts 13–58: 58 sts.
Rnd 10: Sc in sts 1–4, M, sc in sts 6–12, M, sc in sts 14–58: 58 sts.
Rnd 11: Sc in sts 1–3, M, sc in sts 5–13, M, sc in sts 15–58: 58 sts.
Rnd 12: Sc in sts 1–3, M, sc in sts 5–8, M, sc in sts 10–13, M, sc in sts 15–58: 58 sts.
Rnd 13: Sc in sts 1–4, M, sc in sts 6–7, M, sc in st 9, M, sc in sts 11–12, M, sc in sts 14–58: 58 sts.
Rnd 14: Sc in sts 1–5, M twice, sc in sts 8–10, M twice, sc in sts 13–58: 58 sts.
The eyelets form a V-pointed outline from Rnd 6 to Rnd 11. Two rounded lobes close the outline in Rnds 12–14, and the heart center stays solid.
Rnds 15–16: Ch 1, sc in each st around (1 sc in each ch-1 sp in Rnd 15), join: 58 sts. Fasten off.
V-Shaped Front Rim (Short Rows)
These rows build up the sides and back. The front center stays low and forms the V.
Row 17 (RS): Join yarn in st 12. Ch 1, sc in the same st and in sts 13–58, then sc in sts 1–6, turn: 53 sts. Sts 7–11 stay unworked.
Row 18 (WS): Ch 1, sk first 2 sts, sc in the next 49 sts, leave the last 2 sts unworked, turn: 49 sts.
Row 19 (RS): Ch 1, sk first 2 sts, sc in the next 45 sts, leave the last 2 sts unworked, turn: 45 sts.
Row 20 (WS): Ch 1, sk first 2 sts, sc in the next 41 sts, leave the last 2 sts unworked, turn: 41 sts (both sides plus the back, sts 18–58).
After Row 20, the front has 5 exposed sts at Rnd 16 level (center), 4 at Row 17 level, 4 at Row 18 level, and 4 at Row 19 level. That makes 17 exposed front sts in total.
Rim
Rnd 21 (trim, RS): Ch 1, sc in each of the 41 sts of Row 20. Continue across the front and work 1 sc in each of the 17 exposed top sts, stepping down and up at each row end without adding sts. Join: 41 + 17 = 58 sts (41 worked 1-per-stitch along Row 20, 17 worked 1-per-stitch across the front, 0 extra).
Rnd 22: Ch 1, reverse sc in each st around, join: 58 sts. Fasten off and weave in the ends.
Checkpoint: the back is 5.6 in (14.2 cm) tall, the front corners are 5.3 in (13.5 cm), and the V point is 4.5 in (11.4 cm). The V is about 1.1 in (2.8 cm) deep.
Strap (make 2)
Ch 9.
Row 1: Sc in 2nd ch from hook and in each ch across, turn: 8 sts.
Rows 2–32: Ch 1, sc in each st across, turn: 8 sts.
Fasten off, leaving a 12 in (30.5 cm) tail for sewing. Each strap measures 2.3 in (5.8 cm) x 8.5 in (21.6 cm).
Make All Pieces
All 4 pieces are made in Raspberry:
- 2 pockets
- 2 straps
Layout, seen from the front:
[Strap] [Strap]
[Pocket 1] | [Pocket 2]
Joining
Method: Whipstitch with the main color, working through both layers.
Set the two pockets side by side with both fronts facing you. On Pocket 1, the side next to Pocket 2 is sts 18–29. On Pocket 2, the side next to Pocket 1 is sts 47–58. If your rounds run the other way, simply use the two sides that touch.
Press the two inner side walls flat together.
- Base: Whipstitch Rnd 1 sts 18–29 of Pocket 1 to Rnd 1 sts 58–47 of Pocket 2, matching stitch to stitch: 12 stitches to 12 stitches.
- Back corner line: Work up the column where side meets back. Make 1 whipstitch per round or row, from Rnd 2 to Rnd 22: 21 stitches.
- Front corner line: Work up the column where front meets side. Make 1 whipstitch per round or row from Rnd 2 to Rnd 16: 15 stitches. Finish with one tack through both rims at Rnd 22.
Tension: Pull each whipstitch just snug, so the seam lies flat without puckering. Check every 5 stitches that the pockets are still level.
Size checkpoint: The joined base is 9.7 in (24.6 cm) wide (34 front sts) and 3.4 in (8.6 cm) deep.
Border
The border uses the same gauge as the pocket, 14 sc = 4 in (10.2 cm). It is worked into the free front loops of Rnd 1 on the outer perimeter of the joined base. This gives the holder a crisp base outline and reinforces the joining seam.
Border Rnd 1: With the RS facing, join yarn in the FL of st 1 on Pocket 1. Ch 1, then sc in the FL of:
- Front: Pocket 1 sts 1–17, then Pocket 2 sts 1–17 (2 x 17 = 34 sts)
- Outer side: Pocket 2 sts 18–29 (12 sts)
- Back: Pocket 2 sts 30–46, then Pocket 1 sts 30–46 (2 x 17 = 34 sts)
- Outer side: Pocket 1 sts 47–58 (12 sts)
Join: 34 + 12 + 34 + 12 = 92 sts.
Border Rnd 2: Ch 1, sl st BLO in each st around, join: 92 sts. Fasten off.
Why the math works: Each long side is 2 pockets x 17 sts, and each per-side count already includes its corner sts. No stitches are added at the seams because the border steps straight from one pocket’s last FL to the next pocket’s first FL. The 12-st inner sides are hidden in the seam and are skipped. The walls had no corner increases, so the border needs none either.
Attaching the Straps
- Center a strap on the outside (wall-facing) of each back wall, over back sts 35–42. Overlap the bottom 4 rows, which is about 1.1 in (2.8 cm), and whipstitch all around that overlap.
- Sew a snap half to the inside of each back wall, centered just under the rim.
- Loop the strap over the bar toward the front, so that the end lies over the back rim. Sew the matching snap half to the underside of the strap end.
- Sew a gold button to the outside of the strap end, about 0.5 in (1.3 cm) from the tip, directly over the snap.
Final Blocking
- Wet the holder with cool water, or spray it until damp.
- Press out the extra water in a towel. Do not wring it.
- Stuff each pocket with a toilet roll wrapped in a plastic bag. This sets the rounded shape.
- Pin the V rims smooth and open each eyelet with a fingertip.
- Lay the straps flat at 2.3 in (5.8 cm) x 8.5 in (21.6 cm).
- Let it dry completely, about 24 hours, then remove the rolls.
Final Quality-Control Checklist
- Each round has 58 sts, and the border has 92 sts.
- Both hearts have 22 eyelets, are centered, and point downward.
- Both V points sit just above the hearts at the same height.
- The joined width is 9.7 in (24.6 cm) and the back height is 5.6 in (14.2 cm).
- The seams lie flat and do not show from the front.
- The snaps close firmly and the buttons are sewn on securely.
- All ends are woven in.
Troubleshooting
- The heart looks off-center: You may have miscounted st 1. Re-check your marker against the front corner of the base.
- The eyelets close up: Your ch-1 is too tight. Make the chain a little looser.
- The V edge looks stepped: Pull each step stitch snug in Rnd 21 and block the edge into a smooth line.
- The pocket is too floppy: Go down a hook size, or switch to a firmer cotton.
- The roll won’t fit: Go up a hook size. A standard roll is about 4.5 in (11.4 cm) wide.
- The strap stretches: Add a row of sl sts along both long edges.
Care
Hand wash in cool water and lay flat to dry, reshaping the pockets around a roll. Remove the buttons before machine washing.

Final Notes
The measurement chain is short. A 4.9 in (12.4 cm) x 3.2 in (8.1 cm) base gives a 58-st round. Rnds 6–14 add the heart, and the short rows build a back 5.6 in (14.2 cm) tall with a 1.1 in (2.8 cm) V dip. Two pockets join into a holder 9.7 in (24.6 cm) wide, finished with a 92-st border. If you check your gauge at the base, everything after it falls into place.
Happy crocheting!