The Rosewood Hearts Garland Curtain is a soft, romantic door or window hanging made from rows of open crochet hearts. Each heart has a thick outline and an open center. The hearts are linked into vertical strands, and each strand ends in a full tassel that swings freely.
The colors are dusty mauve and warm cream, with the strands hung in alternating colors. When light comes through the window the open centers glow, so the curtain looks light even though each heart is sturdy. It suits Valentine’s Day, a nursery, a bedroom window or a cozy boho corner all year round.
This pattern uses US crochet terms. The finished curtain is about 31.5 in (80.0 cm) wide and 34.5 in (87.6 cm) long, measured from the top of the hanging loops to the tassel tips. Each heart is 3.5 in (8.9 cm) wide and 3.5 in (8.9 cm) tall.
The construction is simple. You chain a ring and shape it into a heart with one round of mixed-height stitches. Then you outline it with a round of single crochet. You link six hearts into a strand with short corded chains, add a hanging loop at the top and a tassel at the bottom, and repeat for eight strands.
Finished Size and Construction
- Finished curtain size: 31.5 in (80.0 cm) wide x 34.5 in (87.6 cm) long
- Skill level: Advanced beginner
- Terminology: US crochet terms
- Yarn weight: Worsted / Aran (#4), cotton or cotton blend
- Hook: 5.0 mm (US H-8)
- Number of pieces: 48 hearts (24 mauve, 24 cream) plus 8 tassels
- Layout: 8 vertical strands x 6 hearts, alternating mauve and cream strands
- Piece size: 3.5 in (8.9 cm) x 3.5 in (8.9 cm) per heart
- Size before border (after Rnd 1): 3 in (7.6 cm) x 3 in (7.6 cm)
- Border depth: 0.25 in (0.6 cm) outline round on every heart
- Strand spacing: 4 in (10.2 cm) center to center on the rod
Materials
Choose a smooth, plied worsted cotton or cotton blend. Cotton holds the heart shape crisply and shows the rope-like outline well. Avoid fuzzy or very splitty yarn, because it makes the ring foundation hard to see.
- Color A, dusty mauve: 150 g, approx. 270 m (295 yd)
- Color B, cream: 150 g, approx. 270 m (295 yd)
Each strand uses about 55 m (60 yd), including the tassel, so the four strands in one color use about 220 m (241 yd). The quantities above include a margin for your gauge swatch and for trimming the tassels.
Tools:
- 5.0 mm (US H-8) crochet hook
- Tapestry needle
- Scissors
- Stitch markers
- Stiff card cut to 5.5 in (14.0 cm) tall, for the tassels
- Wooden curtain rod or dowel, at least 36 in (91.4 cm) long
- Pins, blocking mat and spray bottle
Abbreviations (US Terms)
- ch – chain
- sl st – slip stitch
- sc – single crochet
- hdc – half double crochet
- dc – double crochet
- sp – space
- st(s) – stitch(es)
- rep – repeat
Special technique – corded link: Ch the stated number, then sl st into the target st. Sl st back into the back bump of each ch to the start. This doubles the chain into a firm, rope-like link that won’t stretch.
Gauge and Checkpoints
Make and block one complete heart before you start the curtain. This tells you whether your yarn and hook give the right size.
Chain gauge: 32 ch measure 8 in (20.3 cm) laid flat and unstretched, before joining. That is 4 ch per inch.
Checkpoints:
- Foundation: 32 ch in a straight line = 8 in (20.3 cm).
- After Rnd 1: heart = 3 in (7.6 cm) wide x 3 in (7.6 cm) tall.
- After Rnd 2: heart = 3.5 in (8.9 cm) wide x 3.5 in (8.9 cm) tall, with a center opening about 2 in (5.1 cm) wide.
- Link: each corded link = 1 in (2.5 cm).
If your heart is too big, go down to a 4.5 mm hook or chain more tightly. If it’s too small, go up to a 5.5 mm hook. Don’t change the stitch counts, because the heart shape depends on them.

Heart Motif
Make 24 hearts in Color A and 24 in Color B. Work all stitches of Rnd 1 into the back bump of the foundation chain so the inner edge stays neat.
Foundation: Ch 32, then sl st in the first ch to form a ring. Don’t twist the chain. Place a marker in the first ch; this is the top-center dip.
The ring is divided like this:
– ch 1 = dip
– ch 2–16 = left half (15 ch)
– ch 17 = bottom point
– ch 18–32 = right half (15 ch)
Rnd 1 (shaping round):
Ch 1 (doesn’t count as a st). Sl st in the marked ch (dip, 1 st).
Left half: Sc in next ch, hdc in next ch, 2 dc in each of next 4 ch, dc in next 2 ch, hdc in next 3 ch, sc in next 4 ch. (19 sts)
Point: (Sc, ch 2, sc) in next ch. (2 sc + ch-2 sp)
Right half: Sc in next 4 ch, hdc in next 3 ch, dc in next 2 ch, 2 dc in each of next 4 ch, hdc in next ch, sc in next ch. (19 sts)
Join with sl st to the first sl st.
Count: 41 sts + ch-2 point sp. This is 32 sts worked 1 per ch, plus 8 extra sts from the lobe increases (4 per lobe), plus 1 extra st at the point (two sc in one ch). 32 + 8 + 1 = 41.
How the shape forms:
– The tall dc groups push the lobes up and out.
– The sl st pulls the dip in.
– The short sc sections taper toward the point.
Check: the heart should measure 3 in (7.6 cm) x 3 in (7.6 cm).
Rnd 2 (outline round):
Ch 1 (doesn’t count). Begin in the first st after the dip.
Left half: Sc in the sc and in the hdc (2 sts). Over the 8 lobe dc: [sc in next dc, 2 sc in next dc] 4 times (12 sts). Sc in next 9 sts: 2 dc, 3 hdc, 4 sc (9 sts). Sc in first point sc (1 st). (24 sts)
Point: (Sc, ch 2, sc) in ch-2 sp. (2 sc + ch-2 sp)
Right half: Sc in second point sc (1 st), sc in next 9 sts (9 sts), [2 sc in next dc, sc in next dc] 4 times (12 sts), sc in the hdc and in the sc (2 sts). (24 sts)
Dip: Sl st in the dip sl st. (1 st)
Fasten off, leaving a 6 in (15.2 cm) tail.
Count: 51 sts + ch-2 point sp. This is 41 sts worked 1 per st, plus 8 lobe increases, plus 2 new sc worked into the point sp. 41 + 8 + 2 = 51.
Check: the heart should measure 3.5 in (8.9 cm) x 3.5 in (8.9 cm). Weave in the starting tail now. Keep the ending tail in case you need it to shape the dip.
Make All Pieces
- Color A (mauve): 24 hearts, 4 tassels
- Color B (cream): 24 hearts, 4 tassels
Each strand uses one color only. Strands are numbered from left to right.
Strand: 1 2 3 4 5 6 7 8
Loop: A B A B A B A B
Heart 1: A B A B A B A B
Heart 2: A B A B A B A B
Heart 3: A B A B A B A B
Heart 4: A B A B A B A B
Heart 5: A B A B A B A B
Heart 6: A B A B A B A B
Tassel: A B A B A B A B
Tassels:
1. Wrap yarn 30 times around the 5.5 in (14.0 cm) card.
2. Tie the top with a 12 in (30.5 cm) strand and slide the bundle off the card.
3. Wrap a second strand tightly around the bundle 0.75 in (1.9 cm) below the top and knot it.
4. Cut the bottom loops and trim the tassel to 5 in (12.7 cm).
Keep the long top tie for attaching the tassel later.
Joining
Block the hearts lightly before joining (see Final Blocking) so the lobes sit evenly.
Stitch-to-stitch logic: Each link connects exactly two stitches: the ch-2 point sp of the upper heart and the dip sl st of the lower heart. No stitches are added to either heart, so each heart keeps its 51 sts + ch-2 sp.
Link between hearts:
1. Using the strand’s color, join with sl st in the ch-2 point sp of heart 1.
2. Ch 4, then sl st into the dip sl st of heart 2, working under both loops.
3. Work a corded link back: sl st in the back bump of each of the 4 ch, then sl st in the point sp.
4. Fasten off. The link should be 1 in (2.5 cm) long.
Repeat to link hearts 2 to 3, 3 to 4, 4 to 5 and 5 to 6. Each strand has 5 links.
Hanging loop: Join yarn with sl st in the dip of heart 1. Ch 20, then sl st in the same dip st. Sl st in the back bump of each of the 20 ch. Sl st in the dip and fasten off. The loop stands 2.5 in (6.4 cm) tall and fits a rod up to 1 in (2.5 cm) thick.
Tassel link: Join yarn in the point sp of heart 6. Ch 4, then sl st back in each ch to make a 1 in (2.5 cm) link. Fasten off. Thread the tassel’s top tie through the end of the link, knot it securely and bury the ends inside the tassel.
Tension: Keep the links firm. Loose links let the hearts twist and make the strands uneven in length. Hold the chain taut against your finger as you slip stitch back.
Size checkpoint:
– Hearts plus links in one strand = 6 hearts x 3.5 in (8.9 cm) + 5 links x 1 in (2.5 cm) = 26 in (66.0 cm).
– Full strand = 2.5 in (6.4 cm) loop + 26 in (66.0 cm) + 1 in (2.5 cm) tassel link + 5 in (12.7 cm) tassel = 34.5 in (87.6 cm).
– All eight strands should match within 0.25 in (0.6 cm).
Hang the strands on the rod with their centers 4 in (10.2 cm) apart. Curtain width = 7 gaps x 4 in (10.2 cm) + one 3.5 in (8.9 cm) heart = 31.5 in (80.0 cm).
Border
This curtain has no outer border because each strand hangs freely. Instead, the outline round (Rnd 2) acts as the border on every heart. You work it before joining; this section explains the math behind it.
Border gauge: 4 sc per inch along the outer edge, the same as the chain gauge.
Counts per side:
- Left half: 24 sts, about 6 in (15.2 cm) of outer edge
- Bottom point: 2 sc + ch-2 sp
- Right half: 24 sts, about 6 in (15.2 cm) of outer edge
- Top dip: 1 sl st
- Total: 24 + 2 + 24 + 1 = 51 sts + ch-2 sp
Why the math works:
– The outer edge is longer than the base edge, so it needs more stitches.
– Each lobe gets 4 increases, placed on every other dc where the curve is widest.
– The point gets 2 new sc plus a ch-2 so it stays sharp.
– The single sl st at the dip keeps the notch crisp.
– 24 sts per half at 4 sts per inch cover 6 in (15.2 cm). That matches the outer edge of a 3.5 in (8.9 cm) heart, so the outline neither ruffles nor cups.
Final Blocking
- Weave in all remaining ends before blocking.
- Lay each strand flat on a blocking mat with the hearts in a straight line.
- Spray until damp, not soaked.
- Pin each heart to 3.5 in (8.9 cm) x 3.5 in (8.9 cm). Pin the two lobe tops, the dip and the point.
- Ease the center opening with your fingers until it’s about 2 in (5.1 cm) wide.
- Straighten each link to 1 in (2.5 cm).
- Let everything dry completely.
- Steam the tassels lightly, comb them straight and trim to 5 in (12.7 cm).
Final Quality-Control Checklist
- 48 hearts in total: 24 mauve, 24 cream
- Every heart has 51 sts + ch-2 sp in Rnd 2
- Every heart measures 3.5 in (8.9 cm) x 3.5 in (8.9 cm)
- Lobes are even and the point is centered under the dip
- 5 links per strand, each 1 in (2.5 cm)
- Hanging loops are all 2.5 in (6.4 cm)
- Each strand measures 34.5 in (87.6 cm)
- Strands alternate A, B, A, B across the rod
- All tassels are 5 in (12.7 cm) and match their strand color
- No visible yarn ends
Troubleshooting
The heart looks like a circle. The dip is too shallow. Make sure the dip is a sl st in both rounds, and pull the tail snugly at the dip when you weave it in.
The lobes are uneven. Count the 8 dc in each lobe on Rnd 1. One missing increase shifts the whole shape.
The point is blunt. Work the (sc, ch 2, sc) into the point ch or point sp, not beside it.
The outline ruffles. You added extra increases. Recount Rnd 2; it must have 24 sts per half.
The outline cups or pulls in. Your Rnd 2 tension is tighter than Rnd 1. Loosen up, or use a hook 0.5 mm larger for Rnd 2 only.
The strands twist. The links were worked through only one loop. Work the dip sl st under both loops and keep the links firm.
The strands are different lengths. Measure each link before fastening off, and redo any link longer than 1 in (2.5 cm).
Care
Hand wash in cool water with mild soap, roll in a towel and dry flat with the hearts pinned to shape. Comb the tassels while they’re damp.

Final Notes
Here is the full measurement chain:
– 32 chains at 4 per inch give an 8 in (20.3 cm) ring.
– Rnd 1 shapes the ring into a 3 in (7.6 cm) heart with 41 sts.
– Rnd 2 outlines it to 3.5 in (8.9 cm) with 51 sts.
– Six hearts and five 1 in (2.5 cm) links make a 26 in (66.0 cm) strand body.
– A loop, a tassel link and a 5 in (12.7 cm) tassel complete a 34.5 in (87.6 cm) strand.
– Eight strands with centers 4 in (10.2 cm) apart give a 31.5 in (80.0 cm) curtain.
Check your first heart against these numbers and stick to the counts. The rest of the curtain will come out the same size.
Happy crocheting!