I’ll try to summarize near everything one should know about transaction fees when sending bitcoins and the options to lower it down:
1. For plain on-chain bitcoin transfers there’s no way to avoid the miner’s fee because this is in the nature of the blockchain.
1.1. Unless you are being a miner yourself and can directly set your software to sign your own transaction and thus add it to the next block, or ask a miner to do so, as @Murch has stated above.
2. Wallet applications most of the time do not charge a fee for using the app, however there’s still the blockchain fee, which does not depend on the wallet app.
3. One may try to lower the blockchain fee by using Lightning Network, but it may not be applicable to all the use cases.
4. Some applications (mostly exchanges) do allow users to send bitcoins to each other within their system and do not charge a any fee. In this case it’s literally “fee=0” but those transfers a off-chain! And there’s no blockchain transaction involved.
Examples of these apps are well known:
Less major ones would be:
Please keep in mind when using any wallet application that you only control your coins if you control your wallet private key! Not your key, not your coins.