Skip to content

Tailwind CSS - Min Width

The min-w-* utilities in Tailwind CSS allow you to set the min-width of an element. This is essential for ensuring that your components do not become too narrow, which can break layouts or make content unreadable, especially on small screens.

Tailwind provides a comprehensive set of utilities for minimum width, based on its default spacing scale, as well as keyword-based values.

ClassCSS Properties
min-w-0min-width: 0px;
min-w-pxmin-width: 1px;
min-w-fullmin-width: 100%;
min-w-minmin-width: min-content;
min-w-maxmin-width: max-content;
min-w-fitmin-width: fit-content;
min-w-1 to min-w-96Corresponds to the spacing scale (e.g., min-w-4 is 1rem or 16px)

Use min-w-* to prevent cards or text containers from becoming unreadably narrow on mobile devices.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tailwind Min-Width Example</title>
<!-- Assuming a modern build setup with generated CSS -->
<link href="./output.css" rel="stylesheet">
</head>
<body class="bg-gray-100 p-8 font-sans">
<h1 class="text-3xl font-bold text-center mb-8">Product Cards</h1>
<!-- A flex container to demonstrate wrapping -->
<div class="flex flex-wrap justify-center gap-8">
<!-- Card with a minimum width -->
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4 p-4 bg-white rounded-lg shadow-md min-w-80">
<h2 class="text-xl font-bold">Card with `min-w-80`</h2>
<p class="text-gray-600 mt-2">This card has a responsive width, but it will never get smaller than `20rem` (320px), ensuring the content remains well-formatted even on very narrow viewports.</p>
</div>
<!-- Card without a minimum width for comparison -->
<div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/4 p-4 bg-white rounded-lg shadow-md">
<h2 class="text-xl font-bold">Card without `min-w`</h2>
<p class="text-gray-600 mt-2">This card can shrink to any size, which might cause text to wrap awkwardly on small screens. Resize to see the difference.</p>
</div>
</div>
</body>
</html>

2. Understanding min-w-min, min-w-max, and min-w-fit

Section titled “2. Understanding min-w-min, min-w-max, and min-w-fit”

These keyword-based utilities offer powerful, content-aware sizing:

  • min-w-min: Shrinks the element to the width of its largest unbreakable content (e.g., the longest word).
  • min-w-max: Expands the element to the width it would need if all content were on a single line without wrapping.
  • min-w-fit: Acts like max-content but won’t exceed the available width of its container.
<div class="space-y-6 max-w-lg mx-auto mt-12">
<!-- Example for min-w-max -->
<div class="bg-blue-100 border border-blue-300 p-4 rounded-lg">
<p class="font-semibold mb-2">`min-w-max`</p>
<span class="inline-block bg-blue-500 text-white p-2 rounded min-w-max">
This content will not wrap.
</span>
<p class="text-sm text-gray-600 mt-2">Useful for tooltips or labels that should never break into multiple lines.</p>
</div>
<!-- Example for min-w-min -->
<div class="bg-green-100 border border-green-300 p-4 rounded-lg">
<p class="font-semibold mb-2">`min-w-min`</p>
<div class="inline-block bg-green-500 text-white p-2 rounded min-w-min">
This content has some reallylongwordsinit.
</div>
<p class="text-sm text-gray-600 mt-2">The container's minimum width is determined by the longest word.</p>
</div>
</div>

Like all sizing utilities in Tailwind, min-w-* can be applied conditionally using state variants (like hover:) and responsive breakpoints (like md:).

<!-- Change min-width on hover -->
<div class="min-w-48 hover:min-w-96 transition-all duration-300 bg-purple-500 text-white p-4 rounded-lg">
Hover over me to expand my minimum width.
</div>
<!-- Apply min-width only on medium screens and up -->
<div class="p-4 bg-yellow-300 rounded-lg mt-4 md:min-w-full">
This element is full width on medium screens and larger.
</div>
  • Mobile-First Design: Define base styles for mobile and use min-w-* with responsive prefixes (sm:, md:, etc.) to adjust layouts for larger screens.
  • Flexbox and Grid: min-w-* is particularly useful in flex or grid children to prevent them from being squashed too much by other items.
  • Customization: If you need specific min-width values not available by default, you can easily add them to your tailwind.config.js under theme.extend.minWidth.