Set in a mythical city called Zombay, the story centers on Rownie, a young boy living in a loft with several other street urchins he calls Grubs. They are under the supervision of Graba, a witch with mechanical legs. She often lifts her house up and carries it to different locations around the city without telling the children where she is going. Sometimes she even blocks the door so they have to crawl in through a window.
As the novel opens, Graba sends two boys to trade eggs for chicken feed. She then sends the only girl in the home, Vass, to hang a leather bag on the chains of the Clock Tower door. She orders the girl to sing a charm over the bag. Graba claims it is a present to welcome someone home. Rownie's job for the morning is to wind up Graba's mechanical legs, which are made to look like chicken legs. The left leg winds up fine, but her right leg needs more oil. She sends Rownie to the shop for more, telling him to remind the shopkeeper that she'd overpaid him for a repair and so deserves to get the oil for free.
Rownie heads to the shop, stopping on the Fiddleway Bridge. The bridge is wide with houses and shops built on, over and under it. It is a sanctuary, so no one can be arrested while on the bridge. Many smugglers and thieves live there. Several members of the Guard march toward him, but Rownie knows he is safe on the bridge. The Guards all have mechanical legs, many have mechanical arms, but only their Captain also has mechanical eyes. Rownie quietly tries to curse them as they pass by muttering oaths like Graba and hoping they will come true.
The Clock Tower sits in the middle of the bridge and Rownie notices Vass chanting over the charm bag she's placed on its doors. Rownie doesn't interrupt her, but wonders why Graba wants a charm of welcoming placed there since no one lives in the tower.
As Rownie continues on his errand, he comes across Stubble and Blotches, two other boys who live with Graba. They've just seen goblins in the city and proceed to tell Rownie all kinds of stories about them, such as they can only work with tin because gold will burn them. Goblins also eat small children. Rownie doesn't believe all their stories, but knows there must be a little truth in some of them.
He stops at the edge of the bridge to throw a pebble into the River as a way to say hello to his mother. His older brother, Rowan, told him that she had skippered a barge that sank under the bridge. Rowan had managed to save his little brother. Rowan had said that tossing a pebble into the River was like leaving a stone on a grave. Rownie misses his brother greatly. He disappeared several months earlier, but Rownie searches for him whenever he is in town. Everyone else seems to have forgotten about Rowan except he and Graba. She regularly asks Rownie to tell her if he hears any rumors at all about his brother.
Rownie passes a sign proclaiming that the goblins will be putting on a play and becomes very excited. No one is allowed to present a play in Zombay by order of the Mayor. It will cost two coppers to attend. Rownie lies to the shopkeeper. He asks for Graba's two coppers, a refund, instead of getting the oil. The shopkeeper gives him the money.
He takes the coins and hurries to find the goblins. Unfortunately, he runs into Vass. She insists Rownie help her carry the chicken feed that the other boys have left for her to bring to Graba. Rownie tries to convince her that Graba has sent him to deliver a message, but Vass doesn't believe him.
Rownie manages to escape her and flees toward the abandoned railway station. He squeezes through the locked gate, but Vass warns him that the diggers will get him. Diggers are the abandoned drones that still try and dig the Mayor's tunnels, even though the River keeps flooding them. The Diggers have no hearts and no will of their own. They just keep digging. Vass promises to protect Rownie, but still he refuses to come out from behind the gate.
Her voice suddenly changes to Graba's, and even her face looks like the witch's. Vass asks him if he has her oil. Then Vass' voice returns, and she seems to argue with herself, claiming that she isn't a Grub. The girl runs away, leaving Rownie behind the gate. He waits several minutes before heading out to find the goblins.
Rownie is mesmerized as the goblins begin to set up their stage. One juggles clubs, which are then lit on fire by a dragon puppet. An older goblin then explains that although the Mayor has outlawed the citizens of Zombay from acting, goblins are not considered citizens, even though they have lived there longer than any human. The goblins then put on masks and perform a show in which the hero convinces a mighty giant to turn himself into a lion, then a snake and finally a fly. The hero then kills the fly with his whip. The goblins stun the audience by asking for a volunteer to play the next giant. Rownie jumps at the chance, but the crowd voices its concern.
The goblins offer to let Rownie hold a chain, and the audience can hold the other end. If at any time they fear the goblins are going to harm him, they can pull him off the stage. The lead goblin introduces himself as Thomas and seems interested to learn Rownie's name, commenting that it means "little Rowan." Thomas places the giant mask on Rownie, who tries to make himself taller so the audience will believe the illusion.
The story begins again with the hero asking if the giant could transform himself into a little boy. Rownie takes off the giant mask. When the hero asks if he can change into a bird, Rownie wonders what to do next. The goblins shut off the lights, and the audience, frightened that the goblins want to eat the boy, pull him from the stage. The lights come back up to reveal a bird puppet that the hero then kills. Rownie is sad that his time on the stage is over, but then he sees a hand waving from underneath the stage for him to come closer. Excited, he does just that.
The goblin under the stage introduces herself as Semele. She offers Rownie some tea and asks him about his brother. Rownie is suspicious of her interest, but as he has no news, he can't tell her anything. Semele wonders if he might like to perform with them again tomorrow. He says he might, but he wants to watch the rest of the play tonight.
As he walks around to the front of the stage, Graba catches him. She crushes him in her arms and carries him back to her shack. She is upset that he smells like the goblins. Too big to fit through the door of her shack, she must climb up and lift the roof. She tosses Rownie inside. She demands to know if he has accepted anything to eat or drink from the goblins, afraid that they have given him a potion. She says that she can burn the gifts out of him before they cause him to change, muttering about how they'd changed a girl she once knew.
Graba begins preparing a powder; with it she sets a pigeon on fire. She chants a curse, banning anything that might have possessed Rownie to leave her house. Graba pulls him closer and screams that Semele will not steal anything from her. In fear for his safety, Rownie grabs her leg crank and pulls it out of place. When she drops him, Rownie escapes out of the window and runs away.
Graba sends the other Grubs after Rownie. He notices that the others seem to look like Graba as they chase him. Panicking, he runs into the railroad station to try and lose the other children. The Grubs follow him, calling out in voices that sound very much like Graba's. Rownie finds an abandoned train car to hide in as the others continue to search. Rownie realizes that Graba must not be able to "wear" him (possess him) as she can the others or she would have forced him to return herself.
Vass finds him in the car but tells the others he's not there. Vass is angry because Graba wore her earlier in the day. Vass doesn't want to be treated like the other Grubs. Vass tells Rownie that Graba can't wear him because he has a talent for wearing masks. She won't explain why that matters to Graba. Vass agrees to let Rownie go this one time but warns him to stay away from the riverbank as the floods are coming.
Rownie spends the night in the train car, contemplating what Vass said about wearing masks. Rownie knows it was his brother who had been very good at wearing masks. The last time anyone had seen him was when he'd been performing a play at an alehouse. The Mayor's Guard had been sent to arrest the actors, but Rowan had escaped.
In the morning, Rownie sets out in search of the goblins. He finds them outside the same alehouse where Rowan had disappeared. Thomas is cursing the owners because they threw them out. The owner's daughter brings them some bread as payment for their performance, and Thomas withdraws his curses. Rownie returns a mask that one of the other goblins had dropped during the altercation. Thomas begins to compliment the boy on his performance the previous day but then shoves Rownie under the wagon.
The Captain of the Guard approaches. He questions Thomas about reports of a human or unChanged child wearing a mask in yesterday's play. Thomas feigns ignorance but promises to tell the Mayor and his Guard if they hear even a rumor about an unChanged actor. The Captain orders his men to the place where the goblins must camp.
As the wagon begins to move, a hatch door opens and Rownie is pulled inside. Four goblins ride inside — Patch, Nonny, Essa and Semele. Rownie is horrified when he sees that the wagon runs on coal, but Essa assures him their coal only comes from fish hearts, not human hearts. When the wagon finally stops, Rownie and the goblins are upset to learn that they must camp out in the litchfield or graveyard. The goblins generously share their provisions with Rownie, who is unaccustomed to such kindness.
He is shocked when Thomas asks him if he knows where Rowan is hiding, but soon learns that these are the goblins that taught Rowan the language of masks. Rownie thanks them for all their help but tells them he would not tell them of his brother's whereabouts, even if he knew them. Thomas makes an impassioned promise that they would never harm Rowan, but Rownie replies that actors are liars. Semele explains that they don't lie, but they use the masks to find truth. She then picks up a stone and gives it to Rownie, recalling the ritual he and Rowan shared in saying hello to their mother. The gesture eases Rownie's fears. Semele warns Rownie and the goblins that Graba will continue searching for the boy. They must all be careful of pigeons and tell her if they see them or even dream of them.
In the morning, the goblins don masks so they can walk through town and attract a crowd for their performance. Rownie is given a fox mask, hat and gloves to wear, so no one will be able to tell that he in an unChanged boy. They will take separate routes and meet up along the pier where their show will take place. Thomas warns Rownie not to speak while wearing the mask because he has untrained talent. The world may change to fit the shape of his words, and Rownie must be very careful because words have consequences.
As he walks through the city, Rownie is amazed to find that he is drawing an audience. Some people ignore the strange figure with the fox mask, but many are following to see where he might lead them. When he spots the Grubs, however, the charm is broken, and his audience wanders away. The Grubs chase him, but Rownie proclaims that they will not catch him. He jumps aboard a barge and escapes. He then removes his mask and searches for the pier where he is to meet the goblins. The have tied their wagon to a raft that will be their stage.
Thomas is disappointed that Rownie has not brought an audience with him until he learns that Graba's servants are in the area. He sends Rownie into the wagon to help Nonny with all the backstage work that needs to be done for the show. At first things go well. The goblins perform a ghost story with smoke and fire for special effects. But soon accidents start to happen. The music box that Rownie is playing breaks. The scenery catches fire. Finally, pigeons swoop down and pick up the burning scenery and carry it over the audience. The crowd flees in terror as the flames fall on them and the nearby stalls on the pier. The goblins make a hasty retreat downstream before they are lynched by a mob.
Rownie knows that Graba cursed the show because of his presence, but Semele tells him that the curses were also for her. The goblins float downriver until they come to place where they can hoist the wagon onto a cliff. As the older goblins work at salvaging their belongings, Patch and Rownie talk.
Rownie asks Patch how he was Changed. Patch explains that he came from a very large, poor family. His father took him to the goblins to be Changed and then made Patch guard the barn to protect the sheep from other monsters. Patch stayed for many years but then left to perform with other goblins. Rownie wonders if he will be changed into a goblin by eating their food, but as of yet, he is still a human boy.
Suddenly, pigeons attack him and Patch, and Patch is forced off the wagon and falls into the River far below. Nonny kills the other birds with her slingshot and then leaves to find Patch. The other goblins finish pulling the wagon up the cliff and set off for the city.
They soon come upon some children playing at the crossroads in a small town. A fallen tree is blocking the main road. Thomas angrily wonders why no one in the village has removed it yet. The oldest of the children steps forward to proclaim that they are not at a village, but a town. The boy challenges the goblins to put on a play for them. He tosses a large silver coin on the ground as payment. The boy claims to be a coal maker's son. Thomas refuses to play for coin that comes from the buying and selling of hearts. He uses his cane to flick the coin back at the boy, who then throws it at Thomas, knocking the old goblin's hat from his head. Thomas demands an apology, and the two face off in the road.
Meanwhile, Rownie has snuck off the wagon and hidden himself among the other children watching so that he may be in a place to help. Semele suddenly begins performing a puppet show, and the children are distracted. As they gather to watch the performance, Thomas and Essa untie the mule from the wagon and use it to move the tree from the road.
The puppet show is about a Lady with a magic mirror. In the morning, it shows the reflection of the Lady as a girl. At night, it shows her as an old woman. One day the Lady reaches inside the mirror and pulls the young girl out. She uses the girl as a slave and pulls many more out to do her work. One night when she is cold, the Lady reaches into the chest of one little girl and pulls out her heart. She throws the heart into the fireplace where it burns like coal. The Lady then gives the little girl a mechanical heart so she can move again.
Rownie and the other children are appalled. They all know that coal comes from hearts and that mechanical people, such as the Guards, need coal to fuel their bodies; but to use coal for heat when wood is sufficient is inhuman. In the puppet show, one of the slave girls sees what the Lady has done and uses the mirror to create her own army of girls. They battle with the Lady until the last two reflections work together to remove the Lady's heart and throw it into the fireplace.
The show finishes to cheers from the children, except the coal maker's son. He exclaims that his family only takes hearts from criminals and traitors. He wants to take out the goblins' hearts but wonders if they'll even burn. The boy steps forward as if to start a fight, but Rownie knocks him down. The goblins have managed to move the tree out of the way and have gotten into the wagon during the show. Rownie jumps aboard, and the goblins hurry away.
The goblins argue with Thomas along the way, wondering why Semele chose to do a personal story on the despicable practice of making coal. Later, Rownie asks Semele how the story was personal. Semele explained that one of the girls Changed and became a goblin. The other never forgave her for Changing and learned witchwork.
Rownie asks how she [Semele] Changed, but she tells him not to worry. The goblins never Change anyone unless they ask for it. It is not done by eating their food or drinking their tea.
In the morning, the wagon arrives in Zombay. Rownie is surprised to learn that the goblins live in the Clock Tower. There is an iron staircase that leads up toward their home. Essa tells him that it also leads down to an old barracks and then underground. The goblins and Rownie set to putting away their masks before they settle down to rest. Rownie is unsettled when his fox mask seems to move off the wall. No one else notices the strange occurrence, and so he doubts that it happened. Rownie sees Semele and Thomas carrying a large stone mask with riverweed hair. Semele explains that it is a mask of the River. It had been lost, and the goblins had left the city for many months to find it. She tells him that it is a mask, but it is also the River. She made it so the goblins could ask the River not to flood the city.
Essa then takes up the story and shows Rownie a mask of Zombay. The goblins make a new mask of the city every time it is flooded. They had taught Rownie's brother how to speak for the city so that he could convince the River not to flood. Rownie puts on the mask of Zombay and repeats the words Thomas tells him, but nothing happens. The goblins and Rownie must continue to search for Rowan so he might save the city from the floods. Rownie wonders why one of the goblins can't speak for Zombay since they have more talent, but Thomas explains that since the Mayor has said the goblins aren't citizens of the city, they no longer have the power to speak for it.
Suddenly, the mask of an Iron Emperor begins to move. It breaks from its string and creates a body for itself out of thin air. It swings a metal scepter at Thomas. Nonny and Patch arrive at the right moment, and Nonny smashes the mask with her slingshot. Unfortunately, the rest of the masks come to life and start attacking the goblins and Rownie. They must try to destroy the masks' magic bodies and then catch the masks as they fall from the air. Semele is able to disable the masks by saying an ancient chant. She exclaims that a curse has been placed on the masks so that they now wish to play those who have performed them.
Rownie realizes that it is Graba's curse. It is in the welcoming gift she had Vass place on the doors of the Clock Tower. Rownie runs down the stairs to find the bag. Dark smoke rises from it, but it is cold to the touch. The coldness burns Rownie's hands as he wonders how to destroy the curse. The fox mask that he's worn appears with the clothes of a fine gentleman. Instead of attacking him, the fox leads Rownie through the alleys of the city until he can drop the curse into the River. The fox's body disappears so all that remains is the mask on the ground.
Rownie returns to the Clock Tower. The curse has been broken. The masks lay lifeless. The goblins know they have to clean up the remains of the shattered masks, but that can wait until morning. Rownie goes to sleep devising a plan to get information from Graba about his brother.
In the morning, Rownie sets out from the Clock Tower in search of Graba. Instead, he finds Vass. He asks her to send a message to Graba to meet him in the railroad station. Although Vass warns him that Graba won't let him get away from her again, Rownie is convinced that with his fox mask he can avoid being captured.
When he arrives at the station, he calls out for Graba, but a railcar approaches. The Captain of the Guard steps out and tells Rownie that the Lord Mayor wants to speak with him. Vass stands behind the Guard.
Rownie is angry that she didn't bring his message to Graba, but she insists that the Mayor will help him. Inside the railcar, Rownie is surprised to see the Mayor eating meat from a goose that has been reconstructed so that its wings flap. It plays a tune even as the Mayor cuts more food from it.
The Mayor asks Rownie to join his troupe of actors. Three masked performers appear on a stage. The actors perform a pantomime. Rownie is outraged because the Mayor has outlawed acting in the city. The Mayor explains that just because something isn't good for most people doesn't mean that he shouldn't be allowed to enjoy it.
The Mayor explains that the floods are coming, and they will destroy the Southside of Zombay, an area that he loathes. It is where Graba lives, and its roads are unorganized and dirty. Once Southside has been demolished, he will rebuild it in the organized fashion of the Northside, his area, of Zombay.
Vass has helped the Mayor because he has promised her a big house away from Graba where she can practice being a witch. Rownie understands that the Mayor arrested the other unChanged that wore masks so the goblins could not teach them to speak for the city and stop the River from flooding.
Before the Mayor can force Rownie to join his troupe, pigeons attack the railcar, jarring it about. One of the actors loses his mask, and Rownie sees that it is Rowan, his brother. Rownie shouts for his brother, but Rowan remains unmoved, as if in a trance. The Captain of the Guard drags Rownie out of the railcar.
The Guard checks to make sure there is no danger and then tells the Mayor and Vass that the tunnel is empty. The others exit the car only to be stopped by Graba, who has hidden on the roof of the train. She calls out a chant of breaking, and the mechanical soldier falls apart.
Graba sends Vass on her way, telling her to keep to the Northside of Zombay and make sure the Mayor keeps all his promises to her. She then tells the Mayor to start running because the floods are coming. He should also know that even if the Southside is destroyed, she will never let him rebuild it for himself. The area is hers, and she intends to keep it.
Rownie is left alone with Graba. She asks what message he has for her. He says he wanted her help to find his brother, but he's already found him. When the two enter the railcar, none of the actors react. Graba opens Rowan's shirt to discover a red scar along his chest. He has been turned into a puppet. Graba says there's nothing that can be done but run away from the rising River. As water begins to leak into the railway tunnel, Rownie takes his brother's hand and leads him out of the railcar. He knows they'll never outrun the floodwaters. Rownie puts on the fox mask and tries to think like the fox. He sees iron stairs and knows they are the ones that lead up the Clock Tower.
The goblins are as sad as Rownie to discover that Rowan's heart and will have been stolen from him. They curse the Mayor and ring the Clock Tower bells to warn the city of the coming flood. They all worry that the bridge on which much of the city rests will collapse. Rownie takes the mask of the River down from the wall. Against Thomas' wishes, Rownie puts it on Rowan. The mask and his brother begin to merge together.
The goblins give Rownie the mask of Zombay. He holds it, but doesn't put it on, insisting that Rowan needs to see his face, not the mask. Rownie begs his brother not to let the River flood. His brother, who is now also the River, tweaks Rownie's nose and tells him he'll have to leave to stop the flood. He promises that Rownie will know where to find him. The brothers say goodbye. Rowan, as the water, pours out of a hole in the wall and into the floodwaters. The goblins and Rownie watch as the River calms its surge.
That evening, Rownie sets out to his pebble-throwing spot on the bridge. He finds Vass waiting for him and asks if the Mayor gave her the house he'd promised. It isn't a grand house in the nice part of town, but a haunted house on the bridge. Still, Vass is happy.
She warns Rownie not to leave the bridge because the Mayor wants to arrest him. He knows that Rownie somehow kept the River from flooding. Graba, on the other hand, should leave him alone now for the very same reason. After Vass leaves, Rownie throws his pebble into the River and watches as his brother, now the water, catches it. Rownie returns to the goblins, his troupe, to eat dinner.