Gluten-Free Carrot Cake
This gluten-free carrot cake makes the perfect dessert. Made in an 8×8 pan, it’s perfectly moist and full of flavor.

Hi friends!
It’s been a while since I’ve published a cake recipe so I’m excited to share this deliciously moist Gluten-Free Carrot Cake recipe with all of you! Carrot cake is something I’ve never really made at home but I always enjoy when it’s an option for dessert at restaurants. It’s also one of my mom’s favorites and her birthday is coming up!
When I set out to make this carrot cake recipe, I knew I wanted to keep it simple. I didn’t want to have to deal with stacking layers or making anything elaborate that my family would never be able to finish. So I chose to make a smaller 8×8 cake with just enough frosting to cover the top and sides.
Easy Gluten-Free Carrot Cake Ingredients
No fancy ingredients needed for this recipe, just some basic pantry staples. You’ll need:
- Shredded carrots – Either peel and shred them by hand or use a food processor.
- Oil – I use a neutral oil like avocado oil
- Eggs
- Brown sugar
- Applesauce – I prefer the unsweetened variety
- Vanilla – be sure to use pure vanilla extract
- Flour – I use a 1:1 gluten-free flour blend but if you don’t need it to be gluten-free, you can use regular flour
- Baking soda, cinnamon and salt
- Optional mix-ins: If you like nuts or raisins in your cake, feel free to mix in 1/2 – 1 cup of chopped nuts like pecans or walnuts and/or raisins
- For the frosting you’ll need cream cheese, plain yogurt and maple syrup
How To Make Carrot Cake Gluten-Free
Making this cake requires just one bowl and couldn’t be easier:
- Combine the carrots, oil, eggs, brown sugar, applesauce and vanilla and mix well.
- Add flour, baking soda, cinnamon and salt along with any additional mix-ins you’re using and stir until just combine.
- Pour into an 8×8 pan and bake for 30 minutes.
- To make the frosting, mix cream cheese and yogurt, then add maple syrup and mix again. Spread over top and sides.

