Can this be done for free? also please mention wallets who do not charge transaction fee (if they exists)
If you transfer them by means of sending them from one address to another, it will require a transaction fee to buy the necessary blockchain space to get it confirmed.
If you just export the private keys from one wallet and import them to another, this is free.
Note: Many webwallet services take full custody of your bitcoins, and do not keep money in separate addresses for each user. Thus, they will be both unwilling and unable to provide you the private key for importing elsewhere. Also, this would be antithetical, as any private key known to another party should be considered insecure and not used any further.