Ginger, nutmeg, and cinnamon give this keto spice cake its irresistible flavor. The crumb is super-moist while the cream cheese frosting adds the perfect finishing touch!

Keto spice cake cut into squares on a serving tray with a bite taken out of one squareKeto spice cake cut into squares on a serving tray with a bite taken out of one square

When you’re following a low-carb or keto diet, you can still enjoy baked goods! The trick is to use low-carb ingredients without sacrificing taste or texture.

This keto spice cake recipe is a perfect example. The crumb is super-moist, and the cream cheese frosting on top makes it so indulgent.

Meanwhile, warm spices like cinnamon, ginger, and nutmeg give this cake an irresistible flavor that always makes me think of fall. Top with chopped walnuts if you like for a wonderful little treat!

I love making spice cake for get-togethers, or just having them to satisfy my sweet tooth throughout the week. If you ask me, there’s never a bad time for this recipe.

How to make keto spice cake

The majority of this recipe is simply mixing together the ingredients. Prep only takes about 25 minutes!

Step 1: Line an 8×8 inch baking tin with parchment paper and grease the sides with melted butter. Preheat your oven to 350°F (170°C).

Step 2: In a medium mixing bowl, whisk together all the dry ingredients until well combined. Set aside.

Dry ingredients mixed in a glass bowl with a whiskDry ingredients mixed in a glass bowl with a whisk

Step 3: In a large mixing bowl, add the butter, cream cheese, and granulated stevia. Cream using a hand mixer for 2-3 minutes until creamy, smooth, and slightly fluffy.

Step 4: Add the eggs, vanilla, and almond extract if using.

Wet ingredients in a glass bowl being mixed by an electric mixerWet ingredients in a glass bowl being mixed by an electric mixer

Step 5: Beat on low to mix the ingredients together, then mix on high for 5 minutes to combine well.

Step 6: Add the dry ingredients and beat on low until just combined. Then, beat on high for 3 minutes, scraping down the sides of the bowl as necessary, until the mixture is completely incorporated.

Step 7: Pour the mixture into your prepared baking tin.

Batter in a square baking pan, as seen from aboveBatter in a square baking pan, as seen from above

Step 8: Bake for 40 – 45 minutes until a toothpick inserted in the center of the cake comes out clean. Remove from the oven and allow to cool in the tin for 15 minutes, then remove from the baking tin.

Step 9: Allow the cake to cool completely before placing it in the refrigerator to chill before frosting.

Step 10: While the cake is in the refrigerator, cream the butter and cream cheese together until smooth. Add the vanilla and powdered stevia.

Frosting ingredients added to a glass mixing bowl, as seen from aboveFrosting ingredients added to a glass mixing bowl, as seen from above

Step 11: Beat on low until combined, then on high for 5 minutes until fluffy. Place in the refrigerator to firm up.

Frosting mixed in a glass bowl with an electric mixerFrosting mixed in a glass bowl with an electric mixer

Step 12: When the cake is chilled, add the frosting and garnish with chopped nuts if desired.

I like to cut mine into 9 little squares before serving!

What’s the difference between spice cake and carrot cake?

The biggest difference is… well… the carrots! Carrot cake is basically spice cake with carrots added for some sweetness and to keep the texture moist.

In fact, if you look at our low-carb carrot cake muffin recipe, you’ll see many of the same ingredients. Cinnamon and nutmeg are used in both cases to add delicious, warm flavor.

Carrots, however, are not the lowest-carb vegetable. By omitting them, it’s much easier to make our spice cake keto-friendly. Each slice has 3.8 grams of carbohydrates and 0.7 grams of fiber for about 3 net carbs total.

8 squares of cake on a round wooden cutting board, as seen from above8 squares of cake on a round wooden cutting board, as seen from above

Storage

These little treats are so nice to have throughout the week. They’re perfect for satisfying your sweet tooth any time of day.

You can store your spice cake slices in an airtight container in the refrigerator. They will stay fresh for up to five days.

Squares of cake on a wooden cutting boardSquares of cake on a wooden cutting board

Other keto dessert recipes

Ditching carbs and sugar doesn’t mean you have to give up dessert! There are so many keto-friendly ways to indulge your craving for something sweet. Here are a few of my favorite keto dessert recipes that I know you’ll love:

For even more low-carb ways to satisfy your sweet tooth, check out my round-up of the best keto-friendly dessert recipes!

Once you’ve tried this spice cake recipe, please don’t forget to let me know how you liked it and rate the recipe in the comments below!

Recipe Card

Keto Spice Cake

Ginger, nutmeg, and cinnamon give this keto spice cake its irresistible flavor. The crumb is super-moist while the cream cheese frosting adds the perfect finishing touch!

