{"id":1472,"date":"2026-07-20T18:40:45","date_gmt":"2026-07-20T18:40:45","guid":{"rendered":"https:\/\/fero.ae\/?p=1472"},"modified":"2026-07-20T18:40:45","modified_gmt":"2026-07-20T18:40:45","slug":"laundromat-business-dubai-guide","status":"publish","type":"post","link":"https:\/\/fero.ae\/?p=1472","title":{"rendered":"The Laundromat Business in Dubai: Is Self-Service Laundry a Good Investment in 2026?"},"content":{"rendered":"<p>The laundromat \u2014 rows of self-service machines, customers washing their own clothes for a few dirhams \u2014 is one of the world&#8217;s most studied small-business models. It runs with minimal staff, takes payment before delivering the service, and sells a necessity rather than a luxury. Yet Dubai, a city dense with exactly the demographics laundromats serve elsewhere, has historically had remarkably few of them, because inexpensive full-service laundries filled the niche. That is changing: rising service prices, app-based payments replacing coin mechanisms, and a wave of residents accustomed to self-service from Europe, the UK and East Asia are opening a genuine window. This guide examines whether the model works in Dubai in 2026, and what it takes to build one properly.<\/p>\n<h2>Why Dubai Is Different \u2014 and Why That&#8217;s Changing<\/h2>\n<p>The traditional obstacle to laundromats in the UAE was price competition: when a full-service laundry washes, dries and irons a kilogram of clothes for a modest per-piece rate and delivers it back, few customers queue to do it themselves. But three shifts have moved the arithmetic. Service laundry prices have risen with rents and wages. High-density areas populated by young professionals and workers \u2014 JVC, International City, Al Nahda, Deira, parts of Sharjah \u2014 generate demand for the cheapest possible clean-clothes option. And modern laundromats are no longer grim coin halls: app-controlled machines, card payments, air conditioning, coffee and Wi-Fi have repositioned the format as convenient rather than budget-desperate. Operators who pick locations by demographics rather than nostalgia are making the model work.<\/p>\n<h2>The Unit Economics<\/h2>\n<figure class=\"wp-block-table\">\n<table>\n<thead>\n<tr>\n<th>Line Item<\/th>\n<th>Typical Range (12-machine store)<\/th>\n<th>Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Fit-out + utilities connection<\/td>\n<td>AED 150,000-300,000<\/td>\n<td>Drainage, power upgrade, ventilation dominate<\/td>\n<\/tr>\n<tr>\n<td>Equipment (8 washers + 6 dryers, vended)<\/td>\n<td>AED 350,000-600,000<\/td>\n<td>Vended-spec machines with payment systems<\/td>\n<\/tr>\n<tr>\n<td>License + approvals<\/td>\n<td>AED 20,000-35,000<\/td>\n<td>DET activity + Municipality premises approval<\/td>\n<\/tr>\n<tr>\n<td>Monthly rent<\/td>\n<td>AED 8,000-25,000<\/td>\n<td>Residential-dense secondary locations, not prime retail<\/td>\n<\/tr>\n<tr>\n<td>Monthly staffing (1 attendant\/shifts)<\/td>\n<td>AED 4,000-9,000<\/td>\n<td>Hybrid attended model typical in UAE<\/td>\n<\/tr>\n<tr>\n<td>Revenue per machine per day (mature)<\/td>\n<td>AED 60-150<\/td>\n<td>3-6 cycles\/day at AED 15-30 per wash\/dry<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/figure>\n<p>A well-located 12\u201314 machine store reaching four to five cycles per machine per day generates monthly revenue in the AED 35,000\u201360,000 range against operating costs dominated by rent and utilities \u2014 an operating margin materially better than full-service laundry, because customers supply the labour. The catch is utilisation: a laundromat at two cycles per machine per day loses money in the same premises where five cycles per day is comfortably profitable. Everything in this business is a location decision wearing other names.<\/p>\n<h2>Location: The Decision That Decides Everything<\/h2>\n<ul>\n<li>Walkability radius: customers carry bags; your market lives within 500\u2013800 metres or a short drive with easy parking.<\/li>\n<li>Density and demographics: apartment clusters, shared accommodation, studio-heavy buildings, worker housing edges \u2014 populations without in-unit machines.<\/li>\n<li>Visibility from pedestrian routes: laundromats are discovered on foot far more than online.<\/li>\n<li>Competition check: count full-service laundries within the radius and price their wash-dry-fold; you must undercut meaningfully for self-serve to convert.<\/li>\n<li>Premises physics: ground floor, drainage feasibility, power capacity for a dryer bank, ventilation route, and Municipality-approvable layout. A perfect catchment behind an unventable unit is not a location.<\/li>\n<\/ul>\n<h2>Equipment: Vended-Spec Is Its Own Category<\/h2>\n<p>Laundromat machines are not ordinary commercial machines with a coin box bolted on. Vended-specification washers and dryers are engineered for untrained users and unattended abuse: simplified controls that cannot be misprogrammed, reinforced doors and hinges, out-of-balance protection tuned for badly loaded drums, and payment-system integration in the factory design. Buy hard-mount vended washers in the 10\u201318 kg range for the main bank, one or two 25 kg machines for duvets and family loads (bigger machines carry premium pricing and differentiate against home machines), and stack dryers to save floor area. Every machine standing idle in a laundromat still occupies rent, so capacity mix matters: watch which machines queue and which sit, then rebalance in year two.<\/p>\n<h2>Payments and Remote Management<\/h2>\n<p>Skip coins entirely. Modern UAE laundromats run app and card payment platforms that unlock pricing flexibility (peak\/off-peak rates, bundles, loyalty), remove cash-collection risk and \u2014 critically \u2014 give remote telemetry: live machine status, cycle counts, fault alerts and revenue dashboards on your phone. That telemetry is what makes semi-unattended operation safe: you know within minutes if a machine faults, a door is left open or takings drop. Choose payment platforms already integrated with your machine brand rather than retrofit boxes, and keep one simple card terminal for customers who won&#8217;t install an app.<\/p>\n<h2>Staffing: The Hybrid Reality<\/h2>\n<p>Fully unattended stores exist, but the successful UAE pattern is hybrid: an attendant covering peak hours (evenings, weekends) who keeps the store clean, helps first-time users, runs a wash-dry-fold counter for customers who&#8217;d rather drop off, and deters the misuse that empty stores attract. That wash-dry-fold service matters more than it looks \u2014 it typically adds 20\u201335 percent to revenue using machine hours the self-service crowd doesn&#8217;t fill, and converts busy customers you&#8217;d otherwise lose to full-service competitors. One attendant, two revenue models, same machines.<\/p>\n<h2>Compliance Notes for the UAE<\/h2>\n<ol>\n<li>License the correct activity with DET \u2014 self-service laundry may be listed distinctly from laundry services; confirm with your business-setup consultant.<\/li>\n<li>Dubai Municipality premises approval covers drainage, ventilation and layout before trading.<\/li>\n<li>Civil Defence requirements apply to the dryer bank: detection, extinguishers, and compliant exhaust routing.<\/li>\n<li>Unattended hours need CCTV coverage and clear safety signage; check your insurer&#8217;s requirements \u2014 unattended operation affects premiums and terms.<\/li>\n<li>Tap water is potable municipal supply, but check pressure and consider softening: vended machines dosing fixed detergent amounts perform inconsistently in hard water.<\/li>\n<\/ol>\n<h2>Marketing a Laundromat: Cheaper Than You Think<\/h2>\n<p>Laundromat marketing is hyper-local and mostly free. The storefront itself is the primary channel \u2014 bright, clean, visibly modern interiors convert walkers-by better than any advertisement, which is why glass frontage and evening lighting are worth specifying in fit-out. Beyond that: a Google Business Profile with photos, hours and prices (searches for laundry near me decide dozens of first visits a month); building WhatsApp groups and community boards in your catchment; a simple launch offer such as a free dry with first wash; and loyalty pricing through your payment app. First-time users need hand-holding \u2014 clear multilingual instructions at every machine, and an attendant who teaches rather than watches, turn a confused first visit into a weekly habit. The economics of the business are repeat visits; every element of marketing should aim at the second visit, not the first.<\/p>\n<h2>The First-Year Curve<\/h2>\n<p>Budget for a ramp, not instant utilisation. Typical stores open at one to two cycles per machine per day and build toward maturity over six to twelve months as the catchment discovers the store and habits form. Working capital must carry rent and utilities through that curve \u2014 undercapitalised stores die in month eight in locations that would have thrived by month fourteen. Track weekly cycles per machine, revenue per machine and new-versus-returning payment accounts; if the trend is climbing steadily, hold the course. If it plateaus below three cycles by month nine, the catchment answer was no, and the equipment moves to a better address \u2014 one advantage of this business is that its assets relocate.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>Is a laundromat profitable in Dubai?<\/h3>\n<p>In the right location, yes \u2014 mature stores reaching four-plus cycles per machine per day earn healthy margins because customers provide the labour. The model fails in weak catchments: below roughly two cycles per machine per day, rent consumes the margin. Location analysis before signing a lease is the whole game.<\/p>\n<h3>How much does it cost to open a laundromat in Dubai?<\/h3>\n<p>A realistic all-in for a 12\u201314 machine store \u2014 vended equipment, fit-out, license and working capital \u2014 runs roughly AED 600,000\u2013950,000. Fit-out varies most: drainage, power and ventilation in an unprepared unit can surprise budgets.<\/p>\n<h3>Can laundromats run without staff in the UAE?<\/h3>\n<p>Semi-unattended is the practical model: app payments and telemetry allow unstaffed off-peak hours, with an attendant covering evenings and weekends. Fully unattended operation is possible but check insurance terms, Civil Defence expectations and the realities of untrained users with commercial machines.<\/p>\n<h3>What machines does a laundromat need?<\/h3>\n<p>Vended-specification washers (mostly 10\u201318 kg hard-mount, one or two 25 kg for bulky items) and stacked dryers sized at 1.5\u20132x washer capacity, all integrated with an app\/card payment platform. Vended-spec engineering \u2014 simplified controls, reinforced components \u2014 is essential for unattended use.<\/p>\n<h3>Laundromat or full-service laundry \u2014 which is the better business?<\/h3>\n<p>Different businesses: laundromats trade labour costs for location dependence and higher equipment capex; full-service laundries earn more per kilogram but carry wages and skill requirements. Hybrids \u2014 self-service floor plus wash-dry-fold counter \u2014 capture both and are the strongest UAE format.<\/p>\n<h2>Conclusion<\/h2>\n<p>Dubai&#8217;s laundromat window is real but unforgiving: the model prints money at five cycles per machine per day and burns it at two, and the difference is decided the day you sign the lease. Pick a walkable, dense, machine-less catchment; buy vended-spec equipment with app payments and telemetry; run the hybrid attendant model with a wash-dry-fold counter; and clear Municipality, Civil Defence and insurance requirements before fit-out, not after. Do the location homework honestly and the self-service laundry is one of the most operationally peaceful businesses in the Emirates.<\/p>\n<h2>Ready to Take the Next Step?<\/h2>\n<p>FERO Laundry Systems supplies vended-specification washers and dryers with payment-system integration, store layout design and UAE-wide installation and maintenance. Planning a laundromat? Get a free feasibility consultation and equipment plan at fero.ae.<\/p>\n<p><script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Is a laundromat profitable in Dubai?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In the right location, yes \u2014 mature stores reaching four-plus cycles per machine per day earn healthy margins because customers provide the labour. The model fails in weak catchments: below roughly two cycles per machine per day, rent consumes the margin. Location analysis before signing a lease is the whole game.\"}}, {\"@type\": \"Question\", \"name\": \"How much does it cost to open a laundromat in Dubai?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"A realistic all-in for a 12\u201314 machine store \u2014 vended equipment, fit-out, license and working capital \u2014 runs roughly AED 600,000\u2013950,000. Fit-out varies most: drainage, power and ventilation in an unprepared unit can surprise budgets.\"}}, {\"@type\": \"Question\", \"name\": \"Can laundromats run without staff in the UAE?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Semi-unattended is the practical model: app payments and telemetry allow unstaffed off-peak hours, with an attendant covering evenings and weekends. Fully unattended operation is possible but check insurance terms, Civil Defence expectations and the realities of untrained users with commercial machines.\"}}, {\"@type\": \"Question\", \"name\": \"What machines does a laundromat need?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Vended-specification washers (mostly 10\u201318 kg hard-mount, one or two 25 kg for bulky items) and stacked dryers sized at 1.5\u20132x washer capacity, all integrated with an app\/card payment platform. Vended-spec engineering \u2014 simplified controls, reinforced components \u2014 is essential for unattended use.\"}}, {\"@type\": \"Question\", \"name\": \"Laundromat or full-service laundry \u2014 which is the better business?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Different businesses: laundromats trade labour costs for location dependence and higher equipment capex; full-service laundries earn more per kilogram but carry wages and skill requirements. Hybrids \u2014 self-service floor plus wash-dry-fold counter \u2014 capture both and are the strongest UAE format.\"}}]}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Is a self-service laundromat viable in Dubai? Location rules, equipment, app payments, costs and unit economics of the coin-op laundry model in the UAE.<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[18],"tags":[55,56,54,58,57],"class_list":["post-1472","post","type-post","status-publish","format-standard","hentry","category-laundry-guides","tag-coin-operated-washing-machine-uae","tag-laundromat-setup-cost","tag-self-service-laundry-dubai","tag-unattended-laundry-business","tag-vended-laundry-equipment"],"_links":{"self":[{"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/posts\/1472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/fero.ae\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1472"}],"version-history":[{"count":1,"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/posts\/1472\/revisions"}],"predecessor-version":[{"id":1517,"href":"https:\/\/fero.ae\/index.php?rest_route=\/wp\/v2\/posts\/1472\/revisions\/1517"}],"wp:attachment":[{"href":"https:\/\/fero.ae\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fero.ae\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fero.ae\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<script id="bv-override-listeners">var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var bvPartialDelayJsUrlPatterns=JSON.parse(atob("WyIvcGx1Z2lucy9hbmltYXRlZ2wvanMvZW1iZWQuanMiXQ==")),bvPartialDelayJsInlinePatterns=JSON.parse(atob("W10=")),BV_DEBUG_MODE=!1;function bvDebugLog(...args){BV_DEBUG_MODE&&console.log(...args)}__name(bvDebugLog,"bvDebugLog");var bv_partial_delay_js_url_patterns=typeof bvPartialDelayJsUrlPatterns<"u"&&Array.isArray(bvPartialDelayJsUrlPatterns)?bvPartialDelayJsUrlPatterns:[],bv_partial_delay_js_inline_patterns=typeof bvPartialDelayJsInlinePatterns<"u"&&Array.isArray(bvPartialDelayJsInlinePatterns)?bvPartialDelayJsInlinePatterns:[];function bv_is_script_excluded(scriptElement){if(!scriptElement)return!1;if(scriptElement.hasAttribute("bv-exclude"))return!0;var source=scriptElement.getAttribute("src")||scriptElement.src||"";if(source)return bv_partial_delay_js_url_patterns.some(function(pattern){return pattern&&source.indexOf(pattern)!==-1});var content=scriptElement.textContent||"";return bv_partial_delay_js_inline_patterns.some(function(pattern){return pattern&&content.indexOf(pattern)!==-1})}__name(bv_is_script_excluded,"bv_is_script_excluded");function bv_override_browser_listener(target){var bv_og_add_event_listener=target.addEventListener,bv_og_remove_event_listener=target.removeEventListener;function bv_handle_event_listeners(type,listener,options){var handledEvents=["readystatechange","DOMContentLoaded","load","pageshow"],eventName=type;bv_is_script_excluded(document.currentScript)||(eventName=handledEvents.indexOf(type)!==-1?"Airlift"+type:type),arguments[0]=eventName,bv_og_add_event_listener.apply(target,arguments)}__name(bv_handle_event_listeners,"bv_handle_event_listeners");function bv_handle_remove_event_listener(type,listener,options){var handledEvents=["readystatechange","DOMContentLoaded","load","pageshow"],eventName=type;bv_is_script_excluded(document.currentScript)||(eventName=handledEvents.indexOf(type)!==-1?"Airlift"+type:type),arguments[0]=eventName,bv_og_remove_event_listener.apply(target,arguments)}__name(bv_handle_remove_event_listener,"bv_handle_remove_event_listener"),target.addEventListener=function(type,listener,options){bv_handle_event_listeners(type,listener,options)},target.removeEventListener=function(type,listener,options){bv_handle_remove_event_listener(type,listener,options)}}__name(bv_override_browser_listener,"bv_override_browser_listener"),bv_override_browser_listener(window),bv_override_browser_listener(document);function bv_override_property_listeners(target,eventType){if(!target||typeof target!="object"){console.error("bv_override_property_listeners: Invalid target",target);return}var airliftPropertyName="on"+eventType,existingDescriptor=Object.getOwnPropertyDescriptor(target,airliftPropertyName);if(existingDescriptor&&!existingDescriptor.configurable){console.warn("Cannot override "+airliftPropertyName+": property is not configurable");return}var bv_internalHandler=null,airliftEventName="Airlift"+eventType,bvWrapperFunction=__name(function(e){if(bv_internalHandler)try{bv_internalHandler(e)}catch(error){console.error("Error in "+airliftPropertyName+" handler:",error)}},"bvWrapperFunction");try{Object.defineProperty(target,airliftPropertyName,{get:__name(function(){return bv_internalHandler},"get"),set:__name(function(handler){if(handler!=null&&typeof handler!="function"){console.warn("Invalid handler for "+airliftPropertyName+", ignoring");return}handler?(bv_internalHandler||target.addEventListener(airliftEventName,bvWrapperFunction),bv_internalHandler=handler):(bv_internalHandler=null,target.removeEventListener(airliftEventName,bvWrapperFunction))},"set"),enumerable:!0,configurable:!0})}catch(error){console.error("Failed to override "+airliftPropertyName+":",error)}}__name(bv_override_property_listeners,"bv_override_property_listeners"),bv_override_property_listeners(window,"load"),bv_override_property_listeners(window,"pageshow"),bv_override_property_listeners(document,"DOMContentLoaded"),bv_override_property_listeners(document,"readystatechange");function bv_override_document_write(){var bv_original_write=document.write,bv_original_writeln=document.writeln;function bv_handle_document_write(scriptElement,content){try{if(content==null)return;if(content=String(content),bv_is_script_excluded(scriptElement))return bv_original_write.call(document,content);var container=null;if(scriptElement&&scriptElement.documentWriteContainer?container=scriptElement.documentWriteContainer:(container=document.createElement("span"),scriptElement&&(scriptElement.documentWriteContainer=container,scriptElement.documentWriteBuffer="")),!scriptElement||scriptElement.documentWriteBuffer===void 0)if(scriptElement)scriptElement.documentWriteBuffer="";else return;scriptElement.documentWriteBuffer+=content,scriptElement.flushScheduled||(scriptElement.flushScheduled=!0,Promise.resolve().then(function(){container.insertAdjacentHTML("beforeend",scriptElement.documentWriteBuffer);var tempDiv=document.createElement("span");tempDiv.innerHTML=scriptElement.documentWriteBuffer;var scriptsInContent=tempDiv.querySelectorAll("script");scriptsInContent.length>0&&scriptsInContent.forEach(function(oldScript){try{var newScript=document.createElement("script"),attributes=oldScript.getAttributeNames();attributes.forEach(function(attr){try{newScript.setAttribute(attr,oldScript.getAttribute(attr))}catch{bvDebugLog("Not able to set Attribute:")}}),newScript.async=!1,!oldScript.src&&oldScript.textContent&&(newScript.textContent=oldScript.textContent),newScript.setAttribute("bv-document-write","");var insertPoint2=scriptElement||document.currentScript;setTimeout(function(){try{insertPoint2&&insertPoint2.parentNode?insertPoint2.parentNode.insertBefore(newScript,insertPoint2.nextSibling):document.head&&document.head.appendChild(newScript)}catch(error){console.error("Error inserting document.write script:",error)}},0)}catch(error){console.error("Error processing document.write script:",error)}}),scriptElement.documentWriteBuffer="",scriptElement.flushScheduled=!1}));var insertPoint=scriptElement||document.currentScript;if(!container.parentNode)if(insertPoint&&insertPoint.parentNode)insertPoint.parentNode.insertBefore(container,insertPoint.nextSibling);else if(document.body)document.body.appendChild(container);else{console.warn("document.body not ready for document.write, deferring"),typeof window<"u"&&window.addEventListener("DOMContentLoaded",function(){document.body&&!container.parentNode&&document.body.appendChild(container)});return}}catch(error){console.error("Error in document.write handler:",error);try{bv_original_write.call(document,content)}catch(e){console.error("Fallback document.write also failed:",e)}}}__name(bv_handle_document_write,"bv_handle_document_write"),document.write=function(content){bv_handle_document_write(document.currentScript,content)},document.writeln=function(content){bv_handle_document_write(document.currentScript,content+`
`)}}__name(bv_override_document_write,"bv_override_document_write"),bv_override_document_write();
</script><script id="bv-font-style-lazyload" data-cfasync="false" bv-exclude="true">var bv_font_url = 'https://fero.ae/wp-content/uploads/al_opt_content/CSS//554c9b61f637415fe202dde83c6e8788.css';
function bv_enqueue_font_stylesheet() {
	var link = document.createElement('link');
	link.rel = 'stylesheet';
	link.href = bv_font_url;
	document.head.appendChild(link);
}
window.addEventListener('load', bv_enqueue_font_stylesheet);
</script><script id="bv-rename-images" type="text/javascript" data-cfasync="false" bv-exclude="true">var __defProp=Object.defineProperty;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});const IMAGE_URL_ATTRIBUTES=["data-src","data-lazy-original","data-lazy-src","data-lazysrc","data-lazysrcset","data-lazy-srcset","data-envira-src","data-srcset","bv-data-src","bv-data-srcset","data-large_image","data-depicter-src","data-depicter-srcset","data-orig-src"],IMAGE_EXTENSIONS=["jpg","jpeg","png","gif","svg","jpe","webp","avif"],BV_CDN_URL="",BV_SITE_OPT_PATH="al_opt_content";var BV_IS_RESIZE_ENABLED=!0,BV_IMAGES_NOT_TO_RESIZE=[],BV_IMAGE_OPTIMIZATION_FORMAT="webp";function isValidUrl(url){return!!/^https?:\/\//i.test(url)}__name(isValidUrl,"isValidUrl");function isImage(url){let img_ext=getExtension(url);return!!IMAGE_EXTENSIONS.includes(img_ext)}__name(isImage,"isImage");function getImageDeviceName(resized_infos_str,dimensions){let device_width=window.outerWidth;if(resized_infos_str){const device_size_infos=resized_infos_str.split(";");for(const device_info of device_size_infos){const[device_name,resized_dim]=device_info.split(":"),[width_str,height_str]=resized_dim.split("*"),width=parseInt(width_str,10),height=parseInt(height_str,10);if(dimensions.width<=width&&dimensions.height<=height&&device_width<=width)return device_name}return""}return device_width<=480?"bv_resized_mobile":device_width<=820?"bv_resized_ipad":device_width<=1536?"bv_resized_desktop":""}__name(getImageDeviceName,"getImageDeviceName");function isWebpSupported(){var elem=document.createElement("canvas");return elem.getContext&&elem.getContext("2d")?elem.toDataURL("image/webp").indexOf("data:image/webp")==0:!1}__name(isWebpSupported,"isWebpSupported");function getImageOptimizationFormat(){var format=(BV_IMAGE_OPTIMIZATION_FORMAT||"webp").toLowerCase();return format==="avif"?"avif":"webp"}__name(getImageOptimizationFormat,"getImageOptimizationFormat");function getImageOptimizationSuffix(){return".bv."+getImageOptimizationFormat()}__name(getImageOptimizationSuffix,"getImageOptimizationSuffix");function isAvifSupported(callback){var avif=new Image;avif.onload=function(){callback(avif.width>0&&avif.height>0)},avif.onerror=function(){callback(!1)},avif.src="data:image/avif;base64,AAAAHGZ0eXBhdmlmAAAAAG1pZjFhdmlmbWlhZgAAARdtZXRhAAAAAAAAACFoZGxyAAAAAAAAAABwaWN0AAAAAAAAAAAAAAAAAAAAAA5waXRtAAAAAAABAAAANGlsb2MAAAAAREAAAgABAAAAAAE7AAEAAAAAAAAAGAACAAAAAAFTAAEAAAAAAAAAvgAAADhpaW5mAAAAAAACAAAAFWluZmUCAAAAAAEAAGF2MDEAAAAAFWluZmUCAAABAAIAAEV4aWYAAAAAVmlwcnAAAAA4aXBjbwAAAAxhdjFDgQAMAAAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAABZpcG1hAAAAAAAAAAEAAQOBAgMAAAAaaXJlZgAAAAAAAAAOY2RzYwACAAEAAQAAAN5tZGF0EgAKCBgABggIaDQgMgoYAAAAQAX172ToAAAABkV4aWYAAElJKgAIAAAABgASAQMAAQAAAFYAAAAbAQUAAQAAAF4AAAAoAQMAAQAAAAIAAAATAgMAAQAAAAEAAABphwQAAQAAAGYAAAAAAAAAOGMAAOgDAAA4YwAA6AMAAAYAAJAHAAQAAAAwMjEwAZEHAAQAAAABAgMAAKAHAAQAAAAwMTAwAaADAAEAAAD//wAAAqAEAAEAAAABAAAAA6AEAAEAAAABAAAAAAAAAA=="}__name(isAvifSupported,"isAvifSupported");function getImageOptimizationFormatSupport(callback){getImageOptimizationFormat()==="avif"?isAvifSupported(callback):callback(isWebpSupported())}__name(getImageOptimizationFormatSupport,"getImageOptimizationFormatSupport");function getExtension(url){return url.split("?")[0].split(".").pop().toLowerCase()}__name(getExtension,"getExtension");function getNewImageUrlQuery(url,image_format_status,dimensions){let url_and_query_string=url.split("?"),new_url=url_and_query_string[0],query_string=url_and_query_string[1];if(!image_format_status)return query_string?url_and_query_string[0]+`?${query_string}`:url_and_query_string[0];let params=new URLSearchParams(query_string),resized_infos=params.get("bv-resized-infos");params.delete("bv-resized-infos"),query_string=params.toString();var shouldResize=BV_IS_RESIZE_ENABLED&&!BV_IMAGES_NOT_TO_RESIZE.some(pattern=>new_url.includes(pattern));if(shouldResize){let device_name=getImageDeviceName(resized_infos,dimensions),img_ext=getExtension(new_url);device_name!=""&&(new_url+="."+device_name+"."+img_ext)}return new_url+=getImageOptimizationSuffix(),query_string&&(new_url+=`?${query_string}`),new_url}__name(getNewImageUrlQuery,"getNewImageUrlQuery");function isOurCdnImage(url){const hasCdnUrl=typeof BV_CDN_URL=="string"&&BV_CDN_URL.length>0,hasSiteOptPath=typeof BV_SITE_OPT_PATH=="string"&&BV_SITE_OPT_PATH.length>0;return!!(hasCdnUrl&&url.includes(BV_CDN_URL)||hasSiteOptPath&&url.includes(BV_SITE_OPT_PATH))}__name(isOurCdnImage,"isOurCdnImage");function canChangeUrl(url){return getExtension(url)==="svg"||url.includes("data:image")?!1:!!isOurCdnImage(url)}__name(canChangeUrl,"canChangeUrl");function handleNodeElements(node_elements,img_url_attrs,webp_status){node_elements.forEach(node_element=>{img_url_attrs.forEach(attr=>{flag=!1,node_element.hasAttribute(attr)&&(attr_val=node_element.getAttribute(attr),new_val="",attr_val.split(",").forEach(src=>{let src_parts=src.trim().split(" "),clean_url=src_parts.shift();if(flag?new_val+=",":flag=!0,isValidUrl(clean_url)&&isImage(clean_url))if(canChangeUrl(clean_url)){let new_url=getNewImageUrlQuery(clean_url,webp_status,node_element.getBoundingClientRect());new_val+=[new_url].concat(src_parts).join(" ")}else new_val+=src;else new_val+=src}),node_element.setAttribute(attr,new_val))})})}__name(handleNodeElements,"handleNodeElements");function handleTagWithStyle(tag_elements_with_style,webp_status){tag_elements_with_style.forEach(tag_element=>{let img_url=tag_element.getAttribute("bv-style-url");if(img_url&&isValidUrl(img_url)&&isImage(img_url)&&canChangeUrl(img_url)){let new_img_url=getNewImageUrlQuery(img_url,webp_status,tag_element.getBoundingClientRect()),style_attr_val=tag_element.getAttribute("bv-data-style");style_attr_val&&(new_style_val=style_attr_val.replace(img_url,new_img_url),tag_element.setAttribute("bv-data-style",new_style_val))}})}__name(handleTagWithStyle,"handleTagWithStyle"),getImageOptimizationFormatSupport(function(image_format_status){let img_tags=document.querySelectorAll(".bv-tag-attr-replace");handleNodeElements(img_tags,IMAGE_URL_ATTRIBUTES,image_format_status);let tag_elements_with_style=document.querySelectorAll(".bv-style-attr-replace");handleTagWithStyle(tag_elements_with_style,image_format_status)});
</script>



<template id=d6fe9c24159ed4a27d224d91c70f8fdc></template>

<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 6a8af544db888a42568ba255. Config Timestamp: 2026-08-23 13:27:31 UTC, Cached Timestamp: 2026-08-24 15:00:27 UTC, Optimization Time: 14.28ms, Asset Normalization Time: 0ms -->