Tailwind Editor Tools
Utility classes are short, yet a real project holds thousands of them. Good tools remember class names for you, sort long lists, and settle conflicts between competing classes. A small setup of three or four tools turns Tailwind from a memory test into a smooth daily routine.
The Tool Kit at a Glance
Tool Job
────────────────────────────────────────────────────────
Tailwind CSS IntelliSense autocomplete, hover preview, error hints
Prettier plugin sorts classes in a standard order
clsx adds classes based on conditions
tailwind-merge resolves conflicting classes
Tailwind Play online playground for quick tests
Browser developer tools inspect and test live styles
Tailwind CSS IntelliSense
The official extension for Visual Studio Code reads your project and suggests class names as you type. Type bg- and a menu of every background utility appears, each with a color swatch. Hover over a class to see the exact CSS it produces. The extension warns about two classes that conflict, such as flex and block on the same element.
Typing: class="p-
Menu: p-0 padding: 0px
p-1 padding: 0.25rem
p-2 padding: 0.5rem
p-4 padding: 1rem
Other editors offer the same feature through the Tailwind language server. Search the extension store of your editor for "Tailwind CSS".
Automatic Class Sorting
Long class lists become hard to scan when the order is random. The official Prettier plugin rearranges classes into one fixed order every time you save a file. Everyone on the team sees the same layout, so reviews focus on meaning instead of order.
npm install -D prettier prettier-plugin-tailwindcss
// .prettierrc
{
"plugins": ["prettier-plugin-tailwindcss"],
"tailwindStylesheet": "./src/app.css"
}
Before: text-white p-4 bg-sky-600 rounded flex
After: flex rounded bg-sky-600 p-4 text-white
Version 4 projects point the tailwindStylesheet option at the main CSS file so the plugin knows your theme. Classes that wrap a call, such as clsx("..."), sort when you list the function name under tailwindFunctions.
Conditional Classes With clsx
Components often change classes based on a state, such as a selected tab. String joining by hand gets messy. The tiny clsx helper builds a class string from conditions.
import clsx from "clsx";
const classes = clsx(
"rounded px-4 py-2",
isActive ? "bg-sky-600 text-white" : "bg-gray-100 text-gray-700",
disabled && "opacity-50"
);
The helper ignores false values, so each condition adds its classes only when true.
Resolving Conflicts With tailwind-merge
Reusable components accept a className from the outside. A button with p-2 built in and p-6 passed from the parent holds two padding classes. The winner depends on the order in the stylesheet, not the order in the markup, so the result surprises many developers. The tailwind-merge package removes the losing class and keeps the last one.
import { twMerge } from "tailwind-merge";
twMerge("p-2 text-sm", "p-6")
→ "text-sm p-6" (p-2 removed, p-6 wins)
A Popular Combination
Many projects join the two helpers in one small function named cn. Every component then calls the same function.
import clsx from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs) {
return twMerge(clsx(inputs));
}
<button className={cn("rounded bg-sky-600 px-4 py-2", props.className)}>
Tailwind Play
The online playground at play.tailwindcss.com runs Tailwind in the browser with no installation. Write HTML on one side and see the result on the other. Use it to test an idea, reproduce a bug, or share a snippet with a teammate through a link.
Browser Developer Tools
Right-click any element and choose Inspect. The panel shows every class on the element and the CSS behind each one. Toggle a class off with a click to see its effect. Edit a value live and watch the page respond. Developers use this loop to tune spacing and color before copying the final classes into the code.
Elements panel
┌───────────────────────────────┐
│ <div class="p-4 bg-sky-600"> │
├───────────────────────────────┤
│ .p-4 padding: 1rem [x] │ ← untick to test
│ .bg-sky-600 background... [x] │
└───────────────────────────────┘
Habits That Keep Projects Tidy
- Install IntelliSense on day one, so you learn class names faster.
- Run the Prettier plugin on save, so no one sorts classes by hand.
- Use
cnin every shared component that accepts aclassName. - Keep repeated class groups in components instead of copying them between files.
Tools remove busywork and leave your attention free for design decisions. A few minutes of setup pays back on every file you write.
