Tailwind CSS vs Plain CSS

Which should you use for your next project? A practical comparison with code examples.

Comparison Table

Tailwind CSSPlain CSS
Writing speedFast — classes applied inlineSlower — context switches to .css file
Bundle size (prod)5–15 KB (unused classes purged)Grows as project scales
Naming thingsNot needed — no class names to inventRequired — naming is hard
Design consistencyBuilt-in scale (spacing, colors)Manual — must enforce system yourself
Responsive designEasy with sm: md: lg: prefixesRequires @media queries
Custom designArbitrary values: w-[317px]Full control always
Learning curveMedium — must learn utility classesLow — already CSS
Framework fitExcellent with React, Next.js, VueWorks everywhere
CSS specificity issuesRare — utilities have equal specificityCommon in large codebases
Theming / dark modeBuilt-in dark: modifierCustom properties + media queries
AnimationAnimate utilities, extend in configFull @keyframes control

Same Button — Two Approaches

Tailwind CSS

<button class="
  px-4 py-2
  bg-blue-600 text-white
  font-semibold rounded-lg
  hover:bg-blue-700
  focus:outline-none focus:ring-2
  focus:ring-blue-500
  transition-colors
">
  Submit
</button>

Plain CSS

/* button.css */
.btn-primary {
  padding: 0.5rem 1rem;
  background-color: #2563eb;
  color: #fff;
  font-weight: 600;
  border-radius: 0.5rem;
  border: none;
  cursor: pointer;
  transition: background-color 0.15s;
}
.btn-primary:hover {
  background-color: #1d4ed8;
}
.btn-primary:focus {
  outline: none;
  box-shadow: 0 0 0 2px #3b82f6;
}

Use Tailwind when:

  • ✓ Building with React, Next.js, Vue, or Astro
  • ✓ You want consistent spacing and colors across a team
  • ✓ Rapid UI iteration is a priority
  • ✓ You want responsive design without media queries
  • ✓ You prefer co-locating styles with markup

Use Plain CSS when:

  • ✓ No build step available (static HTML pages)
  • ✓ You need complex animations or art-directed CSS
  • ✓ The project already has a well-maintained CSS codebase
  • ✓ You prefer separation of concerns between HTML and styles
  • ✓ CSS Modules or CSS-in-JS fit your architecture better

Need to convert existing CSS to Tailwind classes?

Use the CSS to Tailwind Converter →