What makes a User-Agent string realistic?

Realistic User-Agents match actual browser strings and avoid common mistakes.

Anatomy of a User-Agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36

Components:

  • Mozilla/5.0: Historical compatibility token (always present)
  • Platform: Windows NT 10.0, Win64, x64
  • Rendering engine: AppleWebKit/537.36
  • Browser: Chrome/120.0.0.0
  • Additional tokens: Safari/537.36

Red flags that identify fake User-Agents:

  • Outdated browser versions (Chrome 50, Firefox 30)
  • Impossible combinations (Safari on Windows)
  • Missing or malformed components
  • Generic strings like "Mozilla/5.0"
  • Non-existent version numbers
  • Mismatched platform and browser

Current realistic examples:

Chrome on Windows: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0

Firefox on macOS: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Firefox/121.0

Safari on macOS: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Safari/537.36

Keeping User-Agents current:

  • Browser versions update every 4-6 weeks
  • Major version numbers increase regularly
  • Use a User-Agent generator to get current strings
  • Update your User-Agent pool quarterly

Distribution matters:

Match real-world browser usage:

  • Chrome: ~65% of traffic
  • Safari: ~20%
  • Firefox: ~5%
  • Edge: ~5%
  • Others: ~5%

Weight your rotation accordingly.

Beyond User-Agent:

Sophisticated detection looks at header combinations. A realistic User-Agent should be paired with:

  • Matching Accept headers
  • Appropriate Accept-Language
  • Correct Accept-Encoding
  • Consistent header order

A User-Agent generator provides current, realistic strings that match actual browser patterns.

Related Questions