Rosy Heart Toilet Paper Holder Crochet Pattern

This hanging toilet paper holder stores three spare rolls in a neat vertical stack. A long cream backing strip hangs from a crocheted loop. Three dusty rose bands are sewn across it to form pockets, and each band has a raised heart appliqué on the front. A small dusty rose bow sits on the cream space at the top.

The palette is soft and warm: dusty rose against natural cream, worked in dense single crochet for a tidy, slightly pebbled texture. Each heart has a corded rim made with reverse single crochet, so it stands out clearly from the band behind it.

The pattern uses US crochet terms. The finished backing is 4.5 in (11.4 cm) wide and 20.5 in (52.1 cm) long, or about 23.5 in (59.7 cm) including the hanging loop. Each pocket holds a standard roll about 4.5 in (11.4 cm) across.

You’ll make one backing strip in rows, add a single border round, and then crochet the hanging loop. Next come three flat bands, three hearts and a two-part bow. The hearts are sewn to the bands, the bands are sewn across the backing stitch to stitch, and the bow goes on last.

Finished Size and Construction

  • Finished size: 4.5 in x 20.5 in (11.4 cm x 52.1 cm), plus a 3 in (7.6 cm) hanging loop
  • Skill level: Easy / advanced beginner
  • Terminology: US crochet terms
  • Yarn weight: Worsted (#4) cotton
  • Hook: 4.5 mm (US 7)
  • Number of pieces: 9 (1 backing, 3 bands, 3 hearts, 1 bow body, 1 bow wrap)
  • Layout: 3 pockets stacked vertically on a single backing strip
  • Backing size before border: 4 in x 20 in (10.2 cm x 50.8 cm)
  • Border depth: 1 round of sc, about 0.25 in (0.6 cm)
  • Band size: 4 in x 10 in (10.2 cm x 25.4 cm)
  • Heart size: about 3.25 in x 2.75 in (8.3 cm x 7.0 cm)
  • Bow size: 3 in x 1.75 in (7.6 cm x 4.4 cm)

Materials

Use a smooth, firm worsted-weight cotton or cotton blend. Cotton holds its shape in a damp bathroom and keeps the stitches crisp. Avoid very soft or splitty yarn, because the bands have to grip the rolls.

  • Cream (Color A): 110 g, about 190 m, for the backing, border and hanging loop
  • Dusty Rose (Color B): 170 g, about 290 m, for the bands, hearts and bow

These quantities include a margin of roughly 15% for your gauge swatch and for the long tails you’ll use for sewing.

Tools:

  • 4.5 mm (US 7) crochet hook
  • Tapestry needle
  • Stitch markers (at least 6)
  • Scissors
  • Measuring tape
  • Pins or clips
  • A wall hook or towel hook for hanging

Abbreviations (US Terms)

  • ch – chain
  • sl st – slip stitch
  • sc – single crochet
  • sc2tog – single crochet 2 together
  • st(s) – stitch(es)
  • RS – right side
  • rev sc – reverse single crochet

Special stitch – reverse single crochet (rev sc): Work from left to right (right to left if you are left-handed). Insert the hook into the next stitch to the right, yarn over and pull up a loop, then yarn over and draw through both loops. This makes a twisted, rope-like edge.

Gauge and Checkpoints

Gauge: 16 sc x 18 rows = 4 in (10.2 cm) in sc worked in rows.

Make one band first, because it doubles as your gauge test. Check it at each of these points:

  • Band after Row 1: 16 sc measure 4 in (10.2 cm) across.
  • Band after Row 18: 4 in (10.2 cm) tall.
  • Finished band: 4 in x 10 in (10.2 cm x 25.4 cm).
  • Backing after Row 45: 10 in (25.4 cm) long.
  • Backing after Row 90: 4 in x 20 in (10.2 cm x 50.8 cm).
  • Backing after border: 4.5 in x 20.5 in (11.4 cm x 52.1 cm).

Too big? Go down to a 4 mm hook. Bands that are too large will let rolls slip out.
Too small? Go up to a 5 mm hook. If the bands are too short, the rolls won’t fit.

Row gauge is important here. The pocket size depends on row counts, so measure rows as well as stitches.

Rose-pink crocheted bobble stitches layered with cream yarn showing intricate handmade textile detail.

Backing Strip (Color A)

The backing is worked in rows from the bottom up. Row 1 is the bottom edge.

Foundation: With Color A, ch 17.

Row 1: Sc in 2nd ch from hook and in each ch across, turn. (16 sc)

Rows 2–90: Ch 1 (does not count as a st), sc in each st across, turn. (16 sc)

Check the backing against the checkpoints at Row 45 and Row 90. Don’t fasten off. Keep the loop live for the border.

Placement markers: Counting from Row 1 at the bottom, place a stitch marker at the edge of Rows 8, 29, 30, 51, 52 and 73. These rows are the sewing lines for the bands.

Bands (Color B, make 3)

Foundation: With Color B, ch 17.

Row 1: Sc in 2nd ch from hook and in each ch across, turn. (16 sc)

Rows 2–45: Ch 1, sc in each st across, turn. (16 sc)

Fasten off and leave a 20 in (50.8 cm) tail. The band measures 4 in x 10 in (10.2 cm x 25.4 cm). Both short ends are 16 stitches wide, the same as one backing row.

Hearts (Color B, make 3)

Each heart is worked in rows from the bottom point up and then split into two lobes. Two edging rounds finish it.

Row 1: Ch 2, 3 sc in 2nd ch from hook, turn. (3)

Row 2: Ch 1, 2 sc in first st, sc in next st, 2 sc in last st, turn. (5)

Row 3: Ch 1, 2 sc in first st, sc in next 3 sts, 2 sc in last st, turn. (7)

Row 4: Ch 1, 2 sc in first st, sc in next 5 sts, 2 sc in last st, turn. (9)

Row 5: Ch 1, 2 sc in first st, sc in next 7 sts, 2 sc in last st, turn. (11)

Rows 6–7: Ch 1, sc in each st across, turn. (11)

At this point the heart measures 2.75 in (7.0 cm) across.

First lobe – Row 8: Ch 1, sc in next 5 sts, turn. The 6th st stays unworked as the center dip. (5)

First lobe – Row 9: Ch 1, sc2tog, sc in next st, sc2tog. (3) Fasten off.

Second lobe – Row 8: Skip the center st of Row 7. Join Color B in the next st, ch 1, sc in the same st and in the next 4 sts, turn. (5)

Second lobe – Row 9: Ch 1, sc2tog, sc in next st, sc2tog. (3) Fasten off.

The heart now measures 2.75 in (7.0 cm) wide and 2 in (5.1 cm) tall.

Edging Rnd 1: Join Color B with a sl st in the skipped center st (the dip). Work around the heart in this order:

  • 2 sc up the inner edge of the first lobe (1 per row end)
  • Across the lobe top: 2 sc in first st, sc in next st, 2 sc in last st (5)
  • 9 sc down the outer side (1 per row end, Rows 9 to 1)
  • 3 sc in the bottom point (the base of Row 1)
  • 9 sc up the other outer side
  • Across the second lobe top: 2 sc, sc, 2 sc (5)
  • 2 sc down the inner edge
  • Sl st in the dip st to join

That gives 2 + 5 + 9 + 3 + 9 + 5 + 2 = 35 sc. The sl st doesn’t count.

Edging Rnd 2: Ch 1, rev sc in each sc around, skipping the dip sl st. Sl st to the first rev sc. (35 rev sc)

Fasten off and leave a 16 in (40.6 cm) tail. The corded rev sc rim gives the heart its raised outline. The finished heart is about 3.25 in x 2.75 in (8.3 cm x 7.0 cm).

Bow (Color B)

Bow body: Ch 13.

Row 1: Sc in 2nd ch from hook and in each ch across, turn. (12)

Rows 2–8: Ch 1, sc in each st across, turn. (12)

Fasten off. The bow body measures 3 in x 1.75 in (7.6 cm x 4.4 cm).

Center wrap: Ch 7.

Row 1: Sc in 2nd ch from hook and in each ch across, turn. (6)

Rows 2–3: Ch 1, sc in each st across, turn. (6)

Fasten off and leave a 12 in (30.5 cm) tail. The wrap is 1.5 in (3.8 cm) long.

Shape the bow: Pinch the body at the center into three small accordion folds. Wrap the center strip around the pinch, then sew the wrap ends together at the back. Pull firmly so the two wings flare out.

Make All Pieces

Color A (cream):
– 1 backing strip, 16 sts x 90 rows, plus border and hanging loop

Color B (dusty rose):
– 3 bands, 16 sts x 45 rows
– 3 hearts, 35 sts in the final round
– 1 bow body, 12 sts x 8 rows
– 1 bow wrap, 6 sts x 3 rows

Layout (top to bottom, backing rows counted from the bottom):

[      hanging loop       ]
[ cream + bow  Rows 74–90 ]  about 3.8 in / 9.7 cm
[ pocket 3     Rows 52–73 ]  band sewn at Rows 52 and 73
[ pocket 2     Rows 30–51 ]  band sewn at Rows 30 and 51
[ pocket 1     Rows 8–29  ]  band sewn at Rows 8 and 29
[ cream tail   Rows 1–7   ]  about 1.6 in / 4.1 cm

Row check: 7 + 22 + 22 + 22 + 17 = 90 rows.

Border (Backing, Color A)

Border gauge: Same as the body, 16 sc = 4 in (10.2 cm), so each sc is 0.25 in (0.6 cm) wide.

Rnd 1: With the live loop from Row 90 and RS facing, ch 1. Work around the strip as follows:

  • Top short side: 3 sc in the first st, sc in the next 14 sts, 3 sc in the last st.
  • First long side: Work across the 90 row ends as follows: sc in each of the next 8 row ends, skip 1 row end. Repeat from * 10 times. (80 sc)
  • Bottom short side: Working into the foundation chain, 3 sc in the first ch, sc in the next 14 ch, 3 sc in the last ch.
  • Second long side: Repeat the 8-and-skip-1 sequence. (80 sc)
  • Sl st to the first sc to join.

Count: 14 + 80 + 14 + 80 sc between corners, plus 4 corner groups of 3 = 12. Total 200 sts.

Why the math works: The short sides keep all 16 body stitches: 14 between the corners plus the first and last stitch, which hold the corner groups. Adding one border stitch’s width at each side makes 18 stitches, or 4.5 in (11.4 cm). The long sides are 90 rows at 18 rows per 4 in, which is 20 in (50.8 cm). Since 80 sc x 0.25 in = 20 in (50.8 cm), the border matches the edge exactly. One sc per row end would have given 90 sc, or 22.5 in (57.2 cm), and the edge would have rippled. The 3 sc corners turn each 90° angle flat.

Hanging loop: Don’t fasten off. Sl st along the top edge to the 6th sc between the top corners. Ch 30, skip 2 sts, and sl st in the next st (the 9th st) to form the loop. Ch 1 and work 34 sc around the chain, then sl st where the loop began. Fasten off and weave in. The loop stands about 3 in (7.6 cm) tall.

Joining

Method: Whipstitch with the band tails, stitch to stitch.

Hearts first: Fold each band in half crosswise to find its middle, which is Row 23. Center a heart on the RS of the band, point down, between about Rows 17 and 29. Sew around the heart just inside the rev sc rim so the corded edge stays raised.

Bands to backing: Each band end has 16 sts, and each backing row has 16 sts inside the border. Sew one band stitch to one backing stitch so the band can’t drift or bunch.

  1. Place the backing RS up. Take Band 1 and sew its foundation edge across the 16 sts of Row 8. Work through the front of each backing st, matching the band sts from right to left.
  2. Bring the band up in an arch, heart facing out, without twisting it. Sew its Row 45 edge across the 16 sts of Row 29.
  3. Repeat with Band 2 at Rows 30 and 51, and Band 3 at Rows 52 and 73.

The cream border stays visible as a slim frame on each side of the bands.

Tension: Pull each whipstitch snug but not tight. The band edges should lie flat against the backing without puckering it. Go through each edge 2 times and secure the tails on the back.

Size checkpoint: Each pocket spans 21 rows on the backing, about 4.7 in (11.9 cm), plus a 10 in (25.4 cm) band. That makes a loop of about 14.7 in (37.3 cm). A 4.5 in (11.4 cm) roll has a circumference of about 14.1 in (35.8 cm), so it slides in from the side and is held snugly.

Bow: Center the bow on the cream top section, around Row 82. Sew it through the wrap and the back of each wing.

Final Blocking

  1. Weave in all remaining ends on the back of the backing.
  2. Lightly mist the whole holder with water.
  3. Lay it flat, RS up, and pat the backing to 4.5 in x 20.5 in (11.4 cm x 52.1 cm).
  4. Push each band into a gentle arch from the inside and smooth the hearts flat.
  5. Pinch the bow wings into shape.
  6. Hold a steam iron above the backing (don’t let it touch) to set the edges.
  7. Let it dry completely. Then hang it up and insert three rolls.

Final Quality-Control Checklist

  • Backing measures 4.5 in x 20.5 in (11.4 cm x 52.1 cm)
  • Border total is 200 sts, with flat long edges
  • Each band is 16 sts x 45 rows
  • Each heart has 35 rev sc, with a raised, even rim
  • Hearts are centered and point down
  • Bands are sewn at Rows 8/29, 30/51 and 52/73 with no twists
  • Each roll slides in and stays put
  • Hanging loop is centered and firmly anchored
  • Bow is centered on the cream top section

Troubleshooting

Long edges ripple: You worked too many border sc. Redo the border with the 8-and-skip-1 sequence.

Rolls fall out: The bands are too long. Drop a hook size, or work 43 rows instead of 45.

Rolls won’t fit: The bands are too short. Add 2 rows to each band.

Heart cups: The first edging round is too tight. Use a slightly looser tension, or block the heart flat before sewing.

Backing sags at the top: Anchor the loop through both border stitches and the body stitches below them.

Care

Hand wash in cool water and lay flat to dry. Remove the rolls first, and reshape the bands while they are damp.

Crocheted toilet paper holder in rose-pink with cream bow holding three rolls on bathroom wall.

Final Notes

Everything follows from one measurement chain. With a gauge of 16 sc x 18 rows = 4 in (10.2 cm), the 16-stitch backing is 4 in (10.2 cm) wide. The border brings it to 4.5 in (11.4 cm), and 90 rows give 20 in (50.8 cm), or 20.5 in (52.1 cm) after the border. The bands are 16 stitches to match each backing row, and 45 rows give 10 in (25.4 cm). Together with a 21-row pocket span, that makes a 14.7 in (37.3 cm) loop that fits a standard roll. Check these numbers as you go and your holder will hang straight and grip every roll.

Happy crocheting!

Leave a Comment