The trolls are small creatures that live in a perpetual state of happiness. However, the trolls are captured by the Bergens, large creatures who live in a constant state of gloom but discover that they can temporarily experience happiness by eating a troll. On the day that Bergen prince Gristle Jr. would eat his first troll, however, the trolls manage to escape through the underground tunnels of Bergen Town. The furious Bergens promptly exile the Royal Chef for her failure to contain the trolls.
Twenty years later, the trolls are living safely in a new home. Princess Poppy, the daughter of the trolls' king Peppy, throws a party to celebrate their escape from Bergen Town twenty years prior. However, their celebrations attract the attention of the banished Chef, who captures Poppy's friends and sets off to Bergen Town to use the captured trolls as a way to restore her reputation. To save her friends, Poppy seeks help from Branch, a gray, over-cautious survivalist troll who never sings. When Branch refuses to help, Poppy punishes him by allowing the other trolls into his survival bunker before setting off on her own. On her quest, Poppy is nearly eaten by several spider-like creatures, but she is rescued by Branch, who reluctantly joins her on her quest.
The duo arrive in Bergen Town, where the Chef has manipulated the now King Gristle Jr. into reinstating her as the Royal Chef. While sneaking through the castle, Poppy and Branch see Gristle seemingly eat one of the trolls, Creek, causing Poppy to become determined to save him. Poppy and Branch manage to free the captured trolls, but they are caught by the castle maid Bridget. Poppy, realizing that Bridget has feelings for Gristle, convinces her to help the trolls escape in exchange for the trolls setting her up on a date with Gristle. Branch refuses to take part in the ploy, causing an argument between him and Poppy, during which he confesses that the reason he stopped singing was because when he was a child, his singing caused a Bergen to find him and eat his grandmother. After being comforted by Poppy, Branch agrees to help.
With the trolls' help, Bridget goes on a date with Gristle while going under the alias of Lady Glittersparkles, and she frees them. However, when the trolls attempt to find and rescue Creek, they are caught by Chef, who reveals that Creek had agreed to help her capture the remaining trolls in exchange for his life. Creek promptly leads the Bergens to the Troll village, where they capture the remaining trolls. As a result, the trolls, including Poppy, lose hope and turn gray. Branch, in an effort to restore the trolls' happiness, sings for the first time in years, lifting the trolls' spirit and restoring their colors. An uplifted Poppy sings back to Branch, and he regains his true colors as well.
As the trolls are about to be served to the Bergens, Bridget secretly releases them. However, Poppy is unwilling to let Bridget be punished for her actions, and she and her friends return to the castle just as Chef is ordering Bridget to be locked away. The trolls reveal that Bridget was King Gristle Jr.'s date, and Poppy explains to the Bergens that to be happy, they don't have to eat the trolls. The trolls then invite the Bergens to sing and dance with them, causing them to feel truly happy for the first time. Chef, remorseless, attempts to kill the trolls out of revenge, only to be knocked into a cart and sent flying out of Bergen Town, along with Creek.
In the end, the trolls live peacefully with the Bergens in Bergen Town, and Poppy is crowned queen.
- Anna Kendrick as Poppy.
- Justin Timberlake as Branch.
- Zooey Deschanel as Bridget.
- Christopher Mintz-Plasse as King Gristle.
- Christine Baranski as Chef.
- Russell Brand as Creek.
- Gwen Stefani as DJ Suki.
- John Cleese as King Gristle Sr.
- James Corden as Biggie.
- Jeffrey Tambor as King Peppy.
- Ron Funches as Cooper.
- Aino Jawo as Satin.
- Caroline Hjelt as Chenille.
- Kunal Nayyar as Guy Diamond.
- Quvenzhané Wallis as Harper.
- Walt Dohan as Smidge.