Accept-Language Inspect

Run parsing, conversion, and validation in your browser. No input is sent to a server. Use it for first-pass format troubleshooting.

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