The cleanest way to change colors mid-project is to complete the last stitch of the old color only up to its final "yarn over and pull through," then drop the old strand and pull the new color through those last two loops on the hook. That single move means the new color is already loaded on your hook before the next stitch begins, so there is no visible half-stitch of the wrong color and no gap at the seam.
Everything else — where you join, how you carry the unused strand, how you weave in ends so they survive washing — is bookkeeping around that one motion. Get the motion right and most color changes look intentional. Get it wrong and you spend the rest of the project looking at a little blip of the old color sitting on top of the new one, which is exactly the kind of thing that makes people think colorwork is hard.
How do you change colors in crochet without a visible bump?
The technique depends on which stitch you are finishing, because each stitch ends differently. A single crochet ends with two loops on the hook; a half double crochet ends with three; a double crochet ends with two after the final yarn over. In every case, you stop when the stitch is one pull-through away from done, lay the old color aside, and use the new color to make that final pull-through.
For a half double crochet specifically — a stitch people often learn early because it sits between single and double crochet in height — you yarn over, insert the hook, pull up a loop, and now have three loops on the hook. That is your stopping point. Drop the old color, pick up the new, and pull it through all three loops. The stitch on your hook is now new-color, the stitch below it is old-color, and the boundary between them is a clean horizontal line rather than a two-tone stitch.
Two things go wrong here constantly. The first is pulling the new color through before the last yarn over, which leaves the top of the old stitch in the old color and produces a bump. The second is tension: the loop you pull through should match the tension of the stitches around it, and a brand-new strand that has not been worked yet tends to pull tighter than the strand you have been crocheting with for an hour. Give it a small tug to seat it, then a deliberate loosen before the next stitch, or your color-change row will pucker.
You can also change colors between stitches rather than within one — finish a stitch completely in the old color, slip stitch into the next stitch with the new color, and continue. This is easier to teach and easier to do while distracted, but it leaves a slightly heavier join point, and in a flat fabric it can read as a small dark dot. For stripes on a blanket, most people use the in-stitch method and accept that the join is invisible from the front.
Where should you join a new color in the round?
Join at the point in the round where the join will be least visible, which for most circular projects is directly above the previous round's join, and for spiral projects is anywhere you like because there is no join to hide behind. The trade-off is that stacking joins vertically gives you a faint ridge running up the piece; staggering them spreads the disruption but makes the color boundary wander slightly.
Working in the round changes the mechanics in one important way: you are usually joining with a slip stitch or working continuously, and either way the new color has to be anchored before the round's first real stitch. If you are slip-stitching to close a round, make that closing slip stitch with the old color as usual, then pull the new color through the loop on your hook and chain up. If you are spiraling, change color in the last stitch of the round exactly as you would in flat fabric, and simply keep going — no join, no seam, no ridge.
Circles and granny squares are where this matters most. A granny square is built from clusters of double crochets separated by chain spaces, and the standard way to change color is to complete the final double crochet of the last cluster in the old color up to its last pull-through, then finish it in the new color and continue with the corner chain. Because the corner chain space is a gap anyway, the change hides inside it almost perfectly. In a solid circle worked in continuous rounds, there is no gap to hide in, so the change sits in the middle of the fabric and your only defense is matching tension precisely.
If your project starts with a magic ring — the adjustable loop that lets you pull the center of a circle closed — you can change color as soon as the first round is done, and the tightening tail of the ring gives you a place to anchor the new strand without a knot. If you started with a chain instead, which is the standard way to start a crochet chain and the first thing most people learn, the starting tail is shorter and less cooperative, so plan on weaving that end in rather than hiding it.
Do you cut the old color every time?
No — if the unused color is coming back within a few stitches or a few rows, carry it up the side rather than cutting, and if it is not coming back for a long stretch, cut it. The rule of thumb is distance and visibility: a carried strand shows along the edge of the work, so a carry is fine on a seam edge that will be seamed or bordered, and a bad idea on an open edge that will be visible.
Carrying is what makes narrow stripes tolerable. If you are alternating two colors every two rows, cutting means an absurd number of ends, and you will spend more time weaving than crocheting. Carry the resting color up the side, catching it every row or every other row so it does not form a long loose loop that snags. The cost is a slightly thicker, slightly bumpier edge — which is exactly why a border hides it so well.
When you do cut, leave a tail long enough to weave in properly. A tail that is too short is worse than no tail, because you cannot thread it and you cannot knot it discreetly. Weave in along the direction of the fabric, not straight across it, and change direction once mid-tail so the end cannot work its way out. Nothing undoes a beautiful color change faster than an end that pops free after the first wash.
One more trade-off worth naming: color changes add bulk at the join even when they look clean. On a lacy fabric worked with a fine steel hook — the size 1 steel hook is 2.75 mm, and it is meant for thread work like doilies and lace edgings — a color change is far more visible than on a dense worsted fabric, because there is simply less yarn around the join to disguise it. Lace is where I would avoid mid-row color changes entirely and change only at round boundaries.
Does hook size change how a color change looks?
Yes, and not in the direction people expect. A larger hook makes looser fabric with bigger gaps between stitches, and bigger gaps mean the carried strand behind the work is more likely to show through to the front. A smaller hook makes denser fabric that hides carries well but makes the join bulk more obvious, because there is less room for the extra thickness of two strands passing each other.
The Craft Yarn Council sizes most people are working with sit in a narrow band: G-6 is 4.00 mm, H-8 is 5.00 mm, and I-9 is 5.50 mm. G-6 is the classic worsted-weight hook and shows up constantly in beginner blankets and hats — dense enough to hide a carried strand, loose enough that a join does not bulge. H-8, at 5.00 mm, is the one most often recommended for learning and for granny squares and simple blankets, and it sits right at the point where a color change in a corner chain space disappears cleanly. I-9, at 5.50 mm, is frequently used with medium to light bulky yarns to make a looser fabric for baby blankets and beginner hats, and that openness is the one to watch: on an I-9 baby blanket, a carried strand across the back is visible through the front if the light is behind it.
If you are changing colors on a loose, open fabric and you can see the carry, you have three options and no fourth. Work over the carried strand so it is trapped inside the stitches rather than floating behind them. Switch to a smaller hook and accept a firmer fabric. Or cut and weave, which costs you time on every single change but gives you a clean back. There is no trick that makes an open fabric hide a floating strand — the fabric is open by definition.
The one thing that does not change with hook size is the core motion: finish the stitch in the old color, pull the new color through the last loops. That works on a 2.75 mm steel hook and a 5.50 mm aluminum hook identically. What changes is how forgiving the surrounding fabric is about the small imperfection at the join — and on dense worsted work, it is very forgiving indeed.