Honestly, when you’re ready, you’re ready. If it’s with someone just for fun or someone who has your heart, this decision is ultimately up to you. It’s an experience I can’t really compare to anything else, I gave up my virginity at 19 probably 60% because I wanted to and 40% because of peer pressure to do it after a year of dating the same guy. It was actually pretty confusing for me at the time, but it was my decision. I made up my mind the night before and I won’t say it was perfect or magical or anything, because it wasn’t, but it was sweet and pitch dark (haha). I don’t have any regrets looking back now. And I think that’s the important part - to not do anything you may regret at a later date.
Do what you feel is right for you and your body. If you feel uncomfortable morally or with that person (or you’re not sure, like you said), then don’t do it. There is no such point where you can’t change your mind. He’ll/she’ll get over it, I promise.
But when you do make that decision for yourself, especially with someone you know has your heart and you have his/hers, even the imperfections are perfect.