This simple crispy air fryer tofu takes simply quarter-hour! It makes golden brown, seasoned cubes with tender facilities: the proper protein adder for bowls, salads, stir fries, and extra.

Right here’s considered one of my favourite weeknight hero recipes: crispy air fryer tofu! It’s humorous to say this, as a result of I really was a skeptic of each the air fryer and tofu. However after creating dozens of tofu recipes, I’ve grown to like this wholesome plant-based protein.
Now that I’ve an air fryer, I notice how clutch it’s for weeknight proteins! This air fryer tofu is so quick and simple: you don’t even must press it! Simply slice into cubes, add just a few seasonings, then air fry for 10 minutes.
Why You’ll Love This Air Fryer Tofu
I’m not exaggerating after I say this air fryer tofu is a weeknight hero in my home! It has saved the day so many occasions once we’re unsure what to make (that and my air fryer rooster). Right here’s why I adore it:
- It’s extremely quick. Many tofu recipes name for urgent the tofu for half-hour. There’s no urgent wanted right here, and no pre-heating an oven! It’s simply quarter-hour, begin to end.
- It’s crispy and scrumptious. The flavour is seasoned excellent and it’s obtained a flippantly crispy exterior.
- You may serve it in so some ways. That is the proper plant-based protein so as to add to bowl meals, salads, soups, and extra. (I adore it with rice and steamed broccoli for a brilliant simple meal).
Key Substances
Right here’s what you’ll want for this primary recipe:
Further-firm tofu: That is the one kind that works for crispy air fryer tofu. The firmer texture and decrease water content material means higher browning. Keep away from every other kind!
Cornstarch: Cornstarch kinds a light-weight shell that stays crispy even after the tofu cools down. (Arrowroot powder can work instead).
Olive oil: Only one tablespoon helps the seasonings stick and helps with browning. You may substitute with avocado oil when you favor.
Soy sauce: Provides a savory depth. I exploit common soy sauce, however tamari works properly for gluten-free.
Garlic and onion powder: These spices construct a savory basis with out including moisture.
Professional Suggestions for the Greatest Air Fryer Tofu
After testing this recipe many occasions (with my husband Alex), right here’s the way in which I wish to make air fryer tofu:
Step 1: Preheat your air fryer. These 5 minutes of preheating really do make a distinction. The tofu hits the warmth instantly, which jumpstarts the crisping course of.
Step 2: Minimize uniform cubes and pat dry. I slice my tofu block in half lengthwise first, then lower every half into 3/4-inch cubes. Attempt to make constant sizes so every thing cooks on the similar fee. Place the cubes on a clear dish towel, then gently pat them with a second towel to take away extra moisture.

Step 3: Combine the tofu and seasonings, then cornstarch. Gently toss so the tofu doesn’t break. Stir the seasonings first, then the cornstarch (in order that it will get totally coated).

Step 4: Pour into the basket, ensuring to not overcrowd: Unfold the tofu in a single layer with a little bit respiratory room between items. Crowded tofu steams as an alternative of crisps. If it is advisable to make a double batch, cook dinner it in two rounds.

