Wide header image featuring pink and blue heart motif crochet totes with a hook and yarn needle; free crochet heart bag pattern with simple colorwork.

Free crochet heart bag pattern

Add a little love to your everyday tote with this crochet heart bag pattern. This free pattern uses simple stitches and beginner-friendly color changes to create neat rows of hearts on a sturdy rectangular bag with built-in handles. It’s sized for daily use, works up quickly with worsted weight yarn, and looks great in any palette—from classic red and pink to bold brights or neutrals.

If you want a cute, practical make that teaches colorwork without stress, this heart crochet bag pattern is a perfect next step. Keep reading for the full free pattern.

Why you’ll love this pattern

  • Beginner-friendly colorwork: Practice easy, tidy color changes in double crochet.
  • Practical tote shape: Flat base and built-in handles for everyday errands and outings.
  • Custom colors: Make coordinated sets (pink, blue, or scrappy stripes) to match any season.
  • Quick to finish: After the base, the body repeats in relaxing rounds.
  • Gift-ready: A handmade bag that’s perfect for Valentine’s Day, birthdays, or craft fairs.
Vertical promo image showing pink and blue crochet tote bags with white heart motifs and built-in handles; free crochet heart bag pattern with beginner-friendly color changes.

Crochet heart bag pattern details

Here’s everything you need before you start—tools, sizes, gauge, and notes.

Skill level

Advanced beginner – This pattern is perfect for crocheters who are comfortable with basic stitches and ready to learn simple color changes. You’ll practice working with multiple yarn colors while following an easy, step-by-step design.

Materials you’ll need

  • Crochet hook size I-9 (5.5 mm) – Or the size needed to match the gauge.
  • Worsted weight yarn (#4) – I used acrylic yarn.
  • Yarn needle – For weaving in ends neatly.
  • Scissors – To cut your yarn.
  • Stitch markers (optional) – Helpful for keeping track of rounds and stitch counts.

Finished size

The finished bag measures approximately 11 inches (28 cm) wide and 11.5 inches (29 cm) long, not including the handles.

Gauge

Gauge: 16 stitches and 10 rounds = 4 inches

✅ Too many stitches? Try a larger hook
✅ Too few stitches? Try a smaller hook

Crochet abbreviations

  • sc = single crochet
  • dc = double crochet
  • blo = back loop only
  • ch / chs = chain / chains
  • st / sts = stitch / stitches
  • sl st = slip stitch
  • yo = yarn over

Pattern notes

  • This heart bag is worked in the round from the base up.
  • Use stitch markers to help keep track of rounds if needed.
  • The chain at the start of each round does not count as a stitch.
  • Join each round with a slip stitch to the first stitch of the round.
  • Pattern is written in US terms.

Changing colors in double crochet

Begin your last dc of the current color as usual (yo, insert hook, yo, pull up a loop, yo, pull through two loops). Before the final yarn over, drop the old color and yarn over with the new color. Pull the new color through the last two loops to finish the stitch.

Square photo of two rectangular crochet bags—one pink, one blue—each with rows of white hearts and a built-in handle; heart crochet bag pattern for advanced beginners.

Free crochet heart bag pattern instructions

Follow these step-by-step instructions for the free crochet heart bag pattern.

Base of the bag

  • Round 1 (64 sts): Ch 31, sc in 2nd ch from hook, sc in next 28 chs, 3 sc in last ch. Turn to work along the back side of the starting chain, sc in next 29 chs, 3 sc in the last ch. Join with sl st to first sc.
  • Round 2 (70 sts): Ch 1, sc in next 29 sts, 2 sc in each of next 3 sts, sc in next 29 sts, 2 sc in each of last 3 sts. Join.
  • Round 3 (82 sts): Ch 1, sc in next 29 sts, 2 sc in each of next 6 sts, sc in next 29 sts, 2 sc in each of last 6 sts. Join.

Body of the bag

  • Round 4 (82 sts): Ch 2, dc in each stitch through the back loops only. Join with sl st to first dc.
  • Round 5: Ch 2, dc in each stitch. Join.

Note: The next seven rounds form the heart design. Change colors as listed. Carry the unused yarn on the inside of the bag.

  • Round 6: (blue) x 6, (white) x 3, (blue) x 10, (white) x 3, (blue) x 10, (white) x 3, (blue) x 10, (white) x 3, (blue) x 10, (white) x 3, (blue) x 10, (white) x 3, (blue) x 8 
  • Round 7: (blue) x 5, (white) x 5, (blue) x 8, (white) x 5, (blue) x 8, (white) x 5, (blue) x 8, (white) x 5, (blue) x 8, (white) x 5, (blue) x 8, (white) x 5, (blue) x 7 
  • Round 8: (blue) x 4, (white) x 7, (blue) x 6, (white) x 7, (blue) x 6, (white) x 7, (blue) x 6, (white) x 7, (blue) x 6, (white) x 7, (blue) x 6, (white) x 7, (blue) x 6 
  • Round 9: (blue) x 3, (white) x 9, (blue) x 4, (white) x 9, (blue) x 4, (white) x 9, (blue) x 4, (white) x 9, (blue) x 4, (white) x 9, (blue) x 4, (white) x 9, (blue) x 5 
  • Round 10: (blue) x 2, (white) x 11, (blue) x 2, (white) x 11, (blue) x 2, (white) x 11, (blue) x 2, (white) x 11, (blue) x 2, (white) x 11, (blue) x 2, (white) x 11, (blue) x 4 
  • Round 11: (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 2, (white) x 5, (blue) x 1, (white) x 5, (blue) x 4 
  • Round 12: (blue) x 3, (white) x 3, (blue) x 3, (white) x 3, (blue) x 4, (white) x 3, (blue) x 3, (white) x 3, (blue) x 4, (white) x 3, (blue) x 3, (white) x 3, (blue) x 4, (white) x 3, (blue) x 3, (white) x 3, (blue) x 4, (white) x 3, (blue) x 3, (white) x 3, (blue) x 4, (white) x 3, (blue) x 3, (white) x 3, (blue) x 5
  • Rounds 13-26: Ch 2, dc in each st around. Join.

Adding the straps

Use locking stitch markers to mark the 20 center stitches on both the front and back of the bag. Start where you left off at the end of round 26.

  • Round 27: Ch 2, dc in each st up to the first marker, ch 20, skip next 20 sts, dc in each st up to the next marker, ch 20, skip next 20 sts, dc in each remaining st around. Join with sl st to first dc. (42 sts and 40 chs)
  • Round 28: Ch 2, dc in each st up to the chain, dc in each of the 20 chs, dc in each st up to the next chain, dc in each of the 20 chs, dc in each remaining st around. Join. (82 sts)
  • Round 29: Ch 2, dc in each st around. Join. (82 sts)

Finishing

Weave in your ends, give it a quick block, then fill it up and go—this tote’s ready to wear, gift, or sell at your next craft fair.

Frequently asked questions

What skill level is this crochet heart bag pattern?
This is an advanced beginner pattern. You’ll use basic stitches (single crochet and double crochet) and simple color changes to create the heart design.

How big is the finished bag?
About 11 inches (28 cm) wide and 11.5 inches (29 cm) long, not including the handles.

What type of yarn works best?
Worsted weight (#4) acrylic holds its shape and is easy to care for. Cotton also works if you prefer a sturdier tote.

Can I make this bag in different colors?
Absolutely. Try bright shades for a playful look or neutrals for everyday wear. Scraps work great for a mismatched, fun design.

Do I need to line the bag?
Lining is optional. If you’ll carry small items, a simple fabric lining helps prevent stretching and keeps the bag’s shape.

More free crochet heart patterns

Looking for free crochet heart patterns? These sweet and simple designs are perfect for Valentine’s Day gifts, heartfelt décor, and quick handmade projects. Start your crochet heart creations today and spread a little love with every stitch!

Let’s connect!

I’d love to see what you’re making! Share your makes and follow along here:

📸 Instagram
📌 Pinterest
📘 Facebook
▶️ YouTube
🛍️ Etsy Shop
🧶 Ravelry

Happy crocheting! 🧶 Don’t forget to Pin this pattern so you can come back to it later!
— Melissa

Vertical promo image showing pink and blue crochet tote bags with white heart motifs and built-in handles; free crochet heart bag pattern with beginner-friendly color changes.

Similar Posts

You cannot copy content of this page

error: Content is protected !!