-
Notifications
You must be signed in to change notification settings - Fork 547
New article "Correct grammar with the Proofreader API" #3647
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
| ms.service: microsoft-edge | ||
| ms.date: 01/30/2026 | ||
| --- | ||
| # Correct grammar, spelling, and punctuation errors in text with the Proofreader API |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| ms.service: microsoft-edge | ||
| ms.date: 01/30/2026 | ||
| --- | ||
| # Correct grammar, spelling, and punctuation errors in text with the Proofreader API |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| # Correct grammar, spelling, and punctuation errors in text with the Proofreader API | |
| # Correct grammar and spelling with the Proofreader API |
alts:
- Correct grammar and spelling with the Proofreader API
- Correct grammar, spelling, and punctuation errors in text with the Proofreader API
- Correct grammar and spelling in text with the Proofreader API
|
|
||
|
|
||
| <!-- ====================================================================== --> | ||
| ## Alternatives to and benefits of the Proofreader API |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Too many different topics or distinct concerns in the heading.
Change to h2 "Benefits" section + h2 or h4 "alternatives" section.
Use separation of concerns, per section.
What's the clear message, of the heading?
Contradictory topics/ messages conveyed: "How to avoid using X, and, Benefits of X." Focus only on marketing the benefits, first. Then separately, afterwards, alternatives. Concept here is:
"Decide which API to use; pros and cons". - That's an alternative design for the heading.
| ## Alternatives to and benefits of the Proofreader API | |
| ## Decide which API to use | |
| ## Benefits of the Proofreader API | |
| #### Benefits of the Proofreader API | |
| ... | |
| ## Alternatives to the Proofreader API | |
| #### Alternatives to the Proofreader API |
| <!-- ====================================================================== --> | ||
| ## The Phi-4-mini model | ||
|
|
||
| The Proofreader API uses the Phi-4-mini model — a powerful small language model that excels at text-based tasks — built into Microsoft Edge. To learn more about Phi-4-mini and its capabilities, see the model card at [microsoft/Phi-4-mini-instruct](https://huggingface.co/microsoft/Phi-4-mini-instruct). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
avoid nested thoughts. make 2 sentences.
| <!-- ------------------------------ --> | ||
| #### Disclaimer | ||
|
|
||
| Like other language models, the Phi family of models can potentially behave in ways that are unfair, unreliable, or offensive. To learn more about the model's AI considerations, see [Responsible AI Considerations](https://huggingface.co/microsoft/Phi-4-mini-instruct#responsible-ai-considerations). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
confusing at "the model's AI considerations", what does that mean?
Ans: worries & concerns re: AI.
The link text is clear. The redundant lead-in introduces confusion.
| <!-- ------------------------------ --> | ||
| #### Hardware requirements | ||
|
|
||
| The Proofreader API developer preview is intended to work on devices with hardware capabilities that produce SLM outputs with predictable quality and latency. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The Proofreader API developer preview is intended to work on devices with hardware capabilities that produce SLM outputs with predictable quality and latency. | |
| The Proofreader API developer preview is intended to work on devices that have hardware capabilities that produce Small Language Model (SLM) outputs that have predictable quality and latency. |
|
|
||
| The Proofreader API developer preview is intended to work on devices with hardware capabilities that produce SLM outputs with predictable quality and latency. | ||
|
|
||
| The Proofreader API is currently limited to: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add "Requires..." to each list item? maybe the lead-in is the problem and should say Requirements:. Compare sibling articles.
Per timeless docs, don't say "currently".
The lead-in is contradictory of some list items:
The Proofreader API is currently limited to: ... At least 20 GB available
|
|
||
| The Proofreader API developer preview is intended to work on devices with hardware capabilities that produce SLM outputs with predictable quality and latency. | ||
|
|
||
| The Proofreader API is currently limited to: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The Proofreader API is currently limited to: | |
| The Proofreader API has the following requirements: |
| <!-- ------------------------------ --> | ||
| #### Model availability | ||
|
|
||
| An initial download of the model will be required the first time a website calls a built-in AI API. You can monitor the model download by using the monitor option when creating a new Proofreader API session. To learn more, see [Monitor the progress of the model download](#monitor-the-progress-of-the-model-download), below. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| An initial download of the model will be required the first time a website calls a built-in AI API. You can monitor the model download by using the monitor option when creating a new Proofreader API session. To learn more, see [Monitor the progress of the model download](#monitor-the-progress-of-the-model-download), below. | |
| An initial download of the model is required the first time a website calls a built-in AI API. You can monitor the model download by using the monitor option when creating a new Proofreader API session. See [Monitor the progress of the model download](#monitor-the-progress-of-the-model-download), below. |
- corp style guide: favor present tense.
- https://developers.google.com/style/timeless-documentation
|
|
||
| 1. To check if your device meets the hardware requirements for the Proofreader API developer preview, open a new tab, go to `edge://on-device-internals`, and check the **Device performance class** value. | ||
|
|
||
| If your device performance class is **High** or greater, the Proofreader API should be supported on your device. If you continue to notice issues, please [file a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?template=proofreader-api.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If your device performance class is **High** or greater, the Proofreader API should be supported on your device. If you continue to notice issues, please [file a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?template=proofreader-api.md). | |
| If your device performance class is **High** or greater, the Proofreader API is expected to be supported on your device. If you continue to notice issues, please [file a new issue](https://github.com/MicrosoftEdge/MSEdgeExplainers/issues/new?template=proofreader-api.md). |
avoid such ambig use of 'should', are you directing me to support the API?
https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/s/should-vs-must - "Don't use should to indicate probability. If you can't make a definitive statement, use might, or rephrase.
alt wording ideas @captainbrosset ?
- "should" is confusing
- "expected" is a little awkward, but is clear and direct.
|
|
||
| The output is generated in the response section of the page: | ||
|
|
||
|  |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|  | |
|  |
|  | ||
|
|
||
| See also: | ||
| * [/built-in-ai/](https://github.com/MicrosoftEdge/Demos/tree/main/built-in-ai/) - Source code and Readme for the Built-in AI playgrounds demo. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * [/built-in-ai/](https://github.com/MicrosoftEdge/Demos/tree/main/built-in-ai/) - Source code and Readme for the Built-in AI playgrounds demo. | |
| * [/built-in-ai/](https://github.com/MicrosoftEdge/Demos/tree/main/built-in-ai/) - Readme and source code for the Built-in AI playgrounds demo. |
from experience: read the Readme first, before trying to run demo or view source code. But that was a different context:
In that other case, the article presented combined links like:
[the running demo] | [the Readme]
yet it was required that you read the Readme, and do some setup, before attempting to view the real Demo running. You could only see an empty demo page, until doing a step in the Readme.
| <!-- ------------------------------ --> | ||
| #### Check if the API is enabled | ||
|
|
||
| Before using the Proofreader API in your website's code, check that the API is enabled by testing the presence of the `Proofreader` object: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Before using the Proofreader API in your website's code, check that the API is enabled by testing the presence of the `Proofreader` object: | |
| Before using the Proofreader API in your website's code, check that the API is enabled, by testing for the presence of the `Proofreader` object: |
| <!-- ------------------------------ --> | ||
| #### Check if the model can be used | ||
|
|
||
| The Proofreader API can only be used if the device supports running the model, and once the language model and model runtime have been downloaded by Microsoft Edge. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The Proofreader API can only be used if the device supports running the model, and once the language model and model runtime have been downloaded by Microsoft Edge. | |
| The Proofreader API can only be used if the device supports running the model, and after the language model and model runtime have been downloaded by Microsoft Edge. |
https://learn.microsoft.com/en-us/style-guide/a-z-word-list-term-collections/o/once - "Don't use once as a synonym for after."
|
|
||
| The Proofreader API can only be used if the device supports running the model, and once the language model and model runtime have been downloaded by Microsoft Edge. | ||
|
|
||
| To check if the API can be used, use the API's `availability()` method: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| To check if the API can be used, use the API's `availability()` method: | |
| To check if the API can be used, use the `availability()` method: |
i think the context is pretty clear, i assume, that we're presenting each method that's in the API.
eg below, we don't say "the API's create() method", just "the create() method".
| <!-- ====================================================================== --> | ||
| ## See a working example | ||
|
|
||
| To see the Proofreader API in action, and review existing code that uses these APIs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| To see the Proofreader API in action, and review existing code that uses these APIs: | |
| To see the Proofreader API in action, and examine existing code that uses these APIs: |
don't say "review" when user has never seen something before and wants to view it for first time.
avoid see / see; this is a case where consistency feels like an awkward repeated same word (see / see would be distracting)
|
|
||
| 1. In Microsoft Edge Canary or Dev browser, open a tab or window and go to the [Proofreader API playground](https://microsoftedge.github.io/Demos/built-in-ai/playgrounds/proofreader-api/). | ||
|
|
||
| 1. In the information banner at the top, check the status: it initially reads **On-device API and model downloading.**: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 1. In the information banner at the top, check the status: it initially reads **On-device API and model downloading.**: | |
| 1. In the information banner at the top, check the status. The status initially reads **On-device API and model downloading**: |
|
|
||
|  | ||
|
|
||
| After the model has downloaded, the information banner reads **On-device API and model available**, indicating that the API and model can be used: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| After the model has downloaded, the information banner reads **On-device API and model available**, indicating that the API and model can be used: | |
| After the model has been downloaded, the information banner reads **On-device API and model available**, indicating that the API and model can be used: |
the model does not drive its own downloading (it sort of does)
|
|
||
| After the model has downloaded, the information banner reads **On-device API and model available**, indicating that the API and model can be used: | ||
|
|
||
|  |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
unclear link text: "Status indicator showing API and model ready"
|  | |
|  |
|
|
||
|  | ||
|
|
||
| If the model download doesn't start, restart Microsoft Edge and try again. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If the model download doesn't start, restart Microsoft Edge and try again. | |
| If the model doesn't start downloading, restart Microsoft Edge and try again. |
|
|
||
| The Proofreader API is only supported on devices that meet certain hardware requirements. For more information, see [Hardware requirements](#hardware-requirements), above. | ||
|
|
||
| 1. Optionally change the settings in the page, such as the text to proofread and the expected input language. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 1. Optionally change the settings in the page, such as the text to proofread and the expected input language. | |
| 1. Optionally change the content and settings in the page. For example, modify the text to proofread, or change the expected input language. |
doubt it's a "setting". Clarify: do you SELECT an input lang, or type-in to specify the input lang?
| | **Option** | **Description** | | ||
| | --- | --- | | ||
| | `monitor` | A function that's used to monitor the progress of the model download. See [Monitor the progress of the model download](#monitor-the-progress-of-the-model-download), below. | | ||
| | `expectedInputLanguages` | An array of strings listing the languages which the input text is expected to contain. For example: `["en"]`. | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| | `expectedInputLanguages` | An array of strings listing the languages which the input text is expected to contain. For example: `["en"]`. | | |
| | `expectedInputLanguages` | An array of strings. Each string is a language that the input text is expected to contain. For example: `["en"]`. | |
@captainbrosset pls list more than 1 item in the array
| <!-- ---------- --> | ||
| ###### Monitor the progress of the model download | ||
|
|
||
| You can follow the progress of the model download by using the `monitor` option. This is useful when the model has not yet been fully downloaded onto the device where it will be used, to inform users of your website that they should wait. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| You can follow the progress of the model download by using the `monitor` option. This is useful when the model has not yet been fully downloaded onto the device where it will be used, to inform users of your website that they should wait. | |
| You can follow the progress of the model download by using the `monitor` option. This is useful when the model has not yet been fully downloaded onto the device where it will be used, to inform users to wait. |
point got obscured by excess words
| <!-- ------------------------------ --> | ||
| #### Run the Proofreader API | ||
|
|
||
| To generate text, by using the Proofreader API, after you have created the corresponding model session, use the `session.proofread()` method. This method returns a promise that resolves once the Proofreader API has finished generating corrected text. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| To generate text, by using the Proofreader API, after you have created the corresponding model session, use the `session.proofread()` method. This method returns a promise that resolves once the Proofreader API has finished generating corrected text. | |
| To generate revised text by using the Proofreader API, after you have created the corresponding model session, use the `session.proofread()` method. This method returns a promise that resolves after the Proofreader API has finished generating corrected text. |
style guide don't use once as syn for after
| <!-- ------------------------------ --> | ||
| #### Use the result of the Proofreader API | ||
|
|
||
| The `session.proofread()` method returns a promise that resolves to an object with the following properties: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style guide favor not using 'with' wildcard
| The `session.proofread()` method returns a promise that resolves to an object with the following properties: | |
| The `session.proofread()` method returns a promise that resolves to an object that has the following properties: |
| | `correctedInput` | The corrected text, as a string. | | ||
| | `corrections` | An array of correction objects. | | ||
|
|
||
| The properties of the correction objects are listed below: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- don't doc the docs; doc the tech
- favor singular
| The properties of the correction objects are listed below: | |
| A correction object has the following properties: |
| // AbortController signal object by using the signal option. | ||
| const session = await Proofreader.create({ signal: controller.signal }); | ||
|
|
||
| // Later, perhaps when the user interacts with the UI, destroy the session by |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| // Later, perhaps when the user interacts with the UI, destroy the session by | |
| // Later, such as when the user interacts with the UI, destroy the session by |
|
|
||
| * **Network independence:** Beyond the initial model download, there's no network latency when prompting the model, and the model can also be used when the device is offline. | ||
|
|
||
| * **Improved privacy:** The data input to the model never leaves the device and is not collected to train AI models. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * **Improved privacy:** The data input to the model never leaves the device and is not collected to train AI models. | |
| * **Improved privacy:** The data that's input to the model never leaves the device, and isn't collected (such as to train AI models). |
|
|
||
| * **Shared one-time cost:** The browser-provided model is downloaded when the API is called for the first time, and then the model is shared across all websites that run in the browser, reducing network costs for the user and developer. | ||
|
|
||
| * **Simplified usage for web developers:** The built-in model can be run by using straightforward web APIs and doesn't require AI/ML expertise or using third-party frameworks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * **Simplified usage for web developers:** The built-in model can be run by using straightforward web APIs and doesn't require AI/ML expertise or using third-party frameworks. | |
| * **Simplified usage for web developers:** The built-in model can be run by using straightforward web APIs, and doesn't require AI/ML expertise or using third-party frameworks. |

Related PRs:
Rendered article for review:
/web-platform/proofreader-api.mdOther articles
TOC
~/toc.ymlPrompt a built-in language model with the Prompt API
/web-platform/prompt-api.mdSummarize, write, and rewrite text with the Writing Assistance APIs
/web-platform/writing-assistance-apis.mdAB#60242099