!important
is used to forcefully apply a CSS rule, even if other rules have higher specificity or appear later in the code.
Syntax:
selector {
property: value !important;
}
Example:
p {
color: red !important;
}
This will make all <p>
tags red, no matter what other CSS rules are written elsewhere.
Why !important works
Normally, CSS decides which rule to apply using:
- Specificity
- Source Order
- Cascade
But if you add !important
, it jumps to the top priority and overrides everything (except another !important
rule with higher specificity).
Example:
<p class="special" id="unique">This is a paragraph.</p>
p {
color: blue;
}
.special {
color: green;
}
#unique {
color: orange;
}
p {
color: red !important;
}
Even though #unique
is more specific, the red color with !important
will win.
When to Use !important
You can use !important
when:
- You want to override 3rd-party CSS (like Bootstrap or external stylesheets).
- Quick fixes for critical styles in a project.
- Utility classes where you want to guarantee a style.
Example (utility):
.text-white {
color: white !important;
}
When to Avoid !important
Avoid using !important
casually because:
- It breaks the normal flow of CSS (specificity, cascade).
- Makes your CSS hard to maintain and debug.
- Can lead to "important wars" (where you keep adding more
!important
to fix conflicts).
Better alternatives
- Increase selector specificity.
- Use better CSS architecture (BEM, utility-first).
- Avoid deeply nested selectors.
- Refactor CSS instead of forcing overrides.
Common Mistake
Bad Practice Example:
body {
background: black !important;
}
This can cause unexpected styling issues, such as overriding themes, color modes, or other critical styles.
Use !important
only when absolutely necessary.
If you’re using it often, it’s a sign to rethink your CSS structure.
In short, use !important
sparingly and only when necessary to keep your CSS manageable.