Love turkey and pineapple recipes? These Carrot Pineapple Turkey Meatballs are easy to make and packed with vegetables. Prep them ahead of time and eat warm or cold for a quick lunch or dinner.

*Originally published 4/2019. Updated 4/2025*
Hi friends!
I’m excited to share these turkey meatballs with pineapple today. Many of you requested easy ground turkey recipes and I immediately knew I wanted to make meatballs. They’re one of my favorite easy protein sources because they can be eaten warm or cold and it’s so easy to play around with the flavor combos.
Easy Pineapple Turkey Meatballs For Dinner
For today’s version, I simply added some carrots to the food processor and processed them into tiny pieces (almost like carrot rice) so I could mix them into the turkey. Then I added some red pepper for extra veggies, green onions for flavor and some diced pineapple to help keep them moist.
By chopping the veggies extra small and adding the sweet element of pineapple, these turkey meatballs are kid-friendly and can be a great way to add veggies to dinner.
Why Pineapple and Turkey Works
Ground turkey and pineapple may seem like an unlikely combination but it really works! The mixture of the two helps make the perfect sweet and savory turkey meatballs
By saving the juice from the canned pineapple, you can easily make a quick glaze that’s slightly sweet like a teriyaki glaze but with much less added sugar. If you use fresh pineapple for the meatballs, you could sub orange juice for the glaze.
Ingredients for Turkey and Carrot Meatballs
To make these carrot pineapple turkey meatballs you just need a few basic ingredients, nothing fancy! Some of the things you’ll need:
- Ground turkey – you could also sub ground chicken or even ground beef if you wanted to
- Vegetables- bell peppers and carrots. Feel free to swap in something like diced mushrooms if you prefer.
- Diced Pineapple – you’ll need to lightly chop the pineapple a bit further but I don’t like to use crushed pineapple because it’s harder to reserve the juice
You’ll combine these ingredients with more traditional ingredients like panko breadcrumbs, garlic, egg and seasonings.
To make the glaze you’ll need:
- Pineapple juice – reserved from the pineapple in the meatballs
- Maple syrup – to sweeten
- Soy sauce (or tamari) and rice vinegar – for flavor. If you don’t have rice vinegar you could sup red wine vinegar or apple cider vinegar
- Ginger- fresh is best
- Cornstarch – to help thicken
How To Make Turkey Meatballs with Pineapple
Making these carrot pineapple turkey meatballs takes just a few simple steps:
- Combine the meatball ingredients and form into meatballs.
- Bake in the oven.
- While the meatballs, combine the ingredients for the glaze, heat it up and let it reduce to thicken.
- Gently toss the meatballs in the glaze and serve.
What To Serve with Pineapple Turkey Meatballs
These carrot pineapple turkey meatballs are fairly versatile and can be served in a variety of ways:
- Serve in a bowl with rice and roasted veggies.
- Serve on a Hawaiian-style bun or roll to make Hawaiin Turkey Meatball Sliders.
- Eat them cold straight out of the fridge.
- Add to lettuce wraps with grated veggies
- Serve with an Asian cucumber salad or sauteed green beans or bok choy
Healthy Turkey Meatballs with Pineapple Recipe
Here’s how you make them:
Carrot Pineapple Turkey Meatballs
This Carrot Pineapple Turkey Meatballs recipe is easy to make and packed with vegetables, plus a pineapple glaze for extra flavor. Prep them ahead of time and eat warm or cold for a quick lunch or dinner.
- Prep Time: 5 min
- Cook Time: 20 min
- Total Time: 25 min
- Yield: 20 meatballs
Ingredients
For the meatballs:
- 1 pound ground turkey
- 1 cup finely chopped carrots (i used the food processor)
- 1/2 cup diced red pepper
- 8 oz diced pineapple (in 100% juice, drain and reserve juice)
- 1/4 cup green onion, thinly sliced
- 1/2 cup panko breadcrumbs
- 1 egg
- 1/2 tsp garlic powder
- 1 tsp paprika
- 1/2 tsp salt
For the glaze*:
- 1/4 cup pineapple juice (or orange juice)
- 1/4 cup soy sauce
- 1–2 Tbsp maple syrup
- 2 Tbsp rice vinegar (or apple cider vinegar or red wine vinegar)
- 1–2 tsp fresh ginger (or ginger paste)
- sriracha to taste, optional
- 1 Tbsp cornstarch + 1 Tbsp water
Instructions
- In a large bowl, combine turkey, carrots, peppers, pineapple, green onion, panko, egg and seasonings. (I chop the diced pineapple a little bit further into smaller pieces before adding)
- Mix well and form into meatballs of desired size. This should make 20-24 larger meatballs or approximately 36 smaller meatballs.
- Place on a baking sheet lined with parchment paper and bake at 400 degrees. Cook time will vary based on size of meatballs but should be 15-20 minutes. Flip meatballs once after 9 minutes. Check to make sure internal temperature reaches 165 degrees.
- Meanwhile, in a small saucepan, combine pineapple juice, soy sauce, maple syrup, vinegar, ginger and sriracha and bring to a boil.
- Reduce heat, mix cornstarch with water and add to sauce. Stir for 3-4 minutes until thickened. Taste and add more maple syrup, sriracha or ginger if needed.
- Remove from heat. Once meatballs are done, brush with glaze and serve.
Notes
If you’re using fresh pineapple, you can sub orange juice for pineapple juice in the glaze.
You can also substitute a storebought teriyaki sauce or marinade for the glaze
window.trCommon={“minRating”:6,”ajaxurl”:”https://www.theleangreenbean.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:35123};
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 );
});
These carrot pineapple turkey meatballs are so easy and flavorful. I added sriracha to half my glaze after glazing some without it for the kids. And I served with roasted broccoli and rice.
Turkey Meatballs with Pineapple FAQs
How do I cook carrot pineapple turkey meatballs in the air fryer?
To make these meatballs in the air fryer, cook at 400 degrees for 10 minutes, flipping halfway through. Check temperature using a meat thermometer and add more time if needed to reach 165 degrees F.
How do I make lean and green turkey meatballs with pineapple?
To add a green component to these carrot pineapple turkey meatballs, you could add 4 oz of chopped frozen spinach, thawed and squeezed to remove excess moisture. Or if you’re looking for another meatball recipe try these Mediterranean Meatballs.
Can I freeze turkey meatballs?
Yes, to freeze these meatballs cool completely and then transfer to an airtight storage container or freezer-safe bag.
What are some other healthy ground turkey and pineapple recipes?
If you love this combo, try one of these recipes:
- Pineapple Turkey Tacos
- Easy Pineapple Turkey Burgers
- Curry Pineapple Turkey Rice Bowls
Are these Hawaiian-style turkey meatballs?
This is not a traditional Hawaiian recipe but the inclusion of pineapple may remind people of other Hawaiin-inspired recipes.
Can you make pineapple chicken meatballs?
Yes, you could easily substitute ground chicken in this recipe.
Can you only make turkey meatballs with canned pineapple or could I use fresh?
If you want to use fresh pineapple in this recipe, you can, just be sure to chop it small and then you could substitute orange juice in the glaze.

Easy Ground Turkey Recipes
Enjoy!
–Lindsay–