If you are using the iCloud, this is where the duplicates might be coming from. Consult this guide in order to delete all contacts on iPhone.
Also regarding your duplicate contacts, when you are disabling iCloud contact sync, you are probably clicking on the "Keep on my iPhone" option instead of "Delete from my iPhone".
This means that the next time you enable iCloud contact sync, you will end up with duplicates of all your iPhone contacts since the iCloud will push the entries which are already there back to your iPhone which, in turn, contains the exact same contact entries. I hope I am making myself clear.
I've tried this and after deleting all contacts from my iPhone and then switching the iCloud Contacts setting back to "ON" all the old contacts are put back on my phone, even though I've also deleted all contacts from my computer and from iCloud.
Please take a look at this link to see a detailed account of my issue:
Let me know if you have any advice. Thanks!
I discovered the solution to my problem.
I inadvertently created duplicate Apple IDs many years ago. I had forgotten that I had a second ID out there and it turns out my phone was syncing to my old ID. So every time I logged into my iCloud account using my new/current ID it was showing me no contacts. However, when I synced my phone it was pulling the old contacts from my old ID.
If you're experiencing a similar issue, make sure to check ALL iCloud/Apple ID accounts to see where your phone is syncing from.