← Back to Blog

The User-Agent string is dying and your site probably isn't ready

The User-Agent string is dying and your site probably isn't ready

Chrome has been gradually freezing the User-Agent string since Chrome 107. The detailed version and platform information that sites have relied on for decades is being replaced with a reduced, generic string. In its place, Chrome offers User-Agent Client Hints, a structured API that provides the same information but requires the server to explicitly request it.

If your site does any kind of device detection, browser targeting, or analytics based on User-Agent parsing, this change will eventually affect you. And most sites haven't done anything to prepare for it.

What's actually changing

The traditional User-Agent string contained everything: browser name, version, operating system, device model, sometimes even the chip architecture. Servers used this for responsive design decisions, analytics segmentation, and feature detection.

The reduced User-Agent string Chrome is rolling out removes most of this detail. You'll get a generic browser identifier, a major version number, and a simplified platform indicator. The specific OS version, device model, and minor browser version will be gone.

This is a privacy improvement. The old User-Agent string was a fingerprinting goldmine, unique enough to identify individual users across sites without cookies. But it also breaks a lot of legitimate server-side logic.

Client Hints: the replacement

User-Agent Client Hints work differently. Instead of sending everything automatically, the server tells the browser what information it needs via the Accept-CH response header. The browser then sends only those specific hints in subsequent requests.

The hints include Sec-CH-UA (browser brand and version), Sec-CH-UA-Mobile (mobile flag), Sec-CH-UA-Platform (operating system), Sec-CH-UA-Platform-Version, Sec-CH-UA-Model (device model), and several others.

For first-page-load detection (before the browser has seen your Accept-CH header), there's Critical-CH. This header tells the browser to retry the request with the specified hints if they weren't included initially. It adds a round trip but ensures you get the data you need on the very first request.

What the tool checks

The Client Hints Audit examines your site's response headers for Client Hints readiness:

  • Whether Accept-CH is present and which hints it requests
  • Whether Critical-CH is set for hints needed on first load
  • Whether the Permissions-Policy header allows Client Hints delegation to third-party iframes
  • Whether your server still relies solely on User-Agent parsing (indicated by the absence of Client Hints headers combined with UA-specific behavior)

The tool also checks whether your hints request is proportional. Requesting every available hint is the same fingerprinting problem the User-Agent reduction was designed to solve. Best practice is to request only the hints you actually use.

What to do about it

If your server does any UA-based logic, here's the migration path:

Audit your UA usage. Search your server code for User-Agent parsing. Common patterns: device-specific redirects, analytics UA segmentation, bot detection, content negotiation. List every place you read the UA string and what information you extract from it.

Map each use to a Client Hint. Device model? That's Sec-CH-UA-Model. OS version? That's Sec-CH-UA-Platform-Version. Mobile detection? That's Sec-CH-UA-Mobile. Most server-side UA parsing maps cleanly to one or two hints.

Set Accept-CH. Add the header to your server responses listing only the hints you need. Don't request everything.

Add Critical-CH for first-load needs. If you need device information to serve the right page layout on the very first request (before the browser has seen your Accept-CH), add those hints to Critical-CH.

Update your analytics. If your analytics platform parses UA strings on the server side, check whether it supports Client Hints. Most modern analytics platforms have already migrated.

If you're building a new site and want to get the server configuration right from the start, the infrastructure setup in The $97 Launch covers this alongside other response header requirements.

Fact-check notes and sources

Related reading

This post is informational, not consulting or legal advice. Mentions of Chrome, Google, and IETF are nominative fair use. No affiliation is implied.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026