Learn how to make the perfect sunny-side-up eggs with a runny yolk and fully cooked whites. This easy egg recipe is great for breakfast and brunch.

The best sunny-side-up eggs have a slightly runny yolk and lightly crispy whites. Even though they look easy to make, they’re a little trickier to perfect than you’d think.
Trust me, I know. I’ve broken quite a few yolks and overcooked several eggs to figure out the best techniques for serving them sunny-side-up…and I’m not gatekeeping any of it! I include tips and tricks for perfectly cooked whites and a runny, gooey egg yolk to jazz up your next breakfast, brunch, lunch, or dinner.
That’s right, eggs aren’t just for mornings! My husband Alex and I love using sunny-side-up eggs to transform rice bowls or sesame noodles into a hearty and satisfying meal. Turns out, the secret to a next-level dish might just be one perfectly cooked egg away.
Everything That’s Needed
This recipe couldn’t sound simpler, but there are a few things you need before jumping into the frying pan:
- Fresh eggs: Whether they’re small or large eggs doesn’t matter as much as freshness. If your eggs have been in the fridge for a while, the whites will spread when they hit the pan. (This won’t affect flavor, but you’ll have to move them around to fix the shape.)
- Butter: Homemade butter or store-bought is fine. If you’re dairy-free, use your favorite neutral oil. (Olive oil or avocado oil has a stronger flavor.)
- Non-stick, stainless steel, or cast-iron skillet: You’re not flipping here, but a non-stick pan makes moving the eggs in your pan easier and keeps them from sticking to the pan. Cast iron skillets are a popular choice for cooking eggs with crispy whites. Pro tip: If you use a stainless steel or cast iron skillet, heat it for several minutes on medium-high heat (until a drop of water dances on the pan), then reduce the heat and add butter. This will make the skillet act non-stick.
- Spatula: A fish spatula is best for a cast-iron pan. A nylon spatula is best for non-stick pans. This is true no matter what kind of eggs you make for breakfast.

Into the Frying Pan
The steps are simple: heat your pan, crack your eggs, slide ‘em in until the whites are firm but the yolk is still runny. The execution comes down to fresh eggs, as those are more likely to keep their shape, and heat.
The best temperature for sunny-side-up eggs is medium-low or low heat. The slower, the better with eggs since they’re delicate and can easily be overcooked. (By the way, you can also use this heat level for eggs served over hard.)
If you’re cooking a second batch, you may need to lower the heat to avoid overcooking the eggs since the skillet is already hot.
Ways to Enjoy
There isn’t much you can’t do with these eggs. At home, I like to add them to mealsas a quick protein boost. The classic is certainly sunny-side eggs as a side for your hash browns, French toast, and pancakes, but they’re delicious as a topping on some of my favorite lunches and dinners, too:
- Sandwiches: Make a fried egg sandwich with smoky mayo and mashed avocado, or upgrade a BLT with a runny egg and tempeh bacon.
- Toasts: For a protein-packed snack, top your avocado toast with a runny egg. (I love mine with poached eggs, as well, in case you want to experiment.)
- Rice bowls: Use an egg to top a Korean bibimbap bowl with gochujang and veggies.
- Noodle bowls: An egg can transform your simple soba noodles from a side to a main.
- Salads: Think beyond egg salad. Try a sunny-side-up egg on any of your favorite light salads.
5-Star Review
“I made these eggs and they turned out the way that I would like to have them served to me in a restaurant!”
-Leigh R.

Frequently Asked Questions
The 4 main types of fried eggs are sunny side up, over easy, over medium, and over hard. These are measured by doneness, so it really just depends on preference as far as the perfect eggs for you.
Sunny-side-up eggs are named for their bright, yolk-up appearance. They’re never flipped. Eggs over easy are fried on one side, then gently flipped to slightly seal the yolk. Over medium are partially set, with the yolks still somewhat jammy. Over hard are fully cooked with a firm yolk.
Basted eggs involve an extra step at the end, where the fat you cooked the eggs in is used to lightly coat the egg yolk at that final sizzle.
Fresh eggs with firm yolks are ideal for sunny side up. Crack the egg on a flat surface first to check for cracks. Use a gentle touch when sliding it into the pan.
Sunny-side-up eggs are generally safe as long as the whites are cooked through. If you’re concerned about consuming undercooked or raw egg whites, consider cooking them to a firmer consistency.
Fresh eggs with firm yolks are ideal when you cook sunny-side-up eggs. Crack the egg on a flat surface first to check for cracks, then over a small bowl or ramekin to keep its shape. Be gentle when sliding the eggs into a non-stick pan or well-seasoned cast iron skillet, and cook your eggs slowly on low heat.
More Easy Egg-Cooking Tutorials
Sunny Side Up Eggs
The perfect sunny-side-up eggs have a runny yolk, which instantly upgrades sandwiches, rice bowls, and more. Follow the steps below to turn anything into a meal within minutes!
- Prep Time: 0 minutes
- Cook Time: 3 minutes
- Total Time: 3 minutes
- Yield: 2 eggs
- Category: Essentials
- Method: Stovetop
- Cuisine: Eggs
- Diet: Vegetarian
Instructions
- In a large cast-iron or non-stick skillet, melt ½ tablespoon butter over medium-low heat until the tops of the eggs start to foam. (Tip: If using a stainless steel or cast iron skillet, heat it for several minutes on medium-high heat (until a drop of water dances on the pan), then reduce the heat and add butter. This will make the skillet act non-stick.)
- Add the eggs and sprinkle with a pinch of kosher salt and a few grinds of black pepper.
- Cook for 2-3 minutes, until the whites are firm but the yolks are still runny. Don’t flip!
- Remove the eggs to a plate and serve.
Notes
*Fresh eggs are best for frying because the whites hold their shape. The whites on older eggs tend to spread: simply use a spatula to pull back the egg whites towards the middle (it just won’t look as pretty!).
**The slower the better with eggs: they can easily get overcooked. Note that if you’re cooking a second batch, you may need to lower the heat to avoid overcooking the egg since the skillet is already hot.
(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”:91229};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
window.addEventListener( ‘click’, e => {
let anchor = e.target;
if ( ! anchor.classList.contains( ‘tasty-recipes-scrollto’ ) ) {
if ( anchor.tagName === ‘A’ ) {
return;
}
anchor = anchor.closest( ‘a’ );
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’ } );
history.pushState( {}, ”, selector );
}
};
(function( callback ) {
if ( document.readyState !== ‘loading’ ) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
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 );
});