Can a Grammar Checker Extension Read Everything You Type? Permissions and Text Processing Explained
Permissions tell you what an extension is capable of. They do not tell you what it does. Knowing the difference is the whole skill, and it takes about three minutes per extension.
Tested October 2026 on Chrome, Edge and Firefox (Windows 11)
Free · works in Chrome, Edge and Firefox
On this page
- The short answer
- Capability is not collection
- Where the text actually goes
- The Network tab test
- Auditing permissions yourself
- What the common permissions actually grant
- Set site access to 'On click'
- The other half: what you put in the field
- Red flags worth acting on
- Where One Shot Fix stands
- Where this breaks down
- Read the policy, then run the test
- Frequently asked questions
The short answer
Yes, a grammar checker extension can have the technical ability to read everything you type on any page. Most of them request site access that grants exactly that, because they cannot know in advance which field you will want corrected next. Whether a given extension actually reads everything you type is a different question, and the permissions list will not answer it.
The useful move is to stop treating permissions as a verdict and start treating them as a description of the blast radius. Then answer the second question with evidence: when is text captured, where does it go, and can you watch it happen.
| Question | Where the answer lives | Why it matters |
|---|---|---|
| What could it do? | Permissions dialog and Details page | Sets the worst case. Necessary but not sufficient. |
| When does it capture text? | The extension's own documentation, plus observable behaviour | The difference between a click-initiated request and a keystroke listener is the difference between a tool and a recorder |
| Where does the text go? | Privacy policy, and the Network tab while you use it | Local processing, the vendor's own API, and a third-party model provider are three different risk profiles |
| How long is it kept? | Privacy policy — read the retention section, not the headline | 'We don't sell your data' says nothing about how long your client's contract terms sit on a server |
Verified October 2026 on current stable Chrome, Edge and Firefox, Windows 11. The audit steps in this article were run in all three browsers.
Capability is not collection
This is the distinction most articles on extension privacy skip, and skipping it makes the whole subject unactionable. Two extensions can hold identical permissions and behave completely differently.
A permission is a grant of ability. 'Read and change all your data on all websites' means the browser will let this extension inspect and modify any page you visit, if its code chooses to. It does not mean the code does. Conversely, an extension with almost no permissions that adds a single keystroke logger to the one field it can reach is worse than a broadly-permissioned tool that only ever reads a field when you click its icon.
Why does a grammar checker need broad site access at all? Because it cannot predict where you will write. A correction tool that only worked on Gmail would be useless to the person who needs it in a job application form, a Notion page or a support desk widget. So the category as a whole converges on broad access, which means broad access on its own tells you nothing about a specific product. What tells you something is the capture model.
| What triggers a read | Click-initiated | Continuous |
|---|---|---|
| What triggers a read | You click the extension's icon | You type, or the page loads a field |
| What is read | The focused field, at that moment | Potentially every keystroke in every field |
| Network traffic | One request per correction you ask for | Requests you did not ask for, possibly as you type |
| How to spot it | Nothing appears in the Network tab until you click the icon | Requests appear while typing, before you invoke anything |
| Password fields | Should never be touched | The main risk case — a keystroke listener does not care what the field is for |
| Which is One Shot Fix | This one. Text is read from the focused field when you click the toolbar icon. | Not this one |
The Network-tab test described here is the reliable way to tell these apart, and it takes about a minute. Steps are below.
Where the text actually goes
Here is our own flow, described as it is rather than as it sounds best. This is a diagram of One Shot Fix, verified by the developer who built it, not a generic illustration.
[ You click the toolbar icon ]
|
| nothing is read before this point
v
[ Extension reads the focused field's text ]
|
v
[ HTTPS request to the One Shot Fix backend API ]
|
| service providers may be involved
| in operating the correction feature
v
[ Correction is produced ]
|
v
[ Corrected text returned to the extension ]
|
v
[ Popup shows you the corrected text ]
|
| you decide
v
[ You click Apply ] ---> field is overwritten
(no undo)| Hop | What happens | What you control |
|---|---|---|
| Toolbar click | This is the trigger. Nothing is captured before it. | Everything. If you do not click, nothing is sent. |
| Field read | The extension reads the value of the focused field — the input, textarea or contenteditable region your cursor is in. | Which field has focus. That is why isolating text in a scratch field works. |
| Request to our backend | The text is sent over HTTPS to our own backend API. It is not corrected inside the browser. | Whether to send it at all. There is no offline mode. |
| Providers | Our privacy policy states that text may be processed by service providers used to operate the correction feature. | Nothing at this hop. This is the reason not to submit text your organisation restricts from third-party processing. |
| Popup | The corrected text is shown to you in a popup before anything is written. | The decision. You can decline and nothing changes. |
| Apply | The field is overwritten with the corrected text. There is no undo after this point. | Whether to Apply, and keeping your own copy of the original beforehand. |
The Network tab test
This is the single most valuable thing in the article, because it produces evidence rather than opinions and it works on any extension in any browser.
Open a page with a plain text field
Any page. A blank email draft works well because you control what goes in it.
Open DevTools and switch to the Network tab
F12 in Chrome, Edge and Firefox on Windows. Click Network. Leave it open and empty.
Type something distinctive, and do not touch the extension
Use a token you can search for, like zebraquartz-4417. Type a full sentence containing it. Now look at the Network tab.
If requests fire while you type, that is a continuous capture model. Check whether your token appears in any request payload. This is the test that separates a tool from a recorder, and most people never run it.
Clear the log, then click the extension's icon
Now a request should appear. Click it and read the Headers and Payload tabs. You should see your own text going to a specific host.
Note the host
Is it the vendor's own domain, or a third-party model provider? Both are legitimate architectures. What is not legitimate is a privacy page that names one while the traffic goes to the other.
Filter by your token to check for extras
Use the Network tab's filter box to search for zebraquartz-4417. Every request containing it is a request that carried your text. If there is more than one, you now know.
Two caveats so you do not draw the wrong conclusion. Some extensions batch or debounce, so a request may appear a few seconds after typing rather than with each keystroke — watch for a beat before concluding. And some traffic goes through a service worker, which the Network tab does show, but if you see nothing at all while the extension visibly works, check that you are looking at the right frame in a page with iframes.
Auditing permissions yourself
Three places to look, in each browser. None of this requires reading source code.
| Browser | Install dialog | After install | Site access control |
|---|---|---|---|
| Chrome | Shown automatically when you add the extension | chrome://extensions → turn on Developer mode → Details → Permissions | Details page → 'Site access' → choose On click, On specific sites, or On all sites |
| Edge | Shown automatically, including for Chrome Web Store installs | edge://extensions → Developer mode → Details | Details page → 'Site access' |
| Firefox | Shown automatically, and Firefox lists data the extension may access | Menu → Add-ons and themes → the extension → Permissions tab | The Permissions tab lets you remove access for specific sites. Firefox also has a stricter default: optional site access is requested at run time. |
Verified October 2026 on current stable Chrome, Edge and Firefox, Windows 11. Menu labels move between versions; the internal URLs (chrome://extensions, edge://extensions, about:addons) are stable.
There is also a fourth place, which is the store listing. The Chrome Web Store and Firefox Add-ons both publish a privacy or data-use section where the developer declares what the extension collects. These declarations are self-reported, so treat them as a claim to check against the Network tab rather than as a finding.
What the common permissions actually grant
| Permission | What it grants | Reasonable for a grammar checker? |
|---|---|---|
| activeTab | Temporary access to the current tab, granted when you invoke the extension. Expires on navigation. | Yes. This is the narrow, well-behaved choice, and a tool that only needs it has a genuinely small blast radius. |
| <all_urls> / host permission for all sites | The ability to read and modify any page you visit, at any time the extension's code runs. | Common, because the tool cannot predict where you write. Broad capability; judge it by the capture model, not by the grant. |
| scripting | The ability to inject scripts into pages. | Yes, for anything that has to write corrected text back into a field. Not alarming on its own. |
| storage | Small local key-value storage in the browser profile. | Yes, typically for settings such as a protected-words list. It is local and does not sync anywhere by itself. |
| contextMenus | The ability to add entries to the browser's right-click menu. | Only if the tool actually offers a right-click action. One Shot Fix does not request a right-click entry; it is invoked from the toolbar. |
| clipboardRead / clipboardWrite | Reading and writing the system clipboard. | Sometimes, for copy-the-result features. clipboardRead is the one to think about, because it can expose whatever you last copied from elsewhere. |
| tabs | Reading tab metadata: URLs and titles of your open tabs. | Rarely needed for correction. A grammar tool that asks for this deserves a question. |
| history / bookmarks | Reading your browsing history or bookmarks. | No. There is no grammar-checking reason for either. |
| webRequest / webRequestBlocking | Observing or modifying network requests the page makes. | No, not for correction. This is a powerful interception capability. |
| cookies | Reading and writing cookies for sites you visit. | No. Nothing about correcting a sentence requires session cookies. |
| unlimitedStorage / nativeMessaging | Unbounded local storage; communication with a program installed on your computer. | No. nativeMessaging in particular means code runs outside the browser sandbox. |
Permission names are Chrome's Manifest V3 naming. Firefox uses a similar but not identical set, and presents them to users in plainer language.
Set site access to 'On click'
If you take one action after reading this, take this one. It converts a broad capability into a narrow one without uninstalling anything, and it works on any extension in Chrome and Edge.
Open the extension's Details page, find Site access, and choose 'When you click the extension' instead of 'On all sites'. The extension's code can then only run on a page after you have invoked it there. Background scripts and content scripts that would otherwise be present on every page you visit are not injected until you act.
The trade-off is real but small: you click the icon to activate it on each new site, and on some sites an extension that relies on being loaded at page start may need a reload after you first click it. For a correction tool that is invoked deliberately anyway, that is almost no cost at all.
Firefox does the same thing differently. Its default is stricter — an extension with optional host permissions asks for access at run time, per site — and you can remove access for individual sites from the Permissions tab. Firefox also lets you set an extension to run only when you click it, or only in private windows, or not in private windows at all.
| Setting | What it means | Use it when |
|---|---|---|
| On all sites | The extension can run on every page, always | You use it constantly and trust the capture model |
| On specific sites | Runs only on the origins you list | You only ever correct text in two or three places, such as Gmail and your CRM |
| When you click the extension | Cannot run until you invoke it on that page | The default we would recommend for almost everyone |
| In private / Incognito: allowed | Runs in private windows too | Only if you actually want it there. Off by default in Chrome and Edge, which is the right default. |
The other half: what you put in the field
Permissions control what an extension can reach. They do not control what you hand it. The most common privacy mistake with a writing tool is not installing the wrong extension — it is correcting a field that contains more than the sentence you cared about.
A field that contains more than you meant to send
Hi Marta, re the Zephra renewal — their MSA caps liability at 240,000 EUR and the DPA annex has the old sub-processor list from before the Kestrel migration. Can you redraft clause 9 so it effect the change we discussed, and CC Anesh Varekal but not the client. The account number is 4417-ZQ-88 and the cutover is 12 March not 12 April.
Hi Marta, re the Zephra renewal — their MSA caps liability at 240,000 EUR and the DPA annex has the old sub-processor list from before the Kestrel migration. Can you redraft clause 9 so that it effects the change we discussed, and copy in Anesh Varekal but not the client. The account number is 4417-ZQ-88 and the cutover is 12 March, not 12 April.
What changed. The grammar fixes here are small and correct — 'so that it effects', 'copy in' instead of the ambiguous 'CC', a comma before 'not 12 April'. But look at what was submitted to get them: a liability cap, a contract clause number, a named individual to be deliberately excluded, an internal account number, and a date discrepancy that reveals a live dispute. Every token of that went to a correction service. The right move was never a better permission setting — it was copying the one sentence that needed fixing into a scratch field and correcting it there.
Red flags worth acting on
- Requests fire before you invoke the extension. That is a continuous capture model, whatever the privacy page says.
- The privacy policy names one processor while the Network tab shows traffic to a different host.
- 'Local processing' or 'your text never leaves your device' alongside correction quality that requires a large model. The claim and the capability are incompatible.
- history, bookmarks, cookies, webRequest or nativeMessaging permissions on a writing tool.
- A retention section that is shorter than the marketing section, or that answers 'do you sell data' without answering 'how long do you keep it'.
- No named contact for data questions, or a support address that has never replied.
- A store listing with no privacy tab filled in at all. Both major stores require one; an empty declaration is a choice.
- The extension updated recently and the permissions changed without a note. Re-check the Details page after any update, not only at install.
Where One Shot Fix stands
Stated plainly, including the parts that are less flattering, because a privacy summary that only lists the good items is not a summary.
| Question | Answer |
|---|---|
| When is text captured? | When you click the toolbar icon. Nothing is read before that. |
| What is captured? | The text in the focused field — the input, textarea or contenteditable region your cursor is in. Not a selection, not the whole page. |
| Is it processed in the browser? | No. Text is sent over HTTPS to our own backend API. |
| Are third parties involved? | Our privacy policy states that text may be processed by service providers used to operate the correction feature. |
| Is it zero-retention? | No. The policy commits to keeping submitted text only as long as needed to provide the correction feature and maintain the service. |
| Is your data sold? | The policy states that we do not sell your personal information. |
| Do you need an account? | No. There is no account and no payment information collected through the website. |
| Which languages? | English only. |
| Can you undo a correction? | No. Once you click Apply, the field is overwritten and there is no undo. |
| Which browsers? | Chrome, Microsoft Edge and Firefox. |
| Where is this written down? | On our privacy page, which is the authoritative version and takes precedence over any summary here. |
Summarised from our privacy policy in October 2026. If this table and the privacy page ever disagree, the privacy page is correct.
Where this breaks down
Where this breaks down
You cannot verify another developer's backend from the outside. The Network tab shows what leaves your browser and where it goes. It does not show what happens after that.
Workaround: Treat the privacy policy as a contract rather than a description, and prefer vendors whose policy names a contact and a retention period. For regulated data, get the answer in writing before you use the tool.
Store privacy declarations are self-reported. An inaccurate one is not caught by the store.
Workaround: Cross-check the declaration against the Network tab. That comparison is the audit, and it takes a minute.
One Shot Fix has no offline or local-only mode. If you cannot send the text, you cannot use it.
Workaround: Use your browser's built-in Basic spell check for text that must not leave the device, and accept that it will only catch misspellings.
The extension corrects the whole focused field, so it submits more than the sentence you were thinking about.
Workaround: The scratch-field habit. Isolate the sentence before you correct it.
Permissions can change in an update without you re-reading them.
Workaround: Re-open the Details page after any extension update, and set site access to 'On click' so a widened permission grant has a smaller effect.
Read the policy, then run the test
Frequently asked questions
Can a grammar extension read what I type in password fields?
An extension with access to all sites has the technical capability to read any field on a page. Browsers mark password fields with type=password and well-behaved extensions exclude them, but capability and behaviour are separate questions. Run the Network tab test on a page with a password field and type a distinctive token into it; if that token appears in a request before you invoked the extension, you have your answer.
Does One Shot Fix process text on my device?
No. When you click the toolbar icon, the text in the focused field is sent over HTTPS to our backend API and the corrected text is returned. There is no offline or local-only mode. Our privacy policy also states that service providers may be involved in operating the correction feature.
Is text retained after the correction?
Our policy commits to keeping submitted text only for as long as needed to provide the correction feature and maintain the service. That is a purpose limit, not zero retention, and it is not a promise to delete on response. Read the retention section of the privacy page for the authoritative wording.
What does 'Read and change all your data on all websites' mean?
It means the browser will let the extension inspect and modify any page you visit, if its code chooses to. It describes capability, not behaviour. Most grammar checkers request it because they cannot predict which site you will write on. Judge a specific tool by when it captures text and what it sends, not by the grant alone.
How do I limit an extension to sites I choose?
In Chrome and Edge, open the extension's Details page and set Site access to 'When you click the extension' or 'On specific sites'. In Firefox, use the Permissions tab in about:addons to remove access for individual sites. Setting it to 'On click' is the single most useful privacy control available.
Which permissions should make me uninstall a grammar checker?
history, bookmarks, cookies, webRequest or webRequestBlocking, and nativeMessaging have no legitimate use in a writing tool. Broad site access is a category norm and is not by itself a reason to uninstall. Requests firing before you invoke the extension are a stronger signal than any permission name.
Do permissions change when an extension updates?
They can. Browsers prompt before an update that adds a significant new permission, but not for every change. Re-open the Details page after updates rather than only at install.
Related guides
Chrome and browser tools · 11 min read
How to Correct Selected Text in Chrome Without Copying It Into Another App
Most grammar extensions correct the whole field, not the text you selected. Here is what each option actually does, including the one-sentence workaround that never leaves the page.
Chrome and browser tools · 12 min read
How to Check Grammar in Selected Text in Microsoft Edge
Most extensions correct the whole field, not your selection. In Edge you have three real options, and knowing which one to reach for depends on where the text is and how much of it you want changed.
Platform guides · 12 min read
How to Fix Grammar in Gmail Without Changing the Tone of Your Email
Gmail's composer is a rich-text field, which makes it one of the better places to correct an email and one of the easier places to lose your formatting. Here is how to do both safely.
Written by Raheel Ashraf, builds and maintains one shot fix. Tested October 2026 on Chrome, Edge and Firefox (Windows 11). Last updated 7 October 2026.
Write naturally. Send clean.
Correct prompts, emails and messages in the browser field you are already typing in. Free to install.