Chrome Proofreader API Download Stuck at 0%

276 views
Skip to first unread message

Bryan Dhaniel

unread,
Sep 29, 2025, 7:49:48 PM9/29/25
to Chrome Built-in AI Early Preview Program Discussions

Hey everyone,

I'm trying to use the Chrome Proofreader API, but the model download is always stuck at 0%. Other APIs like Summarizer and Translator are working fine in my project.

I've already checked chrome://on-device-internals/, and the status for ProofreaderApi shows Version: 0.

My questions are:

  1. Is this likely related to an Origin Trial Token?

  2. For development on localhost, is enabling the chrome://flags/#proofreader-api-for-gemini-nano flag enough, or is a token still required?

  3. If I have a token for a Vercel domain, will it also work for localhost?

Thanks!


 react-dom-client.development.js:25630 Download the React DevTools for a better development experience: https://react.dev/link/react-devtools (index):1 No output language was specified in a Summarizer API request. An output language should be specified to ensure optimal output quality and properly attest to output safety. Please specify a supported output language code: [en, es, ja] page.tsx:56 Summarizer availability: available page.tsx:60 Translator API supported page.tsx:64 Translator availability (en->id): available page.tsx:71 Proofreader API supported page.tsx:74 Proofreader availability: downloadable page.tsx:77 ⚠️ Proofreader model needs to be downloaded. It will download on first use. StudyMindApp.useEffect.checkSupport @ page.tsx:77 turbopack-hot-reloader-common.ts:43 [Fast Refresh] rebuilding report-hmr-latency.ts:26 [Fast Refresh] done in 404ms page.tsx:218 Starting proofreading with options: Object page.tsx:219 Calling proofread API with progress tracking...
Overall proofreading timeout after 5 minutes
error @ intercept-console-error.ts:44
(anonymous) @ page.tsx:224Understand this error
page.tsx:282 AI proofreading error: Error: Proofreading timeout (5 minutes) - Model download may still be in progress. Check chrome://on-device-internals/ for download status.
    at page.tsx:225:18

Thomas Steiner

unread,
Sep 30, 2025, 6:30:48 AM9/30/25
to Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions
Hi Bryan,

The Proofreader API and the Summarizer API both depend on Gemini Nano, so if the Summarizer API is working for you, it means that the base model is downloaded correctly. The Proofreader API on top depends on LoRA, so likely the download is stalled there. Could I ask you to paste the result of these two calls into your next reply? Also, what is the output of `chrome://version` (put this in the URL bar and press return)?

await Proofreader.availability({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
});

await Proofreader.create({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
});

Thank you!

Cheers,
Tom

--
You received this message because you are subscribed to the Google Groups "Chrome Built-in AI Early Preview Program Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email to chrome-ai-dev-previe...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/chrome-ai-dev-preview-discuss/7940cbb6-93f4-42d8-92ab-6de4b9fd2fe9n%40chromium.org.


--
Thomas Steiner, PhD—Developer Relations Engineer (blog.tomayac.comtoot.cafe/@tomayac)

Google Spain, S.L.U.
Torre Picasso, Pl. Pablo Ruiz Picasso, 1, Tetuán, 28020 Madrid, Spain

CIF: B63272603
Inscrita en el Registro Mercantil de Madrid, sección 8, Hoja M­-435397 Tomo 24227 Folio 25

----- BEGIN PGP SIGNATURE -----
Version: GnuPG v2.4.8 (GNU/Linux)

iFy0uwAntT0bE3xtRa5AfeCheCkthAtTh3reSabiGbl0ck
0fjumBl3DCharaCTersAttH3b0ttom.xKcd.cOm/1181.
----- END PGP SIGNATURE -----

Bryan Dhaniel

unread,
Sep 30, 2025, 7:05:47 AM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner, Chrome Built-in AI Early Preview Program Discussions, Bryan Dhaniel

Hi Tom,

Here is the information you requested.

1.  **Output of `Proofreader.availability()`:**
    `'downloading'`

2.  **Output of `Proofreader.create()`:**
    The command did not produce any output or error in the console. It appears to be hanging or pending indefinitely.


await Proofreader.availability({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
});
'downloading'

await Proofreader.create({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
});

3.  **Output of `chrome://version`:**
    
hrome

140.0.7339.208 (Official Build) (64-bit) (cohort: Stable) 

Revision

