I had difficulties with baking the normal maps perfectly before I found a solution. I am going to provide a series of steps and images for this. We are going to make what’s called a “cage” and what this does is it helps contain details and better projects them on the map (like a parameter so the details don’t get lost).
First, duplicate the low-poly model, but don’t move it anywhere just right-click. Now rename the duplicate using the “F2” button on the keyboard and rename it “cage.”
Next, go to edit mode of the cage and select all the vertices. With all the vertices selected press “alt” and “s” together. What this will do is increase the size of the cage along the normals (like inflating a balloon). Increase the size of the model so it is completely covering the high-resolution model, but not so big that the faces are too far apart from the high-resolution model. (see pictures below)
Before:
After:
Just make sure that you don’t have vertex snapping on or else this will change the face count and it won’t let you bake (speaking from experience).
Now, you may have some parts of high-resolution still showing through like this:
Just grab the vertex, edge, or face to cover it up (this may take some time). After you have inspected the model and made sure there are no more spots of the high-resolution model showing, go to the “render properties” tab:
Check “selected to active”, check “cage”, and in the “cage object” section, select the cage. I put “0.02 max ray distance” just to be safe. To bake, just select your low-poly and the high poly as you did before (and make sure all the proper nodes are selected) and bake. This also can help straighten out any errors the normal map had (though it requires to bake again). Let me know of the results. I am happy to answer any other questions you may have.