On Christmas Eve, 1944, somewhere in Europe two World War II, two U.S. Army soldiers, one a Broadway entertainer, Captain Bob Wallace (Bing Crosby), the other a would-be entertainer, Private Phil Davis (Danny Kaye), give a show to the troops of the 151st Division in a forward area with Bob singing "White Christmas". But the mood is sombre: word has come down that their beloved commanding officer, Major General Thomas F. Waverly (Dean Jagger), is being relieved of command. He arrives for the end of the show and delivers an emotional farewell. The men give him a rousing send-off ("The Old Man").
After the war, over the next 10 years, the pair make it big as performers in nightclubs, radio, and then on Broadway, doing many different songs, and finally becoming successful producers living in Florida. They eventually mount their newest hit musical entitled 'Playing Around'. The same day they receive a letter from "Freckle-Faced Haynes, the dog-faced boy," their mess sergeant from the war, asking them to look at an act which his two sisters are doing.
When they go to the club to audition the act ("Sisters"), Phil notices that Bob is slowly smitten with Betty Haynes (Rosemary Clooney), while Phil has eyes for her sister, Judy (Vera-Ellen). Following their number, Betty and Judy join Bob and Phil at their table, and believing he may have found the right woman for Bob, Phil brings Judy on to the dance floor so that Bob and Betty can get to know each other better. Phil and Judy hit it off ("The Best Things Happen While You're Dancing").
Judy tells Phil that she and her sister are headed for the Columbia Inn in Pine Tree, Vermont, where they are booked to perform over the holidays. Phil gives the sisters his and Bob's sleeping-room accommodations aboard the train to Vermont.
When the train arrives in Pine Tree, there's not a flake in sight, and the weather is so unseasonably warm, chances of it falling appear dim. Bob and Phil discover that the inn is run by their former commanding officer, General Waverly. Waverly has invested all of his savings and pension into the lodge, which is in danger of failing because of the lack of snow and consequent lack of guests. Deciding to help out and bring business up to the inn, Bob and Phil bring up the entire cast and crew of their new musical 'Playing Around', and add in Betty and Judy where they can. At the same time, Bob and Betty's relationship starts to bloom ("Count Your Blessings") and they begin to spend a good deal of time together. Meanwhile, Bob discovers the General's rejected attempt at rejoining the army, and decides to prove to the General that he isn't forgotten.
Bob calls Ed Harrison (Johnny Grant), an old army buddy, now the host of a successful TV variety show. Bob tells Ed that he wants to make a televised pitch to all the men formerly under the command of the General, asking them to come to the inn on Christmas Eve as a surprise. In response, Harrison suggests they go all out and put the show on national television, playing up the whole "schmaltz" angle of the situation and generating lots of free advertising for Wallace and Davis in the process. What Bob doesn't know is that nosy housekeeper Emma Allen (Mary Wickes) has been listening in to the phone conversation on the extension but has only heard about the whole schmaltz suggestion, hanging up before Bob rejects the idea.
Mistakenly believing that her beloved boss will be presented as a pitiable figure on a prime-time coast to coast broadcast, Emma reveals what she heard to a shocked Betty who is originally loath to believe Bob would pull such a stunt for his own gain, but mistakenly comes to believe he would indeed stoop to such depths when Phil asks her if he made the call to Ed. The misunderstanding causes a now-disillusioned Betty to grow suddenly cold toward a baffled Bob. Unaware of the real reason for her sudden change of behavior, Judy becomes convinced that Betty, ever-protective of her little sister, will never take on a serious relationship until Judy is engaged or married. She pressures an extremely reluctant Phil to announce a phony engagement, but the plan backfires when Betty abruptly departs for New York City, having received a job offer.
Distraught, Phil and Judy reveal to Bob that the engagement announcement was phony, and Bob, still unaware of the real reason behind Betty's annoyance, heads to New York to explain. Bob goes to see Betty's new act ("Love, You Didn't Do Right by Me") and reveals the truth about the engagement, but is called away by Ed Harrison before he can find out what is really bothering her. The sight of Ed pushes Betty who was nearly forgiving Bob, back down. Meanwhile, back at the Inn, Phil fakes an injury to distract Waverly so he won't see the broadcast or Bob's announcement.
On the broadcast, Bob proceeds to ask the veterans of the 151st Division to come to Pine Tree, Vermont, on Christmas Eve ("What Can You Do with a General"). When Betty is backstage between performances, she catches Bob's pitch on a television set and realizes she was mistaken. She returns to Pine Tree just in time for the show on Christmas Eve. Emma convinces Gen. Waverly that all his suits were sent to the cleaners and suggests he wear his old uniform to the opening of the show. Initially reluctant, he agrees. When the General enters the lodge where the show is to take place, he is greeted by his former division, who sing a rousing chorus of "The Old Man." Just as the following number ("Gee, I Wish I Was Back in the Army") ends, he is notified that snow is finally falling.
In the finale scene, Bob and Betty declare their love for one another, as do Phil and Judy. The background of the set is removed to show the snow falling, everyone raises a glass, and toasts, "May your days be merry and bright; and may all your Christmases be white." Bob then performs the last musical number before the final fade-out (a reprise of "White Christmas").