Caramel Chocolate Bars



These Caramel Chocolate Bars are perfect for everything from birthday parties to holiday cookie trays. Sweet, chewy and stuffed with delicious caramel and chocolate.

*Originally published 12/2011. Updated 1/2026*

Hi friends!

I’m excited to share these Caramel Chocolate Bars with you guys today! This recipe was originally shared on the blog way back in 2011 and now here we are 15 years later! Thery’re still a favorite so I decided they could use a little refresh!

Why You’ll Love These Caramel Chocolate Bars

An easy, crowd-pleasing recipe, I’m sure they’ll be a hit because:

  • They’re made with simple ingredients
  • Also known as caramelitas, they are a staple on a lot of holiday cookie trays.

Caramel Chocolate Bars Ingredients

To make these bars, you just need a few simple ingredients including:

  • Butter – melted and cooled slightly
  • Brown Sugar – works better than white sugar in this recipe
  • Vanilla extract – for flavor
  • Flour- can sub a 1:1 gluten-free flour if needed
  • Oats – I use quick oats instead of rolled oats because I like texture better in cookies
  • Baking soda and salt
  • Chocolate chips – dark or semi-sweet
  • Caramels – the individually wrapped kind, not the the caramel sauce
  • Heavy cream – to mix with the caramel

How To Make Caramel Chocolate Bars

These bars are met in a few separate phases:

  • Melt the butter and mix it with the brown sugar, vanilla, flour, oats, baking soda and salt until well combined. The mixture will be a bit crumbly.
  • Divide the oat mixture in half and press half into a pan.
  • Bake the bottom layer.
  • Melt the caramels and cream in the microwave to make a sauce.
  • Top bottom layer with chocolate chips. Then add caramel sauce.
  • Top with the remaining oat mixture and bake again!

Bar Variations

If you’re looking to change things up a little bit, try:

Salted Caramel Chocolate Bars

You can either sprinkle the layer of caramel with flaky sea salt or add a sprinkle of salt over the oat topping before baking.

Pretzel Caramel Chocolate Bars

Another option if you love the sweet and salty combo, would be to chop up some pretzels and add them to the dough. You could reduce the oats my 1/4 cup and replace with 1/4 cup chopped pretzels.

Pecan Caramel Chocolate Bars

These bars are also great with the addition of nuts. Add some chopped pecans on top when you add the chocolate chips and then top with caramel. You could also use walnuts.

Coconut Caramel Chocolate Bars

Try adding some shredded sweetened coconut for a fun twist! You can mix into the crust or sprinkle on top as you add the oat topping over the caramel.

Peanut Butter Caramel Chocolate Bars

Try mixing 1/3 cup peanut butter into the dough mixture when you add the brown sugar and vanilla.


How To Freeze and Store Caramel Chocolate Bars

These bars can be stored at room temperature in a sealed container for a week or two! If you’d like to freeze them, place in a freezer-safe bag with parchment paper between layers and freeze up to 3 months. To thaw, let sit at room temperature until thawed all the way through.

Cutting Caramel Bars

Perhaps the most important part of this recipe is to let the bars cool completely before trying to cut them. If you try to slice into the bars while they are still warm, you’ll be left with a gooey, sticky mess. The bars will crumble and the caramel will stick to the knife.

Let the bars cool completely and it should be very easy to cut into bars of your desired size.

Cookie Swap & Dessert Bar

These bars are perfect for a holiday cookie swap or dessert bar. They are nut-free which helps to avoid a common allergen and can also be made gluten-free by using a 1:1 gluten-free flour blend (I like King Arther Gluten-free Measure for Measure) as well as certified gluten-free oats.

Bars are great for swaps because you can cut them into whatever size you want – smaller for a cookie swap where there are going to be a lot of dessert exchanged or larger if they are the star of the show!


Troubleshooting

Can I make in a 9×13 pan?

I would not attempt to make these in a 9×13 pan without doubling the recipe. You won’t have enough dough to split it in half and cover the entire layer of a 9×13 pan with the original recipe.

What if the caramel overflows?

If the caramel overflows around the edges of the bars, you may have used a few too many caramels. But don’t worry! You can just slice of a very thin bit around the entire outside edge to clean them up and make them look pretty again!

Why are my caramel chocolate bars crumbly?

If you follow the recipe as written, your bars should not be crumbly. They should hold together well UNLESS you try to slice them before they are completely cool.


Caramel Chocolate Bars Recipe

Here’s the exact recipe I use:

Print

Caramel Chocolate Bars

5 Stars 4 Stars 3 Stars 2 Stars 1 Star

No reviews

These Caramel Chocolate Bars are perfect for everything from birthday parties to holiday cookie trays. Sweet, chewy and stuffed with delicious caramel and chocolate.

Ingredients

  • 8 Tbsp butter melted
  • ¾ cup brown sugar
  • 1 tsp vanilla 
  • 1 cup flour
  • 1 cup oats
  • 1 tsp baking soda
  • ¼ tsp salt
  • 1 cup chocolate chips
  • 8oz caramels (approx 30 caramels)
  • ⅓ cup heavy cream
  • Pecans optional


Instructions

window.trCommon={“minRating”:6,”ajaxurl”:”https:\/\/www.theleangreenbean.com\/wp-admin\/admin-ajax.php”,”ratingNonce”:””,”postId”:4149};
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 );
});


Caramel Chocolate Bars FAQs

What are caramel chocolate bars made of?

These bars are a simple mix of butter, sugar, vanilla, oats and flour, with a layer of chocolate and caramel in between the crust and topping.

Are caramel chocolate bars the same as caramelitas?

If you’re a super long-time reader, you may remember these were originally published as Caramelitas. The title has been changed to more accurately reflect the ingredients and make it easier to describe the bars! Both names describe these bars.

Can I make caramel chocolate bars ahead of time?

Yes! In fact, making caramel chocolate bars ahead of time is a must. They need to cool completely before you can cut them so be sure to plan ahead!

Do caramel chocolate bars need to be refrigerated?

No. These bars can be stored at room temperature.

Can I freeze caramel chocolate bars?

Yes! These bars can be frozen in a freezer-safe bag or container with parchment paper between the layers for up to 3 months.

How do I keep caramel chocolate bars from falling apart?

Be sure to let the bars cool completely before cutting. This will help them firm up so they hold together well.

What’s the best caramel to use for caramel chocolate bars?

Any variety of individually wrapped caramels should work. I like Kraft’s caramels.

Can I make salted caramel chocolate bars?

Yes. Feel free to add a sprinkle of flaky sea salt to the top of the caramel layer or on top of the oat topping.

Are caramel chocolate bars good for cookie swaps?

Yes. Bars are great for cookie swaps because you can easily cut them into whatever size bars you need, large or small!


 

–Lindsay–





Source link