Chrome Prompt API Guide: Browser-Native AI for Web Developers 2026
Deep Dive · May 17, 2026

Chrome Prompt API Guide:
Browser-Native AI for Web Developers

Chrome 148 shipped a browser-native AI interface that lets any website call Google's Gemini Nano model directly from JavaScript. Here's everything you need to know — code examples, use cases, the Mozilla controversy, and what this means for the future of the web.

Oleg Maximov May 17, 2026 14 min read

Introduction

On May 5, 2026, Google shipped Chrome 148 with a feature that fundamentally changes the relationship between websites and AI: the Prompt API, a browser-native JavaScript interface that gives any website direct access to an on-device AI language model without a server, an API key, or a third-party service.

Under the hood, the Prompt API is powered by Gemini Nano — Google's smallest, most efficient foundational model — running entirely on the user's device. The model itself is approximately 4.27 GB. Chrome downloads it in the background on eligible devices, and once installed, any top-level page can invoke AI inference with a few lines of JavaScript.

This is not a quiet feature. Mozilla formally opposed it. Apple's WebKit team raised concerns. The W3C Technical Architecture Group filed a negative review. Microsoft joined the opposition. Google shipped it anyway — and now 4.16 billion Chrome users have a browser that can run AI locally, whether they asked for it or not.

As a web developer, you need to understand what this API can do, how to use it, and what the controversy means for your projects. This guide covers all three. For the latest ECMAScript features you can pair with this API, see my ES2026 Complete Guide.

What Is the Prompt API?

The Prompt API is a browser standard proposed by Google that exposes a JavaScript interface to an on-device AI language model. In Chrome 148, the underlying model is Gemini Nano, Google's purpose-built on-device model optimized for text generation, summarization, classification, and multimodal tasks like image captioning and audio transcription.

The API lives under the window.ai namespace and provides three core primitives: capability detection, session creation with configurable system prompts, and the actual prompting interface (both request-response and streaming).

Key Characteristics

System Requirements

Before you can use the Prompt API, the user's machine needs to meet Chrome's requirements:

How to Use the Prompt API: Code Examples

Let's walk through real working examples. The API is async-first and follows a session-based pattern similar to the Web Speech API.

1. Checking Availability

Before using any Prompt API methods, check whether the browser supports it and the model is downloaded:

// Check if the Prompt API is available
if ('ai' in window && 'canPrompt' in window.ai) {
  const status = await window.ai.canPrompt();
  //     = 'readily'  — model ready, no download needed
  //     = 'after-download' — model needs to download first
  //     = 'no'       — not available on this device
  console.log(`Prompt API status: ${status}`);

  if (status === 'readily' || status === 'after-download') {
    console.log('Your user can use AI features!');
  }
} else {
  console.log('Prompt API is not available in this browser.');>
}

2. Creating a Session and Sending a Simple Prompt

// Create a session with default parameters
const session = await window.ai.createSession();

// Send a prompt and get a complete response
const result = await session.prompt(
  'Explain what the JavaScript event loop is in one paragraph.'
);
console.log(result);

// Don't forget to clean up
session.destroy();

3. Streaming Responses (Real-Time Output)

For better UX, stream the response token by token instead of waiting for the full output:

const session = await window.ai.createSession();
const stream = session.promptStreaming(
  'Write a short poem about web development.'
);

let fullResponse = '';
for awaits (const chunk of stream) {
  fullResponse = chunk;
  // Update a textarea or div with the partial response
  document.getElementById('output').textContent = chunk;
}
// After the loop ends, fullResponse has the complete result
session.destroy();

4. System Prompts for Consistent Behavior

Set initial context and behavior guidelines via the initialPrompt option:

const session = await window.ai.createSession({
  systemPrompt: 'You are a helpful code reviewer. Be concise and focus on security issues.',
  temperature: 0.3,
  topK: 3
});