Is this a healthy gluten-free carrot cake?
As far as carrot cake recipes go, this recipe is healthier than most. It uses applesauce to replace some of the oil and sugar and only uses 2/3 cup of brown sugar. The frosting is also made from a mix of cream cheese and plain Greek yogurt and is just lightly sweetened with a little maple syrup! If you choose to mix in some nuts that adds a dose of healthy fats as well!
Can I make this as a gluten and dairy-free carrot cake?
The cake itself is both gluten-free and dairy-free. The only part you would need to address is the frosting which contains dairy. I think your best bet would be to replace it with a Vegan Cream Cheese Frosting recipe.
Can I make gluten-free vegan carrot cake without eggs?
To make the cake vegan, you’ll need to replace the eggs. I would suggest making flax eggs. And then replace the frosting with a vegan frosting as mentioned above!
What about a gluten-free carrot cake with pineapple recipe?
I’ve found that pineapple in carrot cake is a polarizing topic So I left it out of mine and went with a more neutral applesauce. If you want to add pineapple, I would start with 1/2 cup drained crushed pineapple plus 2 Tbsp applesauce instead of 2/3 cup applesauce.
Simple Gluten-Free Carrot Cake Recipe
Here’s the recipe I use:
Gluten-Free Carrot Cake
This gluten-free carrot cake makes the perfect dessert. Made in an 8×8 pan, it’s perfectly moist and full of flavor.
- Yield: 8×8 pan
Ingredients
For the cake:
- 1.5 cups shredded carrots
- 1/3 cup oil
- 2 eggs
- 2/3 cup brown sugar
- 2/3 cup unsweetened applesauce
- 2 tsp vanilla extract
- 1 cup Gluten-Free 1:1 baking blend (I like King Arthur Measure for Measure)
- 1 tsp baking soda
- 2 tsp cinnamon
- 1/4 tsp salt
- Optional: chopped walnuts or pecans, raisins
For the frosting:
- 4 oz cream cheese, softened
- 1/4 cup full fat plain Greek yogurt
- 2–3 Tbsp maple syrup
Instructions
- Preheat oven to 350 degrees F.
- In a mixing bowl, mix oil, eggs, brown sugar, applesauce, vanilla and carrots until well combined.
- Add flour, baking soda, cinnamon and salt (plus chopped nuts/raisins if using) and stir until just combined.
- Pour into an 8×8 pan lined with parchment paper.
- Bake for 30 minutes or until a toothpick inserted into center comes out clean.
- While cake cools, make frosting. Place softened cream cheese and Greek yogurt in a bowl and mix with an electric mixer for 2-3 minutes.
- Add maple syrup and mix for another minute.
- Place in the fridge until cake cools completely, then frost top and sides with a light layer of frosting.
- Store in the fridge until ready to eat.
window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.theleangreenbean.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:””,”postId”:49015};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
document.addEventListener( ‘click’, ( e ) => {
let anchor = e.target;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}
if ( ! anchor || ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
return;
}
const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}
e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const element = document.querySelector( selector );
if ( ! element ) {
return;
}
element.scrollIntoView( { behavior: ‘smooth’ } );
}
};
document.addEventListener(
‘DOMContentLoaded’,
() => window.TastyRecipes.smoothScroll.init()
);
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.cookMode = {
wakeLockApi: false,
wakeLock: false,
cookModeSelector: ‘.tasty-recipes-cook-mode’,
init() {
if (“wakeLock” in navigator && “request” in navigator.wakeLock) {
this.wakeLockApi = navigator.wakeLock;
}
const cookModes = document.querySelectorAll(this.cookModeSelector);
if (cookModes.length > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘input[type=”checkbox”]’).addEventListener(“change”, event => {
this.checkboxChange(event.target);
}, false);
} else {
cookMode.style.display = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = document.querySelectorAll(this.cookModeSelector + ‘ input[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
try {
this.wakeLock = await this.wakeLockApi.request(“screen”);
this.wakeLock.addEventListener(“release”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.release();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};
(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
document.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.staticTooltip = {
element: null,
tooltipElement: null,
deleting: false,
init( element ) {
if ( this.deleting ) {
return;
}
this.element = element;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}
this.deleting = true;
this.tooltipElement.classList.remove( ‘opened’ );
setTimeout( () => {
this.tooltipElement.remove();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = document.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );
const currentTooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
document.body.replaceChild( tooltipElement, currentTooltipElement );
} else {
document.body.appendChild( tooltipElement );
}
this.tooltipElement = document.getElementById( ‘tasty-recipes-tooltip’ );
},
show() {
if ( ! this.tooltipElement ) {
return;
}
const tooltipTop = this.element.getBoundingClientRect().top
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().height;
const tooltipLeft = this.element.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.element.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );
this.tooltipElement.setAttribute( ‘style’, ‘top:’ + tooltipTop + ‘px;left:’ + posLeft + ‘px;’ );
this.tooltipElement.classList.add( ‘opened’ );
},
maybeRemoveTail( removeTail ) {
if ( removeTail ) {
this.tooltipElement.classList.add( ‘tr-hide-tail’ );
} else {
this.tooltipElement.classList.remove( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};
window.TastyRecipes.ajax = {
sendPostRequest( url, data, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.send( this.preparePostData( data ) );
xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.status === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}
failure( xhr );
};
xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( data ) {
const formData = new FormData();
for ( const key in data ) {
formData.append( key, data[key] );
}
return formData;
},
};
window.TastyRecipes.ratings = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;
this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const ratings = document.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( ratings.length {
event.preventDefault();
this.defaultRating = event.target.closest( ‘.checked’ ).dataset.rating;
this.setCheckedStar( event.target );
this.maybeSendRating( this.defaultRating, event.target );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click’, e => {
// Bailout (don’t remove the tooltip) when the clicked element is a rating star, or it’s the tooltip itself.
if ( e.target.closest( ‘.tasty-recipes-rating’ ) || e.target.classList.contains( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}
window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( rating ) {
const ratingInput = document.querySelector( ‘#respond .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = document.querySelectorAll( ‘input.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click’, currentEvent => {
const selectedRating = currentEvent.target.getAttribute( ‘value’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( rating ) {
if ( rating < this.minRating ) {
document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );
return;
}
document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( rating ) {
const commentTextarea = document.getElementById( 'comment' );
if ( ! commentTextarea ) {
return;
}
if ( rating {
window.TastyRecipes.staticTooltip.changeMessage( response.data.message );
window.TastyRecipes.staticTooltip.show();
this.updateAverageText( response.data, recipeCardElement );
this.maybeFillCommentForm( response.data );
// Hide the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.data, rating );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( data, recipeCardElement ) {
if ( ! data.average ) {
return;
}
this.setRatingPercent( data );
if ( ! data.count ) {
return;
}
const quickLink = document.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, data );
this.setPartialStar( quickLink );
}
const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = data.average;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), data );
},
setTextInContainer( container, data ) {
if ( ! container ) {
return;
}
if ( data.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = data.label;
}
return;
}
const averageElement = container.querySelector( ‘.average’ );
if ( averageElement ) {
averageElement.textContent = data.average;
}
const countElement = container.querySelector( ‘.count’ );
if ( countElement ) {
countElement.textContent = data.count;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( data ) {
this.defaultRating = data.average.toFixed( 1 );
const parts = data.average.toFixed( 2 ).toString().split( ‘.’ );
this.currentRatingPercentage = parts[1] ? parts[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( target ) {
const cardRatingContainer = target.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}
const thisStar = target.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( data ) {
if ( ! data.comment || ! data.comment.content ) {
return;
}
const commentForm = document.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}
const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.value ) {
return;
}
// Add comment details for editing.
commentBox.innerHTML = data.comment.content;
if ( data.comment.name ) {
commentForm.querySelector( ‘[name=author]’ ).value = data.comment.name;
commentForm.querySelector( ‘[name=email]’ ).value = data.comment.email;
}
},
maybeResetTooltip( recipeCardElement, data, rating ) {
if ( this.savingRating === rating ) {
this.resetTooltip( recipeCardElement, data );
}
},
resetTooltip( recipeCardElement, data ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;
// Reset the default rating.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;
this.resetSelectedStar( cardRatingContainer, data );
}
},
resetSelectedStar( cardRatingContainer ) {
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( selectedRatingElement ) {
selectedRatingElement.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = this.currentRatingPercentage;
selectedRatingElement.parentNode.dataset.trChecked = 1;
}
const previousSelectedElement= cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( previousSelectedElement ) {
const currentSelectedRating = previousSelectedElement.querySelector(‘[data-rating]’);
if ( currentSelectedRating !== selectedRatingElement ) {
delete previousSelectedElement.dataset.trChecked;
}
}
},
backwardCompFormRatingPosition() {
const ratingsButtons = document.querySelector( ‘#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.display.includes( ‘flex’ ) ) {
ratingsButtons.style.direction = ‘rtl’;
}
if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Select the rating that was previously selected in admin.
ratingsButtons.querySelector( ‘.tasty-recipes-rating[value=”‘ + tastyRecipesRating + ‘”]’ ).checked = true;
}
const ratingSpans = ratingsButtons.querySelectorAll( ‘.tasty-recipes-rating’ );
for (const ratingSpan of ratingSpans) {
ratingSpan.addEventListener( ‘click’, event => {
if ( ratingSpan === event.target ) {
return;
}
ratingSpan.previousElementSibling.click();
} );
}
}
};
(function(callback) {
if (document.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );
});
Gluten-Free Carrot Cake FAQs
Does traditional carrot cake contain gluten? What makes this carrot cake gluten-free?
Most traditional carrot cake recipes use wheat-based flour. This recipe uses a gluten-free flour blend which is specially formulated with gluten-free flour to act like regular wheat flour in baking recipes. The other ingredients are naturally gluten-free.
What is the best gluten-free flour for carrot cake?
My favorite is King Arther Measure for Measure Flour. I like the way it behaves in recipes and use it often to replace wheat flour in my recipes for muffins, bars and other baked goods with great results. However, feel free to use your favorite GF flour blend.
How do I store gluten-free carrot cake to keep it fresh?
Due to the fact that this cake is very moist and has a dairy-based frosting, the cake should be kept in the fridge to avoid spoiling. Store in an airtight container to keep the frosting from drying out.
Can you freeze carrot cake?
If you want to freeze the cake, I would recommend cooling and freezing without frosting. When ready to eat, transfer to the counter to thaw and add the frosting before serving.

What’s the best way to add natural sweetness to gluten-free carrot cake?
I use a lot of applesauce in my recipe to add natural sweetness. You can achieve a similar effect by using crushed pineapple. Adding raisins can also help add natural sweetness!
Can I make this a gluten-free carrot cake cupcakes recipe?
I haven’t tried it myself, but I think you should be able to bake this recipe into about 6 cupcakes. Adjust the baking time to 15-20 minutes.
Can I make sugar free gluten-free carrot cake?
I would not attempt to adjust this recipe to make it sugar-free. If you’re interested in a sugar-free recipe, try Keto Carrot Cake or Sugar-Free Carrot Cake.
How can I make gluten-free carrot cake with almond flour?
If you want to use almond flour, I would try this Healthy Carrot Cake recipe from my friend Hummusapien or this Gluten-Free Carrot Cake.

Gluten-Free Recipes
Looking for more gluten-free recipes? Check out:
- Mediterranean Meatballs
- Kale and White Bean Salad
- Slow Cooker Creamy Mexican Chicken
- Pesto Chicken Quinoa Bowls
Also I’ve tested most of my muffin and bar recipes subbing a 1:1 GF flour blend for the wheat flour and they work great!
Enjoy!
–Lindsay–