June 2025 release notes
‘Only’ 20 releases on the website this month but also lots of releases outside in our open source projects. Strap yourself in for a big list!
New features
Analyze spacing resets.
Sparked by Ana Rodrigues’ talk on CSS Day which showed that she used Project Wallace (yay!) and CSSStats for auditing purposes. Turns out CSSStats does CSS resets analysis which we didn’t offer before. Now we do (since @projectwallace/css-analyzer@7.2.0) with some improvements over CSSStats’ implementation:
- Also check for logical properties (
margin-inline
,padding-block-start
, etc.) - Account for zero values that have a unit (
0px
,0.0vh
, etc.) - Account for shorthand values that are all zero (
0 0 0 0
,0px 0 0em 0.0px
)

Analyze nesting depth
Initially sparked by the Web Almanac CSS chapter, this has been on my wish list for years and I finally got to it. It wasn’t even that hard to be honest so I’m a little disappointed in myself for not implementing this sooner. @projectwallace/css-analyzer@7.4.0 has all the details and the website now shows how deep you’re willing to go with your CSS.

Atrule composition
For a quick overview of what your atrule game looks like you can look at the new atrules composition chart. It shows an overview of which atrule was used how often. Neat way to get a quick view of the landscape before you dive deeper.

@property
and @layer
atrules.New CSS design tokens library
Our design tokens page has had a panel for design tokens for a long time but now the output is more compliant with the Design Tokens specification. The code to create these tokens moved to a new package @projectwallace/css-design-tokens and it also powers the design tokens page it was extracted from.
CSS Selector complexity calculator page
Because I sometimes wish I had it. Nothing more. The CSS analyzer page shows a graph and table of selector complexity. Because of that it makes sense to offer a standalone tool to test individual selectors quickly.

Updated features
- When Adam Argyle comes on stage at CSS Day you know you’re up for some great takeaways. This year Adam did a talk on scrollers and my first goal was to fix the ugly scrollbars that appear absolutely everywhere! I highly recommend you watch the talk when it appears on CSS Day’s YouTube channel. Until then you can check out the slides on Adam’s website.
- Implemented additional error boundaries and error logging. Sentry kindly offers an Open-Source Sponsorship Plan which allows me to do more fine grained error logging than I could in the free plan. Thanks Sentry for sponsoring!
- We do a ton of syntax highlight across this website but the highlighting in docs and blog posts looked different from everything else. Well, no more!
- The Prettify CSS page now also allows indenting with spaces. But tabs are still default.
Bug fixes
- A while ago (February 2025) we implemented persisted state when navigating from one tool to another: you no longer need to re-enter your URL and hit that button. The page would remember it for you. Great! Unless you were going to the CSS Scraper page. It would forget. What an odd one. Well, that’s fixed now. Going to get-css keeps the CSS you’ve scraped before.
- Syntax highlighting the CSS input field on the AST Explorer page would often fail miserably. Now it fails less often and a little less miserable.
- When searching for a custom property that contained an uppercase character you’d always be disappointed. Not just by how life treats you but also because Wallace was shit at comparing characters. I taught him a lesson and it’s such a good boy at finding your properties now.
Dependencies
- Updated @bramus/specificity to 2.4.2 to fix a crash that would sometimes occur when people write CSS like
:nth-child()
or:has()
without any contents inside the parentheses. Happens to the best of us.
Website analytics
- Visitors: 4.2K
- Page Views: 8.3K
- Top pages: analyze-css (25%), get-css (21.7%), css-code-quality (18%), design-tokens (7%)

Every time I think the monthly update is going to take a little while to put together and every time I am amazed at how much work it is to slap together all these links, images and ramblings into a somewhat coherent post.
Popular posts
Making Analyze CSS render 6 times faster
A deep-dive in how the Analyze CSS page renders 6 times faster by applying 2 basic principles.
CSS complexity: it's complicated
There's lots of places in CSS to have complexity, but we tend to focus on selectors most of the time. Let's have a look at other places too.