<p>In the high-stakes economy of today, the cost of a friction-heavy interface is no longer just “lost clicks”, but potentially millions in wasted engineering spend and lost business value. As a veteran UX designer who has helped build digital products since the early mobile-first era, I’ve watched business leaders shift from viewing design as a “cosmetic preference” to recognising that user experience is actually the primary engine of business survival. </p>
<p>A UX design role is as much about <strong>research</strong> and <strong>analytics</strong> as it is about pixels, and I believe that hard data is the only tool powerful enough to bridge the gap between design and the boardroom. Facts don’t just advocate for the user; they prove that UX is a <strong>non-negotiable requirement</strong> for a healthy bottom line. Even in the rooms where decisions are made, UX is frequently undervalued as a ‘visual’ role. I’ve learned that the most effective way to dismantle this myth is through <strong>data</strong>. </p>
<p>The following ten facts represent the current reality of the digital world. These are not just “design tips”; they are the clinical, data-backed pillars for financial growth in a saturated market. Some of these facts are also commonly used by designers as best practices. </p>
<p>For example, I once led a B2C mobile design project, where I was able to strip 1.2 seconds off the mobile load time by reducing and removing some of the visual assets. The result was an immediate 12% lift in completed transactions, proving that in UX, every tenth of a second is a direct lever for revenue. </p>
1. Fixing Issues In The Design Phase Is 100 Times Cheaper
<p>One of the most compelling financial arguments for UX is the <strong>1:100 rule</strong>. Modern studies, such as from the <a href="https://www.researchgate.net/figure/BM-System-Science-Institute-Relative-Cost-of-Fixing-Defects_fig1_255965523">IBM Systems Institute</a> and <a href="https://www.seguetech.com/rising-costs-defects/">Sugue Technologies</a>, show that fixing an error after a product has been developed and launched can be <strong>up to 100 times more expensive</strong> than fixing it during the initial design and prototyping phase.</p>
<p>Think of UX as “engineering insurance.” By the time a developer touches the code, every interaction should have been validated. If you discover a fundamental navigation flaw after launch, <a href="https://www.linkedin.com/pulse/2024-cost-fixing-defects-importance-acceptance-a-j-karikari-a10ef/">you aren’t just paying for the fix</a>; you’re paying for technical debt, lost developer time, and the revenue lost while users struggle with a broken flow.</p>
<p><img src="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/1-cost-bug-fixing.png"></p>
2. Performance Impacts User Experience
<p>In the current landscape, performance is the essential foundation of user experience. A beautiful interface is worthless if the user bounces before it renders. <a href="https://www.wearetenet.com/blog/website-speed-page-load-time-statistics">The data is uncompromising</a>: <strong>47% of users expect a page to load in two seconds or less</strong>, and missing this window is a financial catastrophe. A mere one-second delay can reduce conversions by <strong>20%</strong> and satisfaction by <strong>16%</strong>, while retail businesses lose an estimated <strong>$2.6 billion annually</strong> to slow load times. When mobile load time moves from one to three seconds, the bounce rate spikes by <strong>32%</strong>, and by the third second, conversion rates typically plummet from <strong>40% to 29%</strong>.</p>
<p>However, this volatility offers a massive lever for growth. Even a microscopic <strong>0.1-second improvement</strong> can lift retail conversions by <strong>8.4%</strong>, and travel site conversions by <strong>10.1%</strong>. Improving your Largest Contentful Paint (LCP) by 31% — a benchmark 67% of websites achieved as of June 2025 — can drive a direct <strong>8% increase in sales</strong>. As a long-time designer, I treat speed as a primary design element.</p>
<blockquote>If the site isn’t instantaneous, the design hasn’t just failed — it effectively doesn’t exist.</blockquote>
<p><img src="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/2-conversion-rate-page-load-time.png"></p>
3. Your Site Has 50 Milliseconds to Impress Your Customers
<p>First impressions are both <a href="https://www.nngroup.com/articles/first-impressions-human-automaticity/">visceral and aesthetic</a>. <a href="https://cxl.com/blog/first-impressions-matter-the-importance-of-great-visual-design/">Research</a> indicates that users form an opinion about a website’s visual appeal in approximately <strong>50 milliseconds</strong> (0.05 seconds). That’s not a lot of time! This split-second “gut-feeling” is a survival mechanism that dictates whether a user stays to explore your value proposition or bounces immediately.</p>
<p>In the current market, <strong>94% of first impressions</strong> are <a href="https://cxl.com/blog/first-impressions-matter-the-importance-of-great-visual-design/">strictly design related</a>. If your interface feels “off” or dated, users subconsciously project that lack of quality onto your entire product or service. Your content effectively doesn’t exist if your design hasn’t earned the five seconds of attention required to read it.</p>
4. Hick’s Law: The Cost of Overwhelm
<p>Stakeholders often think “more options” equals “more value.” Psychology proves the opposite. <a href="https://ixdf.org/literature/article/hick-s-law-making-the-choice-easier-for-users">Hick’s Law</a> states that the time it takes to make a decision increases with the number of options available.</p>
<p>Every extra menu item or form field is a “tax” on the user’s brain. As noted by <a href="https://www.landbase.com/blog/conversion-rate-statistics">Landbase</a>, top-performing sites now achieve conversion rates exceeding 11%, while average performers struggle below 3%. Those performing well have applied personalization and optimization strategies to simplify the experience.</p>
<blockquote>If you want to increase your revenue by tomorrow, find one field to delete from your checkout flow today.</blockquote>
<p><img src="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/3-complex-choices-vs-simple.png"></p>
5. White Space Improves Comprehension
<p>“White space” is often viewed as wasted real estate by non-designers. In reality, it is a tool for focus. Strategic use of white space can <a href="https://www.loop11.com/the-power-of-white-space-in-ux-design/">increase a user’s content comprehension by up to <strong>20%</strong></a>.</p>
<p>White space prevents “cognitive load” from peaking. By giving the user’s eyes a place to rest, you guide them toward the most important elements, usually your “Buy” or “Sign Up” button. In 2026, as attention spans have dropped to roughly <strong><a href="https://time.com/3858309/attention-spans-goldfish/">8 seconds</a></strong>, simplicity is the ultimate luxury and a major driver of engagement.</p>
<p>For example, in a fintech dashboard I worked on, analyst users were feeling overwhelmed by a ‘data dump’ layout in some of the dashboard components. I applied more white space around the data to lower their cognitive load. Simply giving the data room to breathe led to a 25% decrease in time-on-task and a significant boost in trial-to-paid conversions. </p>
6. The Power Of “Fake” Progress
<p>One of the most surprising psychological hacks in UX is that users will complete a task faster if they believe they have already made progress. This is known as the <strong>Goal Gradient Effect</strong>.</p>
<p>In a classic study, researchers found that a 10-stamp coffee card with two stamps already “pre-filled” was completed significantly faster than an 8-stamp card with zero pre-fills, even though the total spend required was identical. In digital design, showing a progress bar that starts at 15% (simply for creating an account) <a href="https://lawsofux.com/goal-gradient-effect/">increases completion rates for onboarding by over 40%</a>. We aren’t just designing screens — we are managing the user’s dopamine and sense of momentum.</p>
<p><img src="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/4-goal-gradient-effect.png"></p>
7. Make Your Content Readable
<p>Many stakeholders believe that cramming more text “above the fold” increases value. <a href="https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation.html">Data proves the opposite</a>. Proper typography, specifically line spacing (leading) and paragraph width, can increase content comprehension and reading speed by up to <strong>20%</strong>.</p>
<p>Optimal line height (generally 1.5x the font size) reduces “visual noise,” allowing the brain to process information with less cognitive effort. When users struggle to read your text due to tight spacing or small fonts, their “perceived effort” increases, leading to a higher bounce rate. Legibility is a conversion tool: if it’s hard to read, it’s hard to buy.</p>
<p>There are many ways to display more legible text. For example, if line spacing (leading) is too small or the font is too heavy, this also impacts readability.</p>
<p><img src="https://files.smashing.media/articles/data-backed-truths-user-experience-roi/5-difference-readability.png"></p>
8. Your Users Only Read 20% of Your Content
<p>This truth meshes well with the previous one. Users do not read your website; <a href="https://www.nngroup.com/articles/how-users-read-on-the-web/">they scan it</a>. On a typical web page, users read only about <strong>20% to 28% of the text</strong>.</p>
<p>Because modern users scan in an <strong>F-pattern</strong> or <strong>Spotted pattern</strong>, designing for reading is a tactical error. We must design for scanning. </p>
<p>This requires the following:</p>
<ul>
<li>Bold headers that narrate the value proposition.</li>
<li>Bullet points for key benefits.</li>
<li>White space to connect users to key information (discussed in the previous truth).</li>
<li>High-contrast call-to-action (CTA) buttons. If your core message is buried in a paragraph, it is invisible to nearly 80% of your audience.</li>
</ul>
9. Why User Testing With 5 People Is the Magic Number
<p>I have heard of companies that waste six-figure budgets on massive user studies with 100 people, only to get buried in noise. The reality is that testing with just <strong>5 users</strong> typically uncovers <strong>85% of usability problems</strong>.</p>
<p>This is a mathematical sweet spot. After the fifth user, you reach the point of diminishing returns — you spend more money to find fewer new bugs. The competitive advantage belongs to small and frequent user testing activities. Test with 5 people, iterate, and test with 5 more. It is the <a href="https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/">most cost-effective way</a> to build a bulletproof product.</p>
<p>Personally, I have followed this guideline many times during user testing activities, and I can confidently say that testing with 5 people does deliver the majority of issues in your design. </p>
10. The Financial ROI of 9,900%
<p>Last, but definitely not least, the most staggering statistic in our industry remains consistent. On average, every <strong>$1 invested in UX returns $100</strong>. This 9,900% ROI isn’t magic, but the sum of increased conversion and reduced support.</p>
<p>A fully optimised UX design can <a href="https://www.forrester.com/report/The-Six-Steps-For-Justifying-Better-UX/RES117708">improve conversion rates by up to <strong>400%</strong></a>. Furthermore, intuitive design significantly lowers customer support requirements. When a product is self-explanatory, you don’t need a massive call centre to explain how to use it.</p>
The Depth of UX Investment
<p>Beyond these individual statistics, we must address the cumulative effect of a mature UX practice. In my years of practising, the most successful firms are those that treat UX as a continuous improvement loop rather than a one-off project. <a href="https://www.mckinsey.com/business-functions/mckinsey-design/our-insights/the-business-value-of-design">The data shows</a> that companies with high design maturity see <strong>32% higher revenue growth</strong> and <strong>56% higher total returns to shareholders</strong> compared to their less design-focused peers.</p>
<p>This discrepancy exists because mature UX organisations move beyond “user delight” and into “user efficiency.” When you shave 30 seconds off a workflow for a team of 1,000 employees, you aren’t just making them happier; you are reclaiming hundreds of thousands of dollars in annual productivity. This internal ROI is often overlooked, but it is just as vital as consumer-facing conversion rates.</p>
<p>Furthermore, the “experience gap” is real. <a href="https://www.bain.com/insights/keeping-up-with-your-customers">80% of companies</a> believe they deliver a “superior experience,” but only 8% of customers agree. This massive disconnect represents a significant market opportunity for those willing to look at the hard data. By bridging this gap through continuous user testing and performance optimisation, you aren’t just improving a product but capturing market share that your competitors are leaving on the table.</p>
The Impact of AI
<p>Today, we cannot talk about UX without talking about AI. However, AI hasn’t replaced these 10 facts, but <a href="https://business.adobe.com/au/resources/sdk/the-state-of-customer-experience-in-an-ai-driven-world-b2c.html">it has accelerated the solution on some of these</a>.</p>
<ul>
<li>
<strong>Agentic UX</strong><br><a href="https://www.databricks.com/resources/ebook/state-of-ai-agents">60% of designers are now building “AI agents”</a> that take actions on behalf of the user, drastically reducing the impact of <strong>Hick’s Law</strong> by narrowing down choices before the user even sees them.</li>
<li>
<strong>Real-Time Personalisation</strong><br>32% of teams use AI to personalise interfaces in real-time, meaning the <strong>F-Pattern scanning</strong> habits are catered to by moving the most relevant content to exactly where that specific user’s eyes are likely to land.</li>
<li>
<strong>Automated ROI</strong><br>93% of designers are using generative AI tools to prototype faster, which brings the <strong>1:100 Cost Ratio</strong> even lower by allowing us to find and fix errors before a single line of production code is written.</li>
</ul>
<p>AI has turned UX from a static map into a living, breathing guide for users. But the fundamental rules of human psychology, such as our 50ms judgments and our need for white space, remain unchanged.</p>
Conclusion
<p>In summary, here is a list of the key truths to remember:</p>
<ol>
<li>Fixing issues in the design phase is 100 times cheaper.</li>
<li>Performance impacts user experience.</li>
<li>Your site has 50 milliseconds to impress your customers.</li>
<li>Hick’s Law: The cost of overwhelm.</li>
<li>White space improves comprehension.</li>
<li>The power of “fake” progress.</li>
<li>Make your content readable.</li>
<li>Your users only read 20% of your content.</li>
<li>Why user testing with 5 people is the magic number.</li>
<li>The financial ROI of 9,900%.</li>
</ol>
<p>As we move deeper into the late 2020s, the line between “design” and “business strategy” has vanished. The data is in, and <a href="https://www.mckinsey.com/business-functions/mckinsey-design/our-insights/the-business-value-of-design">companies that lead in design outperform their competitors</a> by <strong>1.7x in revenue growth</strong>.</p>
<p>UX design is no longer a team you hire to “make things look nice.” It is the research-driven, data-backed discipline that ensures your digital product isn’t just a cost centre, but a revenue-generating machine.</p>
<p>In fact, this has always been the case, but I hope that in presenting these cold, hard truths, it now becomes a reality for your business.</p>
<p>As I have found over the years, implementing factual design improvements does make a difference that intuition alone can’t replicate. We are past the era of subjective opinions. The data is clear, the psychology is proven, and the ROI is undeniable. The only question left is whether you’re ready to let the facts lead your design, or if you’ll let your competitors do it first. </p>
<h3>Further Reading On SmashingMag</h3>
<ul>
<li>“<a href="https://www.smashingmagazine.com/2025/02/human-element-using-research-psychology-elevate-data-storytelling/">The Human Element: Using Research And Psychology To Elevate Data Storytelling</a>”, Victor Yocco & Angelica Lo Duca</li>
<li>“<a href="https://www.smashingmagazine.com/2025/10/ai-ux-achieve-more-with-less/">AI In UX: Achieve More With Less</a>”, Paul Boag</li>
<li>“<a href="https://www.smashingmagazine.com/2025/11/practical-guide-ux-strategy/">Six Key Components of UX Strategy</a>”, Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2024/07/designing-sustainable-e-commerce-experiences/">When Friction Is A Good Thing: Designing Sustainable E-Commerce Experiences</a>”, Anna Rátkai</li>
</ul>
<p>In the <a href="https://www.smashingmagazine.com/2026/04/identifying-necessary-transparency-moments-agentic-ai-part1/">first part of this series</a>, we talked about the <strong>Decision Node Audit</strong>. We mapped out the internal workings of our AI system to pinpoint the exact moments it makes decisions based on probabilities. This told us when the system needs to be transparent with the user. Now, the big question is <em>how</em> to share that information.</p>
<p>You’ve got your <strong>Transparency Matrix</strong> ready. You know which behind-the-scenes API calls need a visible status update. Your engineers are on board with the technical aspects. The next step is designing the visual container for those updates.</p>
<p>We face a legacy problem. For thirty years, interface designers have relied on a single pattern to handle latency: <strong>the spinner</strong>. The spinning wheel, the throbber, the progress bar. These patterns communicate a specific technical reality. They tell the user that the system is retrieving data. The delay is caused by bandwidth or file size.</p>
<p>AI agents introduce a new kind of wait time. When an agent pauses for twenty seconds, it’s not just downloading something; it’s <em>thinking</em>. It’s figuring out the best steps, weighing options, and creating the content you asked for.</p>
<p>If we use a basic spinning icon for this “thinking time,” users get confused and anxious. They watch a looping animation and can’t tell if the system is stalled or crashed. They don’t know if the agent is handling a very complicated task or if it has simply failed.</p>
<p>To build user trust, we need to turn this waiting time into a <strong>moment for reassurance</strong>. Instead of a passive <em>“something is happening,”</em> we need to communicate an active, <em>“Here is exactly how I am working to solve your problem.”</em></p>
Writing Clear Status Updates
<p>We often think of transparency as a visual design problem, but it’s really about the <strong>words</strong> we use. Simple, clear explanations (the microcopy) are what build trust and separate a reliable AI from one that feels broken.</p>
<p>We need to retire generic placeholders like <em>Loading</em> or <em>Working</em>. These words are remnants of the era of static software. Instead, we must construct our status updates using a specific formula that mirrors the agency of the system. Let’s stop using vague words like “Loading” or “Working.” Those terms belong to the past, when software was simple and static. Instead, we should create status updates that clearly tell the user what the system is <em>actually doing</em> and make the system’s actions transparent.</p>
<p>Imagine, for the sake of an example, you are deploying agentic AI that will help team members organize their calendars and plan recurring meetings on their behalf, once prompted.</p>
<p>When an AI displays a message like “Checking availability” for an unknown amount of time, users often feel lost because it doesn’t offer enough information. While they understand the AI is looking at a calendar, they don’t know <em>whose</em> calendar it is, what other steps are involved (before or after), or if the AI even remembered the people and purpose of the scheduling request. Waiting for the final result can be a tense, uneasy experience, like anticipating a gift that you suspect might be a prank.</p>
<p>Perplexity AI provides a strong example of doing status updates right. Figure 1 below shows that when users ask a question, the interface displays exactly what it is doing in real time. You see a list of activities updating as they are accomplished. Users do not need to guess what is happening as the AI works.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/1-perplexity-ai.png"></p>
The Agentic Update Formula
<p>To give people useful status updates, we need to connect what the system is <em>doing</em> with <em>why</em> it’s doing it. Keeping with our scheduling agent example, the system should break down that waiting period into at least four clear, separate steps.</p>
<ul>
<li>First, the interface displays <em>Checking your calendar to find open times for a recurring Thursday call with [Name(s)]</em>. </li>
<li>Then, it updates to: <em>Cross-checking availability with [Name(s)] calendars</em>.</li>
<li>Next, it might display: <em>Syncing [Name(s)] schedules to secure your meeting time on [Data and Time]</em>. </li>
<li>Finally, at the conclusion, the agent might state they have successfully completed the task and request the user check their email to confirm the invite that’s been shared with the group having the recurring meeting. </li>
</ul>
<p>This communication process grounds the technical process in the user’s actual life.</p>
<p>Making an AI’s progress easy to understand boils down to a three-part structure: a strong <strong>Action Word</strong>, what the AI is working on (the <strong>Specific Item</strong>), and any <strong>Limits</strong> or rules it has to follow.</p>
<p>Think about an AI helping you book a trip. A weak, unhelpful update would just be: <em>Searching for flights...</em></p>
<p>A much better update uses the formula:</p>
<ul>
<li>
<strong>Action Word:</strong> <em>Scanning</em>
</li>
<li>
<strong>Specific Item:</strong> <em>the prices on Lufthansa and United</em>
</li>
<li>
<strong>Limits/Rules:</strong> <em>to find anything under $600.</em>
</li>
</ul>
<p>This approach clearly shows the user that the AI understood their request and is working within the set boundaries.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/2-agentic-ai-status-update.png"></p>
Matching Tone to the Risk Matrix
<p>Should an AI sound like a person or act like a robot? The right answer depends on the task’s importance, which we can figure out using the <strong>Impact/Risk Matrix</strong> from our <strong>Decision Node Audit</strong>.</p>
<p>For simple, low-risk tasks, a friendly, conversational tone works best. For example, a scheduling assistant can say it’s checking your calendar for the best time. This creates a comfortable, easygoing experience for the user.</p>
<p>However, high-stakes tasks demand clear, mechanical accuracy. If the AI is managing a big financial transfer or a complicated database migration, users don’t want a playful interface; they want precision. A screen that says <em>“I am thinking hard about your money”</em> would possibly cause panic. Instead, the interface should use straightforward language like <em>“Verifying account routing numbers.”</em> By adjusting the AI’s “personality” to match the level of risk, we give users exactly the experience they need in that moment. While the Impact/Risk Matrix provides a necessary starting point, the ultimate determinant of the appropriate AI voice and tone is rigorous <strong>user research</strong>. </p>
<p>It’s impossible for any set of rules to predict the exact words or tone that will build trust or cause stress for every group of users or in every situation. That’s why hands-on research is essential. You need to:</p>
<ul>
<li>
<strong><a href="https://medium.com/@alienoghli/the-essential-guide-to-a-b-testing-a84b853c16e0">Run A/B tests</a></strong> on different ways the AI “talks” to people.</li>
<li>
<strong><a href="https://uxplanet.org/usability-testing-the-complete-guide-e162898f68db">Conduct usability studies</a></strong> to see how users react emotionally to the system’s messages.</li>
<li>
<strong><a href="https://ixdf.org/literature/article/how-to-conduct-user-interviews">Perform interviews</a></strong> to truly understand what users expect from an AI in terms of openness.</li>
</ul>
<p>This kind of research ensures the AI’s “personality” is comfortable and appropriate for the actual people who will be using the system in their specific context.</p>
<p>We’ve now covered the <em>“what”</em> — the critical microcopy, the clear action words, and the necessary limits that make an AI status update honest and informative. But words alone aren’t enough. A perfect sentence hidden in a poor interface is still a failure of transparency.</p>
<p>The next challenge is the <em>“how”</em> — designing the physical delivery system for that message. You can think of the status update formula as the engine, and the interface pattern as the car. A powerful engine needs a reliable, well-designed chassis to carry it down the road.</p>
Interface Patterns: A Library For Agents
<p>Once we have the right words, we need <strong>the right container</strong>. The key is matching the message’s weight to the pattern’s visibility. A tiny background task (like an agent gently tidying up your files) doesn’t need a loud, flashing banner. That message is best delivered subtly. A high-stakes, multi-step process (like moving money) potentially demands a more robust container that forces the user to pay attention. </p>
<p>By creating a library of these patterns, we ensure the right level of transparency is delivered at the right moment, turning the anxiety of waiting into a moment of informed confidence. Let’s review a few common, critical patterns.</p>
<h3>The Living Breadcrumb: AI Working in the Background</h3>
<p>For those low-importance tasks that an AI is handling quietly in the background, we need a way to show users it’s working without constantly distracting them. We can call this the living breadcrumb.</p>
<p>Think of an email app where an AI is drafting a reply for you. You don’t want a disruptive pop-up message. Instead, a small, subtle status indicator pulses within the application’s border or menu area.</p>
<p>The solution needs to go beyond a static icon. The living breadcrumb smoothly transitions between different text updates. It might pulse from <em>Reading email</em> to <em>Drafting reply</em> to <em>Checking tone</em>. It’s there if you want to check on its progress, offering a quiet assurance that the task is underway, but it won’t demand your immediate attention.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/3-living-breadcrumb.jpg"></p>
<h3>Dynamic Checklists</h3>
<p>When dealing with critical, high-stakes tasks — like processing a complex financial transaction or migrating a large, intricate dataset — we recommend using a <strong>Dynamic Checklist</strong> (illustrated in Figure 3).</p>
<p>This pattern serves as a powerful anchor for the user, providing clarity and confidence about the <strong>process’s progress</strong>. Instead of a simple bar, the Dynamic Checklist lays out every planned step the AI agent will take. It clearly highlights the step that is currently in progress, marks preceding steps as complete, and lists future actions as pending.</p>
<p>For example:</p>
<ul>
<li>
<strong>Step 1</strong>: Verify Account Balance <strong>[Complete]</strong>.</li>
<li>
<strong>Step 2</strong>: Convert Currency <strong>[Processing]</strong>.</li>
<li>
<strong>Step 3</strong>: Transfer Funds <strong>[Pending]</strong>.</li>
</ul>
<p>The Dynamic Checklist offers a significant advantage over a traditional progress bar because it expertly manages unpredictable time. If the currency conversion (Step 2) unexpectedly requires an extra ten seconds, the user won’t feel sudden anxiety or panic. They have full visibility into the system’s exact location, understanding that the delay is occurring during the <em>Converting Currency</em> step. Because they recognize this is a potentially complex action, they are naturally more patient and trusting of the system’s ongoing work.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/4-devin-ai.png"></p>
<p>The pattern itself is a compelling UI idea, but designers must remember that its implementation transforms the task into a full-stack design requirement. Unlike a simple loading flag, the dynamic checklist requires a robust front-end state management system to listen for step-completion events, which are typically triggered by a back-end webhook structure. This ensures the interface is always reflecting the agent’s real-time position in the workflow.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/5-dynamic-checklist.jpg"></p>
<h3>The Thinking Toggle</h3>
<p>Some users with higher information needs or higher needs for transparency may not trust a simple summary; they want to see the system’s raw processing. For this audience, we’ve designed the <strong>Thinking Toggle</strong>.</p>
<p>This is a simple progressive disclosure UI control, like a chevron or a “View Logs” button, that lets the user expand a friendly status update into a raw terminal view. It displays the sanitized logic logs of the AI agent, such as:</p>
<ul>
<li>
<em>Querying API endpoint /v2/search</em>;</li>
<li>
<em>Response received: 200 OK</em>;</li>
<li>
<em>Filtering results by relevance score > 0.8</em>.</li>
</ul>
<p>Many people will never open this view. However, for the user who needs deep transparency, the very presence of this toggle is a signal of trust. It reassures them that the system is not concealing anything.</p>
<p>Keep in mind, with this deep transparency comes a critical technical risk. Even for your most expert audience, you must sanitize and abstract these raw logs before display. This step is non-negotiable to prevent accidentally exposing proprietary business logic, internal data structure names, or security tokens that could be exploited. This process ensures trust is built through honesty, not security vulnerability.</p>
<h3>Designing For Partial Success</h3>
<p>In standard software, things are often black or white. A file either saves or it doesn’t. But with AI agents, things are often grey. An agent might plan most of a trip perfectly, yet struggle to book that one special restaurant.</p>
<p>We need to design for when the AI is mostly successful.</p>
<p>Standard binary (yes or no) error messages are trust-killers because they suggest the AI failed completely. If an agent does 90% of a task and only misses the last 10%, a big red “Request Failed” banner is misleading.</p>
<p>Instead, the interface should clearly show what worked and what didn’t:</p>
<ul>
<li>
<em>Flight booked: UA 492</em> [Success].</li>
<li>
<em>Hotel reserved: Marriott Downtown</em> [Success].</li>
<li>
<em>Car rental: Hertz</em> [Failed — No inventory].</li>
</ul>
<p>This way, you only have to step in and fix the parts that failed, like booking the car yourself, while keeping all the good work the agent already did.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/6-designing-partial-success.jpg"></p>
<h3>Disentangling The Tool</h3>
<p>When an AI system doesn’t perform as expected, it’s crucial to be absolutely clear about the true reason for the failure. Users often mistakenly blame the AI itself for problems that are actually caused by an external service or tool the AI relies on.</p>
<p>For example, imagine a virtual assistant tries to look at your schedule, but the connection to the Google Calendar API is down. The error message shouldn’t make the assistant look like it failed to do its job.</p>
<ul>
<li>
<strong>Less helpful:</strong> <em>“I could not check your calendar.”</em> (This suggests the assistant is incompetent.)</li>
<li>
<strong>More helpful and honest:</strong> <em>“The Google Calendar connection is not responding. I will automatically try again in 30 seconds.”</em>
</li>
</ul>
<p>The first message is frustrating because it makes the AI look like it failed. The second message, though, is much clearer. It explains that the AI is capable, but a broken tool outside its control is causing the issue. This distinction is really important because it keeps the user from losing faith in the AI, even when things go wrong.</p>
<h3>The Audit Trail: Trust After The Fact</h3>
<p>Real-time transparency is fleeting. If a user walks away from their desk while the agent is working, they miss the Dynamic Checklist. They return to a finished screen. If the result looks odd, they have no way to verify the work. This is why every agentic workflow requires a persistent Audit Trail.</p>
<p>We need to design a <em>Show Work</em> interaction. On the final result screen, provide a link or history log that allows the user to replay the decision logic.</p>
<ul>
<li>
<em>See how this price was calculated</em>;</li>
<li>
<em>View search sources</em>.</li>
</ul>
<p>This receipt is the ultimate safety net. It allows the user to spot-check the validity of the output. Even if they never click it, the mere presence of the receipt tells the user that the system stands behind its work.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/7-audit-trail-design-pattern.jpg"></p>
<p>ChatGPT provides an example of how now providing users with an easy way to audit the information AI uses can cause confusion or user frustration. ChatGPT remembers you in the way a file cabinet quietly fills up with notes about everything you’ve ever said, then uses those notes to shape every future conversation without telling you. This is called memory. According to developer <a href="https://simonwillison.net/2025/May/21/chatgpt-new-memory/">Simon Willison</a>, in April 2025, that memory was getting fed into every new conversation automatically.</p>
<p>The problem with ChatGPT’s memory at that time was that you couldn’t see what it remembers, or when it’s using that information, or how it’s influencing what you get back. There’s no log. No timeline. No plain-language list of <em>“here’s what the AI has decided about you.”</em></p>
<p>The only way to glimpse the dossier was to know a specific prompt trick — essentially asking the model to quote its own hidden instructions back to you. Most users will never discover this. They’ll just notice, as Willison did, that ChatGPT placed a “Half Moon Bay” sign in the background of an image they generated (Figure 8) because it had silently cross-referenced their location from previous conversations. This is the absence of transparency (the ability to audit the memory with ease) disguised as personalization. You need to provide users with both.</p>
<p><img src="https://files.smashing.media/articles/practical-interface-patterns-ai-transparency/8-chatgpt-output.png"></p>
<p><strong>The Audit Trail pattern</strong> is the ultimate solution to the memory audit problem demonstrated by ChatGPT. It is one of four core design solutions that, together, create a library of options for improving AI transparency.</p>
<p>Here is a quick summary of the key interface patterns discussed in this article, which are designed to transform AI waiting time from a moment of anxiety into an opportunity to build user confidence:</p>
<table>
<thead><tr>
<th>Pattern</th>
<th>Best Use Case</th>
<th>The User’s Anxiety</th>
<th>The Trust Signal</th>
</tr></thead>
<tbody>
<tr>
<td>The Living Breadcrumb</td>
<td>Low-stakes, background tasks (e.g., drafting emails, sorting files).</td>
<td>Did the system stall or freeze?</td>
<td>I am active, but I won't disturb you.</td>
</tr>
<tr>
<td>The Dynamic Checklist</td>
<td>High-stakes workflows with variable time (e.g., financial transfers, booking travel).</td>
<td>Is it stuck? What step is taking so long?</td>
<td>I have a plan, and I am currently executing Step 2.</td>
</tr>
<tr>
<td>The Thinking Toggle</td>
<td>Expert tools or complex data analysis (e.g., code generation, market research).</td>
<td>Is this hallucinating or using real data?</td>
<td>I have nothing to hide; here are my raw logs.</td>
</tr>
<tr>
<td>The Audit Trail</td>
<td>Post-task review for any outcome (e.g., final reports, completed bookings).</td>
<td>How do I know this result is accurate?</td>
<td>Here is the receipt of my work for you to verify.</td>
</tr>
</tbody>
</table>
<p><strong><em>Table 1:</em></strong> <em>Four design patterns enhancing transparency.</em></p>
<h3>The Reality of Attention: When Users Ignore the Interface</h3>
<p>Even the most perfectly designed checklist or the clearest status message may still go ignored by many users.</p>
<p>When people are working on tons of tasks, especially professionals, they often tune out the interface. Think of an insurance underwriter creating fifty quotes a day — they’re not watching a progress bar. They click “Generate,” switch tabs to answer an email, and only come back when the task is done.</p>
<p>My research with these experts shows they judge the system based entirely on the final result. They have a good idea of what the answer <em>should</em> be. If a salesperson expects a premium between $500 and $600, and the system returns $550, they accept it right away, and trust is established. </p>
<p>These experts tell me that over time, as the AI continues to provide what they perceive as accurate outputs, usage will increase, and they will save time versus manual quoting. Essentially, the system is now viewed as an efficient accelerator of an otherwise monotonous yet mandatory task.</p>
<p>But if the system returns $900, the user stops. The output is not aligned with expectations, and that’s a problem they must solve. At that moment, the user switched tabs; they missed the little explanation about the high-risk surcharge that popped up in real-time. They didn’t see the specific rule that was triggered. If that explanation disappeared with the progress bar, the user has no way to understand the difference between expectation and outcome. They certainly won’t run the query again just to watch the animation play out.</p>
<p>They will run the quote by hand, effectively treating the AI’s output as useless and initiating a complete rework of their effort. This manual recalculation feels like a waste of time, which further erodes their confidence in the tool. Once this happens, the user is not interested in <em>why</em> the system chose $900; they are focused purely on validating or invalidating the system’s accuracy against their own, trusted methods. This lack of transparency, especially in moments of disagreement, is a primary barrier to adoption and consistent use. The audit trail allows us to provide persistent transparency and is the mechanism that prevents the AI from creating more work.</p>
<p>We need to keep this in mind, particularly when delivering AI-powered tools meant for enterprise use. If the tool delivers a result that misaligns with expectations, you rarely get a second chance. If the user must spend ten minutes investigating why the AI provided that number, they will stop using the AI.</p>
<h3>Predictability, Reliability, and Understanding Are The Product</h3>
<p>We are not building magic tricks. A magic trick relies on misdirection and hidden mechanics. We are building colleagues.</p>
<p>Think of a good colleague, they keep you in the loop. They let you know what they’re up to, what’s taking their time, and when they hit a snag. That honesty is what helps you trust them.</p>
<p>We can apply this to AI. By using the practical patterns we discussed: giving specific updates, showing a dynamic checklist, acknowledging partial wins, and keeping an audit trail, we stop seeing AI as a mysterious black box that just needs a nice coat of paint. Instead, we start treating it like a team member we can rely on and manage, which builds trust and a clear understanding.</p>
<p>The main reason for using these interface ideas is to achieve real transparency, going beyond explaining the AI’s complicated inner workings. Here, transparency means showing the user the <strong>AI’s process and performance</strong> right when they need to see it. This involves plainly communicating the <strong>AI’s current status</strong>, its known <strong>limits</strong>, and an easy-to-follow <strong>history of its decisions</strong>. This level of openness changes the interaction from just accepting what the AI does to actively working with it. It lets users understand why they got a certain result and how they can best step in or guide the system for the best possible outcome.</p>
<h3>References</h3>
<ul>
<li>“<a href="https://medium.com/@alienoghli/the-essential-guide-to-a-b-testing-a84b853c16e0">The Essential Guide to A/B Testing</a>”, Ali E. Noghli</li>
<li>“<a href="https://uxplanet.org/usability-testing-the-complete-guide-e162898f68db">Usability testing: the complete guide</a>”, Andrew Tipp</li>
<li>“<a href="https://ixdf.org/literature/article/how-to-conduct-user-interviews">How to Conduct User Interviews</a>”, IxDF</li>
</ul>
<p>Last October, I was sitting in a hotel room in Lisbon, the night before I was supposed to demo a project management tool my team had spent four months building. The hotel Wi-Fi was doing that thing where it <em>connects</em> but nothing actually loads. And I watched our app, this thing I was genuinely proud of, render a blank screen with a spinner. Then a timeout error. Then nothing.</p>
<p>I pulled out my phone, tethered to cellular, and got a shaky connection. The app loaded, but every click was a two-second wait. Create a task? Spinner. Move a task between columns? Spinner. I sat there thinking: we built a front end in React, a back end in Node, a Postgres database, a Redis cache, a GraphQL API with six resolvers just for the task board. All that infrastructure, and the damn thing can’t show me my own data without a round-trip to a server 3,000 miles away.</p>
<p>That was the night I started seriously looking at <strong>local-first architecture</strong>. Not because I read a blog post or saw a tweet. Because I was <em>embarrassed</em>.</p>
<p>I want to be upfront about something: I spent the first year or so dismissing local-first as academic. I read the <a href="https://www.inkandswitch.com/local-first-software/">Ink & Switch “Local-First Software” paper</a> when it came out in 2019 and thought, <em>“Cool research, not practical for real apps.”</em> I was wrong. The tooling in 2019 genuinely wasn’t ready. But I was also being lazy, defaulting to the architecture I already knew. The paper laid out seven ideals for software: <strong>fast, multi-device, offline, collaboration, longevity, privacy, user ownership</strong>. And I remember thinking those sounded like a wish list, not engineering requirements.</p>
<p>Seven years later, I’ve shipped three production apps using local-first patterns. I’ve also ripped local-first out of two projects where it was the wrong call. I have opinions. Some of them are probably wrong. But they’re earned.</p>
<p>So here’s what I actually think about building local-first web apps in 2026, written for developers who’ve been doing this long enough to be skeptical of silver bullets.</p>
What “Local-First” Actually Means (And The Confusion That Won’t Die)
<p>I need to clear something up because I keep having this conversation at meetups. <strong>Local-first is not offline-first.</strong> It’s not “add a service worker and call it a day.” It’s not a synonym for PWA. I’ve seen all of these conflated in conference talks, and it drives me a little crazy.</p>
<p>Offline-first means your app handles network loss gracefully, but <a href="https://www.smashingmagazine.com/2019/04/cloudflare-workers-serverless/">the server is still the source of truth</a>. When the network comes back, the server wins. Cache-first (service workers caching responses) is a performance optimization. You’re serving stale data faster, which is great, but you haven’t changed who <em>owns</em> the data. PWAs are a delivery mechanism: installable, cached, push notifications. None of these is a data architecture.</p>
<p><strong>Local-first is a data architecture.</strong> Your user’s device holds the primary copy of their data. The app reads and writes to a local database. Renders instantly. Syncs with servers or other devices in the background. The server, when it exists, is a sync peer with some special authority (authentication, backup, access control). But it’s not the gatekeeper.</p>
<p>The Ink & Switch paper defined seven ideals, and I think they still hold up. But the one that matters most in practice, the one that changes how you build everything, is this:</p>
<blockquote>The client is not a thin view requesting permission to show data. The client is a <strong>node</strong> in a distributed system with its own database.</blockquote>
<p>That distinction sounds subtle. It isn’t. It changes your entire stack.</p>
Be Honest Early: When You Should Not Do This
<p>I’m putting this near the top because I’ve watched too many developers (including myself, once) get excited about a new architecture and shoehorn it into projects where it doesn’t belong. I wasted about six weeks trying to make a local-first approach work for an internal analytics dashboard at a previous job. My colleague Sarah finally pulled me aside and said, <em>“The data is generated on the server. There’s nothing to replicate to the client. What are you doing?”</em> She was right.</p>
<p>Local-first is a bad fit when your data is primarily server-generated. Analytics dashboards, social media feeds, search results: the server <em>produces</em> this data, so the client consuming it via API requests is completely fine.</p>
<p>It’s wrong for systems that need strong transactional consistency. Banking, payment processing, and inventory management. If two people try to buy the last item in stock, you need a single authoritative database making that decision with <a href="https://en.wikipedia.org/wiki/ACID">ACID</a> guarantees. Eventual consistency will lose you money, or worse.</p>
<p>It’s overkill for simple CRUD apps with no offline or collaboration needs. If you’re building an internal admin panel used by five people in an office with good internet, adding a sync engine is over-engineering. And it’s physically impractical for massive datasets that won’t fit on client devices.</p>
<p>But here’s where it shines: note-taking, document editing, collaborative design tools, project management, field apps with unreliable connectivity, basically anything where <strong>data privacy is a selling point</strong>, as well as anything with <strong>real-time collaboration</strong>. In other words, it’s great for <strong>user-generated data</strong> that benefits from instant interaction and should survive the server going down.</p>
<p>One more thing I wish someone had told me earlier: you don’t have to go all-in. I’ve had the best results using local-first for <em>specific features</em> within otherwise traditional apps. Offline drafts in a blog editor. Real-time collaborative notes inside a project management tool that’s otherwise standard REST.</p>
<p>The “spectrum of local-first” is a real thing, and starting with one feature is how I’d recommend anyone begin.</p>
Replicas, Not Requests
<p>If you’ve used Git, you already understand the mental model.</p>
<p>SVN (remember SVN?) was centralized. One server. You check out files, make changes, and commit to the server. Server down? Can’t commit. Can’t even see history.</p>
<p>Git gave every developer a full clone. You commit locally, branch locally, and merge locally. Push and pull when you’re ready. The remote repository is important, but it’s not the only copy of the truth.</p>
<p><strong>Local-first web development is Git for application data.</strong> Every client device holds a replica (full or partial) of the relevant data. Writes happen locally. Sync is push/pull in the background. Conflicts get resolved through defined merge strategies.</p>
<p>I remember the first time this clicked for me in practice. I was prototyping a task board, and I wrote a function to add a task. In our old architecture, it would be:</p>
<ol>
<li>POST to API.</li>
<li>Wait for the response.</li>
<li>If success, update the local state.</li>
<li>If failure, show error toast and maybe roll back optimistic update.</li>
</ol>
<p>In the local-first version, it was: write to local SQLite, done. The UI updated instantly because it was reading from the same local database. Sync happened whenever. No loading state, no error handling for the write itself, no optimistic update logic (because there’s nothing to be “optimistic” about; the local write <em>is</em> the state).</p>
<p>The implications ripple through everything. You don’t need React Query or SWR for data fetching, because you’re not fetching. You don’t need Redux or Zustand for server-derived state, because the local database <em>is</em> your state. Your routing doesn’t trigger API calls. Authentication works differently because the server isn’t checking permissions on every read.</p>
<p>Here’s a visual comparison that might help if you’re the kind of person (like me) who thinks spatially:</p>
<p><img src="https://files.smashing.media/articles/architecture-local-first-web-development/local-first-vs-traditional-architecture.png"></p>
<p>On the left, every user interaction is a round-trip. Click, wait, render. On the right, reads and writes hit the local database directly. The sync server is still there, but it’s doing its work in the background. The user never waits for it. That’s the fundamental shift.</p>
<p>But I’m getting ahead of myself. Before we can talk about sync and conflicts, we need to talk about where the data actually lives on the client.</p>
Where Data Lives on the Client
<p>Forget <code>localStorage</code>. It’s synchronous (blocks the main thread), caps at 5-10 MB, and only stores strings. It’s fine for a theme preference. It’s not a database.</p>
<p>IndexedDB is the workhorse that nobody loves. It’s in every browser, it’s asynchronous, it can handle hundreds of megabytes, and its API is absolutely miserable to work with. I’ve used it directly a grand total of once. Now I use it through abstractions or, more often, I don’t use it at all.</p>
<p>Because the real story in 2026 is SQLite running in the browser via WebAssembly.</p>
<p>I know that sounds like a party trick, but it’s not. SQLite compiled to WASM, persisted to the Origin Private File System (OPFS), gives you a <em>real relational database</em> in the browser. Full SQL queries. Transactions. Indexes. The works.</p>
<p>OPFS is the newer API that makes this practical. It gives web apps a sandboxed file system with high-performance synchronous access (in Web Workers), which is exactly what SQLite needs. Before OPFS, you could run SQLite in memory and manually persist to IndexedDB, which worked but was slow and fragile.</p>
<p>Here’s roughly what initialization looks like in a real project (I’m using <a href="https://github.com/rhashimoto/wa-sqlite"><code>wa-sqlite</code></a> here, which is the library I’ve had the best luck with):</p>
<div>
<pre><code>import { SQLiteAPI } from 'wa-sqlite';
import { OPFSCoopSyncVFS } from 'wa-sqlite/src/examples/OPFSCoopSyncVFS.js';
async function initDatabase() {
const module = await SQLiteAPI.initialize();
const vfs = new OPFSCoopSyncVFS('pm-tool-db');
await vfs.initialize(module);
const db = await module.open_v2('workspace.db');
// HACK: wa-sqlite doesn't handle concurrent writes well on Safari,
// so we serialize through a queue. See vlcn-io/wa-sqlite#247
await module.exec(db, <code>PRAGMA journal&#95;mode=WAL</code>);
await module.exec(db, <code>CREATE TABLE IF NOT EXISTS tasks (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
status TEXT DEFAULT 'backlog',
assignee&#95;id TEXT,
project&#95;id TEXT NOT NULL,
position REAL DEFAULT 0,
created&#95;at TEXT DEFAULT (datetime('now')),
updated&#95;at TEXT DEFAULT (datetime('now'))
)</code>);
return db;
}
</code></pre>
</div>
<p>In production, I wrap all database access in a write queue that serializes mutations. I also log every failed write to Sentry with the full SQL statement (scrubbed of PII, obviously) because debugging database issues in a user’s browser is hell without that telemetry.</p>
<p>A gotcha I wasted almost two days on: Safari’s OPFS implementation behaves differently from Chrome’s in subtle ways. Specifically, I hit a bug where <code>createSyncAccessHandle()</code> would silently fail in certain iframe contexts on Safari 18. There’s no error, no exception. It just doesn’t work. I ended up falling back to IndexedDB-backed persistence on Safari, which was slower but at least functioned. (I’m told <a href="https://developer.apple.com/documentation/safari-release-notes/safari-26-release-notes">Safari 19/26</a> fixes this, but I haven’t verified it yet.)</p>
<p>Quick comparison of the options I’ve actually used:</p>
<table>
<thead><tr>
<th>Storage</th>
<th>Good For</th>
<th>Watch Out For</th>
</tr></thead>
<tbody>
<tr>
<td>IndexedDB</td>
<td>Broad compatibility, moderate data</td>
<td>Terrible DX, no SQL, verbose</td>
</tr>
<tr>
<td>OPFS + SQLite WASM</td>
<td>Relational data, complex queries, serious apps</td>
<td>Safari quirks, ~400KB bundle addition</td>
</tr>
<tr>
<td>PGlite (Postgres in WASM)</td>
<td>Full Postgres compatibility on client</td>
<td>Newer, larger bundle, still maturing</td>
</tr>
</tbody>
</table>
<p>I’ve also tried <a href="https://github.com/vlcn-io/cr-sqlite"><code>cr-sqlite</code></a>, which adds CRDT column support directly to SQLite tables. Clever idea, but I found it too early-stage for production use when I evaluated it in late 2025. The merge semantics were sometimes surprising, and debugging CRDT state inside SQLite was painful. I’d revisit it later this year.</p>
The Part That’s Actually Hard
<p>Storing data locally is a solved problem. Syncing it reliably across devices and users is where you earn your gray hairs.</p>
<p>When multiple replicas can independently read and write, you need a mechanism to reconcile changes. There are basically four approaches, and I’ve used three of them.</p>
<p><strong>CRDTs (Conflict-Free Replicated Data Types)</strong> are data structures designed so that concurrent edits can always be merged without conflicts, mathematically guaranteed. Yjs is the most popular implementation in JavaScript, and it’s genuinely excellent for real-time collaborative text editing. I used it to build a collaborative document editor at my last company, and the experience was mostly good, though I’ll get into the pain points in the conflict resolution section.</p>
<p>Here’s what setting up a shared Yjs document looks like in practice:</p>
<pre><code>import * as Y from 'yjs';
import { WebsocketProvider } from 'y-websocket';
const ydoc = new Y.Doc();
const provider = new WebsocketProvider(
'wss://sync.our-app.dev',
'workspace-a1b2c3d4',
ydoc
);
const tasks = ydoc.getMap('tasks');
// Add a task
const task = new Y.Map();
task.set('title', 'Review Q3 roadmap draft');
task.set('completed', false);
task.set('assignee', 'maria');
// TODO: type this properly once; yjs exports better TS types
// for nested maps. For now, this works fine.
tasks.set('f47ac10b-58cc-4372-a567-0e02b2c3d479', task as any);
tasks.observeDeep(() => {
// Re-render UI. In practice, I debounce this to ~16ms
// because observeDeep fires a LOT during active collaboration
renderTaskList(tasks.toJSON());
});
</code></pre>
<p><a href="https://github.com/automerge/automerge">Automerge</a> is the other major CRDT library, backed by Rust and with a document-oriented model. I’ve used it less, but I know teams who swear by it. <a href="https://github.com/loro-dev/loro">Loro</a> is newer, Rust-based, and claims better performance. I haven’t shipped anything with Loro yet.</p>
<p><strong>Database replication</strong> is the other big approach, and honestly, for most apps that don’t need Google Docs-style real-time text editing, I think it’s the better choice. The idea is straightforward: replicate rows between a server database (Postgres) and a client database (SQLite) with a sync engine managing the plumbing.</p>
<p><a href="https://www.powersync.com/">PowerSync</a> does this well. It gives you one-way replication from Postgres to client SQLite with a write-back path for mutations. ElectricSQL is more ambitious, going for full active-active sync between Postgres and SQLite. I’ve used PowerSync in production and <a href="https://electric-sql.com/docs/intro">ElectricSQL</a> in prototypes. PowerSync felt more stable when I evaluated them both in early 2026, but ElectricSQL’s approach is more powerful if they nail the execution.</p>
<p><a href="https://github.com/aspen-cloud/triplit">Triplit</a> takes a different angle entirely: it’s a full-stack database with sync built in, so you don’t think about “client DB” and “server DB” separately. I haven’t tried it beyond a weekend prototype, but the developer experience was surprisingly nice.</p>
<p><strong>Event sourcing</strong> (syncing a log of mutations rather than the current state) is the approach <a href="https://livestore.dev/">LiveStore</a> takes. I find it intellectually appealing and occasionally useful, but in practice, I’ve found that reconstructing state from an event log adds complexity that most apps don’t need. My controversial opinion: Event sourcing is over-recommended for application development. It’s great for audit logs and certain domains, but for a task board? Just sync the rows.</p>
<p>Not everyone will agree with that. I know event sourcing has passionate advocates, and I’ve been told I’m wrong about this at least twice at conferences. Maybe I just haven’t built the right app for it yet.</p>
Conflicts: The Thing Everyone’s Afraid Of
<p>I used to think conflict resolution was a terrifying, unsolvable problem. After building three apps that handle it, I’d revise that to: it’s a <em>manageable</em> problem that requires you to think carefully about your specific data model, and most developers overthink it.</p>
<p>Conflicts happen when two replicas modify the same data without seeing each other’s changes. User A edits a task title on their phone while offline. User B edits the same title on their laptop. Both come back online. Now what?</p>
<p>My first attempt at handling this was embarrassingly naive:</p>
<pre><code>// My first try. Don't do this.
function resolveConflict(local: any, remote: any) {
// just... take the remote one? sure?
return remote;
}
</code></pre>
<p>The problem is obvious: local changes get silently dropped. User A edits a title, syncs, and their edit vanishes. They don’t even know it happened.</p>
<p>What actually works for most cases is <strong>last-write-wins (LWW)</strong> at the <em>field</em> level, not the record level. If User A changes the title and User B changes the due date, you keep both changes because they touched different fields. You only have a real conflict when both modified the same field, and then you pick the later timestamp.</p>
<div>
<pre><code>interface FieldValue {
value: string | number | boolean;
// ISO timestamp with enough precision to break most ties
updatedAt: string;
// Client ID as tiebreaker when timestamps match.
// This happens more often than you'd think.
clientId: string;
}
function pickWinner(a: FieldValue, b: FieldValue): FieldValue {
const timeA = new Date(a.updatedAt).getTime();
const timeB = new Date(b.updatedAt).getTime();
if (timeA !== timeB) return timeA > timeB ? a : b;
// Deterministic tiebreaker when timestamps match
return a.clientId > b.clientId ? a : b;
}
// In practice, I apply this per-field across the whole record.
function mergeTask(local: Record<string, FieldValue>, remote: Record<string, FieldValue>) {
const merged: Record<string, FieldValue> = {};
const allKeys = new Set([...Object.keys(local), ...Object.keys(remote)]);
for (const key of allKeys) {
if (!local[key]) { merged[key] = remote[key]; continue; }
if (!remote[key]) { merged[key] = local[key]; continue; }
merged[key] = pickWinner(local[key], remote[key]);
}
return merged;
}
</code></pre>
</div>
<p>In our production app, this handles about 95% of conflicts without any user-visible issues. For the remaining cases (two people editing the same text field), LWW means one person’s edit silently wins. For a task title? Honestly, that’s usually fine. For a document body? No. That’s where CRDTs earn their keep.</p>
<p>But there’s a subtler problem I didn’t appreciate until I hit it: <strong>semantic conflicts</strong>. Data merges cleanly at the structural level, but the result is nonsensical. Two users, both offline, book the same 2 PM meeting slot with different meetings. Field-level merge accepts both writes because they’re writing to different records. No structural conflict. But you’ve got a double-booking, and your merge function has no idea that’s a problem.</p>
<p>Semantic conflicts require application-level validation, and that has to happen on the server during sync. Your sync engine merges the data structurally, but <em>your</em> server needs to check domain invariants before accepting the result. The approach I’ve landed on (after getting it wrong twice) is: validate on the server during the write-back phase, but <em>flag</em> violations rather than silently rejecting them.</p>
<p>Here’s what I mean. When the client pushes mutations to the server during sync, the server runs them through a constraint validation layer before applying them to Postgres:</p>
<div>
<pre><code>interface SyncViolation {
type: 'scheduling_conflict' | 'capacity_exceeded' | 'stale_assignment';
recordId: string;
description: string;
// The conflicting records so the client can show context
conflictingRecords: string[];
// When was this violation detected
detectedAt: string;
}
async function validateSyncBatch(
mutations: SyncMutation[],
serverDb: Database
): Promise<{ accepted: SyncMutation[]; violations: SyncViolation[] }> {
const accepted: SyncMutation[] = [];
const violations: SyncViolation[] = [];
for (const mutation of mutations) {
if (mutation.table === 'calendar_events') {
// Check for double-booking
const overlapping = await serverDb.query(
<code>SELECT id, title FROM calendar&#95;events
WHERE room&#95;id = ? AND id != ?
AND start&#95;time &lt; ? AND end&#95;time &gt; ?</code>,
[mutation.data.room_id, mutation.data.id,
mutation.data.end_time, mutation.data.start_time]
);
if (overlapping.length > 0) {
violations.push({
type: 'scheduling_conflict',
recordId: mutation.data.id,
description: <code>Conflicts with "${overlapping[0].title}"</code>,
conflictingRecords: overlapping.map(r => r.id),
detectedAt: new Date().toISOString()
});
// Still accept the write, but flag it
// The alternative is rejecting it, but then the user's
// local state and server state diverge, and that's worse
accepted.push(mutation);
continue;
}
}
accepted.push(mutation);
}
return { accepted, violations };
}
</code></pre>
</div>
<p>The key decision here — and I went back and forth on this — is that we <em>accept</em> the conflicting write and flag it, rather than rejecting it outright. If you reject it, the user’s local database has a record that the server refuses to acknowledge, and now you’re in a state divergence situation that’s genuinely hard to recover from. I tried the rejection approach first, and it led to ghost records on the client that users couldn’t delete because they didn’t exist on the server. Nightmare.</p>
<p>So instead, the server accepts the write, stores the violation, and syncs the violation back to the client. The client shows a non-blocking notification: <em>“Your meeting ‘Q3 Planning’ conflicts with ‘Design Review’ in Room B at 2 PM. Tap to resolve.”</em> The user taps, sees both meetings, and picks one to reschedule or cancel. The resolution is a normal write that syncs back.</p>
<p>Is this perfect? No. There’s a window between when the violation is created and when the user resolves it, where both conflicting records exist. For meeting rooms, that’s tolerable. For something like inventory management where two people “buy” the last item, that window is unacceptable, and that’s exactly why I said earlier that local-first is wrong for systems requiring strong transactional consistency.</p>
<p>I’m still iterating on this pattern. The violation table grows if users ignore notifications (we expire them after 72 hours, which feels arbitrary). And deciding <em>which</em> invariants to validate on the server requires you to essentially maintain a parallel set of business rules outside your client-side application logic. It’s not elegant. But it works, and it’s the best approach I’ve found for the class of apps I’m building. If you’ve built something cleaner, I genuinely want to hear about it.</p>
<p>For CRDTs like Yjs, conflict resolution at the character level (for text) works remarkably well. Two people typing in the same paragraph will see both sets of characters appear in a sensible order. But CRDT merging of structured data (maps, arrays, nested objects) can produce results that surprise you. I once watched a Yjs-backed task list duplicate items after a merge because two users had reordered the same list offline, and the CRDT’s list merge semantics interleaved their orderings. Technically correct. Practically confusing. We ended up adding a post-merge de-duplication step, which felt like a hack but solved the problem.</p>
<p>When should you surface conflicts to the user, Git-style? In my experience, almost never for typical app data. Users don’t want to resolve merge conflicts. They want the app to figure it out. The exception is high-stakes content: legal documents, medical records, anything where silently dropping an edit could cause real harm.</p>
The Tools Right Now
<p>I’m going to give you my honest read on the tools available as of mid-2026, with the caveat that this space is moving fast enough that some of this might be outdated by the time you read it.</p>
<p><strong>Yjs</strong> is the most mature CRDT library. Production-ready, huge community, integrates with most collaborative editors (TipTap, BlockNote, Lexical). If you need real-time collaborative editing, start here.</p>
<p><strong>Automerge</strong> is solid, Rust-backed, and takes a more document-oriented approach than Yjs. I’ve seen it used well in apps where the data model fits a document metaphor. Fewer integrations than Yjs, but the core is well-engineered.</p>
<p><strong>PowerSync</strong> is what I’d recommend for teams that have an existing Postgres back-end and want to add offline support. It’s production-ready, the docs are good, and the mental model (Postgres syncs to client SQLite, client writes go through a defined upload path) is easy to reason about. In our app, initial sync for a workspace with around 5,000 tasks takes about 1.2 seconds on a decent connection and about 3.5 seconds on a throttled 3G simulation. That was acceptable for us.</p>
<p><strong>ElectricSQL</strong> is going for something more ambitious: true active-active replication between Postgres and SQLite, with “shapes” defining what data syncs to which client. I want this to succeed because the developer experience in prototypes was excellent. But when I evaluated it for production in February 2026, I hit enough rough edges (particularly around shape management and reconnection behavior) that I went with PowerSync instead. I plan to revisit it.</p>
<p><strong>Triplit</strong> impressed me in a weekend prototype. Full-stack database with sync built in, nice TypeScript API. I haven’t stress-tested it with real production load, and I’d want to before committing.</p>
<p><a href="https://zero.rocicorp.dev/"><strong>Zero</strong></a> (from Rocicorp, the Replicache people) is interesting because it takes a query-based approach to sync, which is different from the row-replication model. Replicache was sunset in favor of Zero, which tells you something about how fast approaches are evolving in this space. Worth watching, but I wouldn’t build on it yet for a production app.</p>
<p><a href="https://tinybase.org/"><strong>TinyBase</strong></a> is a lightweight reactive store that’s great for smaller apps or prototyping. I used it for a personal side project (a reading tracker) and liked it a lot. Not sure I’d use it for a team-scale product.</p>
<p><a href="https://pglite.dev/"><strong>PGlite</strong></a> (Postgres compiled to WASM) is wild. Same SQL dialect on client and server. Combined with ElectricSQL, you could theoretically run identical queries everywhere. I think this is where things are heading long-term, but PGlite’s bundle size and memory footprint are still concerns for mobile browsers.</p>
<p>One thing the Replicache sunset taught me: don’t bet your architecture on a single tool from a small company without a fallback plan. I keep my sync layer abstracted enough that I could swap engines in a few weeks, not months. I know that sounds like premature abstraction, but in a space this young, I think it’s just prudence.</p>
Building A Real App: Architecture, Auth, And Migrations
<p>I want to walk through how I actually structure a local-first app in practice, because the layer diagrams you see in blog posts rarely match what the code looks like.</p>
<p>My current stack for a collaborative project management tool looks like this:</p>
<ul>
<li>
<strong>UI:</strong> React components that never call <code>fetch()</code> for data reads.</li>
<li>
<strong>Query layer:</strong> <code>useLiveQuery</code> hooks that subscribe to the local SQLite database and re-render automatically when data changes.</li>
<li>
<strong>Local database:</strong> SQLite via wa-sqlite, persisted to OPFS.</li>
<li>
<strong>Mutation layer:</strong> Plain <code>INSERT</code>/<code>UPDATE</code>/<code>DELETE</code> statements against local SQLite.</li>
<li>
<strong>Sync:</strong> PowerSync managing replication between local SQLite and our Postgres back-end.</li>
<li>
<strong>Server:</strong> Postgres, a Node.js auth service, and a small sync validation layer.</li>
</ul>
<p>The component code ends up looking almost absurdly simple compared to what I used to write:</p>
<div>
<pre><code>import { useLiveQuery } from '@powersync/react';
import { db } from '../lib/database';
function TaskBoard({ projectId }: { projectId: string }) {
const tasks = useLiveQuery(
<code>SELECT &#42; FROM tasks WHERE project&#95;id = ? AND archived = 0 ORDER BY position</code>,
[projectId]
);
async function addTask(title: string) {
await db.execute(
<code>INSERT INTO tasks (id, title, project&#95;id, position, created&#95;at)
VALUES (?, ?, ?, ?, datetime('now'))</code>,
[crypto.randomUUID(), title, projectId, tasks.length]
);
// That's it. useLiveQuery picks up the change automatically.
// No invalidation, no refetch, no loading state.
}
// No isLoading check. Data is local. It's always there after the first sync.
return (
<div>
{tasks.map(task => <TaskCard key={task.id} task={task} />)}
<NewTaskInput onSubmit={addTask} />
</div>
);
}
</code></pre>
</div>
<p>Compare that to the React Query + REST equivalent, which would be at least twice the code and include loading states, error states, optimistic update logic with rollback, and cache invalidation. I don’t miss it.</p>
<h3>Auth In A Local-First World</h3>
<p>Authentication works roughly the same as traditional apps: JWT tokens, OAuth flows, and session management. The token authenticates the sync connection rather than every individual request. Offline access works because the data is already local. The user was authenticated when the data was originally synced.</p>
<p>Authorization is trickier, and I think most local-first articles under-explain this. You cannot sync your entire database to every client and rely on client-side code to hide unauthorized data. Someone will open DevTools, find the local SQLite file, and see everything. The client is not a trust boundary.</p>
<p>You enforce authorization at the sync layer. PowerSync has “sync rules” that define which rows go to which clients. ElectricSQL has “shapes.” Either way, the server only sends data that the user is authorized to see. When the client sends writes back, the server validates them against authorization rules before applying them to Postgres. If a user tries to modify something they shouldn’t, the server rejects it during sync.</p>
<p>I also want to mention <strong>end-to-end encryption (E2EE)</strong>, because it pairs naturally with local-first. Since data lives on the client, you can encrypt it before sync. The server stores and relays encrypted blobs it can’t read. Apps like Anytype do this. We haven’t implemented E2EE in our current app, but it’s on the roadmap for when we handle more sensitive data.</p>
<h3>Schema Migrations On A Thousand Devices</h3>
<p>This one caught me off guard the first time. On the server, you run a migration against one database you control. On the client, every user has their own database that might be running any version of your schema, depending on when they last opened the app.</p>
<p>I use a simple migration runner that checks a version number at app startup:</p>
<div>
<pre><code>const MIGRATIONS = [
{
version: 1,
sql: <code>CREATE TABLE IF NOT EXISTS tasks (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
status TEXT DEFAULT 'backlog',
project&#95;id TEXT NOT NULL,
created&#95;at TEXT DEFAULT (datetime('now'))
);</code>
},
{
version: 2,
// Added priority and due_date in sprint 4
sql: <code>ALTER TABLE tasks ADD COLUMN priority INTEGER DEFAULT 0;
ALTER TABLE tasks ADD COLUMN due&#95;date TEXT;</code>
},
{
version: 3,
// Denormalized assignee name for offline display.
// Yes, I know this is a trade-off. The JOIN was killing
// performance on low-end Android devices.
sql: <code>ALTER TABLE tasks ADD COLUMN assignee&#95;name TEXT DEFAULT '';</code>
}
];
async function runMigrations(db: Database) {
await db.execute(<code>CREATE TABLE IF NOT EXISTS &#95;schema&#95;version (version INTEGER)</code>);
const rows = await db.execute('SELECT version FROM _schema_version');
const currentVersion = rows.length > 0 ? rows[0].version : 0;
for (const migration of MIGRATIONS) {
if (migration.version > currentVersion) {
console.log(<code>Migrating local DB to v${migration.version}</code>);
await db.execute('BEGIN');
try {
await db.execute(migration.sql);
await db.execute(
'INSERT OR REPLACE INTO _schema_version (rowid, version) VALUES (1, ?)',
[migration.version]
);
await db.execute('COMMIT');
} catch (err) {
await db.execute('ROLLBACK');
// In production, this fires a Sentry alert with the
// migration version and error details
throw err;
}
}
}
}
</code></pre>
</div>
<p><strong>Design your migrations to be additive.</strong> New columns with defaults. New tables. Don’t rename or drop columns unless you absolutely must, because users running old app versions will still be syncing data, and your server needs to handle the mismatch. I learned this the hard way when I dropped a column that an older client was still writing to, which caused silent sync failures for about 200 users over a weekend. Not fun.</p>
If I Were Starting A New Project Today
<p>I get asked this a lot, so here’s my current answer. It changes every six months or so.</p>
<p>For a collaborative app with real-time features and offline support, I’d start with: <strong>React</strong> on the front end, <strong>PowerSync</strong> for sync, <strong>SQLite via wa-sqlite</strong> on the client (persisted to OPFS with IndexedDB fallback for Safari), and <strong>Supabase</strong> (which gives me Postgres, auth, and row-level security out of the box). I’d use <strong>Yjs</strong> only if I needed rich text collaboration, and I’d avoid it if I didn’t, because CRDTs add meaningful complexity to your data model.</p>
<p>For a simpler app where I mostly need offline support and instant reads but collaboration is secondary, I might skip the sync engine entirely and just use a local SQLite database with a custom sync layer that pushes/pulls from a REST API. I know that sounds like reinventing the wheel, but for simple cases, a custom sync that you fully understand is better than a general-purpose sync engine that adds concepts you don’t need.</p>
<p>I would not currently use ElectricSQL or Zero for production, not because they’re bad, but because I want another 6-12 months of maturity before I’d trust them for something I’m on-call for. I’ve been burned before by building on early-stage infrastructure (I was an early <a href="https://docs.meteor.com/">Meteor</a> adopter, if that tells you anything) and I’m more cautious now about where I accept novelty risk.</p>
Performance: What’s Actually Fast And What Hurts
<p>Reads are instant. That’s not marketing. Querying a local SQLite database for a list of 500 tasks takes under two milliseconds on my M2 MacBook and about eight milliseconds on a mid-range Android phone. No network. No spinner. No loading state.</p>
<p>Writes are instant, too. <code>INSERT INTO tasks</code> runs locally, the UI updates reactively, and sync happens whenever. Users perceive writes as instantaneous because they are.</p>
<p>Initial sync is where you pay the cost. Bootstrapping the local replica on first load (or on a new device) means downloading potentially megabytes of data. In our app, a workspace with 5,000 tasks, 200 projects, and 50 users takes about 1.2 seconds on broadband and four to five seconds on a slow mobile connection. We mitigate this with partial sync (only sync the user’s active projects) and by showing a one-time “Setting up your workspace” screen during the first sync. After that initial sync, incremental updates are tiny.</p>
<p>Bundle size is a real concern. SQLite compiled to WASM adds roughly 400KB gzipped to your JavaScript bundle. That’s not trivial, especially if you care about Time to Interactive on mobile. I lazy-load the database module with dynamic <code>import()</code> so it doesn’t block the initial render.</p>
<p>Memory is the other gotcha. SQLite WASM runs in memory, and on mobile browsers with aggressive memory limits, a large database can cause tab crashes. I haven’t found a great solution for this beyond keeping the synced dataset small through partial sync and being aggressive about pruning old data.</p>
<p><strong>Note</strong>: Speaking of memory issues, I’ve been reading <a href="https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/"><em>Designing Data-Intensive Applications</em></a> by Martin Kleppmann for the third time. Every re-read, I catch something new. If you haven’t read it and you’re thinking about distributed data, just stop and read it first.</p>
Testing This Stuff
<p>I’ll keep this brief because the honest answer is that testing local-first apps is harder than testing traditional apps, and the tooling isn’t great yet.</p>
<p>What works for me: unit tests for merge logic (these are pure functions, easy to test), integration tests that spin up two client instances in memory and verify they converge after concurrent edits, and Playwright E2E tests that use <code>context.setOffline(true)</code> to simulate offline/online transitions.</p>
<p>What I haven’t figured out well: reproducing bugs that only happen during conflict resolution with specific timing. When a user reports that a task <em>“lost its description,”</em> I often can’t reproduce it because I don’t know exactly what sequence of offline edits and sync events led to the conflict. I’ve started logging sync events in more detail (what was sent, what was received, what conflicts were detected, how they were resolved) and shipping those logs to our observability stack. It helps, but it’s not as clean as I’d like.</p>
<p>Property-based testing with something like fast-check is genuinely useful for CRDT logic. Generate random operation sequences, apply them in random orders, and assert convergence. I wish I’d started doing this earlier.</p>
What I’m Watching, What Worries Me
<p>I’m excited about where this is going. PGlite (full Postgres in the browser) feels like a glimpse of a future where the client/server data layer distinction just dissolves. You write SQL, it runs everywhere, sync is a runtime concern rather than an architectural decision. We’re not there yet, but you can see it from here.</p>
<p>I’m also watching the convergence of local-first and AI. Running models locally, keeping data on-device, using cloud AI only with explicit consent, and encrypted data. The privacy implications are compelling, and I think <em>“your data never leaves your device”</em> will become a real product differentiator as AI eats more of the software experience.</p>
<p>What worries me is <strong>fragmentation</strong>. Every sync engine uses its own protocol. There’s no standard. If ElectricSQL shuts down (it won’t, probably, but <em>if</em>), migrating to PowerSync isn’t trivial. I abstract my sync layer partly for this reason, but it still makes me nervous.</p>
<p>The web has standards for nearly everything. We don’t have one for sync, and I don’t see one emerging soon.</p>
<p>I’m also worried about the <strong>complexity budget</strong>. Local-first adds real architectural complexity: sync engines, conflict resolution, client-side migrations, partial replication, and auth at the sync boundary. For a team of experienced developers building the right kind of app, that complexity pays for itself many times over. For a team that just needs a CRUD app, it’s a trap.</p>
<p>I keep coming back to something a developer named Kevin said to me at a local-first meetup in Berlin last year: </p>
<blockquote>“The best architecture is the one your team can debug at 2 AM.”</blockquote>
<p>He’s right. If local-first makes your app faster, more reliable, and better for users, and your team understands how the sync works, go for it. If you’re adding it because it sounds cool and you don’t fully understand the failure modes yet, build a prototype first. Learn where it breaks. Then decide.</p>
<p>I’m building my fourth local-first app right now: a collaborative planning tool for small teams, with offline support and optional E2E encryption. It’s the most ambitious thing I’ve attempted with this architecture. I’ll write about how it goes.</p>
<p>If you’re starting out, pick one feature in your current app that would benefit from instant local reads and offline writes. Add a local SQLite database. Wire up reactive queries. See how it feels. I think you’ll have the same reaction I did: oh, <em>this</em> is how it should have always worked.</p>
Further Reading
<ul>
<li>“<a href="https://www.inkandswitch.com/local-first/">Local-First Software</a>” (Ink & Switch): This is still the best starting point.</li>
<li>“<a href="https://www.youtube.com/watch?v=PMVBuMK_pJY">CRDTs: The hard parts”</a>” (Martin Kleppmann, video): Martin’s talks on CRDTs are excellent.</li>
<li>The <a href="https://localfirstweb.dev/">localfirstweb.dev</a> community site: A good directory of tools.</li>
<li><a href="https://docs.powersync.com/">PowerSync Documentation</a></li>
<li><a href="https://electric-sql.com/docs">ElectricSQL Documentation</a></li>
<li><a href="https://docs.yjs.dev/">Yjs Documentation</a></li>
<li><a href="https://automerge.org/docs/hello/">Automerge Documentation</a></li>
</ul>
<p>This article is a sponsored by <a href="https://macpaw.com/">MacPaw</a></p>
<p>Your grandmother’s vacuum was a trusty but ugly workhorse hidden in a dark closet. Dyson turned that practical tool into an aspirational product, one you love leaving out even when guests come over. Dish soap was just dish soap until Method put it in a glass container, and it became an addition to, not a distraction from, the aesthetics of your kitchen. Physical product brands spent the last two decades transforming mundane, practical items like soap and vacuums into must-have experiences.</p>
<p>But utility software — especially maintenance tools, a type of system software designed to analyze, configure, optimize, and maintain a computer — hasn’t made that leap from something you open as a chore to an experience you choose with excitement. And that means those brands are missing an interesting design opportunity: these tools are well overdue for a more intelligent, more human, and less emotionally flat approach. </p>
“The Most Underexplored Frontier In UX Is The Maintenance Layer.”
<p>Utility software still feels like a chore. Using it has all the excitement of pulling out that dusty old vacuum from the back of the closet. These four common software design assumptions illustrate why the category hasn’t yet transcended its chore status. </p>
<ul>
<li>
<strong>Assuming the user already resents the task</strong>: they’re here because something is wrong, not because they chose to open this tool. Designing accordingly means assuming they want the software to be fast, clinical, invisible, and something to get out of the way, not get into. But a design built for resentment produces tools that deserve it. If you expect your users to want to get out of the product as fast as possible, they’ll feel it in the design. </li>
<li>
<strong>Assuming function is enough and feelings are for consumer apps</strong>: emotion in interface design is decoration. The maintenance layer is infrastructure, and nobody decorates infrastructure. But nobody decorated dish soap either, until Method. They didn’t change the product, just the user’s relationship to the tool they use to accomplish a task. </li>
<li>
<strong>Assuming your users are not your fans because nobody cares about maintenance tools</strong>: utility tools don’t build communities, and nobody posts about running a disk cleanup. But people care deeply about tools that respect their time and make complex things simple for them to use. The MacPaw team listens to our community and implements many of the features they ask for, because we know users can be fans too, and they should shape how our products work. </li>
<li>
<strong>Assuming that designers shouldn’t waste pixels on personality</strong>: you need to hide complexity and show minimal UI. Utility software should look neutral, technical, and forgettable. </li>
</ul>
<p>But when software hides the system, people lose trust in it. </p>
<p>Design always starts with function — function shapes form. But if that function can’t be made completely invisible and people still have to interact with it, it inevitably becomes part of their experience. In that case, people expect it not just to work, but to match their environment, influence their mood, and contribute to their overall experience.</p>
<p>A good example is a watch. Its core function is simple: show the time. But because a watch occupies physical space in a person’s world, you want more from it than just functionality. It needs to play an aesthetic role and complement the environment.</p>
“The Maintenance Layer Is A Behavioral Problem, Not Just A UX One.”
<p>The user experience in utility software matters more than the industry tends to admit. In utility software, experience is not something added on top of function. It emerges from how the function is structured, explained, and interacted with. If you think you can design the most functional app on the market without considering how users understand and experience the process, you’re missing an opportunity to build a relationship with that user.</p>
<p>Part of that ignored UX element is a behavioral problem: users don’t avoid utility software because using it is hard, but instead because it produces <a href="https://research.macpaw.com/publications/emotional-assesments-ux">no positive emotional signal</a> at any point. The problem is rarely complex. It’s the absence of meaningful interaction during the process of using the app. </p>
<p>Another issue is focusing solely on function. <a href="https://uxmag.com/articles/the-aesthetic-usability-effect-why-beautiful-looking-products-are-preferred-over-usable-but-not-beautiful-ones">The aesthetic-usability effect</a> shows us clearly that if something looks better, it feels better — ATM screens in a 1995 study were judged easier to use if the screen layout was more attractive. Even something as purely functional as an ATM screen display needs attention to how the function is structured, presented, and perceived.</p>
<p>And then there’s the memory problem. People remember <a href="https://www.researchgate.net/publication/5246508_Evaluations_of_Pleasurable_Experiences_The_Peak-End_Rule">the emotional peak and the ending of an experience</a>, not the average. A completed process that ends with a clear “done” is remembered more positively than one that just fades out, even if the end task is completed successfully in both cases. System tools rarely intentionally design the ending of an interaction — they just stop running. </p>
“Thoughtful System Design Can Transform Maintenance From A Technical Chore Into A Seamless User Experience.”
<p>What does emotional design actually mean, then, in utility UX? Here are three principles the MacPaw team follows to design its products against the category norm. </p>
<h3>Translating system complexity into human language</h3>
<p>Maintenance tools deal with storage, task management, and background processes. Good design explains what’s happening, avoids system jargon, and communicates outcomes clearly. </p>
<p><a href="https://www.figma.com/blog/the-linear-method-opinionated-software/">Linear’s game-changing move</a> that illustrates this principle was agreeing on straightforward units of work, like projects and teams, that any new user can immediately understand. That helps them spend less time ramping up and more time building. </p>
<h3>Make the process clear and show progress</h3>
<p>System tools run complex processes. Design should show progress, impact, and system change to create trust and control. </p>
<p>Vercel’s deployment infrastructure is an excellent example here. When you trigger a build, the browser tab favicon changes — a spinner while building, a green checkmark when done, a red X if it fails. It’s ruthlessly functional, not visual or warm, but it’s emotionally intelligent: it exists purely to reduce the low-level anxiety of waiting for a build to finish. </p>
<h3>Design the moment of completion</h3>
<p>Maintenance tasks often end quietly. But completion is the emotional payoff. Design should emphasize clarity of results, a sense of resolution, and visible improvement so users remember a positive and distinct ending. </p>
<p>Take the new CleanMyMac by MacPaw <a href="https://macpaw.com/news/introducing-new-cleanmymac">after its 2024 major update</a>. Unlike the maintenance utility category norm, CleanMyMac uses visual language, including color, depth, motion, icons, and 3D illustrations, to shift the focus from diagnosing problems to showing progress: space cleared, threats removed, time saved. Instead of confronting the user with what's wrong, the interface closes with a picture of a machine that's already working better. </p>
<p>The task is the same, but the ending tells a different story, giving the user a picture of a machine that's already working better. </p>
“Even if you don’t care about emotional design as a principle, the change is coming anyway.”
<p>The market is forcing this issue even for those who don’t find the argument I’ve made here compelling. </p>
<p>That’s partly generational — designers and users who grew up with Linear, Figma, and Notion have a completely different baseline for the tools they use. Good software is not a happy accident for them, but a given. That generation is now the primary audience for maintenance software, and so the old “it’s fine, it’s just a utility” excuse doesn’t work philosophically or commercially. Just like Dyson and Method changed how entire product categories approached design, the current state of utility software is shifting for good.</p>
<p>And digital fatigue is the current cultural state. The resurgence of vinyl records, film cameras, and dumbphones is not merely nostalgia, but a signal that the emotional relationship between people and their tools is changing. </p>
<p>The question has shifted from whether your utility software should feel better to use to whether it can afford not to. </p>
<p>More interfaces now render while the response is still being generated. The UI begins in one state, then updates as more data comes in. You see this in chat apps, logs, transcription tools, and other real-time systems.</p>
<p>The tricky part is that the <strong>interface is not in a fixed state</strong>; it keeps changing as new content comes in. It grows where lines become longer and new blocks appear. Something that was just below the screen can suddenly move, and the user’s scroll position becomes harder to manage. Parts of the UI might even be incomplete while the user is already interacting with it.</p>
<p>In this article, we’ll take a simple interface and make it handle this properly. We’ll look at how to keep things stable, manage scrolling, and render partial content without breaking the reading experience.</p>
What Does A Streaming UI Actually Look Like?
<p>I’ve built three demos that stream content in different ways: a chat bubble, a log feed, and a transcription view. They look different on the surface, but they all run into the same three problems.</p>
<p>The first is <strong>scroll</strong>. When content is streaming in, most interfaces keep the viewport pinned to the bottom. That works if you are just watching, but the moment you scroll up to read something, the page snaps back down. You did not ask for that. The interface decided for you, and now you’re fighting it instead of reading.</p>
<p>The second is <strong>layout shift</strong>. Streaming content means containers are constantly growing, and as they do, everything below shifts downward. A button you were about to click is no longer where it was. A line you were reading has moved. The page is not broken; it is just that nothing stays still long enough to interact with comfortably.</p>
<p>The third is <strong>render frequency</strong>. Browsers paint the screen around 60 times per second, but streams can arrive much faster than that. This means the DOM, which is the browser’s internal representation of everything on the page, ends up being updated for frames the user will never actually see. Each update still costs something, and that cost adds up quietly until performance starts to slip.</p>
<p>As you go through each demo, pay attention to where things start feeling off. That small moment of friction when the interface starts getting in your way. This is exactly what we are here to fix.</p>
Example 1: Streaming AI Chat Responses
<p>This is the most familiar case. You click <strong>Stream</strong>, and the message starts growing token by token, just like a typical AI chat interface.</p>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/1-streaming-ai-chat-responses.png"></p>
<p>Here’s what I want you to try:</p>
<ul>
<li>Click the <strong>Stream</strong> button.</li>
<li>Try scrolling upwards while the message is streaming.</li>
<li>Increase the speed (to something like 10ms).</li>
</ul>
<p>You will notice something subtle but important: the UI keeps trying to pull you back down. Basically, it is making a decision for you about where your attention should be.</p>
<p>That’s one example. Let’s look at another.</p>
Example 2: Live Processing In A Log Viewer
<p>This example looks different on the surface, but the problem is actually very similar to the first example. Rather than a message that gets longer over time, new lines are appended continuously, like a terminal or a log stream.</p>
<p>The interesting part here is the tail toggle. It makes the trade-off between interaction and stable interfaces very clear:</p>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/2-live-processing-log-viewer.png"></p>
<p>Again, here is what I want you to try:</p>
<ul>
<li>Click the <strong>Start</strong> button.</li>
<li>Allow the logs to stream past the container’s height.</li>
<li>Scroll up to the beginning.</li>
<li>Stop the stream and disable the “tail” option.</li>
</ul>
<p>Notice that, when tail is enabled, the UI follows the new content. But you’re unable to scroll up and stay in place. Instead, you need to stop the stream or enable “tail” to explore the content.</p>
Example 3: Dashboard Displaying Real-Time Metrics
<p>In this case, the UI updates in place:</p>
<ul>
<li>Numbers change,</li>
<li>Charts shift,</li>
<li>Values refresh continuously.</li>
</ul>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/3-dashboard-display-real-time-metrics.png"></p>
<p>There is no scroll tension this time, but a different issue shows up. That’s what we’ll get into next.</p>
Why The UI Feels Unstable And How To Fix It
<p>If you tried the chat demo and scrolled upward while the responses were coming in, you may have spotted the first issue right away: the UI keeps pulling you back down to the latest streamed content as it updates. This takes you out of context and never allows you the time to fully digest the content once it has passed.</p>
<p>We see that exact same issue in the second example, the log viewer. Without the tail toggle, the streamed content overrides your scroll position.</p>
<p>These aren’t bugs in the traditional sense that they produce code errors; rather, they are accessibility issues that affect <em>all</em> users. That said, they can be fixed and prevented with careful UX considerations as you plan and test your work.</p>
<h3>Ensure Predictable Scroll Behavior</h3>
<p>This is the goal:</p>
<ul>
<li>Enable auto-scrolling when detecting that the user is at the bottom of the stream.</li>
<li>Stop auto-scrolling when the user has scrolled upwards.</li>
<li>Resume auto-scrolling if the user scrolls back to the bottom of the stream.</li>
</ul>
<p>To do that, we need to know whether the user has intentionally moved away from the bottom, which we can assume is true when the scroll position is manually changed. We can track that behavior with a flag.</p>
<pre><code>let userScrolled = false;
chatEl.addEventListener('scroll', () => {
const gap = chatEl.scrollHeight
- chatEl.scrollTop
- chatEl.clientHeight;
userScrolled = gap > 60;
});
</code></pre>
<p>That <code>60px</code> threshold matters. Without it, tiny layout changes (like a new line) would briefly create a gap and break auto-scroll, even if the user didn’t actually scroll.</p>
<p>Now let’s make sure that we enable auto-scrolling only when the user’s scroll position is equal to the stream’s scroll height, i.e., the user is at the bottom of the stream:</p>
<pre><code>function autoScroll() {
if (!userScrolled) {
chatEl.scrollTop = chatEl.scrollHeight;
}
}
</code></pre>
<p>One small thing that’s easy to miss: we need to reset <code>userScrolled</code> once a new stream begins. Otherwise, one scroll from a previous message can silently disable auto-scroll for the next one.</p>
<h3>Solidify Layout Stability</h3>
<p>We saw this in the first example as well. As new content streams in, the layout jumps, or shifts, taking you out of your current context. To be specific about what’s shifting: it’s not the page layout in a broad sense, it’s the content directly below the chat bubble. </p>
<p>There’s also a subtler artifact worth calling out before we look at the code: cursor flicker. Because we’re wiping <code>innerHTML</code> and recreating every element on every tick, the cursor is being destroyed and re-added constantly, up to 80 times per second at fast speeds. </p>
<p>At normal speed, it’s easy to miss, but slow the slider down to around 30ms, and you’ll see a faint but persistent flicker at the end of the text. Once we fix the rebuild pattern, the flicker disappears entirely.</p>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/4-broken-vs-fixed.png"></p>
<p>None of these changes is a big effort on its own. But once they are in place, the interface stops reacting blindly to every update. It becomes easier to read, easier to control, and a lot less distracting, even though the content is still coming in continuously.</p>
<p>There are even more considerations to take into account for ensuring a stable, predictable, and good user experience. For example, what happens if the stream is canceled mid-flow? And what can we do to ensure that user preferences are respected for things like reduced motion, keyboard navigation, and screen reader accessibility? Let’s get into those next.</p>
Handling Interrupted Streams
<p>Most streaming interfaces include a way to stop or cancel the stream. We saw that in the demos. But stopping often leaves the UI in an awkward state. The cursor might keep blinking, buttons don’t update, and the message just freezes mid-stream with no clear indication that it didn’t finish.</p>
<p>The problem is that the stop is usually wired to do one thing: cancel the timer. That’s not enough. You also need to (1) clear the pending buffer, (2) remove the cursor, (3) mark the response as incomplete, and (4) reset the buttons. Here’s how we accomplish those.</p>
<h3>1. Stop The Stream Cleanly</h3>
<p>Here’s what <code>stopStream</code> needs to do, in order:</p>
<ol>
<li>Cancel the timer and flip the <code>isStreaming</code> flag so no more ticks run.</li>
<li>Clear the <code>requestAnimationFrame</code> (RAF) buffer so nothing still queued gets written on the next frame.</li>
</ol>
<pre><code>function stopStream() {
clearTimeout(streamTimer);
isStreaming = false;
pending = '';
rafQueued = false;
}
</code></pre>
<p>Clearing the <code>pending</code> property matters because there might be characters buffered from the last stream instance that haven’t been flushed yet. If you don’t clear it, the next <code>requestAnimationFrame</code> fires, drains the buffer, and writes those characters to the DOM after the stream has officially stopped.</p>
<p>Now we move on to removing the cursor by calling <code>markStopped</code> on the bubble:</p>
<pre><code>if (cursorEl && cursorEl.parentNode) cursorEl.remove();
markStopped(aiBubble);
stopBtn.style.display = 'none';
retryBtn.style.display = '';
playBtn.style.display = '';
setStatus('Stopped', 'stopped');
chat.removeEventListener('scroll', onScroll);
}
</code></pre>
<p>The <code>cursorEl.parentNode</code> check is there because <code>stopStream</code> is also called internally when a new message fires mid-stream, at which point the cursor might already be gone. Calling <code>remove()</code> on a detached node throws, so we check first.</p>
<p><code>markStopped</code> appends a small label to the bottom of the bubble so the user knows the response didn’t finish:</p>
<pre><code>function markStopped(bubble) {
if (!bubble) return;
bubble.classList.add('stopped');
const label = document.createElement('span');
label.className = 'stopped-label';
label.textContent = 'response stopped';
bubble.appendChild(label);
}
</code></pre>
<p>The null check on <code>bubble</code> handles the edge case where stop fires before the AI message element has been initialized, which can happen if the user clicks stop during the 300ms delay before the bubble appears.</p>
<h3>Provide A Retry Option</h3>
<p>If the stream simply stops — perhaps due to a network issue or some other unexpected error — we ought to provide the user with a path to re-attempt the stream. What that basically means is preventing the UI from doing the expensive work needed to scroll back up to the top, re-read the prompt, and retype it. With a retry option, the user only needs to click a button, and the stream restarts from the current position. </p>
<p>To make that work, we need to hold onto the question when the stream starts:</p>
<pre><code>let lastQuestion = '';
function startStream(question, answer) {
lastQuestion = question;
// rest of setup...
}
</code></pre>
<p>Then, when the retry attempt runs, we reset everything and start fresh:</p>
<pre><code>function retryStream() {
if (currentMsgEl && currentMsgEl.parentNode) {
currentMsgEl.remove();
}
charIndex = 0;
userScrolled = false;
pending = '';
rafQueued = false;
isStreaming = true;
retryBtn.style.display = 'none';
stopBtn.style.display = '';
setStatus('Streaming...', 'streaming');
chat.addEventListener('scroll', onScroll, { passive: true });
setTimeout(() => {
initAIMsg();
tick(lastAnswer);
}, 200);
}
</code></pre>
<p>The reset is critical. Every piece of state needs to go back to its initial value, just like a brand new stream.</p>
<p><strong>Note:</strong> We remove the entire message row (<code>currentMsgEl</code>), not just the bubble. If only the bubble is removed, the layout wrapper and avatar remain persistent and break the structure.</p>
<h3>Send A New Message Mid-Stream</h3>
<p>There’s one more edge case that’s easy to miss. If the user sends a new message while a stream is still running, you end up with two loops writing to the DOM at the same time. The result is messy, and characters from different responses get mixed together.</p>
<p>Here’s what to do: stop the current stream before starting a new one.</p>
<pre><code>function startStream(question, answer) {
if (isStreaming) {
clearTimeout(streamTimer);
isStreaming = false;
pending = '';
rafQueued = false;
if (cursorEl && cursorEl.parentNode) cursorEl.remove();
chat.removeEventListener('scroll', onScroll);
}
// now reset and start fresh
charIndex = 0;
userScrolled = false;
isStreaming = true;
lastQuestion = question;
// ...
}
</code></pre>
<p>Here, we inline the cleanup rather than calling <code>stopStream</code> directly because <code>stopStream</code> also calls <code>markStopped</code> and resets the buttons. The next demo has all three behaviors wired up. You can start a stream, hit “Stop” mid-stream, and the cursor disappears, the “response stopped” label appears, and a “Retry” buttons displayed. </p>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/5-interruptible-stream.png"></p>
Accessibility
<p>Streaming interfaces are often built and tested with a mouse, so they may feel just fine in a browser, but break down in other situations that may not have been considered, like whether a screen reader announces new content at all. Or navigating with a keyboard might get stuck or lose focus as things update. And, of course, moving text can be uncomfortable — or even disabling — for <a href="https://www.smashingmagazine.com/2021/10/respecting-users-motion-preferences/">those with motion sensitivities</a>. </p>
<p>The good part is that you do not need to rebuild everything to accommodate these things; they can be fixed with solutions that sit on top of what is already there.</p>
<h3>Accommodating Assistive Technology With Live Regions</h3>
<p>Screen readers don’t automatically announce content that shows up on its own. They usually read things when the user moves to them. So, in a streaming UI, where text builds up over time, nothing gets announced. The content is there, but the user doesn’t hear anything.</p>
<p>The fix is <a href="https://w3c.github.io/aria/#aria-live"><code>aria-live</code></a>. It tells the browser to watch a container and announce updates as they happen, without the user needing to move focus.</p>
<pre><code><div
id="chat"
role="log"
aria-live="polite"
aria-atomic="false"
aria-label="Chat messages"
></div>
</code></pre>
<ul>
<li>
<code>role="log"</code> tells assistive tech this is a stream of updates, like a running transcript. Some tools handle this automatically, but it’s safer to be explicit so behavior stays consistent.</li>
<li>
<code>aria-atomic="false"</code> makes sure only the new content is announced. Without it, some screen readers try to read the whole message again on every update, which quickly becomes unusable.</li>
<li>
<code>aria-live="polite"</code> queues updates instead of interrupting. Use <code>assertive</code> only for things that really need immediate attention, like errors.</li>
</ul>
<h3>Handling Incomplete States</h3>
<p>Earlier, we inserted a “Response Stopped” label to the message when the stream stops mid-stream. Visually, that’s enough. But for a screen reader, that change needs to be announced.</p>
<p>Since the message is inside a live region with <code>aria-live="polite"</code>, the label will be automatically announced as new content when it’s added to the DOM. The live region already handles the announcement, so no additional ARIA is needed on the label itself.</p>
<p>The <strong>Retry</strong> button that appears next also needs context. If a screen reader simply says “Retry, button,” it’s not clear what action that refers to. You can fix that by adding an <code>aria-label</code> that includes the original question:</p>
<pre><code>retryBtn.setAttribute(
'aria-label',
`Retry: ${lastQuestion.slice(0, 60)}`
);
</code></pre>
<p>What you can do here is to set this label when the button appears, not on page load:</p>
<pre><code>retryBtn.style.display = 'inline-block';
retryBtn.setAttribute(
'aria-label',
`Retry: ${lastQuestion.slice(0, 60)}`
);
</code></pre>
<p>We also call <code>retryBtn.focus()</code> after stopping. That way, keyboard users don’t have to <code>Tab</code> around with the keyboard to find the next action.</p>
<p><strong>Testing with assistive technology:</strong> Don’t rely on assumptions about how screen readers announce this. Test with actual tools like NVDA (Windows), JAWS (Windows), or VoiceOver (Mac/iOS). Browser DevTools can show you what’s exposed in the accessibility tree, but they can’t tell you how the content <em>sounds</em>. A real screen reader will reveal whether the announcement is happening at the right time and in the right way.</p>
<h3>Account For Keyboard Navigation</h3>
<p>The controls need to work with the keyboard while the UI is live, so the Stop button has to be reachable. For someone not using a mouse, Tab + Enter is the only way to cancel a running stream. </p>
<p>Using <code>display: none</code> is fine for hiding buttons; it removes them from the tab order. The problem is using things like <code>opacity: 0</code> or <code>visibility: hidden</code>. Those hide elements visually, but they can still receive focus, so users end up tabbing onto something they can’t see.</p>
<p>Use <code>:focus-visible</code> so the focus ring shows up for keyboard navigation, but not for mouse clicks:</p>
<pre><code>btn:focus-visible {
outline: 2px solid #1d9e75;
outline-offset: 2px;
}
</code></pre>
<p>The cursor inside the message should have <code>aria-hidden="true"</code>. It’s just visual. Without that, some screen readers try to read it as text, which gets distracting.</p>
<h3>Motion Sensitivity</h3>
<p>The typewriter effect we see in practically every AI interface produces constant motion. As we’ve already discussed, certain amounts of motion can be disabling. Thankfully, browsers expose <code>prefers-reduced-motion</code>, which detects a user’s motion preferences at the operating system level.</p>
<p>For streaming, the best approach is simple: skip the animation and render the full response at once. The content stays the same, only without the motion.</p>
<pre><code>const reducedMotion = window.matchMedia(
'(prefers-reduced-motion: reduce)'
).matches;
</code></pre>
<pre><code>if (reducedMotion) {
initAIMsg();
for (const char of text) appendChar(char);
if (cursorEl && cursorEl.parentNode) cursorEl.remove();
done();
return;
}
tick(text); // normal animation
</code></pre>
<p>In CSS, the cursor blink also needs to stop. Despite being a minor detail, a blinking cursor element counts as <a href="https://www.w3.org/WAI/WCAG21/Understanding/three-flashes-or-below-threshold.html">flashing content</a>.</p>
<pre><code>@media (prefers-reduced-motion: reduce) {
.cursor { animation: none; opacity: 1; }
}
</code></pre>
<p>There we go! The demo below puts everything from this article together, so you can see how these patterns work in practice. It also includes a reduced motion toggle, so you can test the instant render version easily.</p>
<p><img src="https://files.smashing.media/articles/designing-stable-interfaces-streaming-content/6-accessible-streaming.png"></p>
Conclusion
<p>Streaming itself is mostly solved. Getting data from the server to the client is not the hard part anymore. What breaks is the UI on top of it.</p>
<p>When content updates continuously, small things start to matter, like scroll behavior, layout stability, render timing, and how the interface responds to user actions. If those aren’t handled well, the UI feels unstable and hard to use.</p>
<p>The patterns in this article fix that by:</p>
<ul>
<li>Keeping scroll position under the user’s control,</li>
<li>Updating only what has changed,</li>
<li>Batching renders per frame,</li>
<li>Handling stop and retry actions, and</li>
<li>Making the interface accessible.</li>
</ul>
<p>You don’t need all of these every time. But when streaming is involved, these are the places things usually go wrong.</p>
<h3>Further Reading</h3>
<ul>
<li>
<a href="https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events">Using Server-Sent Events</a><br>How to open a connection, handle events, and reconnect when needed. This is the transport layer, everything here builds on.</li>
<li>
<a href="https://developer.mozilla.org/en-US/docs/Web/API/Streams_API">Streams API</a><br>Streaming data directly from <code>fetch</code>. Useful when you need more control than SSE.</li>
<li>
<a href="https://developer.chrome.com/docs/devtools/performance">Chrome DevTools Performance panel</a><br>Helps you see layout recalculations and paint costs, so you can verify performance improvements.</li>
<li>“<a href="https://web.dev/articles/dom-size-and-interactivity">How Large DOM Sizes Affect Interactivity, And What You Can Do About It</a>”, Jeremy Wagner<br>Why large DOM trees slow things down, and how to keep them under control in long streaming sessions.</li>
</ul>
<p>May has a way of sneaking in with longer days, softer light, and that first real hint of summer in the air. It’s the season of fresh ideas and just enough <strong>energy to start something new</strong>, or finally pick up something you’ve been putting off. And sometimes, all it takes to spark that little bit of inspiration is a fresh view… even if it’s just on your desktop.</p>
<p>That’s where our <a href="https://www.smashingmagazine.com/category/wallpapers">monthly wallpapers series</a> comes in. For the past 15 years, artists and designers from around the world have been contributing their designs to celebrate each new month. This May is no exception. Created with care and a <strong>unique personal touch</strong>, every wallpaper in this collection comes in a variety of screen resolutions and can be downloaded for free. A huge thank-you to everyone who got creative — this post wouldn’t be possible without your wonderful support!</p>
<p>If <em>you</em> too would like to <strong>get featured</strong> in one of our upcoming wallpapers posts, please don’t hesitate to <a href="https://www.smashingmagazine.com/desktop-wallpaper-calendars-join-in/">join in</a>. We can’t wait to see what you’ll come up with! Happy May!</p>
<ul>
<li>You can <strong>click on every image to see a larger preview</strong>.</li>
<li>We respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the <strong>full freedom to explore their creativity</strong> and express emotions and experience through their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us but rather designed from scratch by the artists themselves.</li>
</ul>
Happily Invisible Online
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/may-26-happily-invisible-online-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-happily-invisible-online-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/may-26-happily-invisible-online-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/cal/may-26-happily-invisible-online-cal-3840x2160.png">3840x2160</a>
</li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/happily-invisible-online/nocal/may-26-happily-invisible-online-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Where Every Sip Tells A Secret
<p>“A quiet ritual, a shared moment, a pause in the rush — tea invites you to slow down and discover warmth in the smallest details. Let each cup unfold its own little story.” — Designed by <a href="https://www.popwebdesign.net/index_eng.html">PopArt Studio</a> from Novi Sad, Serbia.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/may-26-where-every-sip-tells-a-secret-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-where-every-sip-tells-a-secret-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/may-26-where-every-sip-tells-a-secret-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/cal/may-26-where-every-sip-tells-a-secret-cal-2560x1440.png">2560x1440</a>
</li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/where-every-sip-tells-a-secret/nocal/may-26-where-every-sip-tells-a-secret-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Just A Style Thing
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/may-26-just-a-style-thing-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-just-a-style-thing-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/may-26-just-a-style-thing-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/cal/may-26-just-a-style-thing-cal-3840x2160.png">3840x2160</a>
</li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/just-a-style-thing/nocal/may-26-just-a-style-thing-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Next Bloom
<p>“A small bee with a big garden plan checks each flower on her list and looks for the next bloom to visit.” — Designed by <a href="https://www.gingeritsolutions.com/">Ginger IT Solutions</a> from Serbia.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/may-26-next-bloom-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-next-bloom-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/may-26-next-bloom-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/cal/may-26-next-bloom-cal-2560x1440.png">2560x1440</a> </li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/next-bloom/nocal/may-26-next-bloom-nocal-2560x1440.png">2560x1440</a> </li>
</ul>
No Play Jack
<p>“Summer is getting closer, but we’re reminded of a more wintry and eerie landscape, like that of ‘The Shining.’ A truly great film, proving that you don’t need much, but it needs to be used well to create suspense and terror.” — Designed by <a href="https://www.silocreativo.com/en/">Veronica Valenzuela</a> from Spain.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/may-26-no-play-jack-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-no-play-jack-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/may-26-no-play-jack-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/cal/may-26-no-play-jack-cal-2560x1440.png">2560x1440</a>
</li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/no-play-jack/nocal/may-26-no-play-jack-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Buddha Purnima
<p>“Buddha Purnima, falling on May 1st, is the most sacred Buddhist festival commemorating the birth, enlightenment, and passing of Gautama Buddha. It is observed on the full moon day of the Vaisakha month, symbolizing spiritual liberation and the triumph of peace. The day serves as a global reminder of his core teachings: non-violence, compassion, and the path to ending suffering.” — Designed by <a href="https://linktr.ee/vdphotography">V D Photography</a> from Surat, Gujarat, India.</p>
<a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/may-26-buddha-purnima-full.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-26-buddha-purnima-preview-opt.png"></a>
<ul>
<li><a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/may-26-buddha-purnima-preview.png">preview</a></li>
<li>with calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/cal/may-26-buddha-purnima-cal-1280x720.jpg">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/cal/may-26-buddha-purnima-cal-1920x1080.jpg">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/cal/may-26-buddha-purnima-cal-2560x1440.jpg">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/cal/may-26-buddha-purnima-cal-3840x2160.jpg">3840x2160</a>
</li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/nocal/may-26-buddha-purnima-nocal-1280x720.jpg">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/nocal/may-26-buddha-purnima-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/nocal/may-26-buddha-purnima-nocal-2560x1440.jpg">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-26/buddha-purnima/nocal/may-26-buddha-purnima-nocal-3840x2160.jpg">3840x2160</a>
</li>
</ul>
Hello May
<p>“The longing for warmth, flowers in bloom, and new beginnings is finally over as we welcome the month of May. From celebrating nature on the days of turtles and birds to marking the days of our favorite wine and macarons, the historical celebrations of the International Workers’ Day, Cinco de Mayo, and Victory Day, to the unforgettable ‘May the Fourth be with you’, May is a time of celebration — so make every May day count!” — Designed by <a href="https://www.popwebdesign.net/logo-design-novisad.html">PopArt Studio</a> from Serbia.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-hello-may-nocal-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-hello-may-nocal-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-hello-may-nocal-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-320x480.jpg">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-640x480.jpg">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-800x480.jpg">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-800x600.jpg">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1024x768.jpg">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1152x864.jpg">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1280x720.jpg">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1280x800.jpg">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1280x960.jpg">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1366x768.jpg">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1440x900.jpg">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1440x1050.jpg">1440x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/hello-may/nocal/may-22-hello-may-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Add Color To Your Life!
<p>“This month is dedicated to flowers, to join us and brighten our days giving a little more color to our daily life.” — Designed by <a href="https://www.silocreativo.com/en/">Verónica Valenzuela Jimenez</a> from Spain.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/4255684a-cead-4db8-90c5-e891a148a79f/may-16-add-color-to-your-life-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/232649eb-ba07-4c5f-8af4-6458d6ed1f1b/may-16-add-color-to-your-life-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/232649eb-ba07-4c5f-8af4-6458d6ed1f1b/may-16-add-color-to-your-life-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1440x900.png">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/add-color-to-your-life/nocal/may-16-add-color-to-your-life-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Ladies And Gentlemen
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-25-ladies-and-gentlemen-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-25-ladies-and-gentlemen-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2026/may-25-ladies-and-gentlemen-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-25/ladies-and-gentlemen/nocal/may-25-ladies-and-gentlemen-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Poppies Paradise
<p>Designed by Nathalie Ouederni from France.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/a9c5cbab-479f-456f-acc7-bd58a731ff93/may-16-poppies-paradise-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bf91eec5-9d10-4290-96ae-c4261ace5321/may-16-poppies-paradise-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bf91eec5-9d10-4290-96ae-c4261ace5321/may-16-poppies-paradise-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/poppies-paradise/nocal/may-16-poppies-paradise-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Understand Yourself
<p>“Sunsets in May are the best way to understand who you are and where you are heading. Let’s think more!” — Designed by <a href="https://izhik.com/">Igor Izhik</a> from Canada.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/17fac211-eec5-4c00-975c-3f08f521948d/may-16-understand-yourself-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6a44c529-60bb-4ad2-812d-fd3d7b6347a6/may-16-understand-yourself-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6a44c529-60bb-4ad2-812d-fd3d7b6347a6/may-16-understand-yourself-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1400x1050.jpg">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/understand-yourself/nocal/may-16-understand-yourself-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Navigating The Amazon
<p>“We are in May, the spring month par excellence, and we celebrate it in the Amazon jungle.” — Designed by <a href="https://www.silocreativo.com/en">Veronica Valenzuela Jimenez</a> from Spain.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-navigating-the-amazon-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-navigating-the-amazon-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-navigating-the-amazon-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/navigating-the-amazon/nocal/may-24-navigating-the-amazon-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
ARRR2-D2
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-arrr2-d2-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-arrr2-d2-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-arrr2-d2-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/arrr2-d2/nocal/may-23-arrr2-d2-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Lake Deck
<p>“I wanted to make a big painterly vista with some mountains and a deck and such.” — Designed by <a href="https://www.ultravulture.xyz/">Mike Healy</a> from Australia.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/5a8bed12-4cbc-4b8c-bc6a-29f06546b065/may-18-lake-deck-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9bf65a30-3cc8-4130-a166-9da219b32153/may-18-lake-deck-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/9bf65a30-3cc8-4130-a166-9da219b32153/may-18-lake-deck-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-2560x1440.jpg">2560x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-2560x1600.jpg">2560x1600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/lake-deck/nocal/may-18-lake-deck-nocal-2880x1800.jpg">2880x1800</a>
</li>
</ul>
Today, Yesterday, Or Tomorrow
<p>Designed by <a href="https://instagram.com/almahoffmann">Alma Hoffmann</a> from the United States.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-20-today-yesterday-or-tomorrow-nocal-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-20-today-yesterday-or-tomorrow-nocal-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-20-today-yesterday-or-tomorrow-nocal-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1366x768.jpg">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-20/today-yesterday-or-tomorrow/nocal/may-20-today-yesterday-or-tomorrow-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
The Monolith
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-the-monolith-nocal-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-the-monolith-nocal-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-the-monolith-nocal-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/the-monolith/nocal/may-22-the-monolith-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Tentacles
<p>Designed by Julie Lapointe from Canada.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/90635f36-74f1-40b0-9e50-89f58797b569/may-12-tentacles-36-full.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3dd1179a-2295-4645-b45b-5d0c4dfa185a/may-12-tentacles-36-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3dd1179a-2295-4645-b45b-5d0c4dfa185a/may-12-tentacles-36-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-12/may-12-tentacles__36-nocal-1920x1200.jpg">1920x1200</a>
</li>
</ul>
Geo
<p>Designed by Amanda Focht from the United States.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e6aad900-2c45-4d09-8d8f-63d3a7e6c4d6/may-18-geo-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bb0c1df9-2698-41a7-9234-8ce0a987121f/may-18-geo-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bb0c1df9-2698-41a7-9234-8ce0a987121f/may-18-geo-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1024x1024.png">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1280x1024.png">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1366x768.png">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1440x900.png">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/geo/nocal/may-18-geo-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Make A Wish
<p>Designed by <a href="https://www.behance.net/juliaversinina">Julia Versinina</a> from Chicago, USA.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/77e2fb80-d494-4601-93a7-d109072e502a/may-15-make-a-wish-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3c0be6e7-ec80-4da9-b230-fdf54d63a878/may-15-make-a-wish-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3c0be6e7-ec80-4da9-b230-fdf54d63a878/may-15-make-a-wish-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-640x480.jpg">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-800x600.jpg">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1152x864.jpg">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/make-a-wish/nocal/may-15-make-a-wish-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Bat Traffic
<p>Designed by <a href="https://www.ricklopez.eu/">Ricardo Gimenes</a> from Spain.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-bat-traffic-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-bat-traffic-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2025/may-24-bat-traffic-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-2560x1440.png">2560x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-24/bat-traffic/nocal/may-24-bat-traffic-nocal-3840x2160.png">3840x2160</a>
</li>
</ul>
Blooming May
<p>“In spring, especially in May, we all want bright colors and lightness, which were not there in winter.” — Designed by <a href="https://masterbundles.com/">MasterBundles</a> from Ukraine.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-blooming-may-nocal-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-blooming-may-nocal-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2023/may-22-blooming-may-nocal-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-22/blooming-may/nocal/may-22-blooming-may-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Enjoy May!
<p>“Springtime, especially May, is my favorite time of the year. And I like popsicles — so it’s obvious isn’t it?” — Designed by Steffen Weiß from Germany.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/ec15f840-7895-49f3-9792-ac409bb8119c/may-15-enjoy-may-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6b2b9d54-a7e9-4848-ba1b-2e0bbea22e95/may-15-enjoy-may-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6b2b9d54-a7e9-4848-ba1b-2e0bbea22e95/may-15-enjoy-may-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-640x480.jpg">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-800x600.jpg">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1152x864.jpg">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1400x1050.jpg">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-15/enjoy-may/nocal/may-15-enjoy-may-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Stone Dahlias
<p>Designed by Rachel Hines from the United States.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/4e935ea8-c03b-4848-a092-7314c5d7b3e8/may-16-stone-dahlias-full.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e0cbc23f-b96b-41fe-8039-5834a602e59d/may-16-stone-dahlias-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/e0cbc23f-b96b-41fe-8039-5834a602e59d/may-16-stone-dahlias-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-640x480.jpg">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-800x600.jpg">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1152x864.jpg">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1366x768.jpg">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1400x900.jpg">1400x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1400x1050.jpg">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/stone-dahlias/nocal/may-16-stone-dahlias-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Spring Gracefulness
<p>“We don’t usually count the breaths we take, but observing nature in May, we can’t count our breaths being taken away.” — Designed by <a href="https://www.creitive.com/">Ana Masnikosa</a> from Belgrade, Serbia.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/f44085ec-427f-43b2-9e3d-f0073d21486e/may-17-spring-gracefulness-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/1feda6da-f329-496d-8aab-94d38cd68b90/may-17-spring-gracefulness-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/1feda6da-f329-496d-8aab-94d38cd68b90/may-17-spring-gracefulness-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-800x600.png">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1024x1024.png">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1280x1024.png">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1440x900.png">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1600x1200.png">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1680x1050.png">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1920x1200.png">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/spring-gracefulness/nocal/may-17-spring-gracefulness-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Sweet Lily Of The Valley
<p>“The ‘lily of the valley’ came earlier this year. In France, we celebrate the month of May with this plant.” — Designed by Philippe Brouard from France.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/c1ca2b84-94aa-4573-89f6-44da2575073a/may-14-lily-of-the-valley-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/950bb675-73d4-460d-bce6-7b91f10de9dd/may-14-lily-of-the-valley-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/950bb675-73d4-460d-bce6-7b91f10de9dd/may-14-lily-of-the-valley-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/lily-of-the-valley/nocal/may-14-lily-of-the-valley-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
April Showers Bring Magnolia Flowers
<p>“April and May are usually when everything starts to bloom, especially the magnolia trees. I live in an area where there are many and when the wind blows, the petals make it look like snow is falling.” — Designed by <a href="https://www.instagram.com/sarmas23/">Sarah Masucci</a> from the United States.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/ee13fc1e-616a-4805-9d29-f9b8ed28ff1b/may-19-april-showers-bring-magnolia-flowers-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bf059fd3-dbd8-4270-b9ed-70e1a0019e4c/may-19-april-showers-bring-magnolia-flowers-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/bf059fd3-dbd8-4270-b9ed-70e1a0019e4c/may-19-april-showers-bring-magnolia-flowers-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-640x480.jpg">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-800x600.jpg">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1152x864.jpg">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1400x1050.jpg">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-19/april-showers-bring-magnolia-flowers/nocal/may-19-april-showers-bring-magnolia-flowers-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Always Seek Knowledge
<p>“‘As knowledge increases, wonder deepens.’ (Charles Morgan) So I tried to create an illustration based on this.” — Designed by <a href="https://www.behance.net/bisakhadatta">Bisakha Datta</a> from India.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/02b2e59d-4a4a-4d79-b143-2967d04ce5d2/may-16-always-seek-knowledge-full.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/09424f1a-9b98-4b7f-8fc7-838a143c50bb/may-16-always-seek-knowledge-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/09424f1a-9b98-4b7f-8fc7-838a143c50bb/may-16-always-seek-knowledge-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1024x1024.png">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1280x1024.png">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1366x768.png">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1400x900.png">1400x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1600x1200.png">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1680x1050.png">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1920x1200.png">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-16/always-seek-knowledge/nocal/may-16-always-seek-knowledge-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
May Your May Be Magnificent
<p>“May should be as bright and colorful as this calendar! That’s why our designers chose these juicy colors.” — Designed by <a href="https://masterbundles.com/">MasterBundles</a> from Ukraine.</p>
<a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-may-your-may-be-magnificent-full-opt.png"><img src="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-may-your-may-be-magnificent-preview-opt.png"></a>
<ul>
<li><a href="https://files.smashing.media/articles/desktop-wallpaper-calendars-may-2024/may-23-may-your-may-be-magnificent-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-320x480.png">320x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-640x480.png">640x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-800x480.png">800x480</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-800x600.png">800x600</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1024x768.png">1024x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1024x1024.png">1024x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1152x864.png">1152x864</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1280x720.png">1280x720</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1280x800.png">1280x800</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1280x960.png">1280x960</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1280x1024.png">1280x1024</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1366x768.png">1366x768</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1400x1050.png">1400x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1440x900.png">1440x900</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1600x1200.png">1600x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1680x1050.png">1680x1050</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1680x1200.png">1680x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1920x1080.png">1920x1080</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1920x1200.png">1920x1200</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-1920x1440.png">1920x1440</a>, <a href="https://www.smashingmagazine.com/files/wallpapers/may-23/may-your-may-be-magnificent/nocal/may-23-may-your-may-be-magnificent-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Celestial Longitude Of 45°
<p>“Lixia is the 7th solar term according to the traditional East Asian calendars, which divide a year into 24 solar terms. It signifies the beginning of summer in East Asian cultures. Usually begins around May 5 and ends around May 21.” — Designed by Hong, Zi-Cing from Taiwan.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/b01faf40-60e9-48e1-adc5-0a63d5f344d9/may-17-celestial-longitude-of-45-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/cd0bb92b-3d66-4a71-9b8e-4381a74aa24f/may-17-celestial-longitude-of-45-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/cd0bb92b-3d66-4a71-9b8e-4381a74aa24f/may-17-celestial-longitude-of-45-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1080x1920.png">1080x1920</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1366x768.png">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1680x1050.png">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-1920x1200.png">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/celestial-longitude-of-45/nocal/may-17-celestial-longitude-of-45-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Power
<p>Designed by Elise Vanoorbeek from Belgium.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/42385ce0-2c23-4374-b4ed-923fcbcfbe8a/may-13-power-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/146f94c7-9077-42b4-b742-00ad48648f20/may-13-power-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/146f94c7-9077-42b4-b742-00ad48648f20/may-13-power-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-13/power/may-13-Power-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Rainy Days
<p>“Winter is nearly here in my part of the world and I think rainy days should be spent at home with a good book!” — Designed by <a href="https://www.tazi.com.au/">Tazi Design</a> from Australia.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/35b826f3-58bc-423a-af71-d195356e237d/may-17-rainy-days-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3cca2ae7-786f-45a4-b3b4-7fad86874273/may-17-rainy-days-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/3cca2ae7-786f-45a4-b3b4-7fad86874273/may-17-rainy-days-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-800x600.png">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1600x1200.png">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/rainy-days/nocal/may-17-rainy-days-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Birds Of May
<p>“Inspired by a little-known ‘holiday’ on May 4th known as ‘Bird Day’. It is the first holiday in the United States celebrating birds. Hurray for birds!” — Designed by <a href="https://www.iwantclarity.com/">Clarity Creative Group</a> from Orlando, FL.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/cd072497-e15f-4edc-bd47-ea121d7b2a45/may-14-bird-day-full-opt.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2fe8b679-631f-4f87-916c-8858285564cb/may-14-bird-day-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2fe8b679-631f-4f87-916c-8858285564cb/may-14-bird-day-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-640x960.png">640x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-640x1136.png">640x1136</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-800x600.png">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1024x1024.png">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1280x1024.png">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1440x900.png">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1600x1200.png">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1680x1050.png">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1920x1200.png">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-14/bird-day/nocal/may-14-bird-day-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
Magical Sunset
<p>“I designed Magical Sunset as a friendly reminder to take a moment and enjoy life around you. Each sunset and sunrise brings a new day for greatness and a little magic.” — Designed by <a href="https://www.behance.net/ckwarcup">Carolyn Warcup</a> from the United States.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/d9e83a00-c721-4333-9ee6-3771aa0dda20/may-18-magical-sunset-full.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2c9109eb-03e5-4752-a4a7-cf425910fc87/may-18-magical-sunset-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/2c9109eb-03e5-4752-a4a7-cf425910fc87/may-18-magical-sunset-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-320x480.png">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-640x480.png">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-800x480.png">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-800x600.png">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1024x768.png">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1024x1024.png">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1152x864.png">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1280x720.png">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1280x800.png">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1280x960.png">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1280x1024.png">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1366x768.png">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1400x1050.png">1400x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1440x900.png">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1600x1200.png">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1680x1050.png">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1680x1200.png">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1920x1080.png">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1920x1200.png">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-1920x1440.png">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-18/magical-sunset/nocal/may-18-magical-sunset-nocal-2560x1440.png">2560x1440</a>
</li>
</ul>
All Is Possible In May
<p>“Edwin Way Teale once said that ‘[t]he world’s favorite season is the spring. All things seem possible in May.’ Now that the entire nature is clothed with grass and branches full of blossoms that will grow into fruit, we cannot help going out and enjoying every scent, every sound, every joyful movement of nature’s creatures. Make this May the best so far!” — Designed by <a href="https://www.popwebdesign.net/index_eng.html">PopArt Studio</a> from Serbia.</p>
<a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/ebd55f2d-7674-4914-8558-c0e3df62b483/may-17-all-is-possible-in-may-full.png"><img src="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6bfe075b-c505-41e3-9b55-b599683337cf/may-17-all-is-possible-in-may-preview-opt.png"></a>
<ul>
<li><a href="https://archive.smashing.media/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/6bfe075b-c505-41e3-9b55-b599683337cf/may-17-all-is-possible-in-may-preview-opt.png">preview</a></li>
<li>without calendar: <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-320x480.jpg">320x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-640x480.jpg">640x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-800x480.jpg">800x480</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-800x600.jpg">800x600</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1024x768.jpg">1024x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1024x1024.jpg">1024x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1152x864.jpg">1152x864</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1280x720.jpg">1280x720</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1280x800.jpg">1280x800</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1280x960.jpg">1280x960</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1280x1024.jpg">1280x1024</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1366x768.jpg">1366x768</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1440x900.jpg">1440x900</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1440x1050.jpg">1440x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1600x1200.jpg">1600x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1680x1050.jpg">1680x1050</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1680x1200.jpg">1680x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1920x1080.jpg">1920x1080</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1920x1200.jpg">1920x1200</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-1920x1440.jpg">1920x1440</a>, <a href="https://smashingmagazine.com/files/wallpapers/may-17/all-is-possible-in-may/nocal/may-17-all-is-possible-in-may-nocal-2560x1440.jpg">2560x1440</a>
</li>
</ul>
Get Featured Next Month
<p>Feeling inspired? We’ll publish the <strong>June wallpapers</strong> on May 31, so if you’d like to be part of the collection, please don’t hesitate to <a href="https://www.smashingmagazine.com/desktop-wallpaper-calendars-join-in/"><strong>submit your design</strong></a>. We are already looking forward to it!</p>
<p>Through many discussions with industry colleagues, we’ve started hearing a phrase more often when swapping stories about AI adoption:</p>
<blockquote>“Now I don’t have to <strong>bug</strong> [someone].”</blockquote>
<p>Product designers don’t need to bug researchers anymore — retrieval-augment generation (RAG) tools surface insights instantly. Product Managers don’t need to <em>bug</em> designers for mockups — AI generates acceptable options. Engineers don’t need to <em>bug</em> accessibility teams — automated scanners flag issues in real-time.</p>
<p>It’s framed as liberation, and in many ways, it is. There’s genuine relief in being unblocked, in not having to wait, in solving problems independently.</p>
<p>With AI, we’re building a “bug-free workforce”.</p>
<p>But what if the bugs that AI is automating away, such as the quick questions, the small talk, the organic connections, are actually an important part of the scaffolding that builds and sustains healthy teams?</p>
The Vanishing Scaffolding
<p>Consider what actually disappears when we turn to AI assistance before engaging with a colleague directly. For instance: </p>
<ul>
<li>The 2-minute Slack exchange that turns into a 20-minute whiteboarding session.</li>
<li>The “quick question” that reveals a fundamental misalignment.</li>
<li>The accessibility review that becomes mentorship.</li>
</ul>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/1-ai-driven-efficiency-weaken-team-cohesion.jpg"></p>
<p>Although these interactions are primarily intended to exchange information and unblock individuals’ tasks, many are the building blocks for the intangible but crucial sense of belonging and connection in the workplace.</p>
<blockquote>The inefficiencies of interpersonal communication and daily interaction build the larger organism known as work culture. When AI disrupts these interactions, what is lost?</blockquote>
What The Research Actually Shows
<p>There is ample psychological research to support our hypothesis: If the trust built through organic and informal connections is threatened, teams will be negatively impacted. Let’s examine a few: </p>
<p>In 2012, <a href="https://hbr.org/2012/04/the-new-science-of-building-great-teams">MIT’s Human Dynamics Lab (Pentland, 2012)</a> discovered that the best predictor of team productivity wasn’t formal meetings but “energy” from informal communication: the hallway conversations, coffee chats, and quick questions. Teams with the most informal interaction had <strong>35% more successful outcomes</strong>. With AI, what energy is <em>not</em> generated, leading to fewer successful outcomes?</p>
<p>In 2015, <a href="https://www.nytimes.com/2016/02/28/magazine/what-google-learned-from-its-quest-to-build-the-perfect-team.html?unlocked_article_code=1.W1A.sA1C.ptegMsaJ_EY0&smid=url-share">Google’s Project Aristotle</a> studied over 180 teams to find out why some thrived, and others underperformed. They found that psychological safety, the shared belief among team members that the environment is safe for interpersonal risk-taking, built through frequent, low-stakes interactions, was the <strong>number one predictor of high performance</strong>. Not intelligence. Not resources. Trust built through <strong>micro-moments</strong>. The exact micro-moments we see vanishing when we overuse AI. </p>
<p>In 2025, researchers from Harvard, Columbia, and Yeshiva University published <a href="https://direct.mit.edu/rest/article/107/4/951/115633/Super-Mario-Meets-AI-Experimental-Effects-of">a study focused on the impact of AI on performance and team coordination</a>. The authors concluded that AI-driven automation decreased overall team performance and increased coordination failures. These effects were especially large in the short-term and in low- and medium-skilled teams. Automation also decreased team trust.</p>
Why This Matters
<p>When AI disrupts the team’s energy and psychological safety, a sense of disconnection sets in, which, in turn, hurts the company’s bottom line.</p>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/2-ai-disrupts-team-energy.jpg"></p>
<h3>Disconnected Employees Leave</h3>
<p>People don’t stay at companies because of the work. They stay because of the people. And if connections to colleagues decrease due to AI’s presence, how might that expedite one’s departure? </p>
<p>Consider this question in dollar terms. McKinsey’s <a href="https://www.mckinsey.com/capabilities/people-and-organizational-performance/our-insights/the-organization-blog/the-great-attrition-the-power-of-adaptability">Great Attrition research</a> found that not feeling a sense of belonging was one of the most frequently cited reasons employees left. When informal micro-interactions disappear, belonging erodes, and people walk.</p>
<blockquote>“Employee disengagement and attrition could cost a median-size S&P 500 company between $228 million and $355 million a year in lost productivity.”<br><br>— <a href="https://www.mckinsey.com/capabilities/people-and-organizational-performance/our-insights/some-employees-are-destroying-value-others-are-building-it-do-you-know-the-difference">McKinsey</a>
</blockquote>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/3-cost-employee-disengagement.png"></p>
<p>Leaders must ask themselves if the potential gains from AI rollouts and promised productivity gains outweigh the costs of a disengaged and attrition-prone workforce. The evidence suggests otherwise.</p>
<h3>Disconnected Teams Are Less Innovative</h3>
<p>Korean researchers in 2024 <a href="https://compass.onlinelibrary.wiley.com/doi/10.1111/soc4.13214">analyzed innovation in the private sector</a> and concluded that weak ties — the bridging conversations with people you interact with occasionally — sustained innovative performance in companies characterized by active technological innovation.</p>
<p>Simply put, breakthroughs do not necessarily emerge from your core team but from interactions with the people you would have “bugged” in the past. Eliminating these interactions in favor of AI could not only negatively impact team health, but it could also hurt the business through decreased depth and breadth of innovation in design, coding, content, and beyond.</p>
<blockquote>AI’s seduction is that it feels like pure gain until the team realizes they’ve become strangers who happen to work on the same project.</blockquote>
<p>If a shared sense of purpose and belonging disappears, employers have a workforce less engaged and less innovative, with a higher chance of attrition.</p>
<p>If AI helps us need each other less, how can a company hope to nurture a connected, supported, and effective workforce?</p>
<p>The answer requires a balanced and multi-pronged approach. Use AI tools for dull, repetitive, and high-volume tasks while reserving the human brain for higher-level problem solving. Design physical workspaces and online team interactions that will maintain or increase human connection.</p>
Maintaining The Best Of Both
<p>In short, leverage the best of AI tools and human abilities.</p>
<h3>1. Use AI To Eliminate The Toil</h3>
<p>In the March 2026 article “<a href="https://hbr.org/2026/03/when-using-ai-leads-to-brain-fry">When Using AI Leads to ‘Brain Fry’</a>,” the authors outline their study of 1,488 full-time U.S.-based workers to understand the impact of AI use on professionals. The result was a concept they call “AI Brain Fry,” a form of acute mental fatigue and cognitive exhaustion resulting from excessive use, interaction, or oversight of AI tools beyond an individual’s cognitive capacity.</p>
<p>Further, the study reveals that the cognitive strain created by intensive AI use carries business costs, including decision fatigue and error-prone work. Perhaps the most troubling finding is that 34% of workers who reported experiencing brain fry intended to quit their jobs. The loss of institutional knowledge caused by turnover is well documented.</p>
<p>One conclusion is that AI is not inherently bad or cognitively taxing. Rather, as with any tool, what matters is how it’s used. </p>
<p>Focusing our energy on identifying the repetitive, unenjoyable parts of our jobs (or “toil”) and using AI to remove them is a way to improve cognitive and team health.</p>
<p>Indeed, the Harvard Business Review authors explain that participants in their study who used AI to eliminate toil only had 15% lower rates of burnout but also reported <em>“a higher degree of social connection with peers…because they had more time to spend ‘off keyboard.’”</em> In this toil-elimination scenario, AI did not disrupt team connections; it removed what we consider busy work that prevented the team from solving problems with colleagues.</p>
<h3>2. Institutionalize Productive Friction</h3>
<p>Steve Jobs famously designed the Pixar studios so employees would have to bump into each other. <em>“Steve realized that when people run into each other, when they make eye contact, things happen,”</em> <a href="https://officesnapshots.com/2012/07/16/pixar-headquarters-and-the-legacy-of-steve-jobs/">reflected Brad Bird</a>, the director of <em>The Incredibles</em> and <em>Ratatouille</em> movies. John Lasseter, responsible for some of Pixar’s most beloved films, shared that he’d <em>“never seen a building that promoted collaboration and creativity as well as this one.”</em> Jobs understood that serendipitous collision drives creative work, and Pixar’s oeuvre reveals the genius.</p>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/4-pixar-studio-floor-plans.png"></p>
<p>What is the equivalent of creating this type of organizational design in the age of AI? </p>
<ul>
<li>
<strong>Build AI tools that connect the team.</strong><br>We’ve found that when building internal agents, it’s best to attach the names of the original creators to the work and to direct seekers to these creators. This way, any seeker not only finds the answer but is connected to others with more institutional knowledge to help.</li>
<li>
<strong>Publicly spotlight successful team uses of AI.</strong><br>By finding examples of how teams have used AI to work more effectively and efficiently <em>together</em> and highlighting them in public forums and townhalls, it helps establish the narrative that AI can be something that brings us together rather than pushes us apart.</li>
<li>
<strong>Establish rotation programs.</strong><br>If AI means product managers can prototype, have them shadow designers anyway. Having a more holistic understanding of each other’s craft through direct dialogues benefits both sides beyond simple AI outputs.</li>
<li>
<strong>Hold panel discussions on the evolution of work.</strong><br>Gather cross-functional partners to regularly discuss and debate how our work is currently changing or could in the near future. It keeps <em>intentional</em> change top of mind and in the open.</li>
</ul>
<h3>3. Build Team Cohesion Through AI-inspired Laughter</h3>
<p>Positive humor in the workplace has been <a href="https://www.humorseriously.com/">studied extensively</a> as a way for teams to bond. We see how AI can improve team connections through a good, absurd laugh.</p>
<ul>
<li>
<strong>Bad UX Vibecoding Competitions</strong><br>Give your team a silly prompt (“Design the worst volume control”) and 30 minutes to vibe-code a horrible solution. The process of building these outputs helps the team: learn new AI tools, get the creative juices flowing, and, most importantly, laugh together.</li>
</ul>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/5-results-vibe-coding-activity.png"></p>
<ul>
<li>
<strong>Hyper-specific AI Creations</strong><br>Would a certain image make people smile in this workshop? Is there a funny idea at work that would be even weirder as an AI-generated song? Using them for absurd work moments is a fun way to get people laughing.</li>
</ul>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/6-ai-spin-cliche.png"></p>
<p>Eliminating toil, institutionalizing productive friction, and building team cohesion through humor show the power of integrating the best of the human brain and AI algorithms.</p>
<p><img src="https://files.smashing.media/articles/bug-free-workforce/7-combination-ai-human-driven-activity.jpg"></p>
<p>The question isn’t whether to use AI. Contemporary workers have less and less choice. The question is: what kind of team do you want to become when AI is the newest teammate?</p>
Conclusion
<p>Leaders who introduce artificial intelligence with an equal amount of <em>emotional intelligence</em> will enable their teams to thrive by leveraging the power of AI while also shielding their teams from the inherent risks associated with the disruptive natures of these new tools.</p>
<p>When the unexpected hits — the crisis, the pivot, the moment that requires trust you can’t manufacture overnight — it will be the teams with cultures intact that will thrive.</p>
<h3>References</h3>
<ul>
<li>
<a href="https://www.amazon.com/Stages-Psychological-Safety-Inclusion-Innovation/dp/0369356551?adgrpid=180038482722&hvpone=&hvptwo=&hvadid=748008426882&hvpos=&hvnetw=g&hvrand=18293123324910416997&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9018945&hvtargid=dsa-2414841787086&hydadcr=&mcid=&hvocijid=18293123324910416997--&hvexpln=m-dsad&tag=googhydr-20&hvsb=Money_d&hvcampaign=dsadesk">The 4 Stages of Psychological Safety: Defining the Path to Inclusion and Innovation</a>, Clark, T. R. (2020), Berrett-Koehler Publishers</li>
<li>
<a href="https://www.nytimes.com/2016/02/28/magazine/what-google-learned-from-its-quest-to-build-the-perfect-team.html">What Google Learned From Its Quest to Build the Perfect Team</a>, Duhigg, C. (2016), The New York Times Magazine</li>
<li>
<a href="https://www.hbs.edu/faculty/Pages/item.aspx?num=2959">Psychological Safety and Learning Behavior in Work Teams</a>, Edmondson, A. C. (1999), Administrative Science Quarterly, 44(2)</li>
<li>
<a href="https://compass.onlinelibrary.wiley.com/doi/10.1111/soc4.13214">The Strength of a Weak Tie in the Innovative Performance of Firms: A Case of Korean High-tech Manufacturing Small and Medium-sized Enterprises</a>, Hong, Jinki; Lee; Raehyung; Ohm, Jay Y.;, Lee, Duk Hee (2024), Sociology Compass Volume 18, Issue 5</li>
<li>
<a href="https://www.tandfonline.com/doi/abs/10.1080/08956308.2021.1863111">How Psychological Safety Impacts R&D Project Teams</a>, Liu, Yuwen; Keller, R.T. (2021), Research-Technology Management Volume 64, Issue 2</li>
<li>
<a href="https://www.tandfonline.com/doi/full/10.1080/08956308.2023.2164439">Creating Psychological Safety in the Workplace</a>, McCausland, Tammy (2023), Research-Technology Management Volume 66, Issue 2</li>
<li>
<a href="https://www.mckinsey.com/capabilities/people-and-organizational-performance/our-insights/some-employees-are-destroying-value-others-are-building-it-do-you-know-the-difference">Some Employees Are Destroying Value. Others Are Building It. Do You Know the Difference?</a>, De Smet, Aaron; Mugayar-Baldocchi, Marino; Reich, Angelika; Schaninger, Bill (September 11, 2023), McKinsey Quarterly</li>
<li>
<a href="https://hbr.org/2012/04/the-new-science-of-building-great-teams">The New Science of Building Great Teams</a>, Pentland, A. (2012), Harvard Business Review</li>
<li>
<a href="https://direct.mit.edu/rest/article/107/4/951/115633/Super-Mario-Meets-AI-Experimental-Effects-of">Super Mario Meets AI: Experimental Effects of Automation and Skills on Team Performance and Coordination</a>, Dell’Acqua, Fabrizio; Kogut, Bruce; Perkowski, Patryk (2025), The Review of Economics and Statistics 107 (4)</li>
<li>
<a href="https://www.humorseriously.com/">Humor Is Serious Business: Why Humor Is A Secret Weapon In Business And Life</a>, Aaker, J; Bagdonas, Naomi (2021)</li>
</ul>
<p>In early 2026, I noticed that the UX designer’s toolkit seemed to shift overnight. The industry standard <em>“Should designers code?”</em> debate was abruptly settled by the market, not through a consensus of our craft, but through the brute force of job requirements. If you browse LinkedIn today, you’ll notice a stark change: UX roles increasingly demand <strong><a href="https://www.refontelearning.com/blog/ui-ux-designer-engineering-in-2026-crafting-future-ready-user-experiences">AI-augmented development</a></strong>, <strong>technical orchestration,</strong> and <strong>production-ready prototyping.</strong> </p>
<p>For many, including myself, this is the ultimate design job nightmare. We are being asked to deliver both the “vibe” and the “code” simultaneously, using AI agents to bridge a technical gap that previously took years of computer science knowledge and coding experience to cross. But as the industry rushes to meet these new expectations, they are discovering that AI-generated functional code is not always <em>good</em> code.</p>
The LinkedIn Pressure Cooker: Role Creep In 2026
<p>The job market is sending a clear signal. While traditional graphic design roles are expected to grow by only <strong>3%</strong> through 2034, UX, UI, and <a href="https://www.nobledesktop.com/careers/designer/job-outlook#:~:text=The%20projected%20future%20growth%20figures%20for%20Digital,job%20growth%20(which%20lies%20somewhere%20around%205%25">Product Design roles</a>.) are projected to grow by <strong>16%</strong> over the same period.</p>
<p>However, this growth is increasingly tied to the rise of <strong>AI product development</strong>, where “design skills” have recently become the #1 most in-demand capability, even ahead of coding and cloud infrastructure. Companies building these platforms are no longer just looking for visual designers; they need professionals who can “<a href="https://humbldesign.io/blog-posts/will-ai-replace-designers-2026">translate technical capability into human-centered experiences</a>.”</p>
<p>This creates a high-stakes environment for the UX designer. We are no longer just responsible for the interface; we are expected to understand the technical logic well enough to ensure that complex AI capabilities feel intuitive, safe, and useful for the human on the other side of the screen. Designers are being pushed toward a <strong>“design engineer” model</strong>, where we must bridge the gap between abstract <a href="https://www.refontelearning.com/blog/ui-ux-designer-engineering-in-2026-crafting-future-ready-user-experiences#skills-and-competencies-for-the-2026-uiux-designer-3">AI logic and user-facing code</a>.</p>
<p>A <a href="https://www.lyssna.com/blog/ux-design-trends/">recent survey</a> found that <strong>73% of designers</strong> now view AI as a primary collaborator rather than just a tool. However, this “collaboration” often looks like “role creep.” Recruiters are often not just looking for someone who understands user empathy and information architecture — they want someone who can also prompt a React component into existence and push it to a repository!</p>
<p>This shift has created a <strong>competency gap</strong>.</p>
<blockquote>As an experienced senior designer who has spent decades mastering the nuances of cognitive load, accessibility standards, and ethnographic research, I am suddenly finding myself being judged on my ability to debug a CSS Flexbox issue or manage a Git branch.</blockquote>
<p>The nightmare isn’t the technology itself. It’s the <strong>reallocation of value</strong>.</p>
<p>Businesses are beginning to value the speed of output over the quality of the experience, fundamentally changing what it means to be a “successful” designer in 2026.</p>
<p><img src="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/1-figma.jpg"></p>
<h3>The Competence Trap: Two Job Skill Sets, One Average Result</h3>
<p>There is potentially a very dangerous myth circulating in boardrooms that AI makes a designer “equal” to an engineer. This narrative suggests that because an LLM can generate a functional JavaScript event handler, the person prompting it doesn’t need to understand the underlying logic. In reality, attempting to master two disparate, deep fields simultaneously will most likely lead to being <strong>averagely competent</strong> at both.</p>
<h3>The “Averagely Competent” Dilemma</h3>
<p>For a senior UX designer to become a senior-level coder is like asking a master chef to also be a master plumber because “they both work in the kitchen.” You might get the water running, but you won’t know why the pipes are rattling.</p>
<ul>
<li>
<strong>The “cognitive offloading” risk.</strong><br>Research shows that while AI can speed up task completion, it often leads to a significant decrease in conceptual mastery. In a controlled study, participants using AI assistance scored <a href="https://www.psychologytoday.com/au/blog/the-asymmetric-brain/202602/cognitive-offloading-using-ai-reduces-new-skill-formation">17% lower</a> on comprehension tests than those who coded by hand.</li>
<li>
<strong>The debugging gap.</strong><br>The largest performance gap between AI-reliant users and hand-coders is in <a href="https://www.anthropic.com/research/AI-assistance-coding-skills">debugging</a>. When a designer uses AI to write code they don’t fully understand, they don’t have the ability to identify <em>when</em> and <em>why</em> it fails.</li>
</ul>
<p><img src="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/2-ai-assistance-coding-skills-speed.png"></p>
<p>So, if a designer ships an AI-generated component that breaks during a high-traffic event and cannot manually trace the logic, they are no longer an expert. They are now a liability.</p>
<h3>The High Cost Of Unoptimised Code</h3>
<p>Any experienced code engineer will tell you that creating code with AI without the right prompt leads to a lot of rework. Because most designers lack the technical foundation to audit the code the AI gives them, they are inadvertently shipping massive amounts of <a href="https://gocrossbridge.com/blog/ai-generated-code/">“Quality Debt”</a>.</p>
Common Issues In Designer-Generated AI Code
<ul>
<li>
<strong>The security flaw</strong><br>Recent reports indicate that up to <a href="https://www.sherlockforensics.com/pages/ai-code-security-report-2026.html">92% of AI-generated codebases</a> contain at least one critical vulnerability. A designer might see a functioning login form, unaware that it has an 86% failure rate in XSS defense, which are the security measures aimed at preventing attackers from injecting malicious scripts into trusted websites.</li>
<li>
<strong>The accessibility illusion</strong><br>AI often generates “functional” applications that lack semantic integrity. A designer might prompt a “beautiful and functional toggle switch,” but the AI may provide a non-semantic <code><div></code> that lacks keyboard focus and screen-reader compatibility, creating <a href="https://www.levelaccess.com/blog/accessibility-debt-in-software-development-and-how-to-engineer-it-out/">Accessibility Debt</a> that is expensive to fix later.</li>
<li>
<strong>The performance penalty</strong><br>AI-generated code tends to be verbose. AI is linked to <a href="https://www.netcorpsoftwaredevelopment.com/blog/ai-generated-code-statistics">4x more code duplication</a> than human-written code. This verbosity slows down page loads, creates massive CSS files, and negatively impacts SEO. To a business, the task looks “done.” To a user with a slow connection or a screen reader, the site is a nightmare.</li>
</ul>
Creating More Work, Not Less
<p>The promise of AI was that designers could ship features without bothering the engineers. The reality has been the birth of a <strong>“Rework Tax”</strong> that is draining engineering resources across the industry.</p>
<ul>
<li>
<strong>Cleaning up</strong><br>Organisations are finding that while velocity increases, incidents per Pull Request are also rising by <a href="https://blog.exceeds.ai/ai-code-analysis-benchmark-reports/">23.5%</a>. Some engineering teams now spend a significant portion of their week cleaning up “AI slop” delivered by design teams who skipped a rigorous review process.</li>
<li>
<strong>The communication gap</strong><br>Only <a href="https://www.lyssna.com/blog/ux-design-trends/">69% of designers</a> feel AI improves the quality of their work, compared to <strong>82% of developers</strong>. This gap exists because “code that compiles” is not the same as “code that is maintainable.”</li>
</ul>
<p>When a designer hands off AI-generated code that ignores a company’s internal naming conventions or management patterns, they aren’t helping the engineer; they are creating a puzzle that someone else has to solve later.</p>
<p><img src="https://files.smashing.media/articles/ux-designer-nightmare-production-ready-becomes-design-deliverable/3-issues-developers-face-ai-generated-code.jpg"></p>
<h3>The Solution</h3>
<p>We need to move away from the nightmare of the “<strong>Solo Full-Stack Designer</strong>” and toward a model of <strong>designer/coder collaboration</strong>.</p>
<p><strong>The ideal reality:</strong></p>
<ul>
<li>
<strong>The Partnership</strong><br>Instead of designers trying to be mediocre coders, they should work in a <strong>human-AI-human loop</strong>. A senior UX designer should work <em>with</em> an engineer to use AI; the designer creates prompts for <strong>intent, accessibility, and user flow</strong>, while the engineer creates prompts for <strong>architecture and performance</strong>.</li>
<li>
<strong>Design systems as guardrails</strong><br>To prevent accessibility debt from spreading at scale, <a href="https://webaim.org/projects/million/">accessible components must be the default</a> in your design system. AI should be used to feed these tokens into your UI, ensuring that even generated code stays within the “source of truth.”</li>
</ul>
Beyond The Prompt
<p>The industry is currently in a state of “AI Infatuation,” but the pendulum will eventually swing back toward quality.</p>
<p>The UX designer’s nightmare ends when we stop trying to compete with AI tools at what they do best (generating syntax) and keep our focus on what they cannot do (understanding human complexity).</p>
<p>Businesses that prioritise “designer-shipped code” without engineering oversight will eventually face a reckoning of technical debt, security breaches, and accessibility lawsuits. The designers who thrive in 2026 and beyond will be those who refuse to be “prompt operators” and instead position themselves as the <strong>guardians of the user experience</strong>. This is the perfect outcome for experienced designers and for the industry.</p>
<p>Our value has always been our ability to advocate for the human on the other side of the screen. We must use AI to augment our design thinking, allowing us to test more ideas and iterate faster, but we must never let it replace the specialised engineering expertise that ensures our designs technically <em>work</em> for everyone.</p>
<h3>Summary Checklist for UX Designers</h3>
<ul>
<li>
<strong>Work Together.</strong><br>Use AI-made code as a starting point to talk with your developers. Don’t use it as a shortcut to avoid working with them. Ask them to help you with prompts for code creation for the best outcomes.</li>
<li>
<strong>Understand the “Why”.</strong><br>Never submit code you don’t understand. If you can’t explain how the AI-generated logic works, don’t include it in your work.</li>
<li>
<strong>Build for Everyone.</strong><br>Good design is more than just looks. Use AI to check if your code works for people using screen readers or keyboards, not just to make things look pretty.</li>
</ul>
<p>For web professionals, session management is a balancing act between user experience, cybersecurity, and resource usage. For people with disabilities, it is more than that — it is a barrier to buying digital tickets, scrolling on social media, or applying for a loan online. <strong>Session timeout accessibility</strong> can be the difference between a bad day and a good day for those with disabilities.</p>
<p>For many, getting halfway through an important form only to be unceremoniously kicked back to the login screen is a common experience. Such incidents can lead to exasperation and even abandonment of the website entirely. With some backend work, web professionals can ensure no one has to experience this frustration. </p>
Why Session Timeouts Disproportionately Affect Users With Disabilities
<p>A considerable portion of the global population has cognitive, motor, or vision impairments. Worldwide, <a href="https://designerly.com/mobile-app-accessibility-checklist/">around 1.3 billion people</a> have significant disabilities. Whether they possess motor, cognitive, or visual impairments, their disabilities affect their ability to interact with technology easily. They can all be disproportionately affected by session timeouts, making session timeout accessibility a critical issue.</p>
<p>Session timeouts are inaccessible for a large percentage of the population. An <a href="https://www.hanoversearch.com/blog/inclusive-recruitment-a-focus-on-neurodiverse-talent/">estimated 20% of people are</a> neurodivergent, meaning timeout barriers don’t just affect a small subset of users — they impact a <strong>substantial portion of any website’s audience</strong>. As a result, some users may look inactive when they are not. <strong>Strict timeouts create undue pressure.</strong></p>
<h3>Motor Impairments and Slower Input Speeds</h3>
<p>For instance, someone with cerebral palsy tries to purchase tickets online for an upcoming concert. Due to coordination difficulties and muscle stiffness, they may enter their information more slowly than a non-disabled person would. They select the date, choose their seats, and fill out personal information. Before they can enter their credit card details, a timeout pop-up appears. They have been logged out due to “inactivity” and must restart the entire process. </p>
<p>This situation is not entirely hypothetical. Matthew Kayne is a disability rights advocate, broadcaster, and contributor to The European magazine. He describes the effort required to navigate websites as someone with cerebral palsy. He explains how the user interface <a href="https://the-european.eu/story-53902/this-one-digital-glitch-is-pushing-disabled-people-to-breaking-point.html">is often poorly designed</a> for adaptive devices, and he worries his equipment won’t respond correctly. After carefully navigating each page, he is suddenly logged out. In a moment, one timed form can erase hours of work, and it’s not just a matter of inconvenience. A single failed attempt can delay support or cause him to miss appointments.</p>
<p>Motor impairments can <strong>slow input speed</strong>, making it appear the user is not at their computer. As such, people who experience stiffness, hand tremors, coordination challenges, involuntary movements, or muscle weakness are disproportionately affected by session timeouts. According to the DWP Accessibility Manual, it <a href="https://accessibility-manual.dwp.gov.uk/tools-and-resources/basic-accessibility-checks/10-session-timeouts-impact-on-users">can take multiple attempts</a> for adaptive technology to register input, slowing users down considerably. Even if they receive a warning, they may not be able to act fast enough to prove they are still active.</p>
<h3>Cognitive Impairments and Processing Time</h3>
<p>Session timeouts can also create accessibility barriers for those with various types of cognitive differences. Strict timeouts can create undue pressure that assumes everyone processes information at the same speed. Users may appear inactive when they are actually reading, thinking, or processing.</p>
<p>Cognitive differences encompass a wide range of experiences, including neurodivergences like autism and ADHD, developmental disabilities like Down syndrome, and learning disabilities like dyslexia. Many people are born with cognitive differences. In fact, an <a href="https://www.hanoversearch.com/blog/inclusive-recruitment-a-focus-on-neurodiverse-talent/">estimated 20% of people are</a> neurodivergent, making up a large portion of any website’s audience. Others acquire cognitive disabilities later in life through traumatic brain injury or conditions like dementia.</p>
<p>People with cognitive disabilities often need more time to complete online tasks — not because of any deficit, but because they process information differently. Design choices that work well for neurotypical users can create unnecessary obstacles for people with ADHD, dyslexia, autism, or memory-related conditions.</p>
<p>Invisible session timeouts are particularly problematic for people who experience memory loss, language processing differences, or <strong>time blindness</strong>. For example, neurodivergent technology leader Kate Carruthers says ADHD <a href="https://katecarruthers.com/life-with-adhd-time-blindness-or-why-i-lose-hours-not-just-my-keys/">has affected her perception</a> of time. She has time blindness and can’t reliably track how much time has passed, making estimates unhelpful.</p>
<p>When websites depend on users estimating remaining time before a session expires, they quietly exclude people — not just those with formal ADHD diagnoses, but anyone who experiences time differently or processes information at a different pace.</p>
<h3>Vision Impairments and Screen Reader Navigation Overhead</h3>
<p>Since blind or low-vision users cannot visually scan a page to find what they need, they must listen to links, headings, and form fields, which is inherently <strong>more time-consuming</strong>. More than <a href="https://int.livhospital.com/complete-top-5-reasons-for-vision-loss-worldwide/">43 million people worldwide</a> are affected by blindness, while 295 million have moderate to severe vision impairment, which makes this a significant accessibility concern for any global-facing website.</p>
<p>As a result, these users’ sessions may expire even if they are active. <strong>Live timers and 30-second warnings do little to help</strong>, as they are not built with screen readers in mind.</p>
<p>Bogdan Cerovac, a web developer passionate about digital accessibility, experienced this firsthand. The countdown timer informed him how long he had left before being logged out due to inactivity. By all accounts, it worked fine. However, he describes the <a href="https://cerovac.com/a11y/2025/07/countdowns-and-timers-forgotten-detail-that-can-make-your-users-really-hate-your-product/">screen reader experience as horrible</a>, as it notified him of the remaining time every single second. He couldn’t navigate the page because he was spammed by constant status messages. </p>
Common Timeout Patterns That Fail Accessibility Requirements
<p>According to the National Institute of Standards and Technology, <a href="https://pages.nist.gov/800-63-4/sp800-63b/session/">session management is preferable</a> to continually preserving credentials, which would incentivize users to create authentication workarounds that could threaten security. However, several common timeout patterns fail to meet modern standards for session timeout accessibility.</p>
<p><img src="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/1-timeout-pattern-fail-accessibility.png"></p>
<h3>Silent Timeouts and Insufficient Warnings</h3>
<p>Many websites either provide no warning before logging users out, or they display a brief, seconds-long pop-up that appears too late to be actionable. For users who navigate via screen reader, these warnings may not be announced in time. For those with motor impairments, a 30-second countdown may not provide enough time to respond.</p>
<p>Let’s consider the Consular Electronic Application Center’s DS-260 page, which is used to apply for or renew U.S. nonimmigrant visas. If an application <a href="https://travel.state.gov/content/travel/en/us-visas/visa-information-resources/forms/online-immigrant-visa-forms/ds-260-faqs.html">is idle for around 20 minutes</a>, it will log the user off without warning. The FAQ page only provides an approximate time estimate. Someone’s work only saves when they complete the page, so they may lose significant progress.</p>
<h3>Nonextendable Sessions</h3>
<p>An abrupt “session expired” message is frustrating even for individuals without disabilities. If there is no option to continue, users are forced to log back in and restart their work, wasting time and energy. </p>
<h3>Form Data Loss on Expiration</h3>
<p>Unless the website automatically saves progress, visitors will lose everything when the session expires. For someone with disabilities, this does not simply waste time. It can make their day immeasurably harder. Imagine spending an hour on a service request, job application, or purchase order only for all progress to be completely erased with little to no warning.</p>
Design Patterns That Balance Security and Accessibility
<p>Inconsistent timeout periods and a lack of warnings lead to the sudden, unexpected loss of all unsaved work. For long, complex forms, like the DS-260, a poor user experience is extremely frustrating. In comparison, the United Kingdom’s application for pension credit is highly accessible. It warns users <a href="https://design-system.dwp.gov.uk/patterns/manage-a-session-timeout">at least two minutes</a> in advance and allows them to extend the session. It meets level AA of the WCAG 2.2 success criteria, indicating its accessibility.</p>
<p><img src="https://files.smashing.media/articles/session-timeouts-accessibility-barrier-authentication-design/2-timeout-pattern-accessibility.png"></p>
<p>People with disabilities are disproportionately affected by the unintended consequences of poor session management. Thankfully, session timeouts’ inaccessibility is not a matter of fact. With a few small changes, web professionals can significantly improve their website’s accessibility.</p>
<h3>Advance Warning Systems and Extend Functionality</h3>
<p>Websites should clearly state the time limit’s existence and duration before the session starts. For instance, if someone is filling out a bank form, the first page should exist solely to inform them that it has a 60-minute time limit. A live counter that updates regularly can help them track how much time remains. Also, users should be told whether they can adjust the session timeout length. </p>
<h3>Activity-Based vs. Absolute Timeouts</h3>
<p>An activity-based timeout logs users out due to inactivity, while an absolute timeout logs them out regardless of activity. For an office, a 24-hour absolute timer might make sense, since workers only need to log in when they get to work. As long as users know when their session will expire, the latter is more accessible than the former. </p>
<h3>Auto-Save and Progress Preservation</h3>
<p>Cookies, localStorage, and sessionStorage are temporary, client-side storage mechanisms that allow web applications to store data for the duration of a single browser session. They are powerful, lightweight tools. Web developers can use them to automatically save users’ progress at frequent intervals, ensuring data is restored upon reauthentication.</p>
<p>This way, even if someone’s session expires by accident, they are not penalized. Once they log back in, they can finish filling out their credit card details or pick up where they left off with an online form.</p>
Testing and WCAG Compliance Considerations
<p>The Web Content Accessibility Guidelines (WCAG) is a collection of internationally accepted internet accessibility standards published by the W3C. It acts as the arbiter of session timeout accessibility. Web developers should pay special attention to <strong>Guideline 2.9.2</strong>, <a href="https://www.w3.org/TR/wcag-3.0/#adequate-time">which outlines best practices for adequate</a> time.</p>
<p>The <strong>timeout adjustable mechanism</strong> should extend the time limit before the session expires or allow it to be turned off completely. For the former option, a dialog box should appear asking users if they need more time, allowing them to continue with one click. The WC3 notes that exceptions exist.</p>
<p>For example, when a website conducts a live ticket sale, users can only hold tickets in their carts for 10 minutes to give others a chance to purchase limited inventory. Alternatively, session timeouts may be necessary on shared computers. If librarians allowed everyone to stay logged in instead of automatically signing them out overnight, they would risk security issues. </p>
<p>Some processes should not have time limits at all. When browsing social media, reading a news article, or searching for items on an e-commerce site, there is no reason a session should expire within an arbitrary time frame. Meanwhile, in a timed exam, it may be necessary. However, in this case, administrators can extend time limits for students with disabilities. </p>
<p>When web developers make session management accessible, they are not catering to a small group. Pew Research Center data shows <a href="https://www.pewresearch.org/short-reads/2021/09/10/americans-with-disabilities-less-likely-than-those-without-to-own-some-digital-devices/">62% of adults with disabilities</a> own a computer. 72% have high-speed home internet. These figures do not differ statistically from the percentage of non-disabled adults who say the same. </p>
Overcoming the Session Timeout Accessibility Barrier
<p>The WCAG provides additional resources that web developers can review to understand session management accessibility better:</p>
<ul>
<li><a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-required-behaviors.html">WCAG SC 2.2.1 Timing Adjustable</a></li>
<li>
<a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/time-limits-server-timeout.html">WCAG SC 2.2.5 Re-authenticating</a> </li>
<li>
<a href="https://www.w3.org/WAI/WCAG22/Understanding/timeouts.html">WCAG SC 2.2.6 Timeouts</a> </li>
</ul>
<p>In addition to following these guidelines, there is a wealth of information from leading educational institutions, authorities on open web technologies, and government agencies. They provide a great starting place for those with intermediate web development knowledge. </p>
<p>Web professionals should consider the following resources to learn more about tools and techniques they can use to make session management more accessible: </p>
<ul>
<li><a href="https://accessibility.huit.harvard.edu/technique-session-extension">Harvard University’s Session Extension Technique</a></li>
<li><a href="https://accessibility-manual.dwp.gov.uk/tools-and-resources/basic-accessibility-checks/10-session-timeouts-how-to-test">DWP Accessibility Manual: How to test session timeouts</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage">Window: sessionStorage property</a></li>
</ul>
<p>Session timeout accessibility is not only an industry best practice but an ethical web development standard.</p>
<p>Those who prioritize it will appeal to a wider audience, <strong>improve usability</strong>, and attract more website visitors and longer sessions.</p>
<p>The main takeaway is that a website with inaccessible session timeouts sends a clear message that it doesn’t value the user’s time or effort, a problem that creates significant barriers for people with disabilities. However, this is a solvable issue. With a few simple changes, such as providing session extension warnings and auto-saving progress, web developers can build a more considerate, accessible, and respectful internet for everyone.</p>
<h3>Further Reading On SmashingMag</h3>
<ul>
<li>“<a href="https://www.smashingmagazine.com/2025/04/what-mean-site-be-keyboard-navigable/">What Does It Really Mean For A Site To Be Keyboard Navigable</a>”, Eleanor Hecks</li>
<li>“<a href="https://www.smashingmagazine.com/2025/06/designing-for-neurodiversity/">Designing For Neurodiversity</a>”, Vitaly Friedman</li>
<li>“<a href="https://www.smashingmagazine.com/2025/06/what-i-wish-someone-told-me-aria/">What I Wish Someone Told Me When I Was Getting Into ARIA</a>”, Eric Bailey</li>
<li>“<a href="https://www.smashingmagazine.com/2024/02/web-designer-accessibility-advocacy-toolkit/">A Designer’s Accessibility Advocacy Toolkit</a>”, Yichan Wang</li>
</ul>
<p>Imagine that you need to improve the <strong>UX of a legacy system</strong>. A system that has been silently working in the background for almost a decade. It’s slow, half-broken, unreliable, and severely outdated — a sort of “black box” that everyone relies upon, but nobody really knows what’s happening under the hood.</p>
<p><strong>Where would you even start?</strong> Legacy stories are often daunting, adventurous, and utterly confusing. They represent a mixture of fast-paced decisions, quick fixes, and accumulating UX debt.</p>
<p>There is no one-fits-all solution to tackle them, but there are ways to make progress, albeit slowly, while respecting the <strong>needs and concerns</strong> of users and stakeholders. Now, let’s see how we can do just that.</p>
The Actual Challenges Of Legacy UX
<p>It might feel that legacy products are waiting to be deprecated at any moment. But in reality, they are often <strong>critical for daily operations</strong>. Many legacy systems are heavily customized for the needs of the organization, often built externally by a supplier and often without rigorous usability testing.</p>
<p>It’s common for enterprises to spend <strong>40–60% of their time</strong> managing, maintaining, and fine-tuning legacy systems. They are essential, critical — but also very expensive to keep alive.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/1-cash-register.jpg"></p>
<h3>1. Legacy Must Co-Exist With Products Built Around Them</h3>
<p>Running in a <strong>broken, decade-old ecosystem</strong>, legacy still works, yet nobody knows exactly how and why it still does. People who have set it up originally probably have left the company years ago, leaving a lot of unknowns and poorly documented work behind.</p>
<p>With them come <strong>fragmented and inconsistent design choices</strong>, stuck in old versions of old design tools that have long been discontinued.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/2-legacy-system-healthcare.jpg"></p>
<p>Still, legacy systems must neatly <strong>co-exist within modern digital products</strong> built around them. In many ways, the end result resembles a Frankenstein — many bits and pieces glued together, often a mixture of modern UIs and painfully slow and barely usable fragments here and there — especially when it comes to validation, error messages, or processing data.</p>
<h3>2. Legacy Systems Make or Break UX</h3>
<p>Once you sprinkle a little bit of quick bugfixing, unresolved business logic issues, and unresponsive layouts, you have a <strong>truly frustrating experience</strong>, despite the enormous effort put into the rest of the application.</p>
<p>If one single step in a complex user flow feels <strong>utterly broken and confusing</strong>, then the entire product appears to be broken as well, despite the incredible efforts the design teams have put together in the rest of the product.</p>
<p>Well, eventually, you’ll have to tackle legacy. And that’s where we need to consider available options for your <strong>UX roadmap</strong>.</p>
UX Roadmap For Tackling Legacy Projects
<h3>Don’t Dismiss Legacy: Build on Existing Knowledge</h3>
<p>Because legacy systems are often big unknowns that cause a lot of frustration to everyone, from stakeholders to designers to engineers to users. The initial thought might be to remove it entirely and <strong>redesign it from scratch</strong>, but in practice, that’s not always feasible. Big-bang-redesign is a <strong>remarkably expensive</strong> and very time-consuming endeavor.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/3-questions-ask-legacy-system.png"></p>
<p>Legacy systems <strong>hold valuable knowledge</strong> about the business practice, and they do work — and a new system must perfectly match years of knowledge and customization done behind the scenes. That’s why stakeholders and users (in B2B) are typically <strong>heavily attached to legacy systems</strong>, despite all their well-known drawbacks and pains.</p>
<p>To most people, because such systems are at the very heart of the business, operating on them seems to be extremely risky and will require a significant amount of <strong>caution and preparation</strong>. Corporate users don’t want big risks. So instead of dismissing legacy entirely, we might start by gathering existing knowledge first.</p>
<h3>Map Existing Workflows and Dependencies</h3>
<p>The best place to start is to understand how and where exactly legacy systems are in use. You might discover that some bits of the legacy systems are used all over the place — not only in your product, but also in business dashboards, by external agencies, and by other companies that integrate your product into their services.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/4-testing-session.jpg"></p>
<p>Very often, legacy systems have dependencies on their own, integrating other legacy systems that might be much older and in a much worse state. Chances are high that you might not even consider them in the big-bang redesign — mostly because you don’t know just <strong>how many black boxes</strong> are in there.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/5-map-workflows-user-behavior.jpg"></p>
<p>Set up a board to <a href="https://www.linkedin.com/pulse/breaking-down-complexity-task-analysis-ux-vitaly-friedman-sjt4f/">document current workflows and dependencies</a> to get a better idea of how everything works together. Include stakeholders, and <strong>involve heavy users in the conversation</strong>. You won’t be able to open the black box, but you can still shed some light on it from the perspectives of different people who may be relying on legacy for their work.</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/6-prioritizing-migrated-features.png"></p>
<p>Once you’ve done that, set up a meeting to <strong>reflect to users and stakeholders</strong> what you have discovered. You will need to build confidence and trust that you aren’t missing anything important, and you need to visualize the dependencies that a legacy tool has to everyone involved.</p>
<p>Replacing a legacy system is <strong>never about legacy alone</strong>. It’s about the dependencies and workflows that rely on it, too.</p>
<h3>Choose Your UX Migration Strategy</h3>
<p>Once you have a <strong>big picture</strong> in front of you, you need to decide on what to do next. Big-bang relaunch or a small upgrade? Which approach would work best? You might <strong>consider the following options</strong> before you decide on how to proceed:</p>
<p><img src="https://files.smashing.media/articles/how-improve-ux-legacy-systems/7-legacy-migration-strategies.jpg"></p>
<ul>
<li>
<strong>Big-bang relaunch</strong>.<br>Sometimes the only available option, but it’s very risky, expensive, and can take years, without any improvements to the existing setup in the meantime.</li>
<li>
<strong>Incremental migration</strong>.<br>Slowly retire pieces of legacy by replacing small bits with new designs. This offers quicker wins in a <code>Frankenstein</code> style but can make the system unstable.</li>
<li>
<strong>Parallel migration</strong>.<br>Run a public beta of the replacement alongside the legacy system to involve users in shaping the new design. Retire the old system when the new one is stable, but be prepared for the cost of maintaining both.</li>
<li>
<strong>Incremental parallel migration</strong>.<br>List all business requirements the legacy system fulfills, then build a new product to meet them reliably, matching the old system from day one. Test early with power users, possibly offering an option to switch systems until the old one is fully retired.</li>
<li>
<strong>Legacy UI upgrade + public beta</strong>.<br>Perform low-risk fine-tuning on the legacy system to align UX, while incrementally building a new system with a public beta. This yields quicker and long-term wins, ideal for fast results.</li>
</ul>
<p>Replacing a system that has been carefully refined and heavily customized for a decade is a monolithic task. You can’t just rebuild something from scratch within a few weeks that others have been working on for years.</p>
<p>So whenever possible, try to <strong>increment gradually</strong>, involving users and stakeholders and engineers along the way — and with enough <strong>buffer time</strong> and <strong>continuous feedback loops</strong>.</p>
Wrapping Up
<p>With legacy projects, failure is often not an option. You’re migrating not just components, but <strong>users and workflows</strong>. Because you operate on the <strong>very heart of the business</strong>, expect a lot of attention, skepticism, doubts, fears, and concerns. So build <strong>strong relationships</strong> with key stakeholders and key users and share ownership with them. You will need their support and their buy-in to bring your UX work in action.</p>
<p>Stakeholders will request old and new features. They will focus on <strong>edge cases, exceptions, and tiny tasks</strong>. They will question your decisions. They will send mixed signals and change their opinions. And they will expect the new system to run flawlessly from day one.</p>
<p>And the best thing you can do is to work with them throughout the entire design process, right from the very beginning. Run a successful pilot project to <strong>build trust</strong>. Report your progress repeatedly. And account for <strong>intense phases of rigorous testing</strong> with legacy users.</p>
<p>Revamping a legacy system is a tough challenge. But there is rarely any project that can have so much impact on such a scale. Roll up your sleeves and get through it successfully, and your team will be <strong>remembered, respected, and rewarded</strong> for years to come.</p>
Meet “Measure UX & Design Impact”
<p>Meet <a href="https://measure-ux.com/"><strong>Measure UX & Design Impact</strong></a>, Vitaly’s practical guide <strong>for designers and UX leads</strong> on how to track and visualize the incredible <strong>impact</strong> of your UX work on business — with a <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">live UX training</a> later this year. <a href="https://measure-ux.com/">Jump to details</a>.</p>
<a href="https://measure-ux.com/">
<img src="https://files.smashing.media/articles/ux-metrics-video-course-release/measure-ux-and-design-impact-course.png"></a>Meet <a href="https://measure-ux.com/">Measure UX and Design Impact</a>, a practical video course for designers and UX leads.
<div><div>
<ul>
<li><a href="https://www.smashingmagazine.com/#">
Video + UX Training</a></li>
<li><a href="https://www.smashingmagazine.com/#">Video only</a></li>
</ul>
<div>
<h3>Video + UX Training</h3>$ 495.00 $ 799.00
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3951439">
Get Video + UX Training<div></div></a><p>25 video lessons (8h) + <a href="https://smashingconf.com/online-workshops/workshops/vitaly-friedman-impact-design/">Live UX Training</a>.<br>100 days money-back-guarantee.</p>
</div>
<div>
<h3>Video only</h3>
<div>$ 250.00$ 350.00</div>
<a href="https://smart-interface-design-patterns.thinkific.com/enroll/3081832?price_id=3950630">
Get the video course<div></div></a><p>25 video lessons (8h). Updated yearly.<br>Also available as a <a href="https://smart-interface-design-patterns.thinkific.com/enroll/3570306?price_id=4503439">UX Bundle with 3 video courses.</a></p>
</div>
</div></div>
Useful Resources
<ul>
<li>
<a href="https://blog.scottlogic.com/2021/07/16/UX-Migration-Strategy.html">UX Migration Strategy For Legacy Apps</a>, by Tamara Chehayeb Makarem</li>
<li>
<a href="https://uxdesign.cc/to-improve-legacy-systems-sometimes-you-need-to-take-a-restoration-mindset-d72f7b69442f?sk=v2%2F524df15a-3aca-48f6-adff-98588a64bda0">How To Improve Legacy Systems</a>, by Christopher Wong</li>
<li>
<a href="https://medium.com/enterprise-ux/designing-with-legacy-d0e4bef0d9ea">Designing With Legacy</a>, by Peter Zalman</li>
<li>
<a href="https://medium.com/design-bootcamp/redesigning-a-legacy-system-for-a-large-organisation-5089429f7e2e">Redesigning A Large Legacy System</a>, by Pawel Halicki</li>
<li>
<a href="https://understandlegacycode.com/">How To Manage Legacy Code</a>, by Nicolas Carlo</li>
<li>
<a href="https://www.koruux.com/blog/transforming-legacy-system/">How To Transform Legacy</a>, by Bansi Mehta</li>
<li>
<a href="https://www.debt.design/">Design Debt 101</a>, by Alicja Suska</li>
<li>
<a href="https://www.linkedin.com/posts/vitalyfriedman_ux-enterprise-activity-7128696386841120769-VcPD">Practical Guide To Enterprise UX</a>, by Yours Truly</li>
<li>
<a href="https://www.linkedin.com/posts/vitalyfriedman_ux-design-healthcare-activity-7124347175395815424-Q8Xn">Healthcare UX Design Playbook</a>, by Yours Truly</li>
</ul>