I think that buoyancy is caused by the increase of density with depth (the deeper you go, the more molecules there are per unit volume). Therefore an object in a fluid will be hit by more of the fluid molecules from below than from above (even if the difference is only a tiny fraction of 1%). Is this correct? More thorough explanation of my hypothesis (same as post 13): If a solid object is in water, the pressure on it is caused by the impacts of the water molecules. If the pressure is twice as high on the bottom of the object than on the top, then twice as many water molecules hit the bottom per unit time (assuming no macroscopic movement and everything's at the same temperature). Obviously the water's density at the bottom of the object isn't twice as high as it is at the top, but I'm pretty sure that the average time that a water molecule travels between impacts (and therefore also the average intermolecular distance, or average distance from the "edge" of one molecule to the "edge" of another) decreases extremely quickly with increasing density. I crudely visualize this as water molecules being huge (and in constant motion) with tiny spaces between them. This would mean that a tiny percentage increase in density would lead to an enormous percentage decrease in the average intermolecular distance. If the average intermolecular distance halves, the pressure doubles.