Your domain is yours. It is registered in your name, it renews on your instruction, and you are entitled to move it to another registrar whenever you like. Under ICANN rules a transfer requires an authorisation code, and the current registrar is obliged to give it to you.
Knowing that is most of the battle.
The Free Domain That Is Not Really Yours Yet
Many hosting plans include a free domain for the first year. Read what happens if you cancel: commonly the value of the domain is deducted from your refund, and in some cases the domain must stay with them for a defined period.
That is not necessarily unreasonable, they paid for it. It is just useful to know that the free domain is partly a retention mechanism, not only a gift.
The Friction Tactics
Transfer fees, for handing over a code that costs nothing to produce. Auth codes that take days to arrive, or only appear after a retention call. Transfer locks left enabled with the unlock buried somewhere unhelpful. Privacy protection that has to be disabled first, with a delay attached.
None of it prevents the transfer. All of it makes leaving irritating enough that some people give up, which is the entire purpose.
Keeping Yourself Free
Register domains in your own name, with your own email as the contact. Not your web designer's, not your agency's. This is the single most common way small businesses lose control of a domain: the person who registered it moves on, and the recovery email goes to an address nobody can reach.
Note the renewal dates yourself rather than relying on a provider's reminder. And keep your registrar login where you can find it, separate from your hosting.
Where We Stand
We do not charge to release a domain and we do not slow it down. If you want to leave, we will give you the auth code and help you point the DNS.
Keeping customers by making departure annoying is not a business model we want. If we are worth staying with, the service should be the reason.