Eating larger portions of healthy food is more important than dieting when it comes to staying slim, say scientists.
The US team found people who increased their intake of more high-fibre food like nuts, fruit, yoghurt and vegetables actually lost weight.
The Harvard School of Public Health researchers believe consumption of these products left less room for fatty foods.
The study of 120,000 people appeared in the New England Journal of Medicine.
The participants were monitored over 20 years.
Unsurprisingly, the food linked to the greatest amount of weight gain was chips. An extra daily portion led to an increase in weight of over 3lbs in four years.
Similar results were seen among people who consumed extra portions of crisps, sugary drinks and meats.
However, there was less weight gain as time went on among people who ate more of certain foods, such as yoghurt, vegetables, fruits and whole grains.
For example, an extra helping of yoghurt led to a fall in weight of 0.37 kilos (0.82lbs) and for vegetables it was 0.1 kilos (0.22lbs).
Dariush Mozaffarian, associate professor at Harvard and lead author of the study, said the fibre content of these foods could explain their effect.
"Their inverse associations with weight gain suggest that the increase in their consumption reduced the intake of other foods to a greater (caloric) extent, decreasing the overall amount of energy consumed.
"Higher fibre content and slower digestion of these foods would augment satiety, and their increased consumption would also displace other, more highly processed foods in the diet."