c759967f1b8ca5857065acaa4f7b5cdb3a12df7b-refs/branch-heads/7339@{#2365}

OS

Windows 11 Version 24H2 (Build 26100.6725)

JavaScript

V8 14.0.365.10

User Agent

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36

Command Line

"C:\Program Files\Google\Chrome\Application\chrome.exe" --restart --flag-switches-begin --enable-features=AIPromptAPI:langs/%2A,AIPromptAPIMultimodalInput,AIProofreadingAPI,AISummarizationAPI:langs/%2A,AIWriterAPI:langs/%2A,OnDeviceModelPerformanceParams,ParallelDownloading --flag-switches-end

Executable Path

C:\Program Files\Google\Chrome\Application\chrome.exe

Profile Path

C:\Users\hp\AppData\Local\Google\Chrome\User Data\Profile 1

Command-line Variations

eyJkaXNhYmxlLWZlYXR1cmVzIjoiQU5HTEVQZXJDb250ZXh0QmxvYkNhY2hl...


Active Variations

6f27bc8a-7c260cf3
a66dbd64-ca7d8d80
1410ffb3-ca7d8d80
f2f17cec-377be55a
d99b5d-ca7d8d80
efb0dc7b-377be55a
10a1256d-cf3dee0e
77b8454c-be018c5f
ce1c1bed-b9da0cef
66abf9c6-ca7d8d80
39ed581b-377be55a
a1e5b5f5-efc842b0
d7ae1c3f-ca7d8d80
2a1c0800-ca7d8d80
de2a296c-ca7d8d80
4223ef11-1f8c5973
2e8ee590-377be55a
99c5c620-377be55a
8382fe14-c325859
91990785-ca7d8d80
9feae158-ca7d8d80
8f80c10-3b174993
6b7d4090-a05adce
ec937206-ca7d8d80
3095aa95-3f4a17df
3dc1edf3-377be55a
fb92da45-1f8c5973
9540e055-3d47f4f4
3fff8fa8-ca7d8d80
b3980381-33c3eba5
2e1c00ac-33c3eba5
58035371-ca7d8d80
12ecede0-1397feeb
832b8234-377be55a
54d601a5-ca7d8d80
86fbc11e-b0a538a3
ccd5ee73-d3bf8b87
f1710f4a-5698b49b
efcaf4ba-ca7d8d80
f314f5b9-a35510c6
e30ead8-ed487fe9
95595a9e-4f779f77
7f1aeea3-377be55a
dbbadc98-a2abccc9
c40ef61b-ca7d8d80
fc1790de-ca7d8d80
11d973f6-ca7d8d80
f6f5c542-ca7d8d80
a85f151b-377be55a
3779be93-5f5425e0
de785b07-ca7d8d80
f32b2e65-231fe57f
8e9d6ad-346407fe
a582a1b8-5ad3f43d
54b15be4-61727a69
bd6dd170-ca7d8d80
14789165-377be55a
68f499c8-ca7d8d80
b318ffd-ca7d8d80
87684b46-ca7d8d80
6e355c92-12ede6a2
284e9d43-377be55a
a374e297-ca7d8d80
3f347481-9650a980
e17cab80-ca7d8d80
3e672fd9-4e926a12
893cc7a4-ca7d8d80
5076f4a6-f9a43703
255aa854-e9f3ba61
9cf6c713-ca7d8d80
372d63eb-ca7d8d80
acf2401-12ede6a2
28979271-33c3eba5
d390c471-33c3eba5
743dd923-a63caaf8
4146cc26-ca7d8d80
1683ee3a-ca7d8d80
5e3a236d-603bc464
53efe597-e36235cc
fecdbadb-ca7d8d80
9d207f38-ca7d8d80
3f032b9f-72f96e8d
b28d8e30-6e094415
33bc03a6-28ad44a
5048a00e-33c3eba5
c7dde59f-377be55a
5b2f4944-70ea8f25
c2a9e35c-377be55a
f7b9a9e3-ca7d8d80
54be7848-ca7d8d80
d85d2369-ca7d8d80
81c84cff-ca7d8d80
4076100b-377be55a
77e71ebd-f56307db
68fef0c-3424a500
d649160f-ca7d8d80
3ac9fcb9-ca7d8d80
99f79829-ca7d8d80
466fcd68-ca7d8d80
d1ca0f0f-55b1aea0
72c1eeea-ca7d8d80
bcb143fe-ca7d8d80
b9ffbd4a-b8ff9f89
59a12fbe-35355319
c4cc2da2-1f8c5973
3be2cde7-377be55a
5ac9f58-ca7d8d80
88e285c2-377be55a
66b7a83f-cdbea37c
d721a76b-ca7d8d80
86362250-a3a259fa
4ea303a6-d4ab5dbe
19593c6e-38b4e628
82b178a6-52a76538
c8f6111a-ca7d8d80
b392af44-377be55a
f3b6291d-6bb2bb3c
bf46f37a-ca7d8d80
40de0170-ca7d8d80
1edcddf4-659d13d5
ea0d881d-ca7d8d80
b6f29041-e31a762
e85106e5-a98e4140
c046d00b-ca7d8d80
8082e3d1-ca7d8d80
444b9649-ca7d8d80
a374fdf0-1416e3f6
a8df36b5-ca7d8d80
c8997723-377be55a
cb03b921-ca7d8d80
739df952-377be55a
26144d57-377be55a
494d8760-52325d43
3ac60855-486e2a9c
f48c01d3-fb9db4e0
63dcb6a3-cafb6ece
e706e746-71ff9dce
f296190c-477de798
4442aae2-d7f6b13c
f690cf64-e1cc0f14
ed1d377-e1cc0f14
75f0f0a0-4ad60575
710c3f90-4ad60575
e2b18481-a90023b1
e7e71889-e1cc0f14
2195aed-377be55a
3a8271ac-e9e131c
14b2973a-ca7d8d80
260cfd7c-377be55a
1b07e46e-ca7d8d80
2f6246c2-ca7d8d80
7d758b3c-ca7d8d80
45e0e828-6edc92c7
1ddbf293-377be55a
89fd5de1-ca7d8d80
6332ffaf-8cd0bc9c
bce5ae48-377be55a
f079e901-ca7d8d80
e92dc7d-4d2fac87
a68352e7-52f3c8c9
a31758da-ca7d8d80
c55491ea-a89ee1ce
2bd1b768-dc76e7f3
9d05f7a9-377be55a
1e13bd59-70ea8f25
25523930-70ea8f25
9dc38cf3-70ea8f25
b357b792-dcf2ae30
f4f00e05-ca7d8d80
9481ce98-3f4a17df
a983f698-39ef4c64
2a426c03-3d47f4f4
70678518-83ffdacd
be338734-4866ef6e
5f9907a9-206f6a6e
8eeccb9a-c35b209e
2b465683-206f6a6e
52fc7926-1790ff02
bc9b361d-dee66fa8
a41a7188-b184655b
ff71bfdc-dee66fa8
2159dd0c-7c9424a1
e7cc79d5-dee66fa8
4b935545-3d47f4f4
9a38bae3-6046c8a7
41ad04e1-e4065f40
2d1e43a3-3d47f4f4
386dc267-3d47f4f4
d69d967d-3695c92e
3c8f75a1-a6f840a5
a4406b35-1657e2d6
408da146-1657e2d6
1ac2b7d3-6c999558


Thank you!

Thomas Steiner

unread,
Sep 30, 2025, 7:10:03 AM9/30/25
to Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner
On Tue, Sep 30, 2025 at 1:05 PM Bryan Dhaniel <bryandh...@gmail.com> wrote:

Hi Tom,

Here is the information you requested.

1.  **Output of `Proofreader.availability()`:**
    `'downloading'`

This looks good.
 
2.  **Output of `Proofreader.create()`:**
    The command did not produce any output or error in the console. It appears to be hanging or pending indefinitely.

This is to be expected, as it will only resolve once the download has finished. 

Can you run one more test? The bold part is new and should show download progress. 

const proofreader = await Proofreader.create({

  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});
 
Just to be sure, could I also ask you to check the same command in Chrome Canary? 

Thomas Steiner

unread,
Sep 30, 2025, 7:15:15 AM9/30/25
to Thomas Steiner, Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions
Actually, posted a moment too soon, before advancing to my next email in my Inbox: apparently the `downloadprogress` events are currently broken, so you won't see progress other than 0 and then finally 1, but nothing in between. 

Bryan Dhaniel

unread,
Sep 30, 2025, 7:45:54 AM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner, Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions
Hi Tom,

Thank you for the guidance. I have completed the tests on both browsers as requested. The results are quite interesting.

1.  **Results from my current Chrome (Version 140.0.7339.208):**

    * On the first attempt, the command did not produce any output and seemed to hang, similar to the previous issue.
    * However, on the second attempt, it worked successfully! The console immediately showed the following output, and the command completed without hanging:
        Downloaded 0%
        Downloaded 100%

       const proofreader = await Proofreader.create({

  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

const proofreader = await Proofreader.create({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});
VM246:8 Downloaded 0%
VM246:8 Downloaded 100%


2.  **Results from Chrome Canary (Version  142.0.7444.0 ):**

     * On the first attempt, the command did not produce any output and seemed to hang, similar to the normal chrome.
    * However, on the second attempt, it worked successfully! The console immediately showed the following output, and the command completed without hanging wth undefined:
        Downloaded 0%
        Downloaded 100%
        undefined

const proofreader = await Proofreader.create({

  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});
VM247:9 Downloaded 0%
VM247:9 Downloaded 100%
undefined

I hope this detailed behavior provides the clues you need. Let me know if there's anything else I can test.

Thanks!

Thomas Steiner

unread,
Sep 30, 2025, 7:53:48 AM9/30/25
to Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner
Thanks for confirming that it worked. The 0 → 1 behavior is working as specified, even if the model is already downloaded. The bug I mentioned before was about the missing in-between progress updates that you would use to, for example, advance a `<progress>` bar. Glad we got the situation resolved for you!

Cheers,
Tom

Bryan Dhaniel

unread,
Sep 30, 2025, 8:14:17 AM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner, Chrome Built-in AI Early Preview Program Discussions, Bryan Dhaniel

Hi Tom,

Thanks for the clarification on the download progress.

I have a follow-up question: even after the console shows the download is 100% complete, the proofreading function still doesn't work on my end. It seems to fail silently without any new errors.

Is this something you've seen before, or is there another test I can run to check if the model is initialized correctly after downloading?

Thanks!

Thomas Steiner

unread,
Sep 30, 2025, 8:27:04 AM9/30/25
to Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner
There is this short moment where the model is downloaded but needs to be extracted and the fine-tuning applied. This should not be observable much in practice, though. Can you run the code below and let me know?

const proofreader = await Proofreader.create({
  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
  monitor(m) {
    m.addEventListener("downloadprogress", e => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  }
});

await proofreader.proofread('I am ful of typso');

It should look something like this:

Screenshot 2025-09-30 at 14.24.20.png

Bryan Dhaniel

unread,
Sep 30, 2025, 9:04:18 AM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner, Chrome Built-in AI Early Preview Program Discussions, Bryan Dhaniel
Hi Tom,

Thanks for the new test command. I have some great news!
**In Chrome Canary, the test was successful.** The output in the console looks exactly like the example you provided.
Does this mean the model has been successfully downloaded, initialized, and is now fully working in Canary?

Screenshot 2025-09-30 195927.png

For your information, in my normal Chrome, the same command still **[the output stuck on downloaded 100%]**.

Thank you so much for all your help!

Thomas Steiner

unread,
Sep 30, 2025, 12:52:05 PM9/30/25
to Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner
Yay, progress! At least in Canary we're good. For Stable, can you try quitting the browser completely and start fresh? If this doesn't help, try starting Chrome with a throw-away user data directory. This means you will need to download the model again in this test profile, but this way we can be sure it's not due to a corrupt profile or so.

Yusuf Rawat

unread,
Sep 30, 2025, 5:36:32 PM9/30/25
to Thomas Steiner, Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions
1. https://vercel.com/blog/framework-defined-infrastructure

If you building for scale   or security 

Secure way to not reveal token , url , stripe uses it for payments  

1. Token can be concatenated yes if too long 
Token set expire 

Local , prod , date timing adjustment addressed 

I thought cookies banned in EU? Anyway if not this franework still applies , preloading , hotliading ,  attacks mentioned , https doesnt mean secure , rest  mentioned sync asyc or force option to avoid redownload or re problem mentioned 
In my opinion 

Pushing code passing via *client browsers* framework fits use case 

Dev , prod , local , idea applies and the code seperated browser 

Its all mentioned on first page 
--
You received this message because you are subscribed to the Google Groups "Chrome Built-in AI Early Preview Program Discussions" group.

Bryan Dhaniel

unread,
Sep 30, 2025, 9:57:36 PM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Thomas Steiner, Chrome Built-in AI Early Preview Program Discussions, Bryan Dhaniel
I've done the tests. There is a clear difference in the API response between Chrome Stable (Test) and Chrome Canary.

1. On Chrome Stable (test):
The console log shows that the API is only returning `correctedInput` and is missing the `corrections` array entirely.
* Log snippet: `Raw proofread result: {correctedInput: 'I am full of typos.'}`

2. On Chrome Canary:
Everything works perfectly. The console log confirms the API is returning the complete object with both `correctedInput` and the `corrections` array.
* Log snippet: `Raw proofread result: {correctedInput: 'I am full of typos.', corrections: Array(2)}`

3. On Chrome Stable(original):
It is stuck on download, when I run this
await Proofreader.availability({

  expectedInputLanguages: ['en'],
  correctionExplanationLanguage: 'en',
  includeCorrectionTypes: true,
  includeCorrectionExplanations: true,
});

in test chrome = available
in original chrome = downloading

Bryan Dhaniel

unread,
Sep 30, 2025, 11:04:11 PM9/30/25
to Chrome Built-in AI Early Preview Program Discussions, Yusuf Rawat, Bryan Dhaniel, Chrome Built-in AI Early Preview Program Discussions
Thank you for the clarification
Reply all
Reply to author
Forward
0 new messages