A User-Agent string is the value of the User-Agent HTTP header that every browser and HTTP client sends with each request. It identifies the product (browser brand), version, operating system, CPU architecture, and rendering engine. The format is loosely defined by RFC 9110 as a sequence of product tokens with optional comments, but in practice every browser ships its own quirks of legacy compatibility tokens.
Your current browser's UA string is shown at the top of the page, read directly from navigator.userAgent. The page does not transmit it to any server — the read is purely local for display. The other strings are static, hand-curated samples covering the major desktop browsers (Chrome, Firefox, Safari, Edge), mobile browsers (iOS Safari, Android Chrome), tablets (iPad), and Googlebot, all at recent stable versions. They are not auto-updated, so check current values against a reference like browserlist or whatismybrowser before using them in production code.
The UA format is a tale of accumulated legacy. Every modern browser starts with Mozilla/5.0 because Netscape Navigator 4 used Mozilla/4.0 and early servers gated rich content on that prefix. Chrome appends AppleWebKit/537.36 because it forked KHTML through WebKit; it appends Safari/537.36 because Safari did the same and many sites sniffed for Safari to enable WebKit features; it then puts Chrome/x.x.x ahead of Safari to be detected as Chrome. Edge appends Edg/x.x.x at the very end because it is Chromium-derived but wants to be distinguishable.
User agent sniffing is the practice of inspecting the UA to make routing or feature decisions. It is widely considered an anti-pattern — the strings lie (browser modes, extensions, and cloned engines all spoof them), they evolve (Chrome's UA Reduction in 2022 froze MINOR.BUILD.PATCH version numbers to 0.0.0), and feature detection via in-browser API checks is more reliable. Use UA only for analytics segmentation and graceful degradation, never for content gating.
Modern alternatives are emerging. The User-Agent Client Hints specification (Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform) splits the UA into structured headers that browsers send only to origins that opt in via the Accept-CH header. Chrome already sends a frozen UA by default, with the rich data available through Client Hints. Safari and Firefox have not adopted Client Hints fully, so the legacy User-Agent string is still the lowest common denominator.
When you spoof a UA in scraping or testing, set the entire string to match a real browser, not a partial value. Set Accept, Accept-Language, and Accept-Encoding headers to match too — bot-detection systems compare the combination, not just the UA alone. Some sites also fingerprint TLS handshake parameters (JA3 hash) and HTTP/2 stream priorities, which a plain UA swap cannot disguise.
Generation here is purely client-side: the strings are constants in the React component, copy uses the navigator.clipboard API, and the page never sends or fetches data. Each copy puts a string on your clipboard for use in curl, fetch, Postman, browser DevTools network conditions, or your own test fixtures.