<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shefali</title>
    <description>The latest articles on DEV Community by Shefali (@devshefali).</description>
    <link>https://dev.to/devshefali</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1099798%2F91a738ed-d56e-4502-bd61-d98ca1b741bb.jpg</url>
      <title>DEV Community: Shefali</title>
      <link>https://dev.to/devshefali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devshefali"/>
    <language>en</language>
    <item>
      <title>Why Your App Needs a Loading Skeleton (Not a Spinner)</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Tue, 14 Apr 2026 06:26:49 +0000</pubDate>
      <link>https://dev.to/devshefali/why-your-app-needs-a-loading-skeleton-not-a-spinner-4f7a</link>
      <guid>https://dev.to/devshefali/why-your-app-needs-a-loading-skeleton-not-a-spinner-4f7a</guid>
      <description>&lt;p&gt;Open any app. Something is loading. What do you see?&lt;/p&gt;

&lt;p&gt;If it’s a spinner, it’s just a circle going round and round. You don’t know what’s loading, how much is left, or how long it’ll take. You just wait.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxtel8z8ai1a2gzsp230.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvxtel8z8ai1a2gzsp230.gif" alt="stupid loading reloading frozen" width="498" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now imagine this instead: the layout shows up instantly. You see grey boxes where content will be, a circle for the avatar, lines for text. A subtle shimmer runs across them. Then the real content loads in.&lt;/p&gt;

&lt;p&gt;Same loading time. But it feels much better.&lt;/p&gt;

&lt;p&gt;That’s exactly what skeleton screens does.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Skeleton Screens?
&lt;/h2&gt;

&lt;p&gt;Skeleton screens are simple placeholders that shows the shape of the content before it loads.&lt;/p&gt;

&lt;p&gt;Instead of a spinner, users see a basic layout of the page, even before the real data appears.&lt;/p&gt;

&lt;p&gt;Here’s what it feels like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8283dofq5bqjn6j48zi.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8283dofq5bqjn6j48zi.gif" alt="Loading Skeleton Screen" width="760" height="669"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead of showing a spinner or a “Loading…” message, the interface displays a preview of the layout, and that small change makes the experience feel much smoother.&lt;/p&gt;

&lt;p&gt;Now that we understand what it is, let’s see why spinners don’t always work well.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Spinners
&lt;/h2&gt;

&lt;p&gt;Spinners aren’t bad. &lt;/p&gt;

&lt;p&gt;They work well for quick actions like submitting a form, clicking a button, or uploading a file. In those cases, the user initiated something and just needs a simple signal that it’s in progress.&lt;/p&gt;

&lt;p&gt;The issue starts when spinners become the default for every loading state. Page load, feed refresh, dashboard data, everything shows the same spinning indicator.&lt;/p&gt;

&lt;p&gt;The problem is that a spinner gives no useful information. It doesn’t tell users what is loading, how much is left, or what to expect when it’s done. It simply shows that something is happening, without any context.&lt;/p&gt;

&lt;p&gt;And that leads to the real UX issue: uncertainty. &lt;/p&gt;

