For one week, 164 healthy volunteers were asked to wear a wrist sensor that tracked their normal sleep habits.
They were then given nasal drops containing rhinovirus and quarantined in a hotel for five days under close observation to see how many got a cold.
The findings support the theory that poor sleep blunts immunity.
The US study, published in the journal Sleep, looked only at sleep duration, not sleep quality.
Getting broken sleep did not appear to make any difference - just quantity of sleep per night.
The results suggest that people who get little sleep each night are more likely to catch a cold than those who clock up more than seven hours a night.
Lead researcher Dr Aric Prather, from the University of California San Francisco, said: "Short sleep was more important than any other factor in predicting subjects' likelihood of catching cold.
"It didn't matter how old people were, their stress levels, their race, education or income. It didn't matter if they were a smoker. With all those things taken into account, statistically sleep still carried the day."
Poor sleep has been linked to other illnesses and obesity.
Dr Prather has previously said that sleep may limit the effectiveness of vaccines.
Experts say most people need about eight hours of good-quality sleep a night to function properly - but some need more and some less.
People who sleep six hours a night or less are more likely to catch a cold when exposed to the virus, a novel human experiment has found.