Why Your User Agent Change Isn’t Showing Up
User agent not working the way you expect almost always comes down to one of four causes: the override never applied, Client Hints still report the real platform, an extension broke after an update, or the site is reacting to your session and IP rather than to the header at all. Work through them in that order — header, hints, extension, session — because each one needs a different fix.
📌 TL;DR Executive Summary
- Core Takeaway: A user agent override rewrites a request header, and sometimes the JavaScript value. It does not change how the browser engine works or what it reports about canvas, WebGL, fonts and hardware.
- Key Risk/Challenge: Client Hints, stale cookies and stored session state keep carrying the original identity even when the UA header looks correct.
- Recommended Solution: Check the header and the JavaScript value separately, align Client Hints, clear the domain’s cookies, disable conflicting extensions — then keep each account in its own isolated browser profile so the identity stays consistent between visits.
What a User Agent Actually Does — and What an Override Doesn’t Change
The user agent string is a request header your browser attaches to every page, stylesheet, script and API call. Its main job is content negotiation: the server reads the OS and browser it believes you are running and picks the variant to send back — mobile HTML instead of desktop HTML, an app banner instead of the full article, an older bundle for an older engine.
That is the whole scope. Chrome’s documentation is blunt about it: an override in DevTools changes the string in the request, not how Chrome functions internally. Only the content the server returns changes; your layout engine, CSS support and JavaScript features stay exactly as they were. So an iPhone string on a Windows desktop produces mobile HTML rendered by a desktop engine, and the page still reports a desktop WebGL renderer, a Windows font stack and a 1920×1080 screen. Any script comparing those values sees the mismatch, even when the header itself is flawless.
Check Your Real User Agent Before You Blame the Site
You cannot fix an override until you know which of two values is wrong, because they can disagree with each other.
Read the value JavaScript sees
Open DevTools, switch to the Console and run navigator.userAgent. Chrome sometimes blocks pasted input on a first visit: type allow pasting, press Enter, then run the command. This is the string the page’s own scripts read when they decide what to render.
Read the value the server sees
Open the Network panel, reload, click the document request and expand Request Headers. Find User-Agent, then look for Sec-CH-UA and Sec-CH-UA-Platform on that same request. Those lines are what actually arrived at the server, and they are the only ones that matter for server-side branching.
A browser check page does the same comparison on one screen and adds context — fingerprint, IP, VPN and DNS-leak results — so you don’t open five panels to answer one question.
navigator.userAgent shows your custom string but the request header shows the factory default, the header was never rewritten — a header-level problem. If the header is custom but the JS value is default, an injected script ran too late or not at all — a client-side problem. The two need different fixes, and guessing costs more time than checking.
Six Reasons Your Override Isn’t Working
1. The override was never applied
DevTools applies a user agent override only after you clear the Use browser default checkbox in the User agent section and refresh the page. Skip either step and the panel looks configured while every request still carries the original string. Confirm the checkbox is off, reload with the panel open, and re-read the header. If the string reverts after a reload or a new window, re-apply it: treat that panel as a per-session testing tool, not a saved preference.
2. Client Hints still tell the truth
Chromium splits identity across two channels. The UA string is the old one; Client Hints are the new one. Low-entropy hints — Sec-CH-UA, Sec-CH-UA-Platform, Sec-CH-UA-Mobile — go out by default with every request. High-entropy hints such as architecture and the full version list sit behind browser permission or a Permissions Policy: the server requests them with Accept-CH and the browser keeps sending them until it closes. The Client Hints guide on MDN documents that split.
Change only the UA string and the hints keep advertising the real platform. A page calling navigator.userAgentData.getHighEntropyValues() gets low-entropy data only when the ch-ua-high-entropy-values permission hasn’t been granted, which is still enough to surface your real platform and architecture. Any script reading both channels sees a Windows string sitting next to a macOS platform hint. DevTools can fix it for a test: edit the Client Hints attached to your chosen string, add or delete brands, then click Update — a manual step most people never take. The longer explanation of how Client Hints are read and combined covers the rest.
3. Extension switchers break on updates and new Chromium builds
A switcher has two jobs: rewrite the request header and patch the JavaScript value, both before the page’s own scripts run. When Chromium changes an API the extension relies on, one half can stop silently. UserAgent-Switcher 0.6.2 is the documented case — reported in 2024 on Chromium 101, it showed the real browser agent on every site while 0.6.1.1 still worked. If yours broke after an update, roll back one version and test on a clean profile with every other extension disabled.
4. The user agent now disagrees with everything else
Canvas output, WebGL renderer string, audio processing, installed fonts, hardware concurrency, timezone, language and exit IP are all read alongside the user agent. A mobile string on a desktop machine, from a datacenter IP, with a desktop font stack and a 1920×1080 viewport is a four-way mismatch. Bot-management scripts weigh the combination, not the string alone, so a perfectly set user agent can make a session look stranger than no override at all.
5. The site is checking your session, not your user agent
Reddit is the clearest case. It added user-agent filtering in a June 2025 rollout and layered session checks, fingerprinting and mobile restrictions on top. Broken sessions and cookies are named as the most common cause of blank pages, login loops and feeds that never load — and no string change repairs a cookie jar the site has already decided to distrust.
6. A blocker or a second extension is breaking the page
Ad blockers, script blockers and extensions that rewrite canvas or WebGL values block elements and scripts the page needs to render. The result is a blank or half-drawn page that reads exactly like a rejected user agent. Disable everything except the switcher, reload, and see whether content appears.
Three Ways to Set a User Agent, Compared
Each method works at a different level, which is why fixing one doesn’t fix the others.
| Method | What actually changes | What it misses | Best for |
|---|---|---|---|
| DevTools Network conditions | The UA header for the inspected tab, plus editable Client Hints for the selected string; needs Use browser default unchecked and a refresh | The browser engine, canvas/WebGL/fonts, and every other tab or window | One-off checks while debugging a single page |
| UA switcher extension | The header on matching sites, and usually navigator.userAgent through an injected script |
Client Hints often go out untouched; the patch can break on updates; injection timing can miss early scripts | Fast desktop-versus-mobile spot checks during a session |
| Isolated browser profile | A whole profile identity: its own cookies, storage, sessions, proxy and a consistent per-profile fingerprint handled inside the browser engine | Nothing about the account itself — a restriction or verification request still goes through the platform | Managing several accounts you own or are authorised to manage |
Match the method to the job. A one-page check needs DevTools. Repeat work across several client accounts needs the third row, because consistency between visits is what keeps an identity readable — the principles in user agent override best practices apply to all three.
Fixes Ordered by Effort: Quick Wins First
Work down this list in order. Most user agent not working reports clear at step one or two, and the later steps exist for the cases where they don’t.
- Re-apply and refresh. Clear Use browser default, reload with the panel open, re-read the header. This alone clears a large share of “it isn’t working” cases in under a minute.
- Compare header and JavaScript value on one page. Two values, one conclusion: header problem or client-side problem. Don’t move on until you know which.
- Disable every other extension except the switcher, then reload. If the page renders, re-enable them one at a time and note which one breaks it.
- Update or roll back the switcher, and check its issue tracker for your Chromium version before assuming the site changed.
- Align Client Hints in DevTools. Edit brands, delete stale entries, click Update, reload — so the platform hint matches the platform in your string.
- Clear cookies and site data for the domain, then restart the browser. This is listed as the highest-success-rate fix for loading failures on sites with aggressive session checks. Sign back in normally afterwards.
- Repeat the test in a fresh profile with no history. Works there? The problem was cookie or session state. Fails there too? The site is reacting to your IP, account or fingerprint, and no string change will help.
- Move each account into its own isolated profile — the permanent version of step 7, covered below.
When the Site Is the Problem: Sessions, Cookies and Login Loops
Some symptoms never had anything to do with the user agent. When a user agent not working report lands on a site like Reddit, the header usually checks out and the session doesn’t. Reddit has tightened mobile web access since tests in May 2026, adding “Open in app” overlays, earlier login walls and shorter sessions. If a signed-out visit loads and a signed-in visit loops, the variable is your session, not your header: sign out, clear site data for the domain, restart, sign back in once.
Commerce and ticketing sites usually run bot management that fingerprints the whole request. The breakdown of how DataDome fingerprints a request shows which surfaces get matched together — canvas, WebGL, fonts, timing, TLS — and why changing a single header rarely moves the outcome.
There is also a hard boundary. Reddit now labels legitimate automated accounts with an [App] tag and can require human verification for accounts whose behaviour suggests they aren’t human; failing that check can restrict the account, and the company says it removes roughly 100,000 accounts a day for spam. If you hit a verification step, complete it through Reddit’s own flow. If an account is restricted, use the platform’s appeal process.
Stop It Recurring: One Browser Identity Per Account
Almost every repeat case has the same root cause: one browser, one cookie jar, several accounts. Sign into two client accounts in the same window and the second login overwrites session state the first one depends on, which is why a user agent not working fix appears to hold for a day and then stops.
An isolated browser profile removes the shared jar. Each profile carries its own cookies, storage and sessions, its own proxy, and its own fingerprint settings — canvas, WebGL, audio, fonts, hardware — handled inside the browser engine, so the profile keeps one consistent identity visit after visit instead of a fresh random one at each launch. That consistency is what the checks actually measure. If you have tried Firefox’s container tabs for the same job and hit their limits, the walkthrough on Firefox containers for multi-account work covers where they stop.
Send.win runs profiles two ways. The Sendwin Browser is a Chromium-based desktop app for Windows 10/11, macOS 12+ and Linux, installed locally. The cloud browser runs profiles on Send.win’s server in Helsinki, Finland, from any device, with nothing to install. On both, timezone, locale, WebRTC and geolocation follow the proxy’s exit IP automatically, which removes the mobile-string-on-a-desktop-IP mismatch described earlier. Residential proxies are included on Pro and Team, and you can bring your own HTTP or SOCKS5 proxy instead.
Sharing a profile with a paid teammate opens it already signed in, without a password changing hands, and cloud sync carries logins between devices. Know the limit before you buy: this is a hands-on tool built for a person opening a profile and working in it, so plan the workflow around someone driving each account rather than an unattended background process.
🏆 Send.win Verdict
Most “user agent not working” tickets end the same way: the string was never the thing being checked. Send.win doesn’t sell a UA switcher — it sells separation. One profile per client account means one cookie jar, one session, one proxy and one consistent fingerprint, so the identity you work in holds from visit to visit instead of decaying into one mixed-up browser. It won’t fix a page that has already restricted your account, and it’s built for hands-on work rather than unattended runs, but it removes the recurring cause behind most of these symptoms.
See Send.win plans — Pro from $19/mo (or $83.88/yr) with 150 profiles, residential proxies and 5 GB of bandwidth; Team at $49/mo with 500 profiles, 20 GB and 16 seats. Or try the free cloud demo first: 10 minutes a day, no card.
Frequently Asked Questions
Why is my user agent switcher not working?
Usually one of three things: the override was set but the page was never refreshed with Use browser default unchecked, the extension only rewrites the request header while Client Hints keep reporting the real platform, or the site is checking your session and IP instead of your user agent. Verify the header and the JavaScript value separately before anything else.
Does changing the user agent in DevTools persist?
It lives in the Network conditions panel and applies to the tab you are inspecting, once you clear Use browser default and reload. Treat it as a testing tool rather than a saved setting: after a reload or a new window, confirm the panel still shows your custom string before concluding the site ignored it.
Why does a site still show my real user agent?
Because it probably isn’t reading the UA string. Low-entropy Client Hints such as Sec-CH-UA-Platform are sent by default on every request, and getHighEntropyValues() can still return your real platform when the high-entropy permission hasn’t been granted. A page can also reuse a value from an earlier request or a stored account profile.
How do I check my actual user agent?
Run navigator.userAgent in the DevTools Console for the JavaScript value, then open the Network panel and read the User-Agent request header for the value the server received. A check page that also displays Client Hints and your IP gives you both on one screen.
Why is Reddit not working in my browser?
Most often it’s broken session or cookie state rather than a user agent problem — the documented top cause of blank pages and login loops there. Clearing cookies and site data for the domain and restarting the browser is the highest-success-rate fix. Reddit has also tightened mobile web access since 2026 with app overlays and earlier login walls, which no header change affects.
Does a user agent override change browser features?
No. Chrome’s documentation states that an override changes the string in the request, not how the browser functions internally — only the content the server returns changes. Your rendering engine, CSS support and JavaScript features stay the same, which is exactly why a mobile string on a desktop still looks like a desktop to a fingerprinting script.
Why do user agent extensions break after an update?
They rewrite a header and patch a JavaScript value, and both depend on browser APIs that change between Chromium releases. When one half stops working, the extension’s own popup still shows your chosen string while the site sees the original. The reported UserAgent-Switcher 0.6.2 case on Chromium 101 is a textbook example.
Why does getHighEntropyValues still show my real platform?
High-entropy values are gated by the ch-ua-high-entropy-values permission or a Permissions Policy. Without that grant the call returns low-entropy data only — brands, mobile flag, platform — so your real platform can still appear after the UA string was rewritten. Aligning the hints is a separate step from changing the string.
How Send.win Helps With User Agent Not Working
Send.win is a browser profile manager for professionals and teams: every account gets its own isolated browser profile.
- Isolated profiles – separate cookies, storage and sessions per profile
- Fingerprint protection – each profile keeps its own consistent browser fingerprint, so profiles never share one browser identity
- Desktop app + cloud browser – native app for Windows, macOS and Linux, or run profiles in the cloud with no install
- Residential proxies included – on Pro and Team, with timezone and locale matched to the proxy
- Team sharing – share a signed-in profile with a teammate without sharing the password
Try the free cloud demo — no install — or download the desktop app. Paid plans start at $19/month, and your first card purchase is covered by a 7-day money-back guarantee (see pricing).