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.