Here’s my secret technique for perfectly crispy Brussels sprouts! These oven-roasted Brussels sprouts get caramelized and crispy, then tossed with a tangy balsamic glaze for the ultimate side dish.
These crispy Brussels sprouts are so tasty, you might think they were fried. But guess what? They’re baked! But they taste just as good as the ones you can get at any restaurant.
These crispy sprouts have become my go-to side dish when I want to impress guests or just treat my family on a weeknight. They’re baked until crisp, and I like to toss them with a balsamic and honey sauce that adds tangy and sweet notes. I could eat entire pans of these in a sitting! I’ve tested countless methods over the years, and here’s the technique that stuck.
The Secret to Crispy Brussels Sprouts
Every time I see crispy Brussels sprouts on a menu, I can’t resist ordering them. This vegetable has had a huge resurgence in popularity, probably because everyone realized that roasting or frying sprouts tastes so much better than boiling them.
You can recreate that restaurant-style glamour at home using your own oven. Here are a few tips for getting the crispiest sprouts in town:
- Roast at hight heat (450°F). The best roasted veggies are roasted at very high heat. Otherwise, they’ll steam and turn out soggy.
- Place them on a baking sheet as spread out as possible, cut side down. Turn down all those flat sides, and you’ll get the perfect browning. Having them far apart makes for appropriate air flow: if they’re stacked, they’ll steam instead.
- Make this the only pan in the oven! This one’s important. I never roast anything else in the oven at the same time. I learned this the hard way when my Brussels sprouts turned out soggy because I was cooking other dishes simultaneously. The moisture from other foods affects the crispiness!

Expert Tip: Avoid Silicone Baking Mats
I suggest using parchment paper in all of my roasting recipes. Parchment paper is great for easy cleanup, so food doesn’t get glued to the pan! If you don’t have any parchment paper, you can roast right on an oiled baking sheet.
Avoid using a silicone baking mat for this recipe. I’ve found that silicone baking mats make veggies more soggy. To get the crispiest of crispy Brussels sprouts, use either parchment paper or skip it and roast them right on the tray.

Essential Ingredients You’ll Need
I keep the ingredient list simple to let the Brussels sprouts shine. Here’s what you’ll need:
- Fresh Brussels sprouts: There are quite a few different varieties of sprouts out there, but I look for firm, bright green sprouts without yellow leaves more than type. Size doesn’t matter much, but try to choose ones that are roughly the same size for even cooking.
- Olive oil: I use extra-virgin olive oil for the best flavor, and it helps create that crispy exterior
- Kosher salt: I prefer kosher salt over table salt because it distributes more evenly and doesn’t make the sprouts taste overly salty.
- Balsamic vinegar and honey: For the optional glaze, I use good-quality balsamic vinegar and local honey.
Notes on the Balsamic Sauce
To take crispy Brussels sprouts over the top, I often like to toss them with a balsamic and honey sauce to add tangy, sweet flavor.
But keep in mind, adding the sauce does wet the sprouts, making them a little less crispy. So if your goal is ultra crispy, try them without it first! You can use maple syrup to make a vegan sauce, or add a little hot sauce for a spicy sauce.

Variations on Crispy Brussels Sprouts
There are lots of other tasty ways to top crispy Brussels sprouts! Here are a few more ideas I’d recommend:
- Parmesan or Pecorino cheese: Make them even crunchier by tossing with shredded or grated aged cheese halfway through the bake time.
- Nuts: Top with toasted pecans or glazed pecans for another crunch.
- Goat cheese or feta crumbles: These cheeses add a salty, savory flavor.
- Balsamic reduction: Add a drizzle of concentrated, sweet-tart flavor by adding balsamic reduction.

