Raise your rates when you're consistently turning down work or spending time on non-billable stuff because you're undercharged - that's the real signal, not just feeling like you deserve more. Three years in with stable clients is actually the sweet spot, but you need to separate your existing relationships from your new rate structure. The folks above nailed communication timing, but they missed something: you don't have to raise rates for *everyone* at once.
Here's what actually works without torching relationships. Grandfather your current clients at their existing rate for another year (or until their contract renews naturally), then explain you're raising rates going forward for new projects and new clients. This buys you goodwill and gives long-term folks time to absorb it. When you do talk to them, skip the framing about how you "deserve" more - instead tie it to real things: your portfolio got stronger, you work faster now, you handle bigger projects. That's language clients understand. Send a personal email, not a form letter, and give them 60 days' notice before any changes kick in. Most won't leave because they know you and trust your work; what kills relationships is the surprise factor, not the number.
The nuclear option some people use is offering a loyalty discount if they stay on - something like 10% off the new rate. I've seen that work when the jump is substantial, but honestly, if your current clients are actually long-term and happy, they usually just accept the increase once they hear it's coming. You might lose one or two, but you'll find they're replaced quickly by clients at your new rate who value what you do more.