Home About Services Work Blog Contact

I've used both extensively. Here's my take on when Tailwind makes sense, when vanilla CSS is the better choice, and why the debate itself sometimes misses the point of what good styling architecture really means.

Where Tailwind Shines

Tailwind excels at rapid prototyping. When you need to iterate quickly on UI components, utility classes let you style without context-switching between files. The constraint of a design system (spacing scale, color palette, type sizes) prevents arbitrary values from creeping in. For teams with multiple developers, Tailwind creates consistency by default.

Where Vanilla CSS Wins

Vanilla CSS gives you full control. No abstractions, no class naming conventions, no purge step. CSS custom properties (variables) provide theming capabilities that rival any framework. Modern CSS features, Grid, container queries, :has(), nesting, reduce the need for utility classes. For smaller projects, vanilla CSS is simpler to reason about.

The Real Question

The debate often frames it as either/or. The better question is: what does this project need? A design system with reusable components benefits from Tailwind's constraints. A content-focused site with unique layouts benefits from vanilla CSS's flexibility. Good styling architecture is about choosing the right tool for the job, not picking a side.

Want to Discuss a Project?

Whether you read something here that resonated or you have a project in mind, I'd love to hear from you.

Get in Touch