{"id":160,"date":"2023-06-21T14:28:27","date_gmt":"2023-06-21T14:28:27","guid":{"rendered":"https:\/\/karikarch.com\/?p=160"},"modified":"2025-01-11T22:08:39","modified_gmt":"2025-01-11T22:08:39","slug":"homemade-plant-based-banh-mi","status":"publish","type":"post","link":"https:\/\/karikarch.com\/?p=160","title":{"rendered":"Homemade Plant Based Banh Mi"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"1024\" src=\"http:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-741x1024.jpeg\" alt=\"\" class=\"wp-image-167\" srcset=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-741x1024.jpeg 741w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-217x300.jpeg 217w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-768x1062.jpeg 768w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1111x1536.jpeg 1111w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1481x2048.jpeg 1481w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1157x1600.jpeg 1157w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg 1851w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/figure>\n\n\n\n<p>Bread making is a labor of love and when you put together the perfect sandwich, something magical happens to your cooking confidence. This recipe is a tad bit more detailed than most that I normally share, but sometimes the kitchen therapy in undisputed. I used Mary&#8217;s Test Kitchen&#8217;s French Baguette recipe to get the perfect  I hope you enjoy this incredibly delicious Banh Mi sandwich and don&#8217;t forget to share your cooking experiences. Happy Eating!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"741\" height=\"1024\" src=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-741x1024.jpeg\" alt=\"\" class=\"wp-image-165\" srcset=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-741x1024.jpeg 741w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-217x300.jpeg 217w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-768x1062.jpeg 768w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1111x1536.jpeg 1111w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1481x2048.jpeg 1481w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1157x1600.jpeg 1157w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-scaled.jpeg 1851w\" sizes=\"(max-width: 741px) 100vw, 741px\" \/><\/figure>\n\n\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/karikarch.com\/?p=160&#038;print=166\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-166-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><div id=\"tasty-recipes-166\" data-tr-id=\"166\" class=\"tasty-recipes tasty-recipes-166 tasty-recipes-display tasty-recipes-has-image\">\n\n\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Homemade Plant Based Banh Mi<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n\t\t\t<div class=\"tasty-recipes-image\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-150x150.jpeg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n\t\t<div class=\"tasty-recipes-buttons\">\n\t\t\t\t<div class=\"tasty-recipes-button-wrap\">\n\t\t\t\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/karikarch.com\/?p=160&#038;print=166\" target=\"_blank\" data-tasty-recipes-customization=\"\">\n\t\t\t<svg viewBox=\"0 0 24 24\" class=\"svg-print\" aria-hidden=\"true\"><use xlink:href=\"#tasty-recipes-icon-print\"><\/use><\/svg>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n<\/div>\n\t<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t\t\t\t\t<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\"><\/span><\/p>\n\t\t\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t<ul>\n\t\t\t\t\t\t\t<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\">Kari Karch<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"prep-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Prep Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-prep-time\">20 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cook-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cook Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cook-time\">8 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"total-time\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Total Time:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-total-time\">28 minutes<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"yield\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Yield:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-yield\"><span data-amount=\"4\">4<\/span> <span class=\"tasty-recipes-yield-scale\"><span data-amount=\"1\">1<\/span>x<\/span><\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"category\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Category:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-category\">Sandwiches<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"cuisine\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Cuisine:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-cuisine\">Vietnamese<\/span><\/li>\n\t\t\t\t\t\t\t<li class=\"diet\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Diet:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-diet\">Vegan<\/span><\/li>\n\t\t\t\t\t<\/ul>\n\t<\/div>\n\n\t<div class=\"tasty-recipes-ingredients\">\n\t\t<div class=\"tasty-recipes-ingredients-header\">\n\t\t\t<div class=\"tasty-recipes-ingredients-clipboard-container\">\n\t\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"tasty-recipes-scale-container\">\n\t\t\t\t\t\t<span class=\"tasty-recipes-scale-label\">Scale<\/span>\n\t\t\t\t\t\t<button class=\"tasty-recipes-scale-button tasty-recipes-scale-button-active\" data-amount=\"1\" type=\"button\">1x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"2\" type=\"button\">2x<\/button><button class=\"tasty-recipes-scale-button\" data-amount=\"3\" type=\"button\">3x<\/button>\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p><strong>Recipe for French Baguette: <a href=\"https:\/\/www.marystestkitchen.com\/how-to-make-vietnamese-baguettes-banh-mi\/\">https:\/\/www.marystestkitchen.com\/how-to-make-vietnamese-baguettes-banh-mi\/<\/a>\u00a0<\/strong><\/p>\n<p>Recipe for Banh Mi:<\/p>\n<ul>\n<li><span data-amount=\"1\">1<\/span> block extra firm tofu<\/li>\n<li><span data-amount=\"2\" data-unit=\"tbsp\">2 Tbsp<\/span> soy sauce or tamari<\/li>\n<li><span data-amount=\"1\" data-unit=\"tbsp\">1 Tbsp<\/span> maple syrup<\/li>\n<li><span data-amount=\"1\" data-unit=\"tbsp\">1 Tbsp<\/span> rice vinegar<\/li>\n<li><span data-amount=\"1\" data-unit=\"tsp\">1 tsp<\/span> sriracha<\/li>\n<li><span data-amount=\"1\">1<\/span> garlic clove, grate<\/li>\n<li><span data-amount=\"1\" data-unit=\"tsp\">1 tsp<\/span> grated ginger<\/li>\n<li>vegan mayo<\/li>\n<li>cilantro<\/li>\n<li>basil<\/li>\n<li>English cucumber<\/li>\n<li>pickled vegetables (I like to pickle carrots and diakon in a simple pickling liquid the night before)<\/li>\n<li>extra sriracha for garnish<\/li>\n<\/ul>\n<!--INSIDE_INGREDIENTS-->\t\t<\/div>\n\t\t<div class=\"tasty-recipes-cook-mode\">\n\t<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\">\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_6a3d488a6bb99_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\"\n\t\t\t\tdata-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span>\n\t\t<\/label>\n\t\t<label for=\"tasty_recipes_6a3d488a6bb99_cookmode\">\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\">\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span>\n\t\t<\/label>\n\t<\/div>\n<\/div>\n\t<\/div>\n\n\t<div class=\"tasty-recipe-instructions\">\n\t\t<div class=\"tasty-recipes-instructions-header\">\n\t\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n\t\t\t\t\t<\/div>\n\t\t<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p id=\"instruction-step-1\">Follow instructions for making French baguette or purchase a soft baguette for use.<\/p>\n<p>For the Tofu:<\/p>\n<p id=\"instruction-step-2\">Slice the tofu into 1\/2 inch planks and marinate in a glass container with the soy sauce through the ginger. Set in fridge for 20 minutes or overnight. Cook the tofu in a non-stick pan over medium heat and top with the remaining marinade ingredients for extra flavor. Tofu should be browned on both sides, about 4 minutes per side. Remove from heat and assemble sandwiches. Place a good amount of mayo on both sides of the baguette, top with tofu, cucumber, pickled vegetables, cilantro, basil, and sriracha. Apply to face and have a great day!<\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\t<div class=\"tasty-recipes-notes\">\n\t\t<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Notes<\/h3>\n\t\t<div class=\"tasty-recipes-notes-body\" data-tasty-recipes-customization=\"body-color.color\">\n\t\t\t<p>Get creative with your fillings for this banh mi by trying a vegan pate, tempeh instead of tofu, or even use plant based chicken nuggets for the kiddos.<\/p>\n\t\t<\/div>\n\t<\/div>\n\n\n\n\n\n<footer class=\"tasty-recipes-entry-footer\">\n\t<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n\t<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\"><p>Share a photo and tag us \u2014 we can&#8217;t wait to see what you&#8217;ve made!<\/p><\/div>\n<\/footer>\n\n\n\n<script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\\\/\\\/karikarch.com\\\/wp-admin\\\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":160};\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}\n\nif ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}\n\nconst elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}\n\ne.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};\n\ndocument.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);\n\n(function(){\n\n\nvar bothEquals = function( d1, d2, D ) {\nvar ret = 0;\nif (d1<=D) {\nret++;\n}\nif (d2<=D) {\nret++;\n}\nreturn ret === 2;\n};\n\nvar frac =function frac(x,D,mixed){var n1=Math.floor(x),d1=1;var n2=n1+1,d2=1;if(x!==n1)while(bothEquals(d1,d2,D)){var m=(n1+n2)\/(d1+d2);if(x===m){if(d1+d2<=D){d1+=d2;n1+=n2;d2=D+1}else if(d1>d2)d2=D+1;else d1=D+1;break}else if(x<m){n2=n1+n2;d2=d1+d2}else{n1=n1+n2;d1=d1+d2}}if(d1>D){d1=d2;n1=n2}if(!mixed)return[0,n1,d1];var q=Math.floor(n1\/d1);return[q,n1-q*d1,d1]};frac.cont=function cont(x,D,mixed){var sgn=x<0?-1:1;var B=x*sgn;var P_2=0,P_1=1,P=0;var Q_2=1,Q_1=0,Q=0;var A=Math.floor(B);while(Q_1<D){A=Math.floor(B);P=A*P_1+P_2;Q=A*Q_1+Q_2;if(B-A<5e-8)break;B=1\/(B-A);P_2=P_1;P_1=P;Q_2=Q_1;Q_1=Q}if(Q>D){if(Q_1>D){Q=Q_2;P=P_2}else{Q=Q_1;P=P_1}}if(!mixed)return[0,sgn*P,Q];var q=Math.floor(sgn*P\/Q);return[q,sgn*P-q*Q,Q]};\n\n\nwindow.tastyRecipesVulgarFractions = JSON.parse(decodeURIComponent(\"%7B%22%C2%BC%22%3A%221%2F4%22%2C%22%C2%BD%22%3A%221%2F2%22%2C%22%C2%BE%22%3A%223%2F4%22%2C%22%E2%85%93%22%3A%221%2F3%22%2C%22%E2%85%94%22%3A%222%2F3%22%2C%22%E2%85%95%22%3A%221%2F5%22%2C%22%E2%85%96%22%3A%222%2F5%22%2C%22%E2%85%97%22%3A%223%2F5%22%2C%22%E2%85%98%22%3A%224%2F5%22%2C%22%E2%85%99%22%3A%221%2F6%22%2C%22%E2%85%9A%22%3A%225%2F6%22%2C%22%E2%85%9B%22%3A%221%2F8%22%2C%22%E2%85%9C%22%3A%223%2F8%22%2C%22%E2%85%9D%22%3A%225%2F8%22%2C%22%E2%85%9E%22%3A%227%2F8%22%7D\"));\n\nwindow.tastyRecipesFormatAmount = function(amount, el) {\nif ( parseFloat( amount ) === parseInt( amount ) ) {\nreturn amount;\n}\nvar roundType = 'frac';\nif (typeof el.dataset.amountShouldRound !== 'undefined') {\nif ('false' !== el.dataset.amountShouldRound) {\nif ( 'number' === el.dataset.amountShouldRound ) {\nroundType = 'number';\n} else if ('frac' === el.dataset.amountShouldRound) {\nroundType = 'frac';\n} else if ('vulgar' === el.dataset.amountShouldRound) {\nroundType = 'vulgar';\n} else {\nroundType = 'integer';\n}\n}\n}\nif ('number' === roundType) {\namount = Number.parseFloat(amount).toPrecision(2);\n} else if ('integer' === roundType) {\namount = Math.round(amount);\n} else if ('frac' === roundType || 'vulgar' === roundType) {\nvar denom = 8;\nif (typeof el.dataset.unit !== 'undefined') {\nvar unit = el.dataset.unit;\nif (['cups','cup','c'].includes(unit)) {\ndenom = 4;\nif (0.125 === amount) {\ndenom = 8;\n}\nif (\"0.1667\" === Number.parseFloat( amount ).toPrecision(4)) {\ndenom = 6;\n}\n}\nif (['tablespoons','tablespoon','tbsp'].includes(unit)) {\ndenom = 2;\n}\nif (['teaspoons','teaspoon','tsp'].includes(unit)) {\ndenom = 8;\n}\n}\nvar amountArray = frac.cont( amount, denom, true );\nvar newAmount = '';\nif ( amountArray[1] !== 0 ) {\nnewAmount = amountArray[1] + '\/' + amountArray[2];\nif ('vulgar' === roundType) {\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (newAmount === window.tastyRecipesVulgarFractions[vulgar]) {\nnewAmount = vulgar;\n}\n});\n}\n}\nif ( newAmount ) {\nnewAmount = ' ' + newAmount;\n}\nif ( amountArray[0] ) {\nnewAmount = amountArray[0] + newAmount;\n}\namount = newAmount;\n}\nreturn amount;\n};\n\n\nwindow.tastyRecipesUpdatePrintLink = () => {\n\nconst printButton = document.querySelector( '.tasty-recipes-print-button' );\n\n\nif ( ! printButton ) {\nreturn;\n}\n\nconst printURL = new URL( printButton.href );\nconst searchParams = new URLSearchParams( printURL.search );\n\nconst unitButton = document.querySelector( '.tasty-recipes-convert-button-active' );\nconst scaleButton = document.querySelector( '.tasty-recipes-scale-button-active' );\n\nlet unit = '';\nlet scale = '';\n\nif ( unitButton ) {\nunit = unitButton.dataset.unitType;\nsearchParams.delete('unit');\nsearchParams.set( 'unit', unit );\n}\n\nif ( scaleButton ) {\nscale = scaleButton.dataset.amount;\nsearchParams.set( 'scale', scale );\n}\n\nconst paramString = searchParams.toString();\nconst newURL = '' === paramString ? printURL.href : printURL.origin + printURL.pathname + '?' + paramString;\nconst printLinks = document.querySelectorAll( '.tasty-recipes-print-link' );\n\nprintLinks.forEach( ( el ) => {\nel.href = newURL;\n});\n\nconst printButtons = document.querySelectorAll( '.tasty-recipes-print-button' );\nprintButtons.forEach( ( el ) => {\nel.href = newURL;\n});\n};\n\n\ndocument.addEventListener( 'DOMContentLoaded', () => {\n\n\nif ( ! window.location.href.includes( '\/print\/' ) ) {\nreturn;\n}\n\nconst searchParams = new URLSearchParams( window.location.search );\n\nconst unit = searchParams.get( 'unit' );\nconst scale = searchParams.get( 'scale' );\n\nif ( unit && ( 'metric' === unit || 'usc' === unit ) ) {\ndocument.querySelector( '.tasty-recipes-convert-button[data-unit-type=\"' + unit + '\"]' ).click();\n}\n\nif ( scale && Number(scale) > 0 ) {\ndocument.querySelector( '.tasty-recipes-scale-button[data-amount=\"' + Number(scale) + '\"]' ).click();\n}\n});\n}());\n\n(function(){\nvar buttonClass = 'tasty-recipes-scale-button',\nbuttonActiveClass = 'tasty-recipes-scale-button-active',\nbuttons = document.querySelectorAll('.tasty-recipes-scale-button');\nif ( ! buttons ) {\nreturn;\n}\n\nbuttons.forEach(function(button){\nbutton.addEventListener('click', function(event){\nevent.preventDefault();\nvar recipe = event.target.closest('.tasty-recipes');\nif ( ! recipe ) {\nreturn;\n}\nvar otherButtons = recipe.querySelectorAll('.' + buttonClass);\notherButtons.forEach(function(bt){\nbt.classList.remove(buttonActiveClass);\n});\nbutton.classList.add(buttonActiveClass);\n\n\nvar scalables = recipe.querySelectorAll('span[data-amount]');\nvar buttonAmount = parseFloat( button.dataset.amount );\nscalables.forEach(function(scalable){\nif (typeof scalable.dataset.amountOriginalType === 'undefined'\n&& typeof scalable.dataset.nfOriginal === 'undefined') {\nif (-1 !== scalable.innerText.indexOf('\/')) {\nscalable.dataset.amountOriginalType = 'frac';\n}\nif (-1 !== scalable.innerText.indexOf('.')) {\nscalable.dataset.amountOriginalType = 'number';\n}\nObject.keys(window.tastyRecipesVulgarFractions).forEach(function(vulgar) {\nif (-1 !== scalable.innerText.indexOf(vulgar)) {\nscalable.dataset.amountOriginalType = 'vulgar';\n}\n});\nif (typeof scalable.dataset.amountOriginalType !== 'undefined') {\nscalable.dataset.amountShouldRound = scalable.dataset.amountOriginalType;\n}\n}\nvar amount = parseFloat( scalable.dataset.amount ) * buttonAmount;\namount = window.tastyRecipesFormatAmount(amount, scalable);\nif ( typeof scalable.dataset.unit !== 'undefined' ) {\nif ( ! scalable.classList.contains('nutrifox-quantity') ) {\nif ( ! scalable.classList.contains('nutrifox-second-quantity') ) {\namount += ' ' + scalable.dataset.unit;\n}\n}\n}\nscalable.innerText = amount;\n});\n\nvar nonNumerics = recipe.querySelectorAll('[data-has-non-numeric-amount]');\nnonNumerics.forEach(function(nonNumeric){\nvar indicator = nonNumeric.querySelector('span[data-non-numeric-label]');\nif ( indicator ) {\nnonNumeric.removeChild(indicator);\n}\nif ( 1 !== buttonAmount ) {\nindicator = document.createElement('span');\nindicator.setAttribute('data-non-numeric-label', true);\nvar text = document.createTextNode(' (x' + buttonAmount + ')');\nindicator.appendChild(text);\nnonNumeric.appendChild(indicator);\n}\n});\n\nwindow.tastyRecipesUpdatePrintLink();\n});\n});\n}());\n\nwindow.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}\n\nconst cookModes = document.querySelectorAll(this.cookModeSelector);\n\nif (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});\n\n\n\nwindow.TastyRecipes = window.TastyRecipes || {};\n\nwindow.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}\n\nthis.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );\n\nsetTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );\n\nconst currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}\n\nthis.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}\n\nconst tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );\n\nthis.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );\n\n},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};\n\nwindow.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );\n\nxhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}\n\nfailure( xhr );\n};\n\nxhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();\n\nfor ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};\n\nwindow.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;\n\nthis.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}\n\nwindow.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );\n\n\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );\n\nif ( ! data.count ) {\nreturn;\n}\n\nconst quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}\n\nconst cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}\n\nif ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}\n\nconst averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}\n\nconst countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}\n\nconst thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}\n\nconst commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}\n\nconst commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}\n\n\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;\n\n\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;\n\nthis.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}\n\nconst previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}\n\nif ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}\n\nconst ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};\n\n(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<div class=\"wp-block-cover is-light\"><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim\" style=\"background-color:#9d8153\"><\/span><img loading=\"lazy\" decoding=\"async\" width=\"1851\" height=\"2560\" class=\"wp-block-cover__image-background wp-image-167\" alt=\"\" src=\"http:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\" data-object-fit=\"cover\" srcset=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg 1851w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-217x300.jpeg 217w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-741x1024.jpeg 741w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-768x1062.jpeg 768w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1111x1536.jpeg 1111w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1481x2048.jpeg 1481w, https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-1157x1600.jpeg 1157w\" sizes=\"(max-width: 1851px) 100vw, 1851px\" \/><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<p class=\"has-text-align-center has-large-font-size\"><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bread making is a labor of love and when you put together the perfect sandwich, something magical happens to your cooking confidence. This recipe is a tad bit more detailed than most that I normally share, but sometimes the kitchen therapy in undisputed. I used Mary&#8217;s Test Kitchen&#8217;s French Baguette recipe to get the perfect [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":167,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Homemade Plant Based Banh Mi - Blog<\/title>\n<meta name=\"description\" content=\"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/karikarch.com\/?p=160\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Homemade Plant Based Banh Mi - Blog\" \/>\n<meta property=\"og:description\" content=\"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/karikarch.com\/?p=160\" \/>\n<meta property=\"og:site_name\" content=\"Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/karikarchchef\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-21T14:28:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-11T22:08:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1851\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kari Karch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kari Karch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/karikarch.com\/?p=160#article\",\"isPartOf\":{\"@id\":\"https:\/\/karikarch.com\/?p=160\"},\"author\":{\"name\":\"Kari Karch\",\"@id\":\"https:\/\/karikarch.com\/#\/schema\/person\/7763c9190c09344dd1f0cbc5dc3cd93a\"},\"headline\":\"Homemade Plant Based Banh Mi\",\"datePublished\":\"2023-06-21T14:28:27+00:00\",\"dateModified\":\"2025-01-11T22:08:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/karikarch.com\/?p=160\"},\"wordCount\":80,\"publisher\":{\"@id\":\"https:\/\/karikarch.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/karikarch.com\/?p=160#primaryimage\"},\"thumbnailUrl\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\",\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/karikarch.com\/?p=160\",\"url\":\"https:\/\/karikarch.com\/?p=160\",\"name\":\"Homemade Plant Based Banh Mi - Blog\",\"isPartOf\":{\"@id\":\"https:\/\/karikarch.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/karikarch.com\/?p=160#primaryimage\"},\"image\":{\"@id\":\"https:\/\/karikarch.com\/?p=160#primaryimage\"},\"thumbnailUrl\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\",\"datePublished\":\"2023-06-21T14:28:27+00:00\",\"dateModified\":\"2025-01-11T22:08:39+00:00\",\"description\":\"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!\",\"breadcrumb\":{\"@id\":\"https:\/\/karikarch.com\/?p=160#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/karikarch.com\/?p=160\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/karikarch.com\/?p=160#primaryimage\",\"url\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\",\"contentUrl\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg\",\"width\":1851,\"height\":2560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/karikarch.com\/?p=160#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/karikarch.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Homemade Plant Based Banh Mi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/karikarch.com\/#website\",\"url\":\"https:\/\/karikarch.com\/\",\"name\":\"Kari Karch Plant-Based Chef\",\"description\":\"Blog\",\"publisher\":{\"@id\":\"https:\/\/karikarch.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/karikarch.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/karikarch.com\/#organization\",\"name\":\"Kari Karch LLC\",\"url\":\"https:\/\/karikarch.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/karikarch.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2020\/10\/kari_main_green.png\",\"contentUrl\":\"https:\/\/karikarch.com\/wp-content\/uploads\/2020\/10\/kari_main_green.png\",\"width\":900,\"height\":900,\"caption\":\"Kari Karch LLC\"},\"image\":{\"@id\":\"https:\/\/karikarch.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/karikarchchef\",\"https:\/\/www.instagram.com\/karikarchchef\/\",\"https:\/\/www.pinterest.com\/ChefKariKarch\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/karikarch.com\/#\/schema\/person\/7763c9190c09344dd1f0cbc5dc3cd93a\",\"name\":\"Kari Karch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/karikarch.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/aa7a540c98c627a191ac2d30d890c598e44060d8d9fe6ab55448f76f31273e49?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/aa7a540c98c627a191ac2d30d890c598e44060d8d9fe6ab55448f76f31273e49?s=96&d=mm&r=g\",\"caption\":\"Kari Karch\"},\"sameAs\":[\"http:\/\/karikarch.com\"],\"url\":\"https:\/\/karikarch.com\/?author=4\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Homemade Plant Based Banh Mi - Blog","description":"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/karikarch.com\/?p=160","og_locale":"en_US","og_type":"article","og_title":"Homemade Plant Based Banh Mi - Blog","og_description":"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!","og_url":"https:\/\/karikarch.com\/?p=160","og_site_name":"Blog","article_publisher":"https:\/\/www.facebook.com\/karikarchchef","article_published_time":"2023-06-21T14:28:27+00:00","article_modified_time":"2025-01-11T22:08:39+00:00","og_image":[{"width":1851,"height":2560,"url":"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg","type":"image\/jpeg"}],"author":"Kari Karch","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kari Karch","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/karikarch.com\/?p=160#article","isPartOf":{"@id":"https:\/\/karikarch.com\/?p=160"},"author":{"name":"Kari Karch","@id":"https:\/\/karikarch.com\/#\/schema\/person\/7763c9190c09344dd1f0cbc5dc3cd93a"},"headline":"Homemade Plant Based Banh Mi","datePublished":"2023-06-21T14:28:27+00:00","dateModified":"2025-01-11T22:08:39+00:00","mainEntityOfPage":{"@id":"https:\/\/karikarch.com\/?p=160"},"wordCount":80,"publisher":{"@id":"https:\/\/karikarch.com\/#organization"},"image":{"@id":"https:\/\/karikarch.com\/?p=160#primaryimage"},"thumbnailUrl":"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg","inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/karikarch.com\/?p=160","url":"https:\/\/karikarch.com\/?p=160","name":"Homemade Plant Based Banh Mi - Blog","isPartOf":{"@id":"https:\/\/karikarch.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/karikarch.com\/?p=160#primaryimage"},"image":{"@id":"https:\/\/karikarch.com\/?p=160#primaryimage"},"thumbnailUrl":"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg","datePublished":"2023-06-21T14:28:27+00:00","dateModified":"2025-01-11T22:08:39+00:00","description":"This simple dinner idea will wow your family and takes only minutes to prepare. If you love a healthy and budget-friendly dinner, this recipe is for you!","breadcrumb":{"@id":"https:\/\/karikarch.com\/?p=160#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/karikarch.com\/?p=160"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/karikarch.com\/?p=160#primaryimage","url":"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg","contentUrl":"https:\/\/karikarch.com\/wp-content\/uploads\/2023\/06\/IMG_8093-1-scaled.jpeg","width":1851,"height":2560},{"@type":"BreadcrumbList","@id":"https:\/\/karikarch.com\/?p=160#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/karikarch.com\/"},{"@type":"ListItem","position":2,"name":"Homemade Plant Based Banh Mi"}]},{"@type":"WebSite","@id":"https:\/\/karikarch.com\/#website","url":"https:\/\/karikarch.com\/","name":"Kari Karch Plant-Based Chef","description":"Blog","publisher":{"@id":"https:\/\/karikarch.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/karikarch.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/karikarch.com\/#organization","name":"Kari Karch LLC","url":"https:\/\/karikarch.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/karikarch.com\/#\/schema\/logo\/image\/","url":"https:\/\/karikarch.com\/wp-content\/uploads\/2020\/10\/kari_main_green.png","contentUrl":"https:\/\/karikarch.com\/wp-content\/uploads\/2020\/10\/kari_main_green.png","width":900,"height":900,"caption":"Kari Karch LLC"},"image":{"@id":"https:\/\/karikarch.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/karikarchchef","https:\/\/www.instagram.com\/karikarchchef\/","https:\/\/www.pinterest.com\/ChefKariKarch\/"]},{"@type":"Person","@id":"https:\/\/karikarch.com\/#\/schema\/person\/7763c9190c09344dd1f0cbc5dc3cd93a","name":"Kari Karch","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/karikarch.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/aa7a540c98c627a191ac2d30d890c598e44060d8d9fe6ab55448f76f31273e49?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/aa7a540c98c627a191ac2d30d890c598e44060d8d9fe6ab55448f76f31273e49?s=96&d=mm&r=g","caption":"Kari Karch"},"sameAs":["http:\/\/karikarch.com"],"url":"https:\/\/karikarch.com\/?author=4"}]}},"_links":{"self":[{"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/karikarch.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=160"}],"version-history":[{"count":0,"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/posts\/160\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/karikarch.com\/index.php?rest_route=\/wp\/v2\/media\/167"}],"wp:attachment":[{"href":"https:\/\/karikarch.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/karikarch.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/karikarch.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}