Skip to content

Conversation

@captainbrosset
Copy link
Contributor

@captainbrosset captainbrosset commented Nov 19, 2025

Related PRs:

Rendered article for review:


Other articles

AB#60242099

@mikehoffms mikehoffms added in-progress cat: webplatform Web Platform-related content. labels Nov 20, 2025
@mikehoffms mikehoffms changed the title Proofreader API New article "Correct grammar with the Proofreader API" Nov 20, 2025
ms.service: microsoft-edge
ms.date: 01/30/2026
---
# Correct grammar, spelling, and punctuation errors in text with the Proofreader API
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

too much detail crammed into title, dup'ing the purpose of 1st sentence.

Design terse title in conjunction with verbose 1st sentence.

Image

ms.service: microsoft-edge
ms.date: 01/30/2026
---
# Correct grammar, spelling, and punctuation errors in text with the Proofreader API
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# 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
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

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.

Suggested change
## 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).
Copy link
Collaborator

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).
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

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:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.


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).
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:

![The Proofreader demo page with settings and a Proorfread button](./proofreader-api-images/proofreading.png)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
![The Proofreader demo page with settings and a Proorfread button](./proofreader-api-images/proofreading.png)
![The Proofreader demo page, containing settings and a Proofread button](./proofreader-api-images/proofreading.png)

![The Proofreader demo page with settings and a Proorfread button](./proofreader-api-images/proofreading.png)

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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* [/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:
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.**:
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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**:


![Status indicator showing model downloading progress](./proofreader-api-images/model-downloading.png)

After the model has downloaded, the information banner reads **On-device API and model available**, indicating that the API and model can be used:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:

![Status indicator showing API and model ready](./proofreader-api-images/api-and-model-ready.png)
Copy link
Collaborator

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"

Suggested change
![Status indicator showing API and model ready](./proofreader-api-images/api-and-model-ready.png)
![Status indicator showing the foo API and indicating "model is ready"](./proofreader-api-images/api-and-model-ready.png)


![Status indicator showing API and model ready](./proofreader-api-images/api-and-model-ready.png)

If the model download doesn't start, restart Microsoft Edge and try again.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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"]`. |
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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:
Copy link
Collaborator

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

Suggested change
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:
Copy link
Collaborator

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
Suggested change
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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// 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.
Copy link
Collaborator

@mikehoffms mikehoffms Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* **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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* **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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cat: webplatform Web Platform-related content.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants