Your cart is empty. Go to Shop

Blood Magic Angela Teagardner

The sand was dry and loose, still warm with the lingering heat of the day.  Nora stole across the darkened beach, a large wicker basket clutched beneath one arm. Beside an outcropping of rock near the water’s edge, she stopped, lowering her bundle and pulling an oilskin bag from across her back. She glanced furtively about, relieved to see that she was quite alone. The baby in the basket woke, blinking grey eyes but making no sound. The tide was steadily swelling; time was running out.

A full, August moon—the Grain Moon—reigned high overhead, casting its pale glow across the sea. It was enough light to work by, and Nora moved quickly. With shaking fingers, she drew a rosette of protection in the sand. She set the basket in its center, lingering just a moment to kiss her daughter’s cheek—she looked even thinner than the night before, her skin so pale it seemed to glow. It was a wonder she’d made to the full moon. A miracle.  A wave crashed, its foamy edge stretching toward the child.

The water was near the circle, the tide near its zenith.

In a rush, she pulled a handful of crystals from her bag: aquamarine for a tranquil sea, sharp-edged epidote for healing, jet for protection, and a moonstone to harness the energy of reflected light. “Amphitrite, Lady of the Ocean,” she murmured as she buried a stone in the sand, “who dwells within the sea, accept this heartfelt offering; bestow your grace on me.” She repeated the incantation three more times, placing a crystal at each cardinal direction.

In her bag, Nora found a jar of clumpy, grey salt—local salt she’d collected herself from the flats that edged the marshland near her home—and a vial of oil that had been steeped with agrimony. She dabbed the oil on her finger and traced an arc across her daughter’s forehead, then she scattered the salt in a circle around the child’s basket. The wind picked up, pulling her hair loose from its braid.

Beyond the dunes, her husband’s urgent voice called her name.

The foam of a wave dampened the hem of her skirt.

Nora couldn’t spare the time it would take to look up, not even for Adrian. “Heal and protect,” she whispered into the wind. “Heal and protect.”

She took the chain from around her neck. The heavy brass locket held a bundle of herbs she’d harvested at the last full moon. She’d kept it against her skin for twenty-nine days and nights, infusing it with her own vitality. Now she nestled it into her daughter’s basket.

He called again, so much nearer, and her heart surged. She’d promised to wake him, but when the time came, she had not. Instead, she’d slipped out in silence, gathering up their child and hurrying to the shore without him. She wanted Adrian on that beach with her. Desperately. But magic required equilibrium—blood for blood, life for life. She didn’t know how much she would have to give of herself and she longed to protect him from that choice. She would take it all on her own shoulders, even if it meant dying alone.

She pulled a small knife from the pocket of her dress and knelt. The tide rolled in, soaking the sand, reclaiming the salt and exposing the crystals. “Heal and protect,” she repeated, each time louder than before. The baby’s eyes were rimmed in ink-stained shadow. She whimpered, lately too weak even to cry.

Adrian was almost there. He scrabbled down dunes, stumbling over his feet in the deep, clutching sand. She looked back at him, their eyes locking as her breath hitched. For the first time, she let go of the panic she’d been holding at bay all night. She wasn’t alone anymore.

A surge of dark water encircled the basket. It was time.

Nora pushed sharp metal against the pad of her thumb, closed her eyes as the skin resisted the blade. It gave way in a burst of heat and pain. “Heal and protect!” she cried for the ninth and final time. The salt stung as she plunged her hand into the ocean, trading blood for magic, trading herself.

The world grew soft and dark. Waves tumbled about her, lifting the basket and spinning it just out of reach. The water erased the circle, washed the crystals away. The baby’s eyes went wide.

Nora felt heavy, suddenly so heavy that even kneeling was too much. She slumped forward, glimpsing her daughter’s basket nearby, bobbing at the crest of a tiny swell.

And then Adrian’s arms were around her. He pulled her into him, cradling her against his body, strong enough to resist the shove and pull of the sea. His lips were warm against her hair, murmuring words she could not hear, and Nora felt her vigor return.

Whatever the spell had taken, Adrian restored. It shouldn’t have been possible.

He knelt in the surf, barefoot, his shirt unbuttoned, and his hair wild with sleep. A gash on his forearm dripped blood into the water—her knife clutched in his other hand. His own sacrifice. For her. For their child. His eyes were fixed on the basket rocking on the waves.

“Did it work?” he whispered, half to his wife and half to the ocean itself.

Nora had no answer. She looked out at their daughter, tears mingling with seawater on her face. His blood had been enough to save her, but had they saved the baby? Nora was as helpless as he was.

“Did it work?” Adrian’s voice pitched wild, but the wind caught it, threw the sound back at them.

But the sea must have heard. As though in answer, it shifted its current and brought the basket back, left it half-sunk in the sand, and retreated once more. The baby’s skin was flushed pink, her eyes bright. She opened her tiny mouth and, for the first time in weeks, she wailed.

© Angela Teagardner

Meet the Author

Angela Teagardner

Angela Teagardner

Angela Teagardner has been selling books for twenty years–not her own though, not yet. She lives with her small family and two cranky cats in Columbus, Ohio, and when she’s not at the keyboard, she runs about with her daughter’s Brownie troop and pretends to have some skill with stained glass.

Become a Patron! Check our our NEW Patron rewards!


Receives weekly links to new stories, exclusive behind-the-scenes content and interviews with the authors, and our undying love.


Receives a free monthly download of our current issue, access to Ask Me Anything chats with the FFO staff, submission statistics, plus benefits from lower levels


Gain access to our monthly Mini-Critique sessions, the FFO Editorial Team slushpile wishlist , plus benefits from lower levels


A chance to have your work discussed by the FFO editorial team, receive 365 Writing Prompts and our latest anthology, plus benefits from lower levels


Receive a monthly mini-critique from the FFO editorial team and request custom writing videos, plus benefits from lower levels


Receive one flash fiction critique per month, mini-critique sessions, an opportunity to “sponsor-a-story,” plus all the benefits of lower levels!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Support Flash Fiction Online

Flash Fiction Online is a free online magazine that pays professional rates. So how do we make that happen? It’s due to the generosity of readers like you.

Here are some ways you can help:

Become a Patron.

Sign up to become a monthly donor and gain access to exclusive Patron rewards like manuscript critiques, insider submission statistics, the Editors’ Wishlist, free downloads of our current issue, and Ask Me Anything chats with the FFO staff. Read more…

Subscribe to FFO.

Never miss an issue! E-reader formats delivered to your inbox. Available from

Buy our issues & anthologies.

Each of our issues and anthologies are available in convenient e-reader formats (epub/mobi/pdf). Available from the Flash Fiction Online Store and WeightlessBooks.


Consider a one-time gift that fits your budget.

Advertise with us.

Have a product, service, or website our readers might enjoy? Ad space available on the website and in our e-reader issues. Sponsored posts opportunities are also available. Learn more…

Spread the word.

Love one of our stories or articles? Share it with a friend!

%d bloggers like this: