Caldwell, a native of White Rock, B.C., stepped onto the podium with a time of two minutes 6.80 seconds.
American Missy Franklin won her fifth gold medal of the worlds in the event with a time of 2:04.76 ahead of Australia's Belinda Hocking.
"I was feeling really good. I was feeling fit, I was feeling good in the water and my backstroke was feeling great ...," said Caldwell. "It's pretty exciting. I don't know if it's quite sunk in yet actually but it's pretty cool to be up there and the whole crowd and stuff."
Canada's head coach Randy Bennett called Caldwell's medal the payoff after a lot of work.
"It's a big step. Considering where she came from last year, she kind of stubbed her toe and was 18th at the Olympics and we kind of felt she had a little bit more in her there last year," said Bennett.
"To her credit she put her head down and she worked really hard all year."
Sinead Russell of Burlington, Ont., finished seventh.
The 18-year-old Franklin tied the record for most golds by a woman at worlds, matching Tracy Caulkins of the U.S. and Libby Trickett of Australia.
Caulkins won her five at the 1978 meet in Berlin, while Trickett did it at her home championships in 2007 at Melbourne.
Franklin has one event remaining — the 400 medley relay — and a chance to join Michael Phelps, Mark Spitz and Kristin Otto as the only swimmers to win as many as six golds at worlds or the Olympics.
"That was awesome," said Franklin, who has already bettered her performance at the London Olympics, where she won four golds and a bronze. "The 200 back is my favourite race, but it's probably my most painful."
American Katie Ledecky, only 16, wrapped up a brilliant meet with her fourth gold medal and second world record, this time in the 800 freestyle. The youngster, who hopes to get her driving permit when she returns home, turned it on over the final laps to win in 8:13.86 seconds.
Powering to the finish as though she was in a sprint, not the last of 16 laps, Ledecky took down the mark of 8:14.10 set by Britain's Rebecca Adlington at the 2008 Olympics.
Lotte Friis of Denmark set the early pace but simply couldn't keep up when Ledecky put it in another gear, a repeat of their race in the 1,500 where the teenager broke the previous record by more than 6 seconds.
Friis settled for another silver, and New Zealand's Lauren Boyle claimed the bronze — the same order as the 1,500.
When Ledecky climbed out of the pool, Friis pointed at the youngster and applauded, certainly a worthy gesture toward someone who is unbeaten in swimming's two major events.
Ledecky won the 800 free at the London Olympics, her international debut, and went 4 for 4 Barcelona, nearly breaking a world record in the 400 free and leading off the U.S. victory in the 800 free relay.
"It's good to finish off on a great note," Ledecky said. "I exceeded all the expectations I had going into this meet."
Franklin matched the record held by Tracy Caulkins of the U.S., who won five times at the 1978 worlds in Berlin, and Libby Trickett of Australia, who did it at her home championships in Melbourne six years ago.
If Franklin was hurting in the 200, it sure didn't show. Midway through the race, she had already pulled out to a comfortable lead. Everyone else was chasing the other two spots on the podium. She was chasing history.
"I couldn't have ever imagined this coming into the meet," Franklin said. "It's nice knowing after London that I was still able to motivate myself, and all that work that I put in this past year has still really been worth it."
Meanwhile, after an epic night of swimming, Ryan Lochte finally ran out of gas on his 29th birthday.
He had the top time coming into the final of the 100 butterfly, but managed only a sixth-place finish. Chad le Clos won the gold, leaving no doubt he is the new king of the fly as long as Michael Phelps stays in retirement. The personable South African touched in 51.06, completing a sweep of the 100 and the 200 in Barcelona. Laszlo Cseh of Hungary claimed the silver, while Poland's Konrad Czerniak picked up the bronze.
"This one is special to me, because of the lineup," Le Clos said. "Lochte came in and I think he really wanted to win the race. I think that gave the race extra flavour."
The previous night, Lochte pulled off a stunning triple, winning two gold medals and setting a personal best in the 100 fly semifinals. But he couldn't match it in the final, trailing all the way and finishing in 51.58 — a tenth of a second slower than the previous day, even though he was better rested.
"I don't know if it had an effect, the triple last night, but I just didn't have it," Lochte said. "I felt very good the whole race until the very end, and I got very short and choppy on my stroke and I just fell apart. But 100 fly, it's the first time swimming it internationally. I'm still learning how to swim that event, but I'm going to keep trying it every year and hopefully I get better."
Brazil's Cesar Cielo won his third straight world title in the 50 free. Despite undergoing surgery on both knees after the Olympics, and not even bothering to enter the 100 free, Cielo showed he's still the man to beat in the furious, foamy dash from one end of the pool to the other. His time was 21.32, edging Russia's Vladimir Morozov by 0.15. The bronze went to George Bovell of Trinidad.
In a star-studded final, Nathan Adrian of the U.S. managed only fourth, reigning Olympic champion Florent Manaudou was fifth, and American Anthony Ervin sixth.
Cielo celebrated wildly, screaming and pumping his fists while straddling a lane rope. Then, as always, the tears flowed freely while the rousing Brazilian anthem played and his country's flag was raised toward the roof of the Palau Sant Jordi.
Jeanette Ottesen Gray of Denmark won gold in the 50 butterfly, a non-Olympic event. She touched in 25.24. China's Lu Ying claimed the silver, while the bronze went to Ranomi Kromowidjojo of the Netherlands. American Dana Vollmer finished last in the eight-woman field.
Ruta Meilutyte of Lithuania broke a world record that was set only hours earlier in the women's 50 breaststroke. In the second semifinal heat, Meilutyte ripped off a time of 29.48, beating the mark set in the morning preliminaries by Russia's Yuliya Efimova.
Efimova was swimming the same heat as the 16-year-old and touched second in 29.88, just off the mark of 29.78 she held for not even a day. She had broken the previous record set by American Jessica Hardy in 2009 at the height of the rubberized suit era, 29.80.
The 50 breaststroke is another event not on the Olympic program. Still, it goes down as the second world record for Meilutyte at these championships. She also set one in the semifinals of the 100 breast before winning gold in the final.
As for Franklin, she's got a whole bunch of golds to lug home to Colorado.
And maybe one more to go.
"I'll probably just throw 'em in my swim bag and carry 'em on," she joked.