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.