I put alot of snorkelers (10-20) in the water EVERY day....I have tried all sorts of things: toothpaste (bad for your eyes, bed for environment), dish soap (bad for eyes), spit (not great in the eyes, too ph dependent), aloe & seaweed (sometimes inconvienient, occasionally odd to transport), commercial defog (not good for eyes, expensive)....the best thing that I have found is Johnson's Baby Shampoo (the "No More Tears" stuff).
It works well, you generally need to reapply before each dive session, but sometimes I have been out and had the mask still stay clear on the second day.
It is mild, not burning the eyes if it is not rinsed properly, and best of all, it is cheap.
For the same price as a little bottle of the commercial stuff in a dive shop, I can buy a 40floz (1182ml) bottle at Costco...and I have defog for all my guests for months.
As an idividual, it might take you the better part of a year to go through one bottle........
Thats what works for me....your individual results may vary......but give it a try.....I think you will be happy too.....especially in the wallet.....