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
  • 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

  1. RFC 9110
  2. RFC 9111
  3. RFC 5646
  4. MDN: Accept-Language
  5. MDN: Vary

These links are generated from site_map rules in recommended diagnostic order.

  1. Content-Language Inspect — Parse Content-Language and inspect delivered locale
  2. Accept Header Builder — Build Accept-family headers by use case
  3. Accept-Charset Inspect — Parse Accept-Charset and inspect charset preferences

Language/Locale

Compare Accept headers with Content-Language to debug negotiation mismatches