Can this be done for free? also please mention wallets who do not charge transaction fee (if they exists)
If you have the option to export the private keys from one wallet and import them to another, you can transfer funds between wallets for free. You should only consider this option if you fully control both wallets as any private key known to another party should be considered insecure and not used any further, so you'd want to move the coins to a key fully under your control anyway.
If you transfer funds by means of sending them from one address to another, it will always require a transaction fee to buy the necessary blockchain space to get the transaction confirmed. If you go this route, you may want to consider sending at a low feerate if you have the patience to wait longer for a confirmation to pay a lower relative fee.
Note: Many web-wallet services take full custody of your bitcoins, and do not keep funds in separate addresses for each user. Thus, they will be both unwilling and unable to provide you the private key for importing elsewhere.