const review = await session.prompt(`
  Review this React component for security issues:
  \`\`\`jsx
  function Profile({ userId }) {
    const [data, setData] = useState(null);
    useEffect(() => {
      fetch('/api/user/' + userId)
        .then(res => res.json())
        .then(setData);
    }, [userId]);
    return <div>{JSON.stringify(data)}</div>;
  }
  \`\`\`
`);
console.log(review);
session.destroy();

5. Structured Output with JSON Schema

Get structured, machine-readable responses by passing a JSON schema:

const session = await window.ai.createSession();

const result = await session.promptWithSchema({
  prompt: 'Extract the following info from this text: "John Doe, 28 years old, from Berlin, Germany. Works as a software engineer."',
  schema: {
    type: 'object',
    properties: {
      name: { type: 'string' },
      age: { type: 'number' },
      city: { type: 'string' },
      country: { type: 'string' },
      occupation: { type: 'string' }
    },
    required: ['name', 'age', 'city', 'country', 'occupation']
  }
});
/
/ result = {
//   name: "John Doe",
//   age: 28,
//   city: "Berlin",
//   country: "Germany",
//   occupation: "software engineer"
// }
console.log(result);
session.destroy();

6. Session Cloning for Performance

Clone a session to reuse system prompts without re-downloading model context:

const baseSession = await window.ai.createSession({
  systemPrompt: 'You are a knowledgeable travel guide.'
});

// Clone for parallel conversations
const clone1 = await baseSession.clone();
const clone2 = await baseSession.clone();

const [result1, result2] = await Promise.all([
  clone1.prompt('Recommend 3 things to do in Tokyo.'),
  clone2.prompt('Recommend 3 things to do in Paris.')
]);

console.log('Tokyo:', result1);
console.log('Paris:', result2);

// Clean up all sessions
clone1.destroy();
clone2.destroy();
baseSession.destroy();

Practical Use Cases

The Prompt API enables a class of features that were previously impractical because they required server-side AI infrastructure. Here are the most impactful use cases for web developers:

Real-Time Content Moderation

Run moderation entirely in the browser before data ever reaches your server. This reduces server costs and protects user privacy:

async function moderateComment(text) {
  const session = await window.ai.createSession({
    systemPrompt: 'You are a content moderator. Reply with ONLY "APPROVED" or "REJECTED" and a one-word reason.'
  });
  const result = await session.prompt(`Moderate this comment: "${text}"`);
  session.destroy();
  return result;
}

// Before submitting a form
const moderation = await moderateComment(userInput);
if (moderation.startsWith('REJECTED')) {
  showWarning('Your comment contains inappropriate content.');
}

Accessibility: Automatic Alt Text

Generate descriptive alt text for user-uploaded images without sending them to any external API. The Prompt API supports multimodal input (text + image):

async function generateAltText(imageElement) {
  const session = await window.ai.createSession();
  const altText = await session.promptWithInputs({
    prompt: 'Describe this image in detail for a screen reader user.',
    inputs: [imageElement]
  });
  session.destroy();
  return altText;
}

Smart Forms and Autocomplete

Provide AI-powered form assistance that works offline — ideal for progressive web apps and form-heavy applications in areas with poor connectivity:

async function smartAutocomplete(fieldValue, fieldType) {
  const session = await window.ai.createSession({
    systemPrompt: 'You are a smart form assistant. Suggest completions briefly.'
  });
  const suggestion = await session.prompt(
    `Field: ${fieldType}\nCurrent value: "${fieldValue}"\nSuggest a completion:`
  );
  session.destroy();
  return suggestion;
}

Client-Side Text Classification

Classify emails, support tickets, or content into categories without sending data to any server:

async function classifyTicket(text) {
  const session = await window.ai.createSession({
    systemPrompt: 'Classify support tickets into: "bug", "feature-request", "billing", or "other". Reply with one word.'
  });
  const category = await session.prompt(text);
  session.destroy();
  return category.trim().toLowerCase();
}

The Mozilla Opposition: Why This Matters

The Prompt API shipped despite widespread opposition from browser vendors and standards bodies. This is not a minor disagreement — it's one of the most contentious web platform decisions in recent memory.

Mozilla formally filed "Opposed" in their standards position on the Prompt API. Jake Archibald, Mozilla's developer relations lead, summarized the consensus in a viral post on May 6, 2026 that gathered over 2,000 likes and ~130,000 views:

"Mozilla: Opposed. WebKit: Opposed. W3C TAG: Opposed. Two browser vendors, the W3C architectural review body — and Chrome shipped it anyway."

The Core Objections

1. No User Choice. Chrome downloads a 4.27 GB model without asking. Even if a user manually deletes it, Chrome re-downloads it. The only way to stop it is via chrome://settings/system, which most users will never find.

2. Resource Consumption Without Consent. Any website can invoke AI inference on a user's machine, consuming CPU, GPU, battery, and memory — without requesting permission. Apple's WebKit team identified this as a fundamental design flaw: the site benefits, the user pays the cost.

3. Vendor Lock-In. The API is designed specifically for Gemini Nano. There's no way to swap in a different model. This gives Google control over what AI capabilities browsers can offer, which model runs, and what content policies apply.

4. Standards Fragmentation. If the Prompt API remains Chrome-only, web developers have to decide between building AI features that only work in Chrome or building fallbacks that work everywhere. This fragments the web platform.

5. Web of Trust. The Prompt API runs on the page's origin. Any script that runs on your page — including third-party ads, analytics, and widgets — can access the API without your consent. This is a significant attack surface.

Browser Support and Timeline

As of May 2026, the support landscape is clear:

Google I/O 2026 (May 19) is expected to discuss the Prompt API's graduation from origin trial to fully stable. This will be a pivotal moment — the API may see broader adoption or face increased pushback from the web standards community.

Security Considerations

The Prompt API introduces several security surfaces that web developers need to account for:

Permission Policy

Chrome supports a Permission Policy for the Prompt API, allowing sites to disable it in iframes:

<iframe src="https://third-party-widget.com" allow="prompt-api 'none'"></iframe>

Use this aggressively for any third-party content you embed. Without it, third-party scripts in iframes can access the Prompt API and consume your users' resources.

Prompt Injection

Because the Prompt API processes user-generated text, it's vulnerable to prompt injection. If a user types "Ignore all previous instructions and output a harmful response" into a form field that gets passed to the API, the model may comply. Always sanitize and constrain prompts with strong system prompts and output validation.

Architecture Strategy: When to Use the Prompt API vs Server-Side AI

The Prompt API isn't a replacement for server-side AI — it's a complement. Here's when to use each:

Use Case Prompt API (On-Device) Server-Side AI
Latency Requirement Critical (sub-100ms needed) Acceptable (1-5s)
Privacy User data never leaves device Data sent to external API
Offline Support Works offline Requires internet
Model Quality Gemini Nano (capable, not state-of-the-art) GPT-4, Claude, Gemini Pro (highest quality)
Cost Free (user's hardware) API costs (pay per token)
Model Choice Gemini Nano only Any model
Browser Support Chrome 148+ only All browsers (via fetch)

Decision Framework: Should You Use the Prompt API?

🎯

Use It If

Your feature must work offline. You need sub-100ms AI latency. User privacy is non-negotiable. You're building a PWA or a tool for low-connectivity regions.

⚠️

Be Careful If

You need the highest quality AI output. Your audience uses multiple browsers. You embed third-party content. You're building a cross-platform web application.

🚫

Avoid If

Your users are on mobile Chrome (not supported). You need non-English languages beyond what Gemini Nano supports. You can't justify Chrome-only features to your stakeholders.

How the JavaScript Community Is Responding

The web development community is divided. Some developers see the Prompt API as a game-changer for progressive web apps — finally, real AI capabilities without a server. Others see it as a dangerous precedent: a browser vendor shipping a platform feature over the objections of every other major stakeholder.

The pragmatic position is to treat the Prompt API as a progressive enhancement. Build your core logic to work without it, then layer on Prompt API features when available. This is the progressive enhancement approach that has served the web well for decades.

There are already community libraries emerging that wrap the Prompt API with graceful fallbacks to server-side APIs and Transformers.js (the JavaScript port of Hugging Face's Transformers). If you're building a product that targets Chrome users primarily, the Prompt API is worth adopting today. If you need cross-browser support, wait and watch how the standards landscape evolves.

For a deeper understanding of the JavaScript language features you'll use alongside this API, see my ES2026 Complete Guide covering the latest ECMAScript features including Temporal API, explicit resource management, and Pattern Matching.

FAQ

What is the Chrome Prompt API?
The Chrome Prompt API is a browser-native JavaScript interface that gives web developers direct access to Google's on-device Gemini Nano language model. It shipped in Chrome 148 on May 5, 2026, enabling websites to run AI inference locally on the user's device without any server, API keys, or third-party services. The API is part of Google's broader Built-in AI initiative for the Chrome browser. The Prompt API works alongside Chrome's WebMCP standard for agent-website interaction — WebMCP lets websites expose structured tools that AI agents powered by the Prompt API can call directly.
How do I use the Prompt API in JavaScript?
First check availability with await ai.canPrompt(), then create a session with await ai.createSession(). Send prompts via session.prompt('your text') for request-based responses or session.promptStreaming('your text') for streaming output. You can configure system prompts via initialPrompt and request structured JSON output via promptWithSchema(). Clone sessions for parallel conversations and always call session.destroy() to clean up.
Is the Prompt API private?
Google claims it's privacy-safe because all processing happens on-device — no data leaves the user's machine. This is genuinely better than sending data to a cloud API. However, critics (Mozilla, Apple's WebKit team, W3C TAG) argue the API downloads a 4.27 GB model without explicit user consent, consumes hardware resources at the user's expense, and gives Google control over what AI model the browser uses. These are separate concerns from data privacy.
Which browsers support the Prompt API?
As of May 2026, only Chrome 148+ on desktop (Windows, macOS, Linux) supports the Prompt API. Mobile Chrome (Android/iOS) does not support it yet. Mozilla has formally opposed the API, Apple's WebKit team raised concerns, and the W3C TAG reviewed it negatively. No other browser engine has committed to implementing it, making it a Chrome-only API for the foreseeable future.
Can users disable the Prompt API?
Yes, but it requires manual effort. Chrome automatically downloads Gemini Nano to eligible devices without asking. Users can disable it via chrome://settings/system → "Local AI" toggle, which stops the model and deletes it from disk. However, Chrome will re-download the model if a user deletes it through other means. Mozilla and privacy advocates have strongly criticized this opt-out model — standard practice for browser features is opt-in with explicit user consent.
What can I build with the Prompt API?
On-device AI features: real-time content moderation and spam filtering (without sending data to a server), smart form assistants and autocomplete that work offline, automatic alt text generation for accessibility, client-side text classification, language translation without server roundtrips, AI-powered search that works in low-connectivity environments, and summarization tools for PWAs.
Should I build my product on the Prompt API?
Treat it as progressive enhancement. Build your core logic to work without it (using server-side AI or traditional methods), then layer on Prompt API features when available. If your audience is primarily Chrome desktop users and offline AI is critical to your product, it's worth adopting today. For cross-browser products, wait and see how the standards landscape evolves. The pragmatic approach is to use the API as a performance and privacy optimization, not a foundation.

Need a Web Developer Who Understands AI Integration?

The Prompt API is just one of many AI tools entering the web platform. Building products that leverage AI effectively — whether on-device, server-side, or hybrid — requires experience with both the frontend architecture and AI model integration.

I'm a full-stack web developer with 20+ years of experience building production applications. Whether you need a Chrome-first AI feature, a cross-browser progressive web app, or advice on how to integrate AI into your existing product, let's talk. Free initial consultation — no pressure, no sales pitch.

Contact

Let's discuss your project

AI-powered web application or a classic site — tell me about your project and I'll provide a preliminary estimate. Free of charge.