knowsLanguage
knowsLanguage · Optional
Appears in
What is it?
knowsLanguage declares the languages in which an organization (or person) can communicate. It answers the question "what languages does this business support?" at the markup level, without requiring visitors to navigate to a language selector or contact page to find out.
The field accepts either a Language node or a text string using IETF BCP 47 language tags (the same format used in HTML lang attributes: en, es, fr-CA, etc.). Schema.org notes that skill level distinctions, such as reading, writing, or speaking, are not captured by this field.
Why this matters for AEO
Language accessibility is a concrete service attribute that AI engines factor into answers about organizations. When a user asks "which immigration lawyers in Miami speak Spanish?" or "does this bank have Mandarin-speaking support?", AI systems look for machine-readable signals about language capability. An organization without knowsLanguage markup forces the AI to infer language support from page text, which is less reliable.
For service businesses targeting multilingual communities, knowsLanguage is a direct competitive differentiator in AI-generated responses. It maps to a user need that is frequently voiced in natural language queries.
What the specs say
Schema.org:knowsLanguage expects a Language or Text value. Of a Person, and less typically of an Organization, to indicate a known language. Use language codes from the IETF BCP 47 standard. [Source: https://schema.org/knowsLanguage]
Google: Not mentioned in Google's structured data documentation for Organization. [Source: https://developers.google.com/search/docs/appearance/structured-data/organization]
How to find your value
IETF BCP 47 codes for common languages:
- English —
en - Spanish —
es - French —
fr - Mandarin Chinese —
zh - Portuguese —
pt - German —
de - Arabic —
ar - Japanese —
ja - Korean —
ko - French Canadian —
fr-CA - Brazilian Portuguese —
pt-BR
For regional variants, use the extended tag: es-MX for Mexican Spanish, en-GB for British English.
Format and code
Text strings with BCP 47 codes (recommended)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Duolingo",
"knowsLanguage": ["en", "es", "fr", "de", "pt", "ja", "zh", "ko", "ar"]
}
Single language
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Alliance Française de Chicago",
"knowsLanguage": "fr"
}
Language nodes with full names
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Berlitz Language Centers",
"knowsLanguage": [
{
"@type": "Language",
"name": "English",
"alternateName": "en"
},
{
"@type": "Language",
"name": "Spanish",
"alternateName": "es"
},
{
"@type": "Language",
"name": "Mandarin Chinese",
"alternateName": "zh"
}
]
}
Webflow implementation
Static pages
Add knowsLanguage to the Organization JSON-LD block in Page Settings > Custom Code > Before </body>. For organizations with a fixed language list, hardcode the BCP 47 array. This is the most common and simplest approach.
CMS template pages
For agencies or service firms with team members who speak different languages, store language codes as a multi-reference or comma-separated text field in Webflow CMS. Inject the values into the JSON-LD block dynamically in a CMS template. When using a text field, split the comma-separated string into a JSON array in your client-side code embed.
In Schema HQ
The knowsLanguage field configures knowslanguage in the organization editor. enter language codes as comma-separated values. schema hq handles the array serialization in the json-ld output. is supported
Real examples
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Fragomen, Del Rey, Bernsen & Loewy",
"url": "https://www.fragomen.com",
"knowsLanguage": ["en", "es", "fr", "de", "zh", "pt", "ar", "ru", "ja"]
}
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Banco Popular de Puerto Rico",
"url": "https://www.bancopopular.com",
"knowsLanguage": ["es", "en"]
}
Related fields
FAQ
Should I use text codes or Language nodes?
BCP 47 text codes are simpler and more widely used. Language nodes with a name and alternateName add human-readable labels alongside the machine code. For most implementations, text codes are sufficient. Language nodes are worth using if your markup already uses other structured nodes throughout.
Does knowsLanguage capture reading, writing, and speaking separately?
No. Schema.org explicitly notes that skill level distinctions are not captured. The field declares that a language is known; proficiency level and modality are out of scope.
Is there a limit to how many languages to list?
No technical limit. List the languages your organization actually supports for customer-facing communication. Listing languages your staff does not actively use inflates the signal and can create customer expectation mismatches.