Storage and Reheating Tips
Crispy Brussels sprouts are best fresh from the oven. However, you can store leftover Brussels sprouts in an airtight container in the refrigerator for up to 4 days. I’ve found that reheating them in a 400°F oven for 5 to 7 minutes can bring back some crispiness, though it’s not quite the same. You can also throw them in the air fryer.
For meal prep, I sometimes roast a large batch and then use them throughout the week in grain bowls, quinoa salad, or farro bowls.
Dietary Notes
This crispy Brussels sprouts recipe is vegetarian, vegan, plant-based, dairy-free, and gluten-free.
Frequently Asked Questions
No, I don’t recommend using frozen Brussels sprouts for this recipe. Frozen sprouts contain too much moisture, which prevents them from getting crispy. The extra water content means they’ll steam rather than roast, resulting in soggy vegetables. Always use fresh Brussels sprouts for the best texture.
No, you don’t need to soak Brussels sprouts. Simply trim the hard ends, slice them in half, and they’re ready to roast. Soaking would add unnecessary moisture that would work against achieving maximum crispiness.
Overcooking at low temperatures can make Brussels sprouts taste more bitter. Roasting at high heat (450°F) caramelizes the natural sugars and reduces bitterness significantly. Also, make sure to remove any yellowed or damaged outer leaves before roasting, as these can contribute to bitter flavors.
You can trim and halve Brussels sprouts up to 24 hours in advance. Store them in an airtight container in the refrigerator, but wait to toss them with oil and seasonings until just before roasting. This prevents them from releasing moisture and keeps them at their best for achieving crispy results.
450°F is the ideal temperature for perfectly crispy Brussels sprouts. This high heat is essential for caramelization and creating that crunchy exterior. Lower temperatures will result in softer, less crispy sprouts.
Brussels sprouts are done when they’re deeply browned on the cut side and tender when pierced with a fork. This usually takes about 25 minutes at 450°F. The outer leaves should be crispy and slightly charred.
Perfectly Crispy Brussels Sprouts
Here’s my secret technique for perfectly crispy Brussels sprouts! These oven roasted Brussels sprouts get caramelized and crispy, then tossed with a tangy balsamic glaze for the ultimate side dish.
- Prep Time: 10 minutes
- Cook Time: 25 minutes
- Total Time: 35 minutes
- Yield: 4
- Category: Side Dish
- Method: Roasted
- Cuisine: Vegetables
- Diet: Vegetarian
Ingredients
- 1 1/2 pounds Brussels sprouts
- 3 tablespoons olive oil
- 1 teaspoon kosher salt
- ¼ teaspoon black pepper
- 2 tablespoons balsamic vinegar
- 2 tablespoons honey (or maple syrup)
- Spicy variation: 1 teaspoon hot sauce, plus more to drizzle
Instructions
- Preheat the oven to 450°F. (To get them perfectly crispy, make sure this is the only pan in the oven and you’re not roasting anything else at the same time.)
- Slice off any hard ends of the Brussels sprouts, as needed. Slice them in half lengthwise and place them in a large bowl.
- Mix the sprouts with the olive oil, kosher salt, and lots of fresh ground black pepper.
- Line a baking sheet with parchment paper*, then pour the spouts onto the sheet. Turn them all cut side down.
- Roast for 25 minutes until very browned and tender. Don’t stir! They Brussels sprouts are done when they’re deeply browned on the cut side and tender when pierced with a fork. The outer leaves should be crispy and slightly charred. For the crispiest sprouts, you can eat them as is, or go to Step 6.
- Optional: While the sprouts are roasting, whisk together the balsamic vinegar and honey or maple syrup (and 1 teaspoon hot sauce, if using). When the sprouts are done, pour over the mixture and toss to combine. For the spicy variation, drizzle with additional hot sauce to taste. Serve immediately.
Notes
*Don’t use a silicone baking mat, since these can also make the Brussels sprouts less crispy. If you don’t have parchment paper, you can skip it and roast directly on the sheet.
(function(){
window.addEventListener( ‘message’, function( event ){
if ( ( ‘https://nutrifox.com’ !== event.origin && ‘https://nutrifox.test’ !== event.origin ) ||
typeof event.data !== ‘string’ ) {
return;
}
var payload = JSON.parse( event.data );
switch ( payload.event ) {
case ‘setHeight’:
var iframe = document.getElementById( ‘nutrifox-label-‘ + payload.recipeId );
iframe.style.height = payload.height + ‘px’;
break;
}
} );
}());
window.trCommon={„minRating”:6,”ajaxurl”:”https:\/\/www.acouplecooks.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:””,”postId”:62602};
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 );
});
More Brussels Sprout Recipes to Try
- Roasted Brussels Sprouts
- Smashed Brussels Sprouts
- Brussels Sprout Casserole
- Parmesan Brussels Sprouts
- Steamed Brussels Sprouts
- Sautéed Brussels Sprouts
- Shaved Brussels Sprouts

Roasted Brussels Sprouts

Smashed Brussels Sprouts

Easy Shaved Brussels Sprouts

Brussels Sprout Casserole

