The Harbor Bag Holder is a tidy, tall box that hangs on a kitchen hook. It keeps grocery bags out of sight but easy to grab. You push bags in at the top and pull them out through the rounded hole near the bottom.
The sample is in deep navy, and it looks just as good in natural cream. The fabric is waistcoat stitch, a single crochet variation that gives stacked V columns like stockinette knitting. It is firm, holds its shape, and looks neat from every side.
This pattern uses US crochet terms. The finished holder measures 6 in (15.2 cm) wide, 3 in (7.6 cm) deep and 14 in (35.6 cm) tall, not counting the strap.
Construction is simple and seamless. You crochet a flat rectangular base in rows, then work single crochet around it. Next you turn the walls up with a back-loop round and work the body in joined rounds of waistcoat stitch. A short section of right-side-only rows makes the dispensing hole. A corded rim finishes the top, and the strap is worked straight onto the back wall.
Finished Size and Construction
- Finished size: 6 in (15.2 cm) wide × 3 in (7.6 cm) deep × 14 in (35.6 cm) tall
- Skill level: Intermediate
- Terminology: US
- Yarn weight: Bulky (#5)
- Hook: 6 mm (J-10)
- Number of pieces: 1 (the strap is worked onto the body)
- Layout: Single rectangular tube with a closed base
- Circumference: 54 sts = 18 in (45.7 cm)
- Body height before border: 13.6 in (34.5 cm)
- Border (top rim) depth: 0.4 in (1.0 cm)
- Dispensing hole after trim: about 2.8 × 1.8 in (7.1 × 4.6 cm)
- Strap: 1 in (2.5 cm) wide × about 9.25 in (23.5 cm) long
Materials
Yarn: Use a bulky (#5) cotton or cotton blend. Cotton keeps the walls stiff and doesn’t stretch out when the holder is full. Avoid very fuzzy or very stretchy acrylic, which lets the box slump.
- Navy (sample color): about 300 g / 330 m (361 yd)
- Alternate colorway: the same amount in cream or natural
These amounts include a margin of about 15% for gauge swatching and differences between yarn brands.
Tools:
- 6 mm (J-10) crochet hook
- 4 locking stitch markers
- Tapestry needle
- Scissors
- Measuring tape
Abbreviations (US Terms)
- ch – chain
- sc – single crochet
- sl st – slip stitch
- st(s) – stitch(es)
- BLO – back loop only
- rnd(s) – round(s)
- RS – right side
- rev sc – reverse single crochet (crab stitch): work sc from left to right (right-handed)
Special stitch – Waistcoat stitch (wst): Insert your hook through the center of the next sc below, between its two front vertical legs and under the top loops, so the hook comes out the back of the fabric. Yarn over, pull up a loop, yarn over, and pull through both loops. Each wst sits directly on top of the stitch below, which builds the knit-look columns.
Tension tip: Keep your loops relaxed when you pull up for wst. Tight waistcoat stitch is very hard to work into on the next round.
Gauge and Checkpoints
- Waistcoat stitch in rounds: 12 sts × 12 rnds = 4 in (10.2 cm)
- Single crochet in rows: 12 sts × 13 rows = 4 in (10.2 cm)
Test first: Make the base (Rows 1–10) as your gauge swatch. It should measure 6 × 3 in (15.2 × 7.6 cm). If it’s within 1/4 in (0.6 cm), carry on.
Checkpoints:
- Base: 6 × 3 in (15.2 × 7.6 cm)
- After Rnd 6: wall height 1.6 in (4.1 cm)
- After Row 13: wall height about 4 in (10.2 cm)
- After Rnd 24: wall height 7.6 in (19.3 cm)
- After Rnd 42: wall height 13.6 in (34.5 cm)
- After the rim: total height 14 in (35.6 cm)
If your piece is too big, go down half a hook size. If it’s too small, go up half a hook size. If only the height is off, add or remove plain wst rounds between Rnd 16 and Rnd 42. Three rounds equal 1 in (2.5 cm).

Base
Ch 19.
Row 1: Sc in 2nd ch from hook and in each ch across. (18 sts)
Rows 2–10: Ch 1, turn, sc in each st across. (18 sts)
Do not fasten off. Checkpoint: the base measures 6 × 3 in (15.2 × 7.6 cm).
Base Edging and Wall Turn
Rnd 1: Do not turn. Ch 1 and work around the base:
- Sc in each st across Row 10. (18 sts, back)
- Work 9 sc evenly across the 10 row ends, skipping the row end of Row 5. (9 sts, right side)
- Sc in the free loop of each foundation ch. (18 sts, front)
- Work 9 sc across the remaining 10 row ends, skipping Row 5. (9 sts, left side)
Sl st to the first sc to join. (54 sts)
Each side count includes its own corner stitches. The first and last st of each long side are the corners. Place a marker in the first st. This is st 1, the back-left corner, and every round starts here.
Stitch map for every round:
| Side | Sts |
|---|---|
| Back | 1–18 |
| Right side | 19–27 |
| Front | 28–45 |
| Left side | 46–54 |
Rnd 2: Ch 1, sc in BLO of each st around, sl st to first sc. (54 sts)
The unworked front loops make a crisp fold line, and the walls start to stand up.
Lower Body
Rnds 3–6: Ch 1, wst in each st around, sl st to first st. (54 sts each rnd)
The ch 1 does not count as a stitch. Work the first wst into st 1.
Checkpoint: wall height 1.6 in (4.1 cm).
Mark the hole: Place markers in st 31 and st 42. On the front (sts 28–45), the 10 sts from st 32 to st 41 sit between them, with 4 sts on each side (28–31 and 42–45). The 10 sts in the middle become the hole.
Dispensing Hole (Rows 7–13)
The hole needs height, so this section is worked in rows. Every row is worked from the RS, so the waistcoat texture stays exactly the same as in the rounds.
Row 7: Join yarn in st 42 of Rnd 6. Ch 1, wst in sts 42–54, then wst in sts 1–31. Fasten off, leaving a 4 in (10.2 cm) tail. (44 sts: 13 + 31)
Sts 32–41 stay unworked.
Rows 8–13: Join in the first wst of the row below, which sits above st 42. Ch 1, wst in each of the 44 sts. Fasten off. (44 sts each row)
Leave all tails on the hole edges. You’ll crochet over them later in the trim.
Checkpoint: wall height about 4 in (10.2 cm). The open gap is 3.3 in (8.4 cm) wide and about 2.3 in (5.8 cm) tall.
Rnd 14 (closing round): Join in st 1 (back-left corner). Ch 1, wst in sts 1–31, ch 10, skip the gap, wst in sts 42–54. Sl st to first st. (54 sts: 31 wst + 10 ch + 13 wst)
Rnd 15: Ch 1, wst in sts 1–31, sc under the 2 top loops of each of the 10 ch, wst in sts 42–54. Sl st to join. (54 sts: 44 wst + 10 sc)
From now on, all 54 sts are treated as one round again.
Upper Body
Rnds 16–42: Ch 1, wst in each st around, sl st to first st. (54 sts each rnd)
Checkpoints:
- After Rnd 24: wall height 7.6 in (19.3 cm)
- After Rnd 42: wall height 13.6 in (34.5 cm)
The total is 41 rounds above the base plane. Rnd 2 is about 0.3 in (0.8 cm), and Rnds 3–42 (40 rounds at 3 per inch) are 13.3 in (33.8 cm). Together that makes 13.6 in (34.5 cm).
Border: Top Rim and Hole Trim
Border gauge: sc 12 sts = 4 in (10.2 cm), the same as waistcoat stitch. One rim st sits on each body st, so the rim lies flat. It won’t flare or pull in.
Rnd 43: Ch 1, sc in each st around, sl st to first sc. (54 sts)
- Back: 18
- Right side: 9
- Front: 18
- Left side: 9
Rnd 44: Ch 1, rev sc in each st around, sl st to first st. (54 sts, same per-side counts)
Fasten off.
Why the math works: The body always has 54 sts, and 54 = (2 × 18) + (2 × 9). That equals 6 + 6 + 3 + 3 in = 18 in (45.7 cm). The rim adds no stitches, and the corners are already included in the long-side counts, so the box stays square. The crab stitch rolls into a firm, rounded cord about 0.4 in (1.0 cm) deep with Rnd 43.
Hole trim: Join yarn at the lower-right corner of the hole. Work 1 rnd of sc around the hole, catching the yarn tails inside the stitches as you go:
- Bottom: 10 sc in the unworked sts 32–41 of Rnd 6
- Left edge: 7 sc, 1 per row end of Rows 7–13
- Top: 10 sc in the free loops on the underside of the Rnd 14 chain
- Right edge: 7 sc, 1 per row end
Sl st to join. (34 sts)
There are no corner increases. The edge eases in slightly, which rounds the corners into the soft rectangle shown. Fasten off. Weave the trimmed tails back through the trim, then cut.
Finished hole: about 2.8 × 1.8 in (7.1 × 4.6 cm).
Hanging Strap
The strap arches across the top of the back wall.
- With the inside of the holder facing you, find back sts 2–4 on Rnd 43. Join yarn under the inner (back) leg of st 2.
- Row 1: Ch 1, sc under the inner leg of sts 2, 3 and 4. (3 sts)
- Rows 2–30: Ch 1, turn, sc in each st. (3 sts each row)
- The strap is about 9.25 in (23.5 cm) long. Leave a 10 in (25.4 cm) tail and fasten off.
- Make sure the strap isn’t twisted. Sew Row 30 to the inner legs of back sts 15–17 on Rnd 43.
- Optional firm edge: Join yarn at one end of the strap and sl st along one long edge, 1 per row end. (30 sl sts) Repeat on the other long edge.
The strap is 1 in (2.5 cm) wide. It forms an arch about 3.5 in (8.9 cm) above the rim.
Final Blocking
- Weave in all remaining ends on the inside.
- Spray the holder evenly with water until it’s damp but not dripping.
- Stuff it firmly with a rolled towel or a 6 × 3 in (15.2 × 7.6 cm) cardboard box. This squares the corners and the walls.
- Pinch each vertical corner and the base fold line to sharpen them.
- Gently shape the hole into an even, rounded rectangle.
- Lay the strap flat so it dries straight.
- Let it dry completely, stand it upright, then remove the stuffing.
Final Quality-Control Checklist
- Base measures 6 × 3 in (15.2 × 7.6 cm), with a clean BLO fold all around
- Every round has 54 sts, split 18 / 9 / 18 / 9
- Hole is centered on the front, with 4 sts on each side
- Hole trim has 34 sts, and all tails are hidden
- Total height is 14 in (35.6 cm)
- Rim is even, with no flaring
- Strap ends sit on back sts 2–4 and 15–17, with no twist
- The V columns line up vertically on every side
Troubleshooting
- Columns lean or spiral: Make sure you start each round in st 1 and that the joining sl st goes into the first st, not the ch 1.
- Waistcoat stitch is too tight to insert the hook: Pull up taller loops, or use a 6.5 mm hook for the body only.
- Hole is off-center: Recount sts 28–45 before Row 7. There should be exactly 4 sts on each side of the hole.
- Top flares: Your rim is looser than the body. Work Rnd 43 with a 5.5 mm hook.
- Walls slump: The yarn is too soft. Use cotton, or go down a hook size for a denser fabric.
- Visible seam line: This is normal with joined rounds. Keep st 1 at the back-left corner so the seam falls on the corner fold.
Care
Hand wash in cool water and reshape while damp. Dry flat or stuffed with a towel to keep the box shape.

Final Notes
The measurement chain is simple. The base is 6 × 3 in (15.2 × 7.6 cm). That gives 54 sts around, or 18 in (45.7 cm). The walls are 13.6 in (34.5 cm) tall, and the rim adds 0.4 in (1.0 cm) for a finished height of 14 in (35.6 cm). If the base checkpoint is right, everything after it will be right too.
Happy crocheting!