By a 307-119 vote, the representatives sent the so-called "Cheeseburger Bill" to the Senate, although the upper house failed to act on a similar measure in the past, CNN said.
Rep. James Sensenbrenner, R-Wis., paraphrased a judge who dismissed one of two civil cases in defending the measure.
"As one judge put it, if a person knows or should know that eating copious orders of super-sized McDonald's products is unhealthy and could result in weight gain, it is not the place of the law to protect them from their own excesses," said Sensenbrenner, who is chairman of the Judiciary Committee.
One of the civil cases is still pending, CNN said.
The bill does not block lawsuits by people who get sick from eating contaminated food.
Ohio bar shooting arrested, charged with murder
Attkisson leaves CBS News, reportedly over network's 'liberal bias'