Accept-Language Inspect
An inspector for multilingual incidents such as “browser set to Japanese but page shows English,” using header priority analysis.
Status
Runs in your browser. No input is sent to a server. Use this as a first-pass diagnostic step.
How to use
Paste Accept-Language or Request Headers and click “Parse”. It summarizes language tags and q priorities.
Notes (this tool)
- Accepts Accept-Language: header lines (multi-line paste is OK).
- q=0 means “not acceptable”.
About this page
What does this tool do?
Split Accept-Language to list language tags (ja/en/zh-Hans, etc.) and their q priorities.
Useful for troubleshooting language selection in multilingual sites.
Basics (role of Accept-Language)
- Accept-Language expresses user language preferences.
- Servers may use it to decide which language to return (server decides).
- If response varies by language, Vary: Accept-Language is needed.
How to read q values (priorities)
- q=1.0 is highest priority; smaller q means lower priority.
- q=0 means “not acceptable”.
- If omitted, q is typically treated as 1.0.
How to read language tags
- ja: Japanese
- en-US: English (United States)
- zh-Hans: Chinese (Simplified)
- *: any other language
Input examples
- Accept-Language: ja,en-US;q=0.9,en;q=0.8
- Accept-Language: en, *;q=0.5
- Paste full Request Headers
Caching and Vary: Accept-Language
If content varies by language, Vary: Accept-Language is crucial to avoid cache mixing.
- Too much Vary fragments caches
- Splitting by URL can be more stable than varying by header
Common pitfalls
- Over-trusting Accept-Language (browser settings may be stale)
- Missing Vary leads to mixed languages in CDN cache
- Mismatch between language detection and URL structure hurts SEO
Debugging workflow (recommended)
- Check Accept-Language via Request Headers Parser
- Summarize language tags and q priorities here
- Verify Vary: Accept-Language with Vary Inspect
Related tools
- Vary Inspect
- Request Headers Parser
- Response Headers Parser
- Content-Language Inspect (planned)
What this tool does
- Parse Accept-Language and summarize q priorities
- List language tags
- Highlight related headers to verify
Operational notes
- The same string can be interpreted differently by context. Prioritize destination specifications.
- Watch for upstream auto-conversion such as spaces, line breaks, and URL decoding.
Referenced specs
- RFC 9110 (HTTP Semantics)
- RFC 9111 (HTTP Caching)
- RFC 5646 (Language Tags)
- MDN: Accept-Language
FAQ
Is Accept-Language always sent?
Most browsers send it, but privacy settings/environments may omit it.
Is Vary: Accept-Language required?
If the same URL serves different languages, it’s generally required. If you split by URL, it may be unnecessary.
What if q is missing?
It is typically treated as q=1.0.
References
Next to view (diagnostic order)
These links are generated from site_map rules in recommended diagnostic order.
- Content-Language Inspect — Parse Content-Language and inspect delivered locale
- Accept Header Builder — Build Accept-family headers by use case
- Accept-Charset Inspect — Parse Accept-Charset and inspect charset preferences
Same-theme links
Language/Locale
Compare Accept headers with Content-Language to debug negotiation mismatches
- Accept Header Builder — Build Accept-family headers by use case
- Content-Language Inspect — Parse Content-Language and inspect delivered locale
- Accept-Charset Inspect — Parse Accept-Charset and inspect charset preferences