Web Almanac 2025: better CSS, worse accessibility

The HTTP Archive has published its latest report, and reading through my Web Almanac 2025 Analysis notes, we are still fighting the same ghosts. The survey covers 17.2 million websites, and the split is hard to miss: adoption of new CSS properties is going well, while accessibility and performance are going the other way. Worth knowing before you ship your next project.

CSS is modernizing: balance and variable fonts

Features like text-wrap: balance and pretty are reaching the mainstream, slowly. They stop typographic widows and orphans without the JavaScript hacks we used to write for the same effect. Variable fonts have crossed a bigger threshold: about 4 in 10 sites now load at least one, instead of pulling a separate static file for every weight.

Legacy font-loading code is probably costing you more than you think. CSS handles most of this natively now. Turning on text-wrap takes one line and makes long-form content noticeably easier to read.

/* Refactoring legacy headings for better typography */
h1, h2, h3 {
    text-wrap: balance;
    font-variation-settings: 'wght' 700;
}

What the Web Almanac 2025 analysis says about focus styles

The number in this Web Almanac 2025 Analysis that annoys me most is on the accessibility side. Two thirds of sites, 67%, remove focus outlines. That breaks WCAG 2.4.7 outright. Designers dislike the blue ring, so it gets an outline: none and every keyboard user is locked out of the interface.

The :focus-visible pseudo-class solves the same complaint properly. The indicator appears when someone is navigating by keyboard and stays out of the way for mouse users. Core has been chipping at these habits too, which I covered in real accessibility improvements in WordPress.

/* The correct way to handle focus styles */
button:focus {
    outline: none; /* Only if followed by focus-visible */
}

button:focus-visible {
    outline: 2px solid #007cba;
    outline-offset: 2px;
}

Performance went backwards: the 2.3MB median

The lost decade of web performance is real. In 2015 the median mobile home page was 845 KB. It is now 2,362 KB, a 202.8% increase. JavaScript accounts for close to 700 KB of that on its own. Time to Interactive gets worse, and anyone on a cheap phone feels it first.

Auditing your asset loading is not an optional nicety anymore. Go through your dependencies and see what a modern CSS feature can do in place of a heavy JS library. The report also finds 44% of images marked as decorative through an empty alt attribute, which is usually an oversight rather than a decision. That one costs you on accessibility and on search.

If reading reports like this one is eating your dev hours, that is the kind of work I take on. I have been building on WordPress since the 4.x days.

Where to spend your refactoring time

WordPress is shifting toward stabilization, which helps anyone who has to maintain a site for years. Skip the next framework and put the time into semantic HTML and asset delivery instead. The HTTP Archive data says the basics are still where the wins are. Ship clean markup, hold your page weight under 1MB, and leave the focus outlines alone.

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.