LanguageDetector: availability() static method

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The availability() static method of the LanguageDetector interface returns an enumerated value that indicates whether the browser AI model supports a given LanguageDetector configuration.

Syntax

js
LanguageDetector.availability(options)

Parameters

options

An object specifying configuration options for the LanguageDetector. Possible values include:

expectedInputLanguages

An array of strings specifying the expected languages of the input text to have its language detected. These should be valid BCP 47 language tags. Defaults to ["en"]

Return value

A Promise that fulfills with an enumerated value indicating whether support is available (or will be available) for a given LanguageDetector configuration, or null if support could not be determined.

Possible values include:

available

The browser supports the given configuration and it can be used immediately.

downloadable

The browser supports the given configuration, but it first needs to download an AI model, or some fine-tuning data for the model.

downloading

The browser supports the given configuration, but it has to finish an ongoing download before it can proceed.

unavailable

The browser does not support the given configuration.

Exceptions

InvalidStateError DOMException

Thrown if the page's Document is not yet active.

OperationError DOMException

Thrown if initialization of the AI model failed for any reason.

UnknownError DOMException

Thrown if the availability() call failed for any other reason, or a reason the user agent did not wish to disclose.

If usage of the method is blocked by a language-detector Permissions-Policy, the promise rejects with a value of unavailable.

Examples

Basic availability() usage

In the following snippet, we start by checking the availability of the model for detecting a couple of languages using the availability() method:

  • If it returns unavailable, we print an appropriate error message to the console.
  • If it returns available, we create a language detector using the create() method, passing it the expectedInputLanguages. The required AI model is available, so we can use it immediately.
  • If it returns a different value (that is, downloadable or downloading), we run the same create() method call, but this time we include a monitor that logs the percentage of the model downloaded each time the downloadprogress event fires.
js
async function getDetector(languages) {
  const availability = await LanguageDetector.availability({
    expectedInputLanguages: languages,
  });
  if (availability === "unavailable") {
    console.log(`Detection not supported; try a different set of languages.`);
    return undefined;
  } else if (availability === "available") {
    return await LanguageDetector.create({
      expectedInputLanguages: languages,
    });
  }
  return await LanguageDetector.create({
    expectedInputLanguages: languages,
    monitor(monitor) {
      monitor.addEventListener("downloadprogress", (e) => {
        console.log(`Downloaded ${Math.floor(e.loaded * 100)}%`);
      });
    },
  });
}

const detector = await getDetector(["en-US", "zh"]);

Detecting language support

js
async function langSupport(language) {
  const availability = await LanguageDetector.availability({
    expectedInputLanguages: [language],
  });
  return availability;
}

await langSupport("en");
await langSupport("pt");
await langSupport("zh");

Specifications

Specification
Translator and Language Detector APIs
# dom-languagedetector-availability

Browser compatibility

desktop mobile server
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
availability() static method
Experimental
Chrome – Full support
Chrome 138 (Release date: 2025-06-24)
footnote
footnote Availability may be subject to geographical restrictions.
Edge – No support
Edge
footnote No support
Firefox – No support
Firefox
footnote No support
Opera – Full support
Opera 122 (Release date: 2025-09-11)
footnote
footnote Availability may be subject to geographical restrictions.
Safari – No support
Safari
footnote No support
Chrome Android – No support
Chrome Android
footnote No support
Firefox for Android – No support
Firefox for Android
footnote No support
Opera Android – No support
Opera Android
footnote No support
Safari on iOS – No support
Safari on iOS
footnote No support
Samsung Internet – No support
Samsung Internet
footnote No support
WebView Android – No support
WebView Android
footnote No support
WebView on iOS – No support
WebView on iOS
footnote No support
Deno – No support
Deno
footnote No support
Node.js – No support
Node.js
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.

See also