Step 5: Shake midway via. At 6 minutes, I give the basket shake to rotate all of the items. This makes positive all sides get evenly cooked.
Methods To Serve It
This crispy tofu is so versatile. My children completely adore it, and I get pleasure from that it’s a plant-based protein that’s hearty and satisfying (generally an enormous pile of beans simply doesn’t do it for me!).
- In bowls: Toss the tofu right into a tofu bowl with rice, greens, and your favourite sauce. I adore it with tofu fried rice or in a farro bowl with hummus dressing.
- Over salads: They’re nice in a tofu salad, or with a Mediterranean pasta salad for a vegan protein increase.
- In stir fries: Attempt it in tofu broccoli stir fry or any of your go-to vegan dinner recipes.
- In sandwiches: Layer the crispy tofu onto a breaded tofu sandwich or wrap it in lettuce for fast lettuce wraps.
- In tacos: These cubes make nice tofu tacos: simply add toppings and a taco sauce.
- With noodles: Toss them with soba noodles or on ramen for added protein.
Storage and Reheating
Retailer leftover air fryer tofu within the fridge for 3 to five days. It turns into much less crispy within the fridge.
For the perfect outcomes, reheat the tofu within the air fryer at 375°F for 3-5 minutes: that is the simplest approach to get it crispy once more!
Dietary Notes
This air fryer tofu recipe is vegetarian, vegan, plant-based, dairy-free and gluten-free.
Incessantly Requested Questions
No! That’s top-of-the-line elements about this recipe. The fast pat-dry with dish towels removes sufficient floor moisture for the air fryer to work its magic. I’ve examined this extensively, and urgent doesn’t make a noticeable distinction for this specific technique.
Follow extra-firm tofu for this recipe. Agency tofu incorporates an excessive amount of moisture and gained’t get as crispy. Silken tofu will disintegrate within the air fryer.
The commonest culprits are overcrowding the basket or skipping the cornstarch. Ensure you’re spreading the tofu in a single layer with house between items, and don’t skip the cornstarch: it’s what creates the crispy exterior.
Sure, however the outcomes gained’t be fairly as crispy. Go to my Baked Tofu recipe.
Air Fryer Tofu (Straightforward & Crispy!)
Grasp crispy air fryer tofu in simply quarter-hour with my simple recipe! These golden brown, seasoned cubes with tender facilities make the proper protein adder for bowls, salads, stir fries, and extra.
- Prep Time: 5 minutes
- Prepare dinner Time: 10 minutes
- Whole Time: quarter-hour
- Yield: 3 to 4
- Class: Essential Dish
- Methodology: Air Fryer
- Delicacies: Vegan
- Weight loss program: Vegan
Substances
- 1 15-ounce block extra-firm tofu
- 1 tablespoon olive oil
- 2 teaspoons soy sauce or tamari
- ½ teaspoon garlic powder
- ½ teaspoon onion powder
- ½ teaspoon kosher salt
- 1 tablespoon cornstarch
Directions
- Preheat air fryer to 400°F for five minutes.
- Minimize the tofu into 3/4-inch cubes (slice the tofu in half lengthwise into two giant rectangles first, then into cubes). Place the cubes on a clear dish towel, then gently pat them with a second towel to take away extra moisture.
- In medium bowl, stir collectively the olive oil, soy sauce, garlic powder, onion powder, and kosher salt. Add the tofu to the bowl and gently stir till coated. Sprinkle the cornstarch over the tofu and stir till simply coated. Dump the tofu into the air fryer basket and unfold into single layer. Prepare dinner for 10 to 12 minutes till browned and crispy, shaking after 6 minutes.
- Retailer in an hermetic container in fridge for 3 to five days. (To reheat: Use the air fryer at 375°F for 3-5 minutes, or use an oven at 400°F for 5-7 minutes to revive crispiness.)
window.trCommon={“minRating”:6,”ajaxurl”:”https://www.acouplecooks.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:173869};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
doc.addEventListener( ‘click on’, ( e ) => {
let anchor = e.goal;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}
if ( ! anchor || ! anchor.classList.incorporates( ‘tasty-recipes-scrollto’ ) ) {
return;
}
const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}
e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const component = doc.querySelector( selector );
if ( ! component ) {
return;
}
component.scrollIntoView( { habits: ‘easy’ } );
}
};
doc.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 = doc.querySelectorAll(this.cookModeSelector);
if (cookModes.size > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘enter[type=”checkbox”]’).addEventListener(“change”, occasion => {
this.checkboxChange(occasion.goal);
}, false);
} else {
cookMode.fashion.show = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = doc.querySelectorAll(this.cookModeSelector + ‘ enter[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
attempt {
this.wakeLock = await this.wakeLockApi.request(“display”);
this.wakeLock.addEventListener(“launch”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.launch();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};
(perform(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
doc.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.staticTooltip = {
component: null,
tooltipElement: null,
deleting: false,
init( component ) {
if ( this.deleting ) {
return;
}
this.component = component;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}
this.deleting = true;
this.tooltipElement.classList.take away( ‘opened’ );
setTimeout( () => {
this.tooltipElement.take away();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = doc.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );
const currentTooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
doc.physique.replaceChild( tooltipElement, currentTooltipElement );
} else {
doc.physique.appendChild( tooltipElement );
}
this.tooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
},
present() {
if ( ! this.tooltipElement ) {
return;
}
const tooltipTop = this.component.getBoundingClientRect().high
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().top;
const tooltipLeft = this.component.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.component.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );
this.tooltipElement.setAttribute( ‘fashion’, ‘high:’ + 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.take away( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};
window.TastyRecipes.ajax = {
sendPostRequest( url, information, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.ship( this.preparePostData( information ) );
xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.standing === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}
failure( xhr );
};
xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( information ) {
const formData = new FormData();
for ( const key in information ) {
formData.append( key, information[key] );
}
return formData;
},
};
window.TastyRecipes.scores = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;
this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const scores = doc.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( scores.size {
occasion.preventDefault();
this.defaultRating = occasion.goal.closest( ‘.checked’ ).dataset.score;
this.setCheckedStar( occasion.goal );
this.maybeSendRating( this.defaultRating, occasion.goal );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click on’, e => {
// Bailout (do not take away the tooltip) when the clicked component is a score star, or it is the tooltip itself.
if ( e.goal.closest( ‘.tasty-recipes-rating’ ) || e.goal.classList.incorporates( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}
window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( score ) {
const ratingInput = doc.querySelector( ‘#reply .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click on();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = doc.querySelectorAll( ‘enter.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click on’, currentEvent => {
const selectedRating = currentEvent.goal.getAttribute( ‘worth’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( score ) {
if ( score < this.minRating ) {
doc.physique.classList.take away( 'tasty-recipes-selected-minimum-rating' );
return;
}
doc.physique.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( score ) {
const commentTextarea = doc.getElementById( 'remark' );
if ( ! commentTextarea ) {
return;
}
if ( score {
window.TastyRecipes.staticTooltip.changeMessage( response.information.message );
window.TastyRecipes.staticTooltip.present();
this.updateAverageText( response.information, recipeCardElement );
this.maybeFillCommentForm( response.information );
// Disguise the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.information, score );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( information, recipeCardElement ) {
if ( ! information.common ) {
return;
}
this.setRatingPercent( information );
if ( ! information.rely ) {
return;
}
const quickLink = doc.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, information );
this.setPartialStar( quickLink );
}
const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = information.common;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), information );
},
setTextInContainer( container, information ) {
if ( ! container ) {
return;
}
if ( information.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = information.label;
}
return;
}
const averageElement = container.querySelector( ‘.common’ );
if ( averageElement ) {
averageElement.textContent = information.common;
}
const countElement = container.querySelector( ‘.rely’ );
if ( countElement ) {
countElement.textContent = information.rely;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( information ) {
this.defaultRating = information.common.toFixed( 1 );
const elements = information.common.toFixed( 2 ).toString().break up( ‘.’ );
this.currentRatingPercentage = elements[1] ? elements[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( goal ) {
const cardRatingContainer = goal.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}
const thisStar = goal.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( information ) {
if ( ! information.remark || ! information.remark.content material ) {
return;
}
const commentForm = doc.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}
const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.worth ) {
return;
}
// Add remark particulars for enhancing.
commentBox.innerHTML = information.remark.content material;
if ( information.remark.identify ) {
commentForm.querySelector( ‘[name=author]’ ).worth = information.remark.identify;
commentForm.querySelector( ‘[name=email]’ ).worth = information.remark.e-mail;
}
},
maybeResetTooltip( recipeCardElement, information, score ) {
if ( this.savingRating === score ) {
this.resetTooltip( recipeCardElement, information );
}
},
resetTooltip( recipeCardElement, information ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;
// Reset the default score.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( information && information.common ) ? information.common.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;
this.resetSelectedStar( cardRatingContainer, information );
}
},
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 = doc.querySelector( ‘#reply .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.show.consists of( ‘flex’ ) ) {
ratingsButtons.fashion.course = ‘rtl’;
}
if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Choose the score that was beforehand chosen 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 on’, occasion => {
if ( ratingSpan === occasion.goal ) {
return;
}
ratingSpan.previousElementSibling.click on();
} );
}
}
};
(perform(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.scores.init( window.trCommon ? window.trCommon.minRating : 4 );
});
Extra Tofu Recipes to Attempt
When you love this air fryer tofu, try these different tofu recipes:
