CSS Reset Clarified: How to Start Styling Without Surprises

When you start writing CSS for a new project, your styles don’t always behave the way you expect. For example, lists may come with indents, and buttons can look different across browsers. That’s because browsers apply their own default styles. And every browser’s defaults vary.

This is where a CSS reset comes in.

So, what is a CSS reset?

A CSS reset is a set of rules that “wipes out” or normalizes those browser defaults. It makes everything equal so that your website looks the same, no matter which browser people use.

Think of it like cleaning the whiteboard before you start sketching.

Common reset examples

There are many styles that developers commonly reset or normalize:

This snippet removes default margin and padding from everything, and also switches box-sizing to border-box, making layouts easier to control.
(click on the image to open in a new tab)

You might also see resets that target HTML elements more specifically:

This basic CSS reset removes list bullets and normalizes body text for improved readability.
(click on the image to open in a new tab)

Note: Use a reset like this with care, as removing list-style can impact accessibility if lists convey important structure.

Some developers use full reset libraries like Normalize.css. These go further by removing borders, fixing font inheritance, and ironing out inconsistencies between browsers like Chrome, Firefox, and Safari.

Why Resets Can Hurt Accessibility

Browsers apply default styles not just for aesthetics. They also help with readability, navigation, anduser experience in general. A reset that wipes out too much can unintentionally remove:

  • Focus outlines — Essential for keyboard users to know where they are
  • List styles — Helpful for screen readers to understand structured content
  • Form element spacing — Affects touch targets and readability
  • Line height and font sizes — Can harm readability, especially for low-vision users

Common Reset Mistakes That Hurt Accessibility

Here are a few real-world examples:

Removes the visible focus ring:

This makes it impossible for keyboard users to see what’s focused.
(click on the image to open in a new tab)

Unstyle lists:

This can confuse screen reader users and harm semantic clarity.
(click on the image to open in a new tab)

Removes all native styles and behaviors:

This gives you a clean look—but you also lose built-in accessibility features like cursor indicators, default sizing, and focus states.
(click on the image to open in a new tab)

How to Reset Without Breaking Accessibility

You don’t need to get rid of resets, but use them carefully.

  • Keep focus outlines or replace them with clear, visible alternatives:
This preserves keyboard accessibility by replacing the default outline with a clear, visible indicator—ensuring users can see which element is focused without sacrificing usability.
(click on the image to open in a new tab)
  • Reset list styles only when appropriate, like in navigation menus, but not in content blocks.
  • Avoid using all: unset unless you’re prepared to rebuild the accessibility features manually.
  • Test with a keyboard (Tab through the page) and screen reader tools to ensure your reset doesn’t hide key interactions.

Wrapping Up

Without a reset, your layout might look one way in Chrome and completely different in Firefox. That’s not a bug—it’s the browser implementing its own default styles. A reset lets you take control, starting from a blank canvas.

Although my blog doesn’t support comments, feel free to reply via email or X.