Published
3 min read

Trevor I. Lasn

Builder, founder, based in Tartu, Estonia. Been coding for over a decade, led engineering teams, writing since 2015.

scrollbar-width & scrollbar-gutter: CSS Properties for Layout Control

Prevent content shifts and refine scrollable UIs with scrollbar-width and scrollbar-gutter

The scrollbar-width CSS property tackles a common challenge in web design - balancing the need for scrollable content with visual aesthetics. This property lets us control how thick scrollbars appear, making them more subtle without sacrificing functionality.

The scrollbar-width property accepts three values:


Scroll each container to see how different scrollbar-width values affect the interface. Notice how 'thin' provides a balanced compromise between aesthetics and usability.

scrollbar-width: auto

scrollbar-width: thin

scrollbar-width: none

⚠️ While 'none' might seem appealing, it can impact accessibility. I recommend using 'thin' for a better user experience.

The space where a scrollbar lives is called the scrollbar gutter - it sits between the inner border edge and outer padding edge of an element. browsers handle this space in two different ways:

  • Classic scrollbars: Take up actual space in your layout
  • Overlay scrollbars: Float on top of your content (common on macOS)

The scrollbar-gutter property lets us control how browsers handle this space. It accepts three values:


When should you use scrollbar-width or scrollbar-gutter?

They’re most useful in components where content length changes often - exactly where you don’t want things jumping around or shifting.

scrollbar-width works great for

  • Keeping chat message lists readable with a thin scrollbar
  • Sidebars like in VS Code where you want subtle scrolling
  • Data grids with lots of rows but limited vertical space
  • Making a Spotify-style horizontal media scroller look polished

scrollbar-gutter really shines when

  • Building a messenger app where new messages keep coming in
  • Creating modals with dynamic content that might need scrolling
  • Making data tables where rows get added or removed often
  • Handling sidebar navigation that expands and collapses

The key is using them together in places where content is dynamic and you want smooth scrolling without layout surprises. Nothing’s worse than clicking something just as the page shifts because a scrollbar popped in.

Word of caution: These properties are powerful, but that doesn’t mean every scrollbar needs customizing. Users have muscle memory for how scrollbars work. Only tweak scrollbars when it genuinely improves the user experience - like preventing those annoying layout jumps or cleaning up a cluttered interface.


Found this article helpful? You might enjoy my free newsletter. I share dev tips and insights to help you grow your coding skills and advance your tech career.


Check out these related articles that might be useful for you. They cover similar topics and provide additional insights.

Webdev
12 min read

Frontend Security Checklist

Tips for Keeping All Frontend Applications Secure

Jul 30, 2024
Read article
Webdev
4 min read

Remove Unnecessary NPM Packages with eslint-plugin-depend

We don't need packages to handle basic JavaScript tasks

Aug 13, 2024
Read article
Webdev
4 min read

How To Implement Content Security Policy (CSP) Headers For Astro

Content Security Policy (CSP) acts like a shield against XSS attacks. These attacks are sneaky - they trick your browser into running malicious code by hiding it in content that seems trustworthy. CSP's job is to spot these tricks and shut them down, while also alerting you to any attempts it detects.

Oct 16, 2024
Read article
Webdev
4 min read

CSS :interest-invoker and :interest-target Pseudo-Classes

Style connected UI elements with CSS pseudo-classes that respond to user interest. Interactive examples showing tooltips, forms, and navigation without JavaScript.

Nov 12, 2025
Read article
Webdev
3 min read

CSS Supports Nesting Now

CSS nesting is finally supported in all major browsers. Write cleaner, organized stylesheets without Sass or Less

Dec 6, 2024
Read article
Webdev
5 min read

SecretLint — A Linter for Preventing Committing Credentials

A guide to catching and preventing credential leaks in your code using Secretlint

Oct 22, 2024
Read article
Webdev
3 min read

align-content: The Simplest Way to Center Content with CSS

Finally, we can center things in block layouts without flexbox gymnastics

Dec 13, 2024
Read article
Webdev
4 min read

Self-Taught Developer's Guide to Thriving in Tech

How to turn your non-traditional background into your biggest asset

Sep 28, 2024
Read article
Webdev
3 min read

CSS content-visibility: The Web Performance Boost You Might Be Missing

The content-visibility CSS property delays rendering an element, including layout and painting, until it is needed

Dec 5, 2024
Read article

This article was originally published on https://www.trevorlasn.com/blog/css-scrollbar-width-and-scrollbar-gutter. It was written by a human and polished using grammar tools for clarity.