It's 1903 London and J.M. Barrie (JOHNNY DEPP) is a successful playwright, penning works that Charles Frohman (DUSTIN HOFFMAN) runs in his theater. Despite their past collaborative success, however, Charles is looking for a new play while Barrie is in search of inspiration. Although he doesn't initially realize it, he finds it in a group of siblings -- Peter (FREDDIE HIGHMORE), Michael (LUKE SPILL), George (NICK ROUD) and Jack (JOE PROSPERO) -- the young kids of Sylvia Llewelyn Davies (KATE WINSLET).
She's a widow who's let her mother, Emma du Maurier (JULIE CHRISTIE), rule her and her kids' lives since her husband's untimely death. Barrie's wife, Mary (RADHA MITCHELL), is interested in her only because Sylvia knows everyone there is to know. Barrie enjoys their company, however, simply because they're still kids, unencumbered by adult troubles, distractions and daily concerns, and he soon begins spending a lot of time with them and Sylvia, much to the discomfort of both her mother and Mary.
As that new friendship puts a strain on their marriage, the playwright soon begins to fashion a work based on the kids. Charles isn't happy since he doesn't think this "Peter Pan" will play to adult audiences, but Barrie perseveres, both with finishing the work and befriending Sylvia and her family. Yet, when an unexpected development arises, he races against time to get the work on the stage for all to see.