&lt;p&gt;When users don’t know what’s going on, it becomes frustrating very quickly. A spinner creates that uncertainty, while a skeleton screen reduces it by showing the structure of the content in advance, helping users understand what they are waiting for even before the data arrives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Skeleton Screens Feel Faster (Even When They're Not)
&lt;/h2&gt;

&lt;p&gt;Here’s something interesting: skeleton screens don’t actually make your app load faster. The data still takes the same amount of time to arrive.&lt;/p&gt;

&lt;p&gt;And yet, users often feel like the app is faster.&lt;/p&gt;

&lt;p&gt;This is the concept of &lt;strong&gt;perceived performance&lt;/strong&gt;, which is about how fast something feels, not just how fast it actually is. In many cases, that feeling matters just as much, because user experience is shaped by perception.&lt;/p&gt;

&lt;p&gt;When a skeleton screen appears, your brain starts forming a mental picture of the page. You can already see where things will go, so you begin to anticipate the content. By the time it loads, it feels less like waiting and more like something gradually revealing itself.&lt;/p&gt;

&lt;p&gt;With a spinner, there’s nothing to engage with. With a skeleton, there’s something to expect, and that shift changes the entire experience.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;This isn’t just theory:&lt;/strong&gt; Apps like YouTube, LinkedIn, Facebook, GitHub, and Airbnb all use skeleton screens for content-heavy experiences.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These companies have already tested different approaches and looked at the data. Their decision isn’t based on trends or aesthetics, but on what actually improves user experience.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;When you see the same pattern across so many large products, it’s a strong signal that skeleton screens work.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once you see this, the difference becomes much easier to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spinners vs Skeletons
&lt;/h2&gt;

&lt;p&gt;Here's a simple comparison to understand why skeleton screens feel better than spinners.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Spinner&lt;/th&gt;
&lt;th&gt;Skeleton&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shows what’s loading&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feels faster&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shows page structure&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User frustration&lt;/td&gt;
&lt;td&gt;More&lt;/td&gt;
&lt;td&gt;Less&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So when should you use each one?&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use Skeleton Screens vs Spinners
&lt;/h2&gt;

&lt;p&gt;It’s not about avoiding spinners completely, but about choosing what fits the situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use a skeleton screen&lt;/strong&gt; when you’re loading a full page, a list, a feed, a dashboard, or any section where the layout is predictable and there’s a lot of content coming in. In these cases, users are waiting for a whole view to appear, so showing the structure helps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use a spinner&lt;/strong&gt; when the user performs a quick action like submitting a form, clicking a button, or deleting something. In these moments, there isn’t a layout to show, and the spinner simply tells the user that the action is in progress.&lt;/p&gt;

&lt;p&gt;Once you start using skeletons, a few small things can improve the experience a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Skeleton Screens
&lt;/h2&gt;

&lt;p&gt;Here are a few best practices to make skeleton screens actually helpful, not confusing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Match the real layout:&lt;/strong&gt; Your skeleton should look like the actual content. When the shapes and structure are similar, the transition feels smooth. If it looks completely different, it can confuse users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't overdo it:&lt;/strong&gt; Showing a few skeleton cards is helpful, but showing too many at once can feel overwhelming. For long lists, it’s better to combine skeletons with pagination or lazy loading.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Always have an error state:&lt;/strong&gt; If the data fails to load, don’t keep showing the skeleton forever. Replace it with a clear and friendly error message so users know what went wrong.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility matters:&lt;/strong&gt; Some users are sensitive to motion, so constant shimmer effects can be uncomfortable. Good implementations respect reduced motion settings and adjust automatically.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even with all this, performance still matters behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance Tip
&lt;/h2&gt;

&lt;p&gt;Skeleton screens make your app feel faster, but they don’t replace real performance improvements.&lt;/p&gt;

&lt;p&gt;The best approach is to do both: reduce the actual loading time and use a skeleton for whatever delay is left. A skeleton can make a slow load feel better, but when the load is already fast, it can make the experience feel almost instant.&lt;/p&gt;

&lt;p&gt;Here are a few quick wins that work well alongside skeleton screens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cache aggressively:&lt;/strong&gt; If a user has visited the page before, show cached data right away and update it in the background. In many cases, this means the skeleton won’t appear at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritise above-the-fold content:&lt;/strong&gt; Load only what’s visible on the screen first, and fetch the rest as the user scrolls. This helps the most important content appear quickly, making the skeleton disappear sooner.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid waterfall requests:&lt;/strong&gt; If your page makes multiple API calls one after another, the wait time adds up. Try to run requests in parallel so everything loads faster.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A skeleton gives you a smoother waiting experience, but it works best when you also make that waiting time as short as possible.&lt;/p&gt;

&lt;p&gt;Now let’s quickly look at how you can start using them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Get Started
&lt;/h2&gt;

&lt;p&gt;You don’t need to build skeleton screens from scratch. There are good libraries for every major framework that handle animation, sizing, and accessibility for you. You can pick one based on your stack and get started quickly.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Library&lt;/th&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/dvtng/react-loading-skeleton" rel="noopener noreferrer"&gt;react-loading-skeleton&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;React&lt;/td&gt;
&lt;td&gt;A popular and easy option with ready-to-use components that work with minimal setup.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/egoist/vue-content-loader" rel="noopener noreferrer"&gt;vue-content-loader&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Vue&lt;/td&gt;
&lt;td&gt;Uses SVG, which makes it very flexible and lightweight for custom designs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/danilowoz/react-content-loader" rel="noopener noreferrer"&gt;content-loader&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Any&lt;/td&gt;
&lt;td&gt;A framework-agnostic option that works with React, Vue, Svelte, or even plain JavaScript.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://tailwindcss.com/docs/animation#adding-a-pulse-animation" rel="noopener noreferrer"&gt;animate-pulse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Tailwind&lt;/td&gt;
&lt;td&gt;If you’re already using Tailwind, you can create skeletons without adding any extra dependencies.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The concept is the same across all of them: show the skeleton while data is loading, swap it for real content when it arrives. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Spinners aren’t bad, but they’re often used in places where better options exist. For content-heavy screens, skeletons usually provide a much smoother and more helpful experience.&lt;/p&gt;

&lt;p&gt;Skeleton screens are simple to add, don’t take much effort to implement, and can instantly improve how your app feels to users.&lt;/p&gt;

&lt;p&gt;The next time you reach for a spinner, take a moment to think if you can show the structure of the content instead. In many cases, giving users a preview of what’s coming will make the experience feel faster and more intuitive.&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this blog on loading skeleton screens helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://x.com/Shefali__J" rel="noopener noreferrer"&gt;Follow me on X (Twitter)&lt;/a&gt; to get daily web development tips &amp;amp; insights.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ux</category>
      <category>uxdesign</category>
      <category>skeleton</category>
    </item>
    <item>
      <title>11 AI APIs You Can Integrate in Your Apps Right Now</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Tue, 07 Apr 2026 05:51:32 +0000</pubDate>
      <link>https://dev.to/devshefali/11-ai-apis-you-can-integrate-in-your-apps-right-now-49k0</link>
      <guid>https://dev.to/devshefali/11-ai-apis-you-can-integrate-in-your-apps-right-now-49k0</guid>
      <description>&lt;p&gt;AI is not just the future anymore, it’s already part of the apps you use every day. From chatbots and image tools to voice assistants and smart recommendations, you can now add powerful AI features in just a few hours.&lt;/p&gt;

&lt;p&gt;If you’ve been thinking “I should add AI to my app” but don’t know where to start, this list will help you.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share 11 AI APIs you can start using right away. These APIs let you add advanced features without building everything from scratch.&lt;/p&gt;

&lt;p&gt;Let's jump right into it! 🚀&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://developers.openai.com/api/docs" rel="noopener noreferrer"&gt;OpenAI API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;If you want to add:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chatbots&lt;/li&gt;
&lt;li&gt;AI assistants&lt;/li&gt;
&lt;li&gt;Content generation&lt;/li&gt;
&lt;li&gt;Code helpers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is usually the first choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Natural conversations&lt;/li&gt;
&lt;li&gt;Great for SaaS tools, support bots, writing tools&lt;/li&gt;
&lt;li&gt;Can also generate images and embeddings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI writing assistant&lt;/li&gt;
&lt;li&gt;Customer support chatbot&lt;/li&gt;
&lt;li&gt;Code explanation tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4tfxu63tsupxbl2pvx1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4tfxu63tsupxbl2pvx1k.png" alt="OpenAI API - AI APIs" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. &lt;a href="https://docs.anthropic.com/" rel="noopener noreferrer"&gt;Anthropic Claude API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Claude is known for being more “controlled” and safer in long conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handles long context really well&lt;/li&gt;
&lt;li&gt;Great for structured outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document analysis&lt;/li&gt;
&lt;li&gt;Legal or research tools&lt;/li&gt;
&lt;li&gt;Long-form content generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihw41e0wutgngbuibx7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihw41e0wutgngbuibx7k.png" alt="Anthropic Claude API - AI APIs" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. &lt;a href="https://ai.google.dev/" rel="noopener noreferrer"&gt;Google Gemini API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Google’s AI ecosystem is getting really strong, especially if you’re already using Firebase or Google Cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multimodal (text, images, more)&lt;/li&gt;
&lt;li&gt;Works well with Google products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Smart search features&lt;/li&gt;
&lt;li&gt;AI-powered dashboards&lt;/li&gt;
&lt;li&gt;Knowledge assistants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx30y3oocgvdg3w1m7gba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx30y3oocgvdg3w1m7gba.png" alt="Google Gemini API - AI APIs" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  4. &lt;a href="https://platform.stability.ai/" rel="noopener noreferrer"&gt;Stability AI API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is very useful for generating images inside your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open and flexible&lt;/li&gt;
&lt;li&gt;Good alternative to proprietary image APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI art generators&lt;/li&gt;
&lt;li&gt;Thumbnail creators&lt;/li&gt;
&lt;li&gt;Design tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xzpokhwbbj69d53g3er.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xzpokhwbbj69d53g3er.png" alt="Stability AI API - AI APIs" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. &lt;a href="https://huggingface.co/docs/api-inference/index" rel="noopener noreferrer"&gt;Hugging Face Inference API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You can think of it like a GitHub for AI models, but instead of just browsing them, you can actually use them directly through an API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Huge model library&lt;/li&gt;
&lt;li&gt;Supports NLP, vision, audio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sentiment analysis&lt;/li&gt;
&lt;li&gt;Text classification&lt;/li&gt;
&lt;li&gt;Named entity recognition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0smp4qinwb22nzjvw11r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0smp4qinwb22nzjvw11r.png" alt="Hugging Face Inference API - AI APIs" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  6. &lt;a href="https://elevenlabs.io/docs" rel="noopener noreferrer"&gt;ElevenLabs API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It's useful for super realistic voice generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human-like voices&lt;/li&gt;
&lt;li&gt;Great for storytelling or voice assistants&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Audiobooks&lt;/li&gt;
&lt;li&gt;AI voice assistants&lt;/li&gt;
&lt;li&gt;Accessibility features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7v0fbyss8lj0sbiz38s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc7v0fbyss8lj0sbiz38s.png" alt="ElevenLabs API - AI APIs" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  7. &lt;a href="https://www.assemblyai.com/docs" rel="noopener noreferrer"&gt;AssemblyAI API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;If your app deals with audio, this is a solid choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accurate transcription&lt;/li&gt;
&lt;li&gt;Extra features like summarization &amp;amp; sentiment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Podcast transcription&lt;/li&gt;
&lt;li&gt;Meeting notes&lt;/li&gt;
&lt;li&gt;Voice-based apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hjw9znltotxdyt1rhsk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1hjw9znltotxdyt1rhsk.png" alt="AssemblyAI API" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  8. &lt;a href="https://docs.cohere.com/" rel="noopener noreferrer"&gt;Cohere API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;It's great for NLP-focused apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong text embeddings &amp;amp; classification&lt;/li&gt;
&lt;li&gt;Easy to integrate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search ranking&lt;/li&gt;
&lt;li&gt;Text summarization&lt;/li&gt;
&lt;li&gt;Content moderation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdul96qkhwpg7csvtc1dp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdul96qkhwpg7csvtc1dp.png" alt="Cohere API" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  9. &lt;a href="https://replicate.com/docs" rel="noopener noreferrer"&gt;Replicate API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This one is underrated.&lt;/p&gt;

&lt;p&gt;Replicate lets you run open-source AI models via API without managing infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access to multiple models (image, video, audio)&lt;/li&gt;
&lt;li&gt;No need to host models yourself&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI video tools&lt;/li&gt;
&lt;li&gt;Face generation&lt;/li&gt;
&lt;li&gt;Style transfer apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn1idfnx7z6wk8tkuglb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn1idfnx7z6wk8tkuglb.png" alt="Replicate API" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  10. &lt;a href="https://www.deepl.com/docs-api" rel="noopener noreferrer"&gt;DeepL API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;If your app needs high-quality translations, DeepL is one of the best options out there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extremely accurate translations (often better than typical alternatives)&lt;/li&gt;
&lt;li&gt;Supports multiple languages with natural tone&lt;/li&gt;
&lt;li&gt;Also offers writing improvements (DeepL Write)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-language SaaS apps&lt;/li&gt;
&lt;li&gt;Content localization&lt;/li&gt;
&lt;li&gt;Translating user-generated content&lt;/li&gt;
&lt;li&gt;AI-powered writing assistance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ukqxtn5ape3we5kavrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ukqxtn5ape3we5kavrx.png" alt="DeepL API" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  11. &lt;a href="https://www.pinecone.io/" rel="noopener noreferrer"&gt;Pinecone API&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This is not exactly an “AI model,” but critical for AI apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it’s useful:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stores embeddings for semantic search&lt;/li&gt;
&lt;li&gt;Enables retrieval-based AI systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use cases:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI search engines&lt;/li&gt;
&lt;li&gt;Chat with your data&lt;/li&gt;
&lt;li&gt;Recommendation systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5rctrq0pzprttmlxbo4g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5rctrq0pzprttmlxbo4g.png" alt="Pinecone API" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this list of AI APIs helpful! &lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://x.com/Shefali__J" rel="noopener noreferrer"&gt;Follow me on X (Twitter)&lt;/a&gt; to get daily web development tips &amp;amp; insights.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>api</category>
      <category>automation</category>
    </item>
    <item>
      <title>11 Free Hosting Platforms for Your Side Projects</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Wed, 01 Apr 2026 07:14:11 +0000</pubDate>
      <link>https://dev.to/devshefali/11-free-hosting-platforms-for-your-side-projects-44lo</link>
      <guid>https://dev.to/devshefali/11-free-hosting-platforms-for-your-side-projects-44lo</guid>
      <description>&lt;p&gt;Have a side project on your laptop but not hosting it because it feels expensive or confusing? You’re in the right place. In this post, I’ll share 11 free hosting platforms you can use to put your projects online without spending a single penny. &lt;/p&gt;

&lt;p&gt;Let’s jump right into it!🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://appwrite.io/" rel="noopener noreferrer"&gt;Appwrite&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;An open-source backend platform that gives you APIs for authentication, databases, and storage. It's great for building full-stack apps quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvr1x4vibhnbt9cf1258.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvr1x4vibhnbt9cf1258.png" alt="Appwrite" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. &lt;a href="https://pages.cloudflare.com/" rel="noopener noreferrer"&gt;Cloudflare Pages&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A fast and secure platform for hosting frontend websites with global CDN and easy Git integration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzi115zz5labm6jjff8s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzi115zz5labm6jjff8s.png" alt="Cloudflare Pages" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &lt;a href="https://sevalla.com/" rel="noopener noreferrer"&gt;Sevalla&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A modern cloud platform where you can deploy apps, databases, and static sites in one place, without worrying about infrastructure or complex setup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6hr1jmdql62416lwu6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8g6hr1jmdql62416lwu6.png" alt="Sevalla" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. &lt;a href="https://firebase.google.com/docs/hosting" rel="noopener noreferrer"&gt;Firebase Hosting&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A reliable hosting service by Google for static sites and web apps, with built-in security and fast performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ctni6jv8s6iqy32zyyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ctni6jv8s6iqy32zyyk.png" alt="Firebase Hosting" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. &lt;a href="https://pages.github.com/" rel="noopener noreferrer"&gt;GitHub Pages&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Perfect for hosting static websites straight from your GitHub repository. It's super simple and beginner-friendly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlg6mel21jzxy4p5jgkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlg6mel21jzxy4p5jgkw.png" alt="GitHub Pages" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. &lt;a href="https://infinityfree.net/" rel="noopener noreferrer"&gt;InfinityFree&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A completely free hosting service with no ads, suitable for small PHP and MySQL projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14p2ao74ut9awo9efprl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14p2ao74ut9awo9efprl.png" alt="InfinityFree" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A popular platform for deploying frontend apps with features like forms, serverless functions, and CI/CD.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdgont4nta578vnvix31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdgont4nta578vnvix31.png" alt="Netlify" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. &lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A modern cloud platform to host static sites, APIs, and databases with a clean developer experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl7mag8p8tww258i144hm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl7mag8p8tww258i144hm.png" alt="Render" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. &lt;a href="https://supabase.io/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;An open-source Firebase alternative that provides a database, auth, and APIs for building apps quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fwxnkf6o0yanutl0nj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fwxnkf6o0yanutl0nj5.png" alt="Supabase" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. &lt;a href="https://surge.sh/" rel="noopener noreferrer"&gt;Surge&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A super simple tool for publishing static websites with just a few commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuak3v4uqnvngbebehswr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuak3v4uqnvngbebehswr.png" alt="Surge" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  11. &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A developer-friendly platform (great for Next.js apps) that makes deploying frontend and full-stack apps fast and seamless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4he4fn9qq2m3zzzlks1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4he4fn9qq2m3zzzlks1.png" alt="Vercel" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this list of free hosting platforms helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://x.com/Shefali__J" rel="noopener noreferrer"&gt;Follow me on X (Twitter)&lt;/a&gt; to get daily web development tips &amp;amp; insights.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>resources</category>
      <category>programming</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>25+ Websites to Practice HTML, CSS, and JavaScript</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Wed, 25 Mar 2026 06:57:58 +0000</pubDate>
      <link>https://dev.to/devshefali/25-websites-to-practice-html-css-and-javascript-5b3n</link>
      <guid>https://dev.to/devshefali/25-websites-to-practice-html-css-and-javascript-5b3n</guid>
      <description>&lt;p&gt;Learning HTML, CSS, and JavaScript is easy, but practicing them consistently is the hard part.&lt;/p&gt;

&lt;p&gt;When you watch tutorials, you understand everything. Then you open your editor, try to build something on your own and suddenly your brain goes blank.&lt;/p&gt;

&lt;p&gt;It happens to all of us.&lt;/p&gt;

&lt;p&gt;So instead of thinking “what should I build?”, here are 25+ websites where you can actually practice through projects, challenges, and simple exercises.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://codepen.io/" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A super popular online editor where you can write HTML, CSS, and JavaScript and instantly see the results. It’s perfect for experimenting with ideas, building small components, and exploring how others structure and style their code in real projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxrkhxk88zgtyn390qm5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxrkhxk88zgtyn390qm5.png" alt="CodePen - Online editor" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. &lt;a href="https://jsfiddle.net/" rel="noopener noreferrer"&gt;JSFiddle&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A simple and lightweight playground to quickly test small snippets of code. It's great for debugging, trying out new concepts, or sharing examples with others without setting up a full development environment on your machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff18jxa9eizx7trss1a8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff18jxa9eizx7trss1a8m.png" alt="JSFiddle - playground to quickly test small snippets of code" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &lt;a href="https://codesandbox.io/" rel="noopener noreferrer"&gt;CodeSandbox&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;An advanced online development environment where you can build complete frontend apps directly in the browser. It supports modern frameworks and gives you a real development-like experience without needing to install anything locally.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftb40fn28wo0lstylyb7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftb40fn28wo0lstylyb7m.png" alt="CodeSandbox - online development environment" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. &lt;a href="https://stackblitz.com/" rel="noopener noreferrer"&gt;StackBlitz&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Runs full development environments inside your browser using WebContainers. It feels almost like working on your own computer, so you can try modern tools, frameworks, and build projects quickly without installing anything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdry73bir0bmuxxmi4oiy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdry73bir0bmuxxmi4oiy.png" alt="StackBlitz - Run full development environments inside your browser" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. &lt;a href="https://www.frontendmentor.io/" rel="noopener noreferrer"&gt;Frontend Mentor&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Provides real UI design challenges where you convert designs into working code. It’s a great way to build portfolio projects while improving layout skills, responsiveness, and attention to small details.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycm0h6k4boss34h4zv7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycm0h6k4boss34h4zv7g.png" alt="Frontend Mentor - UI design challenges" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. &lt;a href="https://www.frontendpractice.com/" rel="noopener noreferrer"&gt;Frontend Practice&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Lets you recreate real-world websites from companies you already know. This helps you understand how professional interfaces are built and improves your ability to break down complex designs into smaller components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7iufj91lftn6dqx7u9j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7iufj91lftn6dqx7u9j0.png" alt="Frontend Practice - recreate real-world websites" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. &lt;a href="https://codewell-clone.vercel.app/" rel="noopener noreferrer"&gt;Codewell&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Provides clean and realistic UI challenges focused on modern design. You also get ready-to-use files and assets, so you can focus on coding and building layouts instead of spending time creating the design from scratch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy7p47ny2qrrex8em8f2e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy7p47ny2qrrex8em8f2e.png" alt="Codewell - Improve your HTML and CSS skills by practicing on real design templates" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. &lt;a href="https://cssbattle.dev/" rel="noopener noreferrer"&gt;CSSBattle&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A fun platform where you recreate designs using CSS. It challenges your creativity and helps you deeply understand positioning, shapes, and how CSS actually works under the hood.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftitk0t3pnm7knt13wug0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftitk0t3pnm7knt13wug0.png" alt="CSSBattle - A fun platform to recreate designs using CSS" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. &lt;a href="https://javascript30.com/" rel="noopener noreferrer"&gt;Javascript30&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A collection of 30 JavaScript projects that help you build consistency. Each project focuses on basic concepts and encourages you to build things on your own without using frameworks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo147tvys3bpsfp1zjny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo147tvys3bpsfp1zjny.png" alt="JavaScript30 - collection of 30 JavaScript projects" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. &lt;a href="https://www.freecodecamp.org/" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A complete learning platform that combines tutorials with hands-on challenges. You don’t just learn concepts, you immediately apply them through exercises and projects, which makes it great for building strong fundamentals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fierp0y4s46qfzbyo08mk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fierp0y4s46qfzbyo08mk.png" alt="Freecodecamp" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  11. &lt;a href="https://learnify.shefali.dev/" rel="noopener noreferrer"&gt;Learnify&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A simple platform where you can learn and test your frontend knowledge through tutorials and quizzes. It helps you understand concepts clearly, revise what you’ve learned, and identify gaps before moving on to building real projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv2w1le8w76kw17lca44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv2w1le8w76kw17lca44.png" alt="Learnify - Easy web development tutorials" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  12. &lt;a href="https://www.codecademy.com/projects" rel="noopener noreferrer"&gt;Codecademy Projects&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Offers guided projects where you build real applications step by step. It’s especially helpful if you like structured learning and want to apply concepts without feeling overwhelmed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbdcudwal6s1puxqe0es.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbdcudwal6s1puxqe0es.png" alt="Codecademy Projects - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  13. &lt;a href="https://www.w3schools.com/exercises/" rel="noopener noreferrer"&gt;W3Schools Exercises&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Offers simple and quick exercises to check your understanding of HTML, CSS, and JavaScript. It’s great for beginners who want to practice concepts without getting into big or complex projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluc3hkgypqt787xc4n6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluc3hkgypqt787xc4n6x.png" alt="W3Schools Exercises" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  14. &lt;a href="https://learnjavascript.online/" rel="noopener noreferrer"&gt;LearnJavaScript.online&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;An interactive platform focused on JavaScript. It explains concepts and gives you coding challenges, so you can learn by actually writing and testing code as you go.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70nqfneuhl8nla2ida2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70nqfneuhl8nla2ida2b.png" alt="LearnJavaScript.online - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  15. &lt;a href="https://www.codepractice.dev/" rel="noopener noreferrer"&gt;CodePractice.dev&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A platform focused on practice, with problems in HTML, CSS, JavaScript, and more. It’s useful when you want to improve specific skills with targeted exercises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F801qc78i1p0ghdsofyv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F801qc78i1p0ghdsofyv1.png" alt="CodePractice.dev - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  16. &lt;a href="https://flexboxfroggy.com/" rel="noopener noreferrer"&gt;Flexbox Froggy&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A game that teaches Flexbox through interactive levels. Instead of memorizing properties, you learn by solving visual puzzles, which makes layouts easier to understand.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdy3qkmxgh5grxyjwnx6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdy3qkmxgh5grxyjwnx6g.png" alt="Flexbox Froggy" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  17. &lt;a href="https://cssgridgarden.com/" rel="noopener noreferrer"&gt;Grid Garden&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Similar to Flexbox Froggy but focused on CSS Grid. It helps you learn grid layouts in a simple and visual way, making them easier to understand than just reading theory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31vra7440p7zw0ek0sk5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31vra7440p7zw0ek0sk5.png" alt="Grid Garden" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  18. &lt;a href="https://www.codingame.com/start/" rel="noopener noreferrer"&gt;CodinGame&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Turns coding practice into a game-like experience. You solve problems, compete with others, and learn concepts while playing, which makes it much easier to stay consistent and motivated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpk9z972a41pnwzdcy6p7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpk9z972a41pnwzdcy6p7.png" alt="Turn coding practice into a game-like experience" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  19. &lt;a href="https://leetcode.com/" rel="noopener noreferrer"&gt;LeetCode&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A well-known platform for practicing data structures and algorithms. While not UI-focused, it’s excellent for improving your problem-solving skills and writing better JavaScript logic, especially if you're preparing for technical interviews.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjk1tijhv720djr3e9yce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjk1tijhv720djr3e9yce.png" alt="Leetcode - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  20. &lt;a href="https://www.hackerrank.com/" rel="noopener noreferrer"&gt;HackerRank&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Offers structured coding challenges across multiple domains, including frontend topics. It’s beginner-friendly and also useful for interview preparation, with clear problem statements and guided practice paths.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj79s07ilcketbzey4bj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj79s07ilcketbzey4bj9.png" alt="HackerRank - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  21. &lt;a href="https://www.codewars.com/" rel="noopener noreferrer"&gt;CodeWars&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Provides coding challenges called “kata” where you solve problems in different ways. It’s great for improving JavaScript thinking, exploring different solutions, and learning from how others approach the same problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mwgemlgsel0ci39i5qj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mwgemlgsel0ci39i5qj.png" alt="Codewars - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  22. &lt;a href="https://www.codechef.com/" rel="noopener noreferrer"&gt;CodeChef&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A competitive programming platform with a wide range of problems. It’s useful for improving logical thinking and consistency, especially if you enjoy solving challenges regularly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdy0iwcfz61ghhu72xbgl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdy0iwcfz61ghhu72xbgl.png" alt="CodeChef - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  23. &lt;a href="https://codeforces.com/" rel="noopener noreferrer"&gt;Codeforces&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;One of the most advanced competitive programming platforms. It’s more challenging but helps you push your limits and improve problem-solving speed and accuracy over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc5d5o1o2g2y7kb7yk4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpc5d5o1o2g2y7kb7yk4x.png" alt="Codeforces - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  24. &lt;a href="https://www.hackerearth.com/" rel="noopener noreferrer"&gt;HackerEarth&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Offers coding challenges, hackathons, and skill assessments. It’s useful not only for practice but also for exposure to real-world coding environments and hiring-related tests.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidpvd2kcb1lzyx59a054.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidpvd2kcb1lzyx59a054.png" alt="Websites to Practice HTML CSS and JavaScript" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  25. &lt;a href="https://codesignal.com/" rel="noopener noreferrer"&gt;CodeSignal&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Focuses on company-style coding assessments and challenges. It helps you practice in a format similar to real hiring tests, making it especially useful when preparing for job opportunities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqa8ph25clp157nogtfh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiqa8ph25clp157nogtfh.png" alt="CodeSignal - Websites to Practice HTML CSS and JavaScript" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Bonus Platforms
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.topcoder.com/" rel="noopener noreferrer"&gt;Topcoder&lt;/a&gt;&lt;/strong&gt;: Competitive programming + challenges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://exercism.org/" rel="noopener noreferrer"&gt;Exercism&lt;/a&gt;&lt;/strong&gt;: Mentored coding practice with feedback&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://coderbyte.com/" rel="noopener noreferrer"&gt;Coderbyte&lt;/a&gt;&lt;/strong&gt;: Interview-style questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.spoj.com/" rel="noopener noreferrer"&gt;SPOJ&lt;/a&gt;&lt;/strong&gt;: Large archive of coding problems&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://projecteuler.net/" rel="noopener noreferrer"&gt;Project Euler&lt;/a&gt;&lt;/strong&gt;: Math + programming challenges&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;You don’t need 25 websites, you just need a few good ones.&lt;/p&gt;

&lt;p&gt;One to learn, one to build, and one to practice.&lt;/p&gt;

&lt;p&gt;That’s enough.&lt;/p&gt;

&lt;p&gt;You don’t improve by saving more resources. You improve by building regularly, getting stuck, and figuring things out step by step.&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this list of websites to practice HTML, CSS, and JavaScript helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://x.com/Shefali__J" rel="noopener noreferrer"&gt;Follow me on X (Twitter)&lt;/a&gt; to get daily web development tips &amp;amp; insights.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>The Ultimate Python Roadmap: Learn Step by Step</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Fri, 16 Jan 2026 06:06:24 +0000</pubDate>
      <link>https://dev.to/devshefali/the-ultimate-python-roadmap-learn-step-by-step-3jg3</link>
      <guid>https://dev.to/devshefali/the-ultimate-python-roadmap-learn-step-by-step-3jg3</guid>
      <description>&lt;p&gt;Python is one of the most beginner-friendly and versatile programming languages. You can use it for many things like building websites, working with data, automating tasks, creating backend systems, or even getting started with AI.&lt;/p&gt;

&lt;p&gt;To learn Python, there’s a lot to cover: basics, data types, loops, functions, OOP, and more. But don’t worry, you’re in the right place. I’ve put together a step-by-step Python roadmap to guide you through everything in a clear and logical order.&lt;/p&gt;

&lt;p&gt;Let’s jump right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: Getting Started
&lt;/h2&gt;

&lt;p&gt;Before writing real programs, understand what Python is and how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction: What Python is and where it’s used&lt;/li&gt;
&lt;li&gt;Getting Started with Python: Installing Python and running your first program&lt;/li&gt;
&lt;li&gt;Comments: Writing notes in code&lt;/li&gt;
&lt;li&gt;Print Function: Displaying output&lt;/li&gt;
&lt;li&gt;Escape Sequence Characters: Formatting text output&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;💡Tip: If you want a detailed explanation with examples while following this roadmap, you can check out &lt;a href="https://learnify.shefali.dev/tutorials/category/python" rel="noopener noreferrer"&gt;Python tutorials on Learnify&lt;/a&gt;.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Stage 2: Variables, Data Types &amp;amp; Input
&lt;/h2&gt;

&lt;p&gt;Next, learn how Python stores and handles data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Variables in Python&lt;/li&gt;
&lt;li&gt;Data Types in Python&lt;/li&gt;
&lt;li&gt;Typecasting in Python&lt;/li&gt;
&lt;li&gt;Input Function: Taking user input&lt;/li&gt;
&lt;li&gt;Strings: Basics, indexing, slicing, and methods&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 3: Control Flow &amp;amp; Logic
&lt;/h2&gt;

&lt;p&gt;Now start controlling how your program behaves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conditional Statements: if, elif, else&lt;/li&gt;
&lt;li&gt;Match Case Statements&lt;/li&gt;
&lt;li&gt;Loops: for loop, while loop&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 4: Functions &amp;amp; Code Organization
&lt;/h2&gt;

&lt;p&gt;Make your code reusable and clean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions&lt;/li&gt;
&lt;li&gt;Local and Global Variables&lt;/li&gt;
&lt;li&gt;Lambda Functions&lt;/li&gt;
&lt;li&gt;Modules&lt;/li&gt;
&lt;li&gt;Importing Modules&lt;/li&gt;
&lt;li&gt;if name == "main"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 5: Python Style &amp;amp; Best Practices
&lt;/h2&gt;

&lt;p&gt;Learn how to write clean and professional Python code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;String Formatting&lt;/li&gt;
&lt;li&gt;Docstrings&lt;/li&gt;
&lt;li&gt;Comments vs Docstrings&lt;/li&gt;
&lt;li&gt;PEP 8&lt;/li&gt;
&lt;li&gt;The Zen of Python&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 6: Data Structures
&lt;/h2&gt;

&lt;p&gt;Work with structured data efficiently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Tuples&lt;/li&gt;
&lt;li&gt;Sets&lt;/li&gt;
&lt;li&gt;Dictionaries&lt;/li&gt;
&lt;li&gt;Enumerate Function&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 7: Error Handling &amp;amp; Utilities
&lt;/h2&gt;

&lt;p&gt;Handle errors and improve reliability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exception Handling&lt;/li&gt;
&lt;li&gt;is vs ==&lt;/li&gt;
&lt;li&gt;requirements.txt File&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 8: Functional Programming Concepts
&lt;/h2&gt;

&lt;p&gt;Understand Python’s functional side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Map, Filter, and Reduce&lt;/li&gt;
&lt;li&gt;Function Caching&lt;/li&gt;
&lt;li&gt;Generators&lt;/li&gt;
&lt;li&gt;Walrus Operator&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 9: Object-Oriented Programming (OOP)
&lt;/h2&gt;

&lt;p&gt;Learn how to build scalable and maintainable programs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to Object-Oriented Programming (OOP)&lt;/li&gt;
&lt;li&gt;Classes and Objects&lt;/li&gt;
&lt;li&gt;Constructors&lt;/li&gt;
&lt;li&gt;Inheritance&lt;/li&gt;
&lt;li&gt;Polymorphism&lt;/li&gt;
&lt;li&gt;Encapsulation&lt;/li&gt;
&lt;li&gt;Access Modifiers&lt;/li&gt;
&lt;li&gt;Instance vs Class Variables&lt;/li&gt;
&lt;li&gt;Static Methods&lt;/li&gt;
&lt;li&gt;Class Methods&lt;/li&gt;
&lt;li&gt;Class Methods as Alternative Constructors&lt;/li&gt;
&lt;li&gt;Decorators&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 10: Advanced OOP &amp;amp; Internals
&lt;/h2&gt;

&lt;p&gt;Explore how Python works internally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;super() Function&lt;/li&gt;
&lt;li&gt;Magic / Dunder Methods&lt;/li&gt;
&lt;li&gt;dir() Method&lt;/li&gt;
&lt;li&gt;dict Attribute&lt;/li&gt;
&lt;li&gt;help() Method&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 11: Working with Files &amp;amp; Environments
&lt;/h2&gt;

&lt;p&gt;Let's look at the real-world project essentials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handling Files&lt;/li&gt;
&lt;li&gt;Virtual Environment&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Prefer a Visual Roadmap?&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://github.com/WebdevShefali/CheatSheets/blob/main/Python/Python%20Roadmap%20(Light%20mode).png" rel="noopener noreferrer"&gt;You can also check out this step-by-step Python roadmap in visual form here!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this Python roadmap helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>python</category>
      <category>roadmap</category>
    </item>
    <item>
      <title>The Ultimate CSS Roadmap: Learn Step by Step</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Tue, 25 Nov 2025 11:23:49 +0000</pubDate>
      <link>https://dev.to/devshefali/the-ultimate-css-roadmap-learn-step-by-step-440c</link>
      <guid>https://dev.to/devshefali/the-ultimate-css-roadmap-learn-step-by-step-440c</guid>
      <description>&lt;p&gt;To learn CSS, it often feels like there’s an endless list of things to cover: selectors, layouts, responsive tricks, animations, and so much more. But don’t worry, you’re in the right place, as I’ve put together a step-by-step CSS roadmap to guide you through everything in a logical order.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: Foundations
&lt;/h2&gt;

&lt;p&gt;First, we start with the basics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Basics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Understanding CSS syntax&lt;/li&gt;
&lt;li&gt;Ways to add CSS to HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Selectors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Basic selectors&lt;/li&gt;
&lt;li&gt;Combinators&lt;/li&gt;
&lt;li&gt;Pseudo-class&lt;/li&gt;
&lt;li&gt;Pseudo-elements&lt;/li&gt;
&lt;li&gt;Attribute selectors&lt;/li&gt;
&lt;li&gt;Grouping selectors&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Colors
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ways to define colors&lt;/li&gt;
&lt;li&gt;Useful color utilities: currentColor keyword, transparent keyword, inherit / initial / unset&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Units
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Absolute &amp;amp; relative units&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;💡Tip: If you want a detailed explanation with examples while following this roadmap, you can check out &lt;a href="https://learnify.shefali.dev/tutorials/category/css" rel="noopener noreferrer"&gt;CSS tutorials on Learnify&lt;/a&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Stage 2: How CSS Behaves
&lt;/h2&gt;

&lt;p&gt;After that, you’ll learn how CSS decides which styles actually get applied.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inheritance, Specificity &amp;amp; Cascade
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What inheritance means&lt;/li&gt;
&lt;li&gt;Why CSS specificity matters&lt;/li&gt;
&lt;li&gt;How the cascade decides the final applied style&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  !important and When to Avoid It
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Why !important works&lt;/li&gt;
&lt;li&gt;When to use it&lt;/li&gt;
&lt;li&gt;When to avoid it&lt;/li&gt;
&lt;li&gt;Better alternatives&lt;/li&gt;
&lt;li&gt;Common mistakes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 3: Layout Fundamentals
&lt;/h2&gt;

&lt;p&gt;Once that makes sense, you can begin working on layout and structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Box Model &amp;amp; Layout
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Margin (properties, values, shorthand)&lt;/li&gt;
&lt;li&gt;Padding (properties, values, shorthand)&lt;/li&gt;
&lt;li&gt;How padding affects width&lt;/li&gt;
&lt;li&gt;Margin vs padding&lt;/li&gt;
&lt;li&gt;The complete box model&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Display Property
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;block&lt;/li&gt;
&lt;li&gt;inline&lt;/li&gt;
&lt;li&gt;inline-block&lt;/li&gt;
&lt;li&gt;flex&lt;/li&gt;
&lt;li&gt;inline-flex&lt;/li&gt;
&lt;li&gt;grid&lt;/li&gt;
&lt;li&gt;inline-grid&lt;/li&gt;
&lt;li&gt;none&lt;/li&gt;
&lt;li&gt;inherit&lt;/li&gt;
&lt;li&gt;initial&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Position Property
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Static&lt;/li&gt;
&lt;li&gt;Relative&lt;/li&gt;
&lt;li&gt;Absolute&lt;/li&gt;
&lt;li&gt;Fixed&lt;/li&gt;
&lt;li&gt;Sticky&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 4: Modern Layout Systems
&lt;/h2&gt;

&lt;p&gt;Then, you’re ready to learn modern layout tools like Flexbox and Grid.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flexbox&lt;/li&gt;
&lt;li&gt;Grid Layout&lt;/li&gt;
&lt;li&gt;Centering (Vertical &amp;amp; Horizontal)&lt;/li&gt;
&lt;li&gt;Z-index &amp;amp; Stacking Context&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 5: Visual Presentation
&lt;/h2&gt;

&lt;p&gt;Next, after your layouts look good, you’ll learn how to make your designs visually appealing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Typography
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Fonts&lt;/li&gt;
&lt;li&gt;Responsive typography&lt;/li&gt;
&lt;li&gt;Media queries&lt;/li&gt;
&lt;li&gt;clamp() for scalable typesetting&lt;/li&gt;
&lt;li&gt;Text alignment / decoration / transform&lt;/li&gt;
&lt;li&gt;Line height, letter spacing, word spacing&lt;/li&gt;
&lt;li&gt;Text shadows&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Visual Effects
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Backgrounds&lt;/li&gt;
&lt;li&gt;Borders &amp;amp; radius&lt;/li&gt;
&lt;li&gt;Shadows&lt;/li&gt;
&lt;li&gt;Opacity &amp;amp; color functions&lt;/li&gt;
&lt;li&gt;Filters &amp;amp; blend modes&lt;/li&gt;
&lt;li&gt;Handling text overflow&lt;/li&gt;
&lt;li&gt;Object-fit &amp;amp; object-position&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 6: Responsive &amp;amp; Interactive CSS
&lt;/h2&gt;

&lt;p&gt;At this point, you’ll make your designs responsive and interactive for all screen sizes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responsive Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Media Queries&lt;/li&gt;
&lt;li&gt;Container Queries&lt;/li&gt;
&lt;li&gt;Viewport Units&lt;/li&gt;
&lt;li&gt;Responsive Images&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Animations
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Stage 7: Advanced Concepts
&lt;/h2&gt;

&lt;p&gt;Then you’ll learn advanced CSS features to write cleaner, smarter code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced CSS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;CSS variables (syntax &amp;amp; benefits)&lt;/li&gt;
&lt;li&gt;calc(), clamp(), min(), max()&lt;/li&gt;
&lt;li&gt;Modern CSS nesting&lt;/li&gt;
&lt;li&gt;Why nesting helps&lt;/li&gt;
&lt;li&gt;How it works&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 8: Professional Standards
&lt;/h2&gt;

&lt;p&gt;And finally, you’ll finish with best practices and accessibility to make your work professional and user-friendly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Practices &amp;amp; Accessibility
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;BEM naming&lt;/li&gt;
&lt;li&gt;DRY CSS&lt;/li&gt;
&lt;li&gt;Proper focus states&lt;/li&gt;
&lt;li&gt;prefers-reduced-motion&lt;/li&gt;
&lt;li&gt;Maintaining color contrast&lt;/li&gt;
&lt;li&gt;display: none vs visibility: hidden vs ARIA&lt;/li&gt;
&lt;li&gt;Accessible responsive layouts&lt;/li&gt;
&lt;li&gt;Semantic HTML + CSS&lt;/li&gt;
&lt;li&gt;Avoiding unnecessary !important&lt;/li&gt;
&lt;li&gt;Limiting fixed width/height&lt;/li&gt;
&lt;li&gt;Using variables for consistency&lt;/li&gt;
&lt;li&gt;Giving clear visual feedback&lt;/li&gt;
&lt;li&gt;Preventing layout shifts&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prefer a Visual Roadmap?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://github.com/WebdevShefali/CheatSheets/blob/main/CSS/CSS%20Roadmap%20(Dark%20mode).png" rel="noopener noreferrer"&gt;You can also check out this step-by-step CSS roadmap in visual form here!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this JavaScript roadmap helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The Ultimate JavaScript Roadmap: Learn Step by Step</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 29 Sep 2025 05:41:29 +0000</pubDate>
      <link>https://dev.to/devshefali/the-ultimate-javascript-roadmap-learn-step-by-step-53jj</link>
      <guid>https://dev.to/devshefali/the-ultimate-javascript-roadmap-learn-step-by-step-53jj</guid>
      <description>&lt;p&gt;To learn JavaScript, there’s so much to cover: basics, DOM, closures, async stuff, and more. But don’t worry, you’re in the right place, as I’ve put together a step-by-step JavaScript roadmap to guide you through everything in a logical order.&lt;/p&gt;

&lt;p&gt;Let’s jump right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 1: Getting Started
&lt;/h2&gt;

&lt;p&gt;Before you start, get comfortable with the basics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction: What JS is and why it’s awesome&lt;/li&gt;
&lt;li&gt;Adding JS to HTML: Inline, internal, external scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;💡 Tip: If you want a detailed explanation with examples while following this roadmap, you can check out &lt;a href="https://learnify.shefali.dev/tutorials/category/javascript" rel="noopener noreferrer"&gt;JavaScript tutorials on Learnify&lt;/a&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Stage 2: Core Concepts
&lt;/h2&gt;

&lt;p&gt;Next, focus on the building blocks of JavaScript:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Types: string, number, boolean, undefined, null, symbol, bigint&lt;/li&gt;
&lt;li&gt;Variables: var, let, const&lt;/li&gt;
&lt;li&gt;Operators: arithmetic, comparison, logical, assignment&lt;/li&gt;
&lt;li&gt;Truthy &amp;amp; Falsy Values&lt;/li&gt;
&lt;li&gt;Equality Operators: == vs ===, reference comparison&lt;/li&gt;
&lt;li&gt;Console Methods&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 3: Control Flow &amp;amp; Loops
&lt;/h2&gt;

&lt;p&gt;Now you can start controlling how your code runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conditional Statements: if, else, else if, switch&lt;/li&gt;
&lt;li&gt;Loops: for, while, do…while, for…of, for…in&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 4: Functions &amp;amp; Scope
&lt;/h2&gt;

&lt;p&gt;Let’s dive into functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functions: declarations, expressions, arrow functions&lt;/li&gt;
&lt;li&gt;Function Parameters and Arguments&lt;/li&gt;
&lt;li&gt;Scope: block vs function vs global&lt;/li&gt;
&lt;li&gt;Hoisting&lt;/li&gt;
&lt;li&gt;Type Conversion &amp;amp; Coercion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 5: DOM &amp;amp; Events
&lt;/h2&gt;

&lt;p&gt;Make your pages interactive:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM Manipulation &amp;amp; Events&lt;/li&gt;
&lt;li&gt;Optional Chaining &amp;amp; Nullish Coalescing (?., ??)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 6: Arrays &amp;amp; Objects
&lt;/h2&gt;

&lt;p&gt;Handle structured data confidently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrays &amp;amp; Methods: map, filter, reduce, forEach, find&lt;/li&gt;
&lt;li&gt;Objects: creation, access, nested objects&lt;/li&gt;
&lt;li&gt;Shallow vs Deep Copy&lt;/li&gt;
&lt;li&gt;Map, Set, WeakMap, WeakSet&lt;/li&gt;
&lt;li&gt;Destructuring &amp;amp; Spread/Rest Operators&lt;/li&gt;
&lt;li&gt;Template Literals&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 7: ES6 Modules &amp;amp; Utilities
&lt;/h2&gt;

&lt;p&gt;Level up your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ES6 Modules: import/export&lt;/li&gt;
&lt;li&gt;Dates &amp;amp; Math&lt;/li&gt;
&lt;li&gt;Error Handling: try…catch&lt;/li&gt;
&lt;li&gt;Timers: setTimeout, setInterval&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 8: Asynchronous JS
&lt;/h2&gt;

&lt;p&gt;Understand async operations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Call Stack &amp;amp; Event Loop&lt;/li&gt;
&lt;li&gt;Callback Functions&lt;/li&gt;
&lt;li&gt;Promises: resolve, reject, .then, .catch&lt;/li&gt;
&lt;li&gt;async / await&lt;/li&gt;
&lt;li&gt;Fetch API&lt;/li&gt;
&lt;li&gt;Error Handling in Async Code&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stage 9: Advanced Concepts &amp;amp; Patterns
&lt;/h2&gt;

&lt;p&gt;Let’s look at the advanced stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object-Oriented Programming (OOP)&lt;/li&gt;
&lt;li&gt;Closures&lt;/li&gt;
&lt;li&gt;IIFE (Immediately Invoked Function Expressions)&lt;/li&gt;
&lt;li&gt;Currying &amp;amp; Memoization&lt;/li&gt;
&lt;li&gt;Debounce &amp;amp; Throttle&lt;/li&gt;
&lt;li&gt;bind, call, apply&lt;/li&gt;
&lt;li&gt;this keyword in depth&lt;/li&gt;
&lt;li&gt;Event loop + microtasks/macrotasks&lt;/li&gt;
&lt;li&gt;Generators &amp;amp; Iterators&lt;/li&gt;
&lt;li&gt;Garbage Collection&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Prefer a Visual Roadmap?&lt;br&gt;
&lt;a href="https://github.com/WebdevShefali/CheatSheets/blob/main/JavaScript/JavaScript%20Roadmap%20(Light%20mode).png" rel="noopener noreferrer"&gt;You can also check out this step-by-step JavaScript roadmap in visual form here&lt;/a&gt;!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;I hope you find this JavaScript roadmap helpful!&lt;/p&gt;

&lt;p&gt;For paid collaboration connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>roadmap</category>
      <category>beginners</category>
    </item>
    <item>
      <title>10+ Free Font Resources for Your Projects</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 22 Sep 2025 08:39:28 +0000</pubDate>
      <link>https://dev.to/devshefali/10-free-font-resources-for-your-projects-53nm</link>
      <guid>https://dev.to/devshefali/10-free-font-resources-for-your-projects-53nm</guid>
      <description>&lt;p&gt;Fonts play a big role in your website design. They can make or break your design. In this post, I’ll share 10+ free font resources that you should know about. These fonts will help make your project look more professional and make the text easier to read.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;Google Fonts&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;This is probably the most popular free font library. It provides over 1,800 fonts with an easy embed option for web projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3xoiuw050f3ep4gpw5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc3xoiuw050f3ep4gpw5v.png" alt="Google Fonts - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.1001freefonts.com/" rel="noopener noreferrer"&gt;1001FreeFonts&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Despite the name, it has way more than 1,001 fonts, most of which are available for personal use, with some licensed for commercial projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4csykcy54eifm5x01tft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4csykcy54eifm5x01tft.png" alt="1001FreeFonts" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://fontjoy.com/" rel="noopener noreferrer"&gt;Fontjoy&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Perfect for designers who find it hard to match fonts. It helps you create font pairs automatically using AI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felam0vbtx677mgbzybkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felam0vbtx677mgbzybkr.png" alt="Fontjoy - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://fontsly.com/" rel="noopener noreferrer"&gt;Fontsly&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A collection of cool and stylish fonts, with categories from simple ones to fancy decorative styles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyxmol5voapoz0u6o5ld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyxmol5voapoz0u6o5ld.png" alt="Fontsly" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.fontspace.com/" rel="noopener noreferrer"&gt;FontSpace&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;More than 150,000 free fonts shared by designers worldwide. You can preview them and download them easily.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts00ab50q1sfxyyl0ey3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fts00ab50q1sfxyyl0ey3.png" alt="FontSpace - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.abstractfonts.com/" rel="noopener noreferrer"&gt;AbstractFonts&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A trusted site with thousands of free fonts sorted by categories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffw5yhec806a010wm502.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffw5yhec806a010wm502.png" alt="AbstractFonts" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.fontzone.net/" rel="noopener noreferrer"&gt;FontZone&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Has a big collection of quality fonts you can use for free, for both personal and commercial use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmzw837lewmpb41d08fz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmzw837lewmpb41d08fz.png" alt="FontZone - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://devfonts.gafi.dev/" rel="noopener noreferrer"&gt;DevFonts&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Made for developers, this site offers fonts that work really well for coding and tech projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2csizmlwonl3kp3qa85i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2csizmlwonl3kp3qa85i.png" alt="DevFonts" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.dafont.com/" rel="noopener noreferrer"&gt;DaFont&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A popular site for fun and creative fonts, perfect for posters, logos, and unique designs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2e748ehfopbyabc9e2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2e748ehfopbyabc9e2l.png" alt="DaFont - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.fontsquirrel.com/" rel="noopener noreferrer"&gt;FontSquirrel&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A great collection of free fonts that are safe to use for business. It also has a handy tool to identify fonts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xredcw97hmh4udo9iwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xredcw97hmh4udo9iwd.png" alt="FontSquirrel" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.fontfabric.com/font-tag/free-fonts/" rel="noopener noreferrer"&gt;FontFabric&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A font site with professional-quality fonts, and many of them are free to use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir73ptbx8cwm5jsik5qz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fir73ptbx8cwm5jsik5qz.png" alt="FontFabric - FREE Font Resources" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;For paid collaboration connect with me at : &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How to Create a Text Glitch Effect with CSS</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 15 Sep 2025 05:30:15 +0000</pubDate>
      <link>https://dev.to/devshefali/how-to-create-a-text-glitch-effect-with-css-3foi</link>
      <guid>https://dev.to/devshefali/how-to-create-a-text-glitch-effect-with-css-3foi</guid>
      <description>&lt;p&gt;Want to make your text look cool with a glitch effect? In this post, I’ll show you how to create a text glitch effect using only CSS animations, no JavaScript needed!&lt;/p&gt;

&lt;p&gt;It’s a fun way to add style to headings, banners, or any part of your website where you want that techy, glitchy look.&lt;/p&gt;

&lt;p&gt;Let’s start building this cool text glitch effect step by step!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlk13m984bznnafdxhuh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlk13m984bznnafdxhuh.gif" alt="CSS Text Glitch Effect" width="1186" height="1246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up the Basic HTML
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;title=&lt;/span&gt;&lt;span class="s"&gt;"Glitch"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Glitch
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Here we use a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with the class &lt;code&gt;text&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;title&lt;/code&gt; attribute holds the text, which we’ll reuse in the animation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Style the Main Text
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.text&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;26px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text-animation&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt; &lt;span class="n"&gt;linear&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This styles the text’s size, color, and makes it bold.&lt;/li&gt;
&lt;li&gt;We apply the &lt;code&gt;text-animation&lt;/code&gt; to move the text slightly, making it glitch.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Create Two Layers with Pseudo-elements
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.text&lt;/span&gt;&lt;span class="nd"&gt;:before&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="nc"&gt;.text&lt;/span&gt;&lt;span class="nd"&gt;:after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;attr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We create two layers of text using &lt;code&gt;::before&lt;/code&gt; and &lt;code&gt;::after&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;content: attr(title)&lt;/code&gt; takes the text from the &lt;code&gt;title&lt;/code&gt; attribute and displays it.&lt;/li&gt;
&lt;li&gt;Later, we’ll clip and animate them differently to make the glitch effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 4: Style the Top Layer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.text&lt;/span&gt;&lt;span class="nd"&gt;:before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text-animation-top&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt; &lt;span class="n"&gt;linear&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;polygon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;33%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;33%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;-webkit-clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;polygon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;33%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;33%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We only show the top part of the text using &lt;code&gt;clip-path&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The animation &lt;code&gt;text-animation-top&lt;/code&gt; moves this layer in different directions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Style the Bottom Layer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.text&lt;/span&gt;&lt;span class="nd"&gt;:after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text-animation-bottom&lt;/span&gt; &lt;span class="m"&gt;1.5s&lt;/span&gt; &lt;span class="n"&gt;linear&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;polygon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;67%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;67%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;-webkit-clip-path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;polygon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;67%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;67%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We only show the bottom part of the text.&lt;/li&gt;
&lt;li&gt;This layer has a slightly different animation speed to make the glitch feel more interesting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6: Animate the Whole Text
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;text-animation&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;64&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;skew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;60&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;skew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;62&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;skew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;This animation makes the whole text move a little side to side and skew briefly.&lt;/li&gt;
&lt;li&gt;These quick changes make it look like the text is shaking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 7: Animate the Top Layer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;text-animation-top&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;64&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;60&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;62&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;-1px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;skew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-13deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The top part of the text shakes and twists at certain times.&lt;/li&gt;
&lt;li&gt;This creates the glitch burst effect.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 8: Animate the Bottom Layer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;text-animation-bottom&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;64&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;4&lt;/span&gt;&lt;span class="o"&gt;%,&lt;/span&gt; &lt;span class="err"&gt;60&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-2px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;62&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;-22px&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;skew&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;21deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The bottom part moves in different directions at set intervals.&lt;/li&gt;
&lt;li&gt;The randomness makes the glitch effect feel more natural.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;These steps create a layered glitch animation using only CSS.&lt;/li&gt;
&lt;li&gt;You can adjust the timing, movement, and clipping to make it stronger or more subtle.&lt;/li&gt;
&lt;li&gt;Avoid using glitch effects on long blocks of text; they can become hard to read.&lt;/li&gt;
&lt;li&gt;You can pair it with bold fonts to make it stand out more.&lt;/li&gt;
&lt;li&gt;Use it sparingly on headings or call-to-action buttons to maintain user experience.&lt;/li&gt;
&lt;li&gt;Check out &lt;a href="https://cssnippets.shefali.dev/" rel="noopener noreferrer"&gt;CSSnippets&lt;/a&gt; for more UI components and effects you can easily integrate into your projects!&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
      <category>animation</category>
    </item>
    <item>
      <title>13 CSS Best Practices and Accessibility Tips for Developers</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 08 Sep 2025 15:09:15 +0000</pubDate>
      <link>https://dev.to/devshefali/13-css-best-practices-and-accessibility-tips-for-developers-540p</link>
      <guid>https://dev.to/devshefali/13-css-best-practices-and-accessibility-tips-for-developers-540p</guid>
      <description>&lt;p&gt;When you write CSS, following best practices and making your site accessible helps your website look better, work well for everyone, and is easier to maintain.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share 13 CSS best practices and accessibility tips to help you do that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Before we get started, don’t forget to subscribe to my newsletter!&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Get the latest tips, tools, and resources to level up your web development skills delivered straight to your inbox. &lt;a href="https://shefali.beehiiv.com/subscribe" rel="noopener noreferrer"&gt;Subscribe here&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. BEM Naming Methodology
&lt;/h2&gt;

&lt;p&gt;BEM (Block Element Modifier) is a way to name your CSS classes so your code stays clean and easy to understand.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block:&lt;/strong&gt; The main part or component, like a button or header.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Element:&lt;/strong&gt; A smaller part inside the block, like an icon inside a button.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modifier:&lt;/strong&gt; A special version or state, like a large button or a disabled button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c"&gt;/* Block: base button styles */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button__icon&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c"&gt;/* Element: icon inside button */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button__large&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="c"&gt;/* Modifier: large version of button */&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using BEM makes your CSS organised and avoids confusing class names or accidental style conflicts.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. DRY CSS (Don’t Repeat Yourself)
&lt;/h2&gt;

&lt;p&gt;DRY means you don’t write the same CSS code again and again. Instead, create reusable classes and components.&lt;/p&gt;

&lt;p&gt;For example, instead of making separate styles for each button, make one &lt;code&gt;.button&lt;/code&gt; class and add modifiers for variations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.button__red&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This saves time, reduces mistakes, and makes your code easier to update.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Focus States &amp;amp; Outline Management
&lt;/h2&gt;

&lt;p&gt;Focus states show which element is selected when you use a keyboard (like pressing Tab). This is very important for people who don’t use a mouse.&lt;/p&gt;

&lt;p&gt;Browsers usually add a blue outline to focused elements by default. Don’t remove this outline completely, it helps users know where they are on the page.&lt;/p&gt;

&lt;p&gt;Instead, style the focus outline so it looks good but stays visible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt;&lt;span class="nd"&gt;:focus&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;purple&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;outline-offset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. prefers-reduced-motion &amp;amp; Reduced Transparency
&lt;/h2&gt;

&lt;p&gt;Some people feel dizzy or uncomfortable with too many animations or effects. You can respect their preference by checking if they want less motion.&lt;/p&gt;

&lt;p&gt;Use the CSS media query:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-reduced-motion&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c"&gt;/* Turn off animations or transitions */&lt;/span&gt;
  &lt;span class="nc"&gt;.animated&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;transition&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly, some users might prefer less transparency for better clarity. Avoid heavy transparent backgrounds if possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Color Contrast Best Practices
&lt;/h2&gt;

&lt;p&gt;A good contrast between text and background makes your content easy to read for everyone, especially for people with poor eyesight.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use dark text on a light background or light text on a dark background.&lt;/li&gt;
&lt;li&gt;Check your colors using free online tools like &lt;a href="https://webaim.org/resources/contrastchecker/" rel="noopener noreferrer"&gt;WebAIM Contrast Checker&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Aim for a contrast ratio of at least 4.5:1 for normal text.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Visibility: display: none vs visibility: hidden vs ARIA
&lt;/h2&gt;

&lt;p&gt;Sometimes you want to hide elements on your page, but the way you hide them affects accessibility:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;none&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The element is completely removed from the page and is not visible to screen readers. Use this when you want to hide content from everyone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;visibility&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;hidden&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The element is invisible but still takes up space, and screen readers can still access it. Use this when you want to keep layout space but hide visually.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;aria-hidden&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells screen readers to ignore the element but does not hide it visually. Use this to hide decorative elements from screen readers.&lt;/p&gt;

&lt;p&gt;Choosing the right method depends on what users should or shouldn’t see or hear.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Accessible Responsive Layouts
&lt;/h2&gt;

&lt;p&gt;Responsive design means your website looks good on phones, tablets, and desktops.&lt;/p&gt;

&lt;p&gt;To make responsive layouts accessible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use flexible grids and CSS media queries to adjust content for different screen sizes.&lt;/li&gt;
&lt;li&gt;Don’t rely only on color to convey information. Use icons, text, or shapes too.&lt;/li&gt;
&lt;li&gt;Make buttons and links easy to tap on small screens by making them big enough.&lt;/li&gt;
&lt;li&gt;Ensure keyboard users can navigate through content easily.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. Use Semantic HTML with CSS
&lt;/h2&gt;

&lt;p&gt;Write your HTML with proper tags like &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;. CSS styles these elements, but good HTML structure improves accessibility by helping screen readers understand your page better.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Avoid Using !important
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;!important&lt;/code&gt; can make your CSS hard to maintain because it overrides other styles. Instead, try to write clear and specific selectors or use proper CSS structure like BEM to manage styles.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Limit Use of Fixed Widths and Heights
&lt;/h2&gt;

&lt;p&gt;Fixed sizes can break layouts on small or large screens. Use relative units like &lt;code&gt;%&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;rem&lt;/code&gt;, or &lt;code&gt;vw/vh&lt;/code&gt; to make your design flexible and more accessible.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Use CSS Variables for Consistency
&lt;/h2&gt;

&lt;p&gt;CSS variables (&lt;code&gt;--primary-color&lt;/code&gt;, &lt;code&gt;--font-size&lt;/code&gt;) help keep your styles consistent and easy to update. Changing a variable once updates every place it’s used.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--primary-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#007bff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;16px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--primary-color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;--font-size&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  12. Provide Clear Visual Feedback
&lt;/h2&gt;

&lt;p&gt;Make sure buttons, links, and form inputs change visually when hovered or clicked. This helps all users understand what’s interactive and what’s happening.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#0056b3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  13. Avoid Content Shifts
&lt;/h2&gt;

&lt;p&gt;When your page loads or resizes, try to avoid layout shifts (like text or buttons jumping around). This helps people with cognitive disabilities and improves user experience.&lt;/p&gt;

&lt;p&gt;Use CSS properties like &lt;code&gt;min-height&lt;/code&gt; or reserve space for images to reduce shifts.&lt;/p&gt;




&lt;p&gt;By following these CSS best practices and focusing on accessibility, your website will be easier to build, easier to maintain, and usable by everyone, including people with disabilities.&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;By the way, if you ever need free HTML website templates, I recommend checking out &lt;a href="https://htmlrev.com/" rel="noopener noreferrer"&gt;HTMLrev&lt;/a&gt;, I use it all the time. And when I’m looking for web design inspiration, &lt;a href="https://websitevice.com/" rel="noopener noreferrer"&gt;Websitevice&lt;/a&gt; is one of my go-to resources.&lt;/p&gt;

&lt;p&gt;For paid collaboration connect with me at : &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Stop Repeating CSS! Learn CSS Nesting</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 01 Sep 2025 04:14:44 +0000</pubDate>
      <link>https://dev.to/devshefali/stop-repeating-css-learn-css-nesting-2cb2</link>
      <guid>https://dev.to/devshefali/stop-repeating-css-learn-css-nesting-2cb2</guid>
      <description>&lt;p&gt;CSS Nesting lets you write CSS rules inside other CSS rules. This makes your code cleaner, shorter, and easier to understand.&lt;/p&gt;

&lt;p&gt;Think of it like how HTML elements are placed inside each other. For example, a &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; inside a &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;CSS Nesting works the same way, so you write styles for child elements inside the parent’s styles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use CSS Nesting?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keeps your CSS organized:&lt;/strong&gt; You group styles that belong together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Makes your code easier to read:&lt;/strong&gt; You can see the relationship between elements clearly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Saves time:&lt;/strong&gt; You write less repeating code.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How CSS Nesting Works
&lt;/h2&gt;

&lt;p&gt;Here’s a quick example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;nav&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="err"&gt;ul&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;list-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="err"&gt;li&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;white&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; element has a dark background (#333).&lt;/li&gt;
&lt;li&gt;Inside &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, all &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; lists will have no bullet points (&lt;code&gt;list-style: none&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Inside those &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; lists, every &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; (list item) will have white text and 10 pixels of padding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the styles for &lt;code&gt;ul&lt;/code&gt; and &lt;code&gt;li&lt;/code&gt; are written inside the &lt;code&gt;nav&lt;/code&gt; block, these styles only apply to &lt;code&gt;ul&lt;/code&gt; and &lt;code&gt;li&lt;/code&gt; elements inside the &lt;code&gt;nav&lt;/code&gt;. This makes sure your CSS affects exactly the parts of your page you want, without extra code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Browser Support
&lt;/h2&gt;

&lt;p&gt;Good news! CSS Nesting now works in all major browsers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chrome:&lt;/strong&gt; from v112 (April 2023)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edge:&lt;/strong&gt; from v112 (April 2023)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safari:&lt;/strong&gt; from v16.5 (May 2023)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firefox:&lt;/strong&gt; from v117 (August 2023)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opera + Mobile browsers:&lt;/strong&gt; fully supported too&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, it’s safe to use CSS Nesting in your projects today without worrying about compatibility.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;a href="https://caniuse.com/css-nesting" rel="noopener noreferrer"&gt;Check browser support for CSS nesting!&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;CSS Nesting is such a handy feature. It:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keeps your CSS clean and organized&lt;/li&gt;
&lt;li&gt;Saves you from writing the same code again and again&lt;/li&gt;
&lt;li&gt;Matches the way your HTML is structured&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Give it a try in your next project and let me know how it goes for you in the comments!👇🏻&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
      <category>beginners</category>
    </item>
    <item>
      <title>19 JavaScript One-Liners That’ll Blow Your Mind</title>
      <dc:creator>Shefali</dc:creator>
      <pubDate>Mon, 25 Aug 2025 07:46:40 +0000</pubDate>
      <link>https://dev.to/devshefali/19-javascript-one-liners-thatll-blow-your-mind-15cn</link>
      <guid>https://dev.to/devshefali/19-javascript-one-liners-thatll-blow-your-mind-15cn</guid>
      <description>&lt;p&gt;Sometimes the shortest code is the most powerful. JavaScript one-liners are practical, clean, and make your code easier to read.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share 19 powerful JavaScript one-liners you’ll want to bookmark.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Before we get started, don’t forget to subscribe to my newsletter!&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Get the latest tips, tools, and resources to level up your web development skills delivered straight to your inbox. &lt;a href="https://shefali.beehiiv.com/subscribe" rel="noopener noreferrer"&gt;Subscribe here&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, let’s jump right into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Capitalize Text
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;capitalize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;capitalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Hello&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for formatting names, headings, or labels.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Compare Arrays and Objects for Equality
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isEqual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false — different order&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true — identical objects&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false — key order matters in JSON.stringify&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false — missing property&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true — both null&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false — JSON.stringify(undefined) is undefined&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true — primitives equal&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false — different types&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEqual&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true — nested object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for detecting state changes or deep comparisons.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Check If an Array Is Empty
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isEmpty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;([]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true (empty array)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (non-empty array)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (string, not an array)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (null)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;({}));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (object, not an array)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (undefined)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (array with one element)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEmpty&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false (array with one element)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for showing fallback UIs when there’s no data.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Check If a Number Is Even
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isEven&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true &lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false &lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true (string coerced to number 4)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isEven&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;abc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true (NaN % 2 = NaN, !NaN is true — unexpected!)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for conditional logic, games, and filters.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Copy to Clipboard
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;copy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;clipboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for copying code, URLs, or promo codes with a click.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Detect Dark Mode
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isDark&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;matchMedia&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;(prefers-color-scheme: dark)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;matches&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isDark&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns true if the user prefers dark mode, and useful for auto-switch themes based on OS settings.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Get Day Name from Date
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getDay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toLocaleDateString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en-US&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;weekday&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;long&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2025-07-26&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Saturday&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2025-07-27&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Sunday&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Current day name, e.g., "Saturday"&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getDay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;invalid-date&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: Invalid Date&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for calendars, task reminders, and scheduling apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Get a Random Element
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;randomItem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)];&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;colors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;red&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yellow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: yellow&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: red&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: green&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This picks a random item from an array, and this is useful for random quotes, colors, tips, or products.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Get Query Parameters as Object
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getParams&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromEntries&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URLSearchParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;

&lt;span class="c1"&gt;// Basic URL with parameters&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com?name=Shefali&amp;amp;lang=js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: { name: "Shefali", lang: "js" }&lt;/span&gt;

&lt;span class="c1"&gt;// URL with empty parameters&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com?foo=&amp;amp;bar=123&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: { foo: "", bar: "123" }&lt;/span&gt;

&lt;span class="c1"&gt;// URL with no parameters&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: { }&lt;/span&gt;

&lt;span class="c1"&gt;// URL with encoded characters&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;getParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com?search=hello%20world&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: { search: "hello world" }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for reading filters, UTM tags, or search queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Insert Element at a Specific Position
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;insertAt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)];&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insertAt&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [1, 99, 2, 3]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insertAt&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: ['x', 'a', 'b', 'c']&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insertAt&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [true, false, true]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;insertAt&lt;/span&gt;&lt;span class="p"&gt;([],&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;start&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: ['start']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will insert val into arr at index i and useful for reordering lists, inserting dynamic content.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Merge Two Arrays
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;merge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;            &lt;span class="c1"&gt;// Output: [1, 2, 3, 4]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;                &lt;span class="c1"&gt;// Output: [1, 2]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[]));&lt;/span&gt;                &lt;span class="c1"&gt;// Output: [1, 2]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([],&lt;/span&gt; &lt;span class="p"&gt;[]));&lt;/span&gt;                    &lt;span class="c1"&gt;// Output: []&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;         &lt;span class="c1"&gt;// Output: ['a', 'b', 'c']&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt;    &lt;span class="c1"&gt;// Output: [true, false, false]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for merging fetched results or local + remote data.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Generate a Random Hex Color
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;randomColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;16777215&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomColor&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// Output: #b35d91&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomColor&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// Output: #94a444&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;randomColor&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// Output: #16b3ce&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for creating random backgrounds, themes, and colorful elements.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Remove Duplicates from an Array
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;unique&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)];&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [1, 2, 3, 4]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: ['a', 'b', 'c']&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [true, false]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [1, '1'] (different types)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;([]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: []&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for tags, filters, and user input cleanup.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. Reverse a String
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;reverse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;reverse&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;reverse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: olleh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for fun puzzles, palindrome checks, and string transforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  15. Sleep / Delay Execution
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sleep&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will wait for a given number of milliseconds and is useful for simulating loading, pausing between async steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  16. Shuffle an Array
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;shuffle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;shuffle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [ 1, 4, 2, 5, 3 ]&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;shuffle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [ "a", "b", "c" ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This rearranges array elements randomly and is useful for quiz questions, game cards, and featured content.&lt;/p&gt;

&lt;h2&gt;
  
  
  17. Swap Two Variables
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 10&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful for cleaner logic during sorting or toggling.&lt;/p&gt;

&lt;h2&gt;
  
  
  18. Flatten an Array
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;flat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;Infinity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Example:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;flat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]]]]));&lt;/span&gt; &lt;span class="c1"&gt;// Output: [ 1, 2, 3, 4 ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This flattens deeply nested arrays into one and is useful for simplifying data from APIs or recursive logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  19. Check for Palindrome
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isPalindrome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;reverse&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Examples:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isPalindrome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;madam&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isPalindrome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;racecar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: true&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;isPalindrome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; &lt;span class="c1"&gt;// Output: false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns true if the string reads the same forward and backward, and is useful for interview questions, games, and input validation.&lt;/p&gt;




&lt;p&gt;That’s all for today!&lt;/p&gt;

&lt;p&gt;For paid collaboration, connect with me at: &lt;a href="mailto:connect@shefali.dev"&gt;connect@shefali.dev&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If you enjoy my work and want to support what I do:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;👉 &lt;a href="https://patreon.com/Shefali07" rel="noopener noreferrer"&gt;Become a Patreon supporter&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;👉 Or &lt;a href="https://buymeacoffee.com/devshefali" rel="noopener noreferrer"&gt;buy me a coffee&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Every small gesture keeps me going! 💛&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