Prep Time:25 minutes

Cook Time:45 minutes

Cooling Time:1 hour

Total Time:2 hours 10 minutes

Servings:9

Keto spice cake cut into squares on a serving tray with a bite taken out of one squareKeto spice cake cut into squares on a serving tray with a bite taken out of one square

.wprm-recipe-rating .wprm-rating-star.wprm-rating-star-full svg * { fill: #8cc63f; }

Instructions

  • Line an 8×8 inch baking tin with parchment paper and grease the sides with melted butter. Preheat your oven to 350°F (170°C).

  • In a medium mixing bowl, whisk together all the dry ingredients until well combined. Set aside.

  • In a large mixing bowl, add the butter, cream cheese, and granulated stevia. Cream using a hand mixer for 2-3 minutes until creamy, smooth, and slightly fluffy.

  • Add the eggs, vanilla, and almond extract if using.

  • Beat on low to mix the ingredients together, then mix on high for 5 minutes to combine well.

  • Add the dry ingredients and beat on low until just combined. Then, beat on high for 3 minutes, scraping down the sides of the bowl as necessary, until the mixture is completely incorporated.

  • Pour the mixture into your prepared baking tin.

  • Bake for 40 – 45 minutes until a toothpick inserted in the center of the cake comes out clean. Remove from the oven and allow to cool in the tin for 15 minutes, then remove from the baking tin.

  • Allow the cake to cool completely before placing it in the refrigerator to chill before frosting.

  • While the cake is in the refrigerator, cream the butter and cream cheese together until smooth. Add the vanilla and powdered stevia.

  • Beat on low until combined, then on high for 5 minutes until fluffy. Place in the refrigerator to firm up.

  • When the cake is chilled, add the frosting and garnish with chopped nuts if desired.

Recipe Notes

This recipe is for 9 slices of low-carb spice cake.
To get powdered sweetener, simply blend granulated sweetener in a blender until fine.
Cake can be stored in an airtight container in the refrigerator for up to 5 days.

Nutrition Info Per Serving

Nutrition Facts

Keto Spice Cake

Amount Per Serving (1 slice)

Calories 261
Calories from Fat 222

% Daily Value*

Fat 24.7g38%

Saturated Fat 12.8g64%

Polyunsaturated Fat 0.7g

Monounsaturated Fat 5.1g

Cholesterol 148.6mg50%

Sodium 497.5mg21%

Potassium 91.4mg3%

Carbohydrates 3.8g1%

Fiber 0.7g3%

Sugar 1.8g2%

Protein 6.5g13%

Net carbs 3.1g

* Percent Daily Values are based on a 2000 calorie diet.

Course: Dessert

Cuisine: American

Keyword: keto, low-carb cake, spice cake

Success! Now check your email to download the eBook chapter.

/* Layout */ .ck_form { /* divider image */ background: #fff url(data:image/gif;base64,R0lGODlhAQADAIABAMzMzP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMTQgNzkuMTUxNDgxLCAyMDEzLzAzLzEzLTEyOjA5OjE1ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUQ5NjM5RjgxQUVEMTFFNEJBQTdGNTQwMjc5MTZDOTciIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUQ5NjM5RjkxQUVEMTFFNEJBQTdGNTQwMjc5MTZDOTciPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxRDk2MzlGNjFBRUQxMUU0QkFBN0Y1NDAyNzkxNkM5NyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxRDk2MzlGNzFBRUQxMUU0QkFBN0Y1NDAyNzkxNkM5NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAAEALAAAAAABAAMAAAICRFIAOw==) repeat-y center top; font-family: “Helvetica Neue”, Helvetica, Arial, Verdana, sans-serif; line-height: 1.5em; overflow: hidden; color: #666; font-size: 16px; border-top: solid 20px #3071b0; border-top-color: #3071b0; border-bottom: solid 10px #3d3d3d; border-bottom-color: #1d446a; -webkit-box-shadow: 0px 0px 5px rgba(0,0,0,.3); -moz-box-shadow: 0px 0px 5px rgba(0,0,0,.3); box-shadow: 0px 0px 5px rgba(0,0,0,.3); clear: both; margin: 20px 0px; } .ck_form, .ck_form * { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } #ck_subscribe_form { clear: both; } /* Element Queries — uses JS */ .ck_form_content, .ck_form_fields { width: 50%; float: left; padding: 5%; } .ck_form.ck_horizontal { } .ck_form_content { border-bottom: none; } .ck_form.ck_vertical { background: #fff; } .ck_vertical .ck_form_content, .ck_vertical .ck_form_fields { padding: 10%; width: 100%; float: none; } .ck_vertical .ck_form_content { border-bottom: 1px dotted #aaa; overflow: hidden; } /* Trigger the vertical layout with media queries as well */ @media all and (max-width: 499px) { .ck_form { background: #fff; } .ck_form_content, .ck_form_fields { padding: 10%; width: 100%; float: none; } .ck_form_content { border-bottom: 1px dotted #aaa; } } /* Content */ .ck_form_content h3 { margin: 0px 0px 15px; font-size: 24px; padding: 0px; } .ck_form_content p { font-size: 14px; } .ck_image { float: left; margin-right: 5px; } /* Form fields */ .ck_errorArea { display: none; } #ck_success_msg { padding: 10px 10px 0px; border: solid 1px #ddd; background: #eee; } .ck_label { font-size: 14px; font-weight: bold; } .ck_form input[type=”text”], .ck_form input[type=”email”] { font-size: 14px; padding: 10px 8px; width: 100%; border: 1px solid #d6d6d6; /* stroke */ -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; /* border radius */ background-color: #f8f7f7; /* layer fill content */ margin-bottom: 5px; height: auto; } .ck_form input[type=”text”]:focus, .ck_form input[type=”email”]:focus { outline: none; border-color: #aaa; } .ck_checkbox { padding: 10px 0px 10px 20px; display: block; clear: both; } .ck_checkbox input.optIn { margin-left: -20px; margin-top: 0; } .ck_form .ck_opt_in_prompt { margin-left: 4px; } .ck_form .ck_opt_in_prompt p { display: inline; } .ck_form .ck_subscribe_button { width: 100%; color: #fff; margin: 10px 0px 0px; padding: 10px 0px; font-size: 18px; background: #0d6db8; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; /* border radius */ cursor: pointer; border: none; text-shadow: none; } .ck_form .ck_guarantee { color: #626262; font-size: 12px; text-align: center; padding: 5px 0px; display: block; } .ck_form .ck_powered_by { display: block; color: #aaa; } .ck_form .ck_powered_by:hover { display: block; color: #444; } .ck_converted_content { display: none; padding: 5%; background: #fff; } /* v6 */ .ck_form_v6 #ck_success_msg { padding: 0px 10px; } @media all and (max-width: 403px) { .ck_form_v6.ck_modal .ck_close_link { top: 30px; } } @media all and (min-width: 404px) and (max-width: 499px) { .ck_form_v6.ck_modal .ck_close_link { top: 57px; } } .ck_guarantee, .ck_form_title, .ck_image { display: none !important; } .ck_form_container:not(.ck_modal) { max-width: 780px !important; margin: 0 auto !important; } .ck_form_container .ck_form { background-color: #00a9e0 !important; } .ck_modal .ck_form { left: auto !important; max-width: 780px !important; margin: 5% auto !important; width: 100% !important; position: relative !important; } .ck_form { background: none !important; box-shadow: none !important; -webkit-box-shadow: none !important; } .ck_form_content { width: 35% !important; padding: 2% !important; float: left !important; } .ck_form_fields { width: 65% !important; float: left !important; padding: 3% !important; } .ck_description img { border: 5px solid #fff; width: 200px; height: auto; } .ck_form_container .ck_form { border: none !important; } .ck_form_fields:before { content: “Do you want to be Diabetes Strong?”; font-size: 30px; display: block; text-align: center; font-weight: 600; letter-spacing: 1.2px; color: #fff; width: 90%; margin: 0 auto; line-height: 1; text-transform: uppercase; } .ck_subscribe_form:before { content: “Sign up to receive a free chapter from Christel’s Fit With Diabetes eBook.”; text-align: center; display: block; color: #fff; font-size: 18px; width: 70%; margin: 3% auto; line-height: 1.5; } .ck_control_group.ck_first_name_field_group { margin-right: 1%; } .ck_control_group.ck_first_name_field_group, .ck_control_group.ck_email_field_group { float: left; width: 49% !important; } .ck_form input[type=”text”], .ck_form input[type=”email”] { border: none; background-color: #fff; box-shadow: none; border-radius: 0; padding: 10px; } .ck_form .ck_subscribe_button { border-radius: 0; background: #fff; font-weight: 600; color: #000; height: 39px; line-height: 1; } .ck_label { font-size: 15px; font-weight: 600; text-transform: uppercase; color: #fff; letter-spacing: 1px; } .ck_vertical .ck_form_content { border-bottom: none; } @media (max-width:736px) { .ck_form_content, .ck_form_fields { width: 100% !important; } .ck_control_group.ck_first_name_field_group, .ck_control_group.ck_email_field_group { width: 100% !important; } } <!–

–>