Proofkit

Proofkit guide

A Chrome extension that checks spelling consistency, your client's style rules and typos, and fixes them in one click.

It also inserts snippets and formats source URLs.

※ It never rewrites your text on its own.


What it does / what it does not

Cost
✅ Spelling consistencyFinds words your draft spells two ways — *email* / *e-mail*, *GitHub* / *Github*, *PDF* / *pdf*, *organize* / *organise* — then unifies them once you pick which one to keep. Links, code and file names are never touchedFree, no setup
✅ Client rulesChecks banned phrases, length and required keywords per clientFree
✅ AI proofreadingPoints out typos, missing letters and stray charactersYour own API key (see below)
✅ SnippetsInserts text you write often in one clickFree
✅ Source URLsTurns a list of URLs into “Site name │ Publisher │ Article title”Free, needs access to each site
❌It does not rewrite your prose or grade your style
❌It does not fact-check

The spelling and client-rule checks need no internet connection — everything happens on your own computer. Only AI proofreading uses an outside service.

Free and paid

The free version covers the basics. The paid version raises the limits on how much you can save, for people juggling several clients at once.

FreePaid
Spelling check and bulk apply (built-in dictionary)No limitNo limit
AI proofreadingNo limitNo limit
SnippetsUp to 3 savedUnlimited
Client presets (style guides)1 savedUnlimited
Adding your own entries to the dictionary—○
Source URL formatting3 URLs at a timeUnlimited
Export and import settings (move or share)—○

Buying the paid version and entering your license

  1. At the top of the settings page, under “Your plan”, click “Buy the paid version” to open the purchase page (a one-time payment, not a subscription)
  2. Once the payment goes through, you receive an email containing your license key
  3. Back under “Your plan”, paste the key into “License key (if you bought the paid version)” and click “Check license”
  4. When “License confirmed.” appears and the plan reads “Paid”, you are done

1. Installing

From the Chrome Web Store

The icon appears in your toolbar. Go on to “2. First-time setup” below.

From a zip file (development build)

  1. Unzip it and put the folder somewhere sensible (do not delete the unzipped folder — the extension goes with it)
  2. Type chrome://extensions in the address bar
  3. Turn Developer mode on, top right
  4. Click Load unpacked, top left, and choose the unzipped folder
  5. The icon appears in the toolbar

2. First-time setup

Open it from “Settings” at the top right of the side panel. You can set up AI proofreading, client presets and the spelling dictionary here. The spelling check works with no setup at all.

Click a heading to open that part.

⓪ Language you write in

Choose the language of the articles you write. The spelling dictionary, AI proofreading, the sample snippets and the source URL format all follow it.

LanguageWhat the dictionary covers
Englishcolor / colour, organize / organise, website / web site, login / log-in, GitHub / Github and so on (249 groups)
Portuguêsação / acção, contato / contacto, e-mail / email and so on (118 groups)
日本語Japanese spelling variants (75 groups)

This is separate from your browser language. If you write English on a Japanese Chrome, choose “English” here (the initial value is guessed from the browser language).

Switching keeps your settings for the other language — each one is saved separately.

Length is counted differently per language too. English and Português count words; Japanese counts characters. The minimum and maximum in a client preset use whichever unit applies.

Spelling region

Under the language you will find “Spelling region”.

LanguageRegionsExamples of the default target
EnglishAmerican English (US) / British English (UK)color ↔ colour, organize ↔ organise, center ↔ centre
PortuguêsPortuguês do Brasil (pt-BR) / Português europeu (pt-PT)usuário ↔ utilizador, registro ↔ registo, contato ↔ contacto

This only switches which spelling is preferred by default. The dictionary itself does not change, and you can still choose a different target for any single entry from the dropdown in the side panel.

When you switch, the dictionary on screen is re-pointed at that region as well (entries you added yourself are left alone). Press “Save” afterwards.

① AI proofreading: choosing an AI (optional)

Pick one under “AI service”.

ServiceStepsCost
Anthropic (Claude)Paste your API key → choose a model from the dropdownPay as you go
OpenAIPaste your API key → “Fetch model list” → choose from the dropdownPay as you go
Google GeminiSamePay as you go
GroqSamePay as you go
Ollama (on your own computer)Start the app → “Fetch model list” → choose from the dropdownFree
LM Studio (on your own computer)SameFree
Other (OpenAI-compatible server)Enter the endpoint URL → same—

You do not have to type model names. Pressing “Fetch model list” fills the dropdown with the models that service actually offers (with Ollama or LM Studio, only the ones you have pulled). Choose “Not listed / type it myself” only when you want something that is not there.

A link to the service's key page appears under the input once you pick a service. Where your text is sent is always shown on screen (for example Sends to: https://api.groq.com/openai/v1).

If you choose Anthropic, there is nothing to fetch — the default claude-haiku-4-5 is plenty.

If you choose Ollama or LM Studio, start that app first, then press “Fetch model list”. Everything stays on your machine, so it costs nothing and your text never leaves the device.

Saving anything other than Anthropic will ask “Allow access to this site?”. Allow it — that permission is what lets Proofkit reach the service.

② Client presets (style guides)

Save each client's rules and they are checked automatically.

Use “+ Add a client” to make a card per client, then switch between them under “Client preset” in the side panel.

Phrases to avoid can carry their replacement

One per line. Write an arrow and the phrase becomes fixable on the spot.

guaranteed
utilise → use
in order to → to

A line without an arrow (“guaranteed”) is flagged only. A line with one gets an “Apply here” button and joins “Apply all suggestions”. →, -> and => all work.

When you need “Preferred spelling for this client”

Your dictionary is a single setting for all your work, and its preferred spellings follow the
spelling region you picked (US or UK). Some clients disagree with it. List only those words here.

organise
colour
judgement

While that client is selected, those groups flip to the spelling you listed.
The dictionary itself is not rewritten — switch to another client and it goes back.

Anything you leave out behaves as before. You do not have to list everything — only where the
client disagrees with your spelling region.

Only expressions that are in the spelling dictionary can be set here. To switch an expression that is not in the dictionary per client, add it to the dictionary first. Capitalisation (Web / WEB) and
full-width characters are judged without consulting the dictionary, so listing them here changes
nothing. If either form is fine on this job, list the word under “Spellings to skip for this client”.

③ Snippets

Delivery notes, replies about revisions, daily reports — anything you write the same way every time. Save it once and insert it in one click from “Insert a snippet” in the side panel. Samples are included.

You can use these in the text:

NotationWhat gets inserted
{{date}}Today's date (2026/07/27)
{{time}}The current time (14:05)
{{cursor}}Where the cursor should land afterwards

The snippet goes into the field you are typing in. Click where you want it first, then choose the snippet.

In article editors (WordPress, note and so on), multi-line snippets arrive like this:

In the snippetIn the editor
A single line breakA line break inside the same paragraph (like Shift+Enter)
A blank line (two line breaks)A new paragraph

A line break is always added at the end of what you insert, so you can carry straight on typing (nothing extra is added if the snippet already ends with one).

{{cursor}} works within a paragraph. If a blank line split the text into separate paragraphs, the cursor stays at the end.

④ Source URL format

This turns the URLs you used into a consistent line such as “Site name │ Publisher │ Article title”. You can change the shape in the settings.

NotationWhat goes in
{{siteName}}The site name (og:site_name → the tail of the page title → the domain, in that order)
{{publisher}}The publisher named on the page (many sites do not expose this, so you can type it in)
{{articleTitle}}The article title
{{URL}} {{domain}}The URL / the domain
{{publishedDate}} {{accessedDate}}When the page was published / when you fetched it

To use it, paste the URLs into “Format source URLs” in the side panel and press “Fetch details for the URLs”. Anything that could not be found is left as a highlighted empty box for you to fill in. Finish with “Copy all” and paste it into your draft.

Each page has to be read, so a site you have not used before will ask for access. Only the sites you pasted are involved.

⑤ Spelling dictionary

249 groups are included from the start for English. They cover:

KindExamples
-ize / -iseorganize / organise, recognize / recognise, analyze / analyse
-or / -ourcolor / colour, favorite / favourite, behavior / behaviour
-er / -recenter / centre, theater / theatre, fiber / fibre
Doubled consonantstraveled / travelled, canceled / cancelled, enroll / enrol, fulfill / fulfil
-og / -oguecatalog / catalogue, dialog / dialogue, analog / analogue
Other spellingsgray / grey, defense / defence, mold / mould, skeptic / sceptic, judgment / judgement
Style choicestoward / towards, among / amongst, while / whilst, percent / per cent
Web termswebsite / web site, webpage / web page, email / e-mail, OK / okay, FAQ / F.A.Q.
Hyphens and compoundslogin / log-in, setup / set-up, backup / back-up, popup / pop-up, dropdown / drop-down, ebook / e-book, username / user name, homepage / home page, screenshot / screen shot, nonprofit / non-profit
Product namesGitHub / Github, WordPress / Wordpress, JavaScript / Javascript, YouTube / Youtube, LinkedIn / Linkedin, PayPal / Paypal, iPhone / iphone, Wi-Fi / wifi, Mailchimp / MailChimp
AcronymsPDF / pdf, URL / url, API / api, HTML / html, CSS / css, JSON / json, XML / xml, SQL / sql, SEO / seo, SaaS / saas

Product names whose lower-case form is an ordinary word are left out on purpose — *Windows* /
*windows*, *Go* / *go*, *Google* / *google* (“just google it”), *Adobe* / *adobe*, *Twitter* /
*twitter*. Unifying those would wreck the sentence. If a client needs one of them, put it in
Phrases to avoid on the preset instead (for example windows → Windows).

Links and code are never touched. A URL, a file path, an email address, a file name and
anything inside backticks or a fenced code block are left exactly as written, so
https://github.com/acme and type="text/javascript" survive a bulk apply.

The dictionary reports mixtures, not individual mistakes: if the whole article says *Github*,
nothing is flagged. To rule a spelling out every time, use Phrases to avoid with an arrow.

Two-word verbs are left alone. "log in", "set up", "back up", "sign up" and "check out" are
verbs and stay open; only the noun forms (login, setup) are in the dictionary, so *Please log in*
is never rewritten. For the same reason the dictionary leaves out pairs where the hyphen is
grammar rather than spelling — *a long-term plan* but *in the long term*, *an everyday task* but *I
do it every day*. Those change meaning depending on where they sit in the sentence, so unifying
them would introduce errors.

Words where publications genuinely disagree — *internet* / *Internet*, *healthcare* / *health
care*, *dataset* / *data set* — are deliberately not in the default dictionary. Pick a side per
client with Preferred spelling for this client, or add them to your own dictionary.

Everything above the “Web terms” row follows the spelling region setting. Web terms are the same either side of the Atlantic, so they never move.

If there is an entry you want to add, use “+ Add an entry”, above the list.

When you add, edit or delete an entry, a line appears beside the button: “Unsaved: N added / N changed / N removed (Save to keep)”. Nothing is kept until you press Save, at the bottom of the page. Closing the settings page or the tab with unsaved changes asks you to confirm.

“Reset to defaults”, next to it, puts everything back. Entries you added are deleted too, so it asks you to confirm first (this is not kept until you save either).

When the dictionary is updated

The built-in dictionary keeps improving. Once you have saved a dictionary of your own,
Proofkit leaves it alone — it never rewrites your entries — so later additions do not
appear by themselves.

When there is something new, “Review and apply the update” shows up above the
dictionary. It lists exactly what will be added, changed and removed before you take it.
Entries you added yourself are never touched. Press “Save” afterwards to keep it.

⑥ Backing up your settings / moving to another computer

At the bottom of the settings page,
“Back up your settings / move to another computer”
saves everything you have built into a single file (a paid feature).

In the fileNot in the file
Your spelling dictionary (every language you have set up), client presets, snippets, source URL format, working language and spelling regionYour API key, your licence key

Neither key is written out, so handing the file to someone else cannot run up your
AI bill or pass your licence around.

Moving to another computer

  1. On your current computer, press “Save settings to a file”.
    You get a file such as proofkit-settings-2026-08-06.json.
  2. Move that file across — a USB stick, a cloud drive, or an email to yourself.
  3. Install Proofkit on the new computer, open the settings and press
    “Load from a file”, then pick the file.
  4. Confirm when it asks.
  5. If you use AI proofreading, enter your API key again on the new computer —
    it is deliberately not in the file.

Sharing client rules with someone else

Same steps. Once they press “Load from a file”, they have the same dictionary,
client presets and snippets as you.

One thing to say when you send it: loading replaces whatever they have now.
It does not merge. Ask them to save their own file first if they have settings
worth keeping.


3. The basics (5 steps)

  1. Open the page where you write (WordPress, note, Medium, your CMS)
  2. Click the toolbar icon — the side panel opens on the right
  3. Open “Check the text” (it starts collapsed) and press “Load text from the editor”
    → you should see something like From: Whole article (5 blocks) “Your article title…” / 1234 words. Check that this really is the article you meant
  4. Loading also runs the spelling and client-rule checks straight away
    → for typos as well, press “AI proofreading (typos)” next (an AI must be set up)
  5. Go through the findings one at a time and choose “Apply here”, “Ignore” or “Apply all suggestions”

The client-rule check sits on its own, right below “Check the text” rather than inside the list
of spelling findings. Banned phrases, length and keywords are not things to fix one by one — they
tell you whether the piece meets what the client asked for — so they stay where a long list of
spelling findings cannot bury them. When everything passes you get a single line,
“Meets the rules for …” (nothing appears for a client with no rules set).

“Local check (spelling, client rules)” is for running the check again — after you have edited the text by hand, for instance.

With “Highlight in the editor too” ticked, matches turn yellow in the text itself.


4. Working through the findings

Each finding has these buttons:

ButtonWhat it does
Go to occurrenceJumps to that spot in the text and selects it. Press again for the next one
Apply hereFixes only the occurrence currently shown
UndoTakes back the last “Apply here”
IgnoreRemoves the finding from the list (the text is untouched)

Fixing a spelling group all at once

Spelling groups get an “Apply all suggestions” button. It replaces every occurrence in the article with the preferred spelling.

Three different counts show up, and they count different things.

What it saysWhat it counts
“Spelling 87 kinds”the number of spellings being replaced — not the number of mixes. A mix with three or more spellings adds more than one
“All (87/87)” and “Apply all suggestions (87 kinds)”the same count. Unticking items lowers the left-hand number
“121 occurrences”how many places in the text actually changed
⚠️ Editing the text after applying can make undo unavailable. Proofkit checks that what it changed is still exactly as it left it before putting anything back, so it refuses once you have touched that spot — that is deliberate, so nothing you wrote gets clobbered.

>

- Typing somewhere other than the paragraphs it changed still leaves undo available. What you typed stays
- Editing the changed passage itself makes undo unavailable
- In a plain input box (textarea) rather than an article editor, any edit at all makes undo unavailable — the whole box is compared in one piece

>

When undo is unavailable, “Copy the text from before” gets it back.

“Copy the text from before” (the safety net)

Running a bulk apply saves a full copy of the text as it was just before. That is the line near the top of the side panel:

A copy of the text from before is saved (7/29 14:02 / 1,234 characters / “Today we…”) [ Copy the text from before ] Discard

5. Editor by editor

EditorHow it works
WordPress block editorWorks as is. Paragraphs and headings are separate elements, so they are gathered automatically as “Whole article (N blocks)”
WordPress classic editorWorks as is
note / Medium / most CMSesWorks as is
Google Docs and Sheets⚠️ Cannot be read directly. Copy your text, paste it into “Paste here when the editor can't be read (check only — no replacing)” in the side panel, and press “Check the pasted text” (see below as well)

The rewriting features are unavailable in paste mode — read the findings and make the changes in the document yourself.

Working in Google Docs

In May 2021 Google Docs moved from HTML rendering to canvas. Since then the text is painted onto the page rather than kept as text, so an ordinary browser extension cannot read it. This is not a limitation of Proofkit in particular.

A small number of extensions do read and write it, through an undocumented path that Google grants case by case. That path is not open to developers generally.

That is why Proofkit also has a Google Docs add-on, launched from the Extensions menu inside Google Docs. It can read and write the document directly, so it does what the paste box cannot.

Paste box in the extensionGoogle Docs add-on
Checking spelling variants and client rules✅✅
Unifying in place (replacing)❌ Not possible✅ Yes
Jumping to a finding❌✅ Selects that spot in the document
Inserting a snippet❌✅ At the cursor
Client presets and your own dictionary✅✅ Import your extension settings as they are — nothing to rebuild
AI proofreading (typos)✅ Checking only❌ Use the side panel of the extension

The add-on is available on Google Workspace Marketplace. Once it is installed, Proofkit appears in the Extensions menu inside Google Docs.

Picking a different target

When a page has several editable fields, the wrong one is sometimes chosen. Use the “Choose the text to work on” dropdown to switch.


6. Questions and troubleshooting

It will not load or will not run

Q. I get “Could not load the text”
A. Try these in order.

  1. Click inside the editor once, then press “Load text from the editor” again
  2. Still nothing — reload the page (F5)
  3. In Google Docs this is expected → use the paste box (see “Working in Google Docs”)

Q. I get “Proofkit cannot reach this page”
A. This happens right after the extension updates. Press the “Reload the page” button that appears. If it gets tiresome, “Allow access (no more reloading)” makes it stop happening.
※ Check that your draft is saved before pressing it.

Q. Only part of the article (one paragraph) gets checked
A. “Choose the text to work on” is pointing at a single block. Switch back to “Whole article (N blocks)”.

Q. I updated the extension but nothing changed
A. Do these three in order: ① reload the extension ② reload the page ③ close the side panel and open it again. The version at the top right of the panel tells you whether it worked.

Q. It does not work on a local HTML file (file://)
A. Open the extension's Details page from chrome://extensions and turn “Allow access to file URLs” on.

Q. It does not work on chrome:// pages or the extension store
A. Chrome blocks every extension on those pages.

About AI proofreading

Q. The “AI proofreading (typos)” button is greyed out
A. Either no text is loaded or the AI is not set up yet. Hover over the button and it tells you what is missing (API key, model name, and so on).

Q. “Fetch model list” fails
A. The message says why.

Q. The model I want is not in the list
A. Choose “Not listed / type it myself” in the dropdown and enter the name directly.

Q. My local model (Ollama and friends) says “Could not reach the server”
A. Check ① that the app is running and ② that you allowed access when you saved. The endpoint URL and model name are chosen for you — there is nothing to type.

Q. AI proofreading finds nothing, or returns nonsense
A. Small local models can be much less accurate. Try a hosted model such as claude-haiku-4-5 first.

Q. Will AI proofreading start changing my spelling too?
A. AI proofreading handles typos only. If the AI comes back with spelling suggestions (colour → color and the like), they are removed before you ever see them. The count is shown, as in “AI proofreading: 2 found (1 spelling suggestions were dropped…)”. Spelling is decided by your dictionary and your client preset, not by an AI's taste.

Q. After pressing AI proofreading, I cannot tell whether anything is happening
A. The button changes to “Proofreading…” and the status line at the top says “Checking...”. The count appears when it finishes.

Q. What does AI proofreading cost?
A. Roughly, for one pass over a 3,000-character draft:

ModelCost
claude-haiku-4-5 (default)about US$0.01
claude-sonnet-5about US$0.04
claude-opus-5about US$0.07
Ollama / LM Studio (your own computer)free

Q. Am I charged every time I press it?
A. Yes, once per press. It never re-runs itself after a bulk apply — deliberately, so you are never billed without asking.

Q. Does the spelling check cost anything?
A. No, and it does not use the network at all.

How it behaves

Q. Can it change my text without me asking?
A. No. The text only changes when you press “Apply here” or “Apply all suggestions”.

Q. What happens to the findings when I switch tabs?
A. They are remembered per tab. Work in another tab, come back, and that tab's findings are still there — including anything you ignored, the targets you chose and the bulk-apply ticks. There is no need to load again.

Q. I get “The text has changed” and cannot apply anything
A. This appears when the text changed after you loaded it (because you typed something, for instance). The findings refer to the text as it was when you loaded it, so replacing now could hit the wrong place. Press “Load text from the editor” again — that re-runs the check too.

Q. The findings disappeared after I reloaded the page
A. This is a safety measure. Findings belong to the text you loaded, and letting you press “Apply here” after the content changed could damage the wrong part of the article. A tab's findings are discarded when you:

Press “Load text from the editor” again to start over with the current content.
(Text checked in the paste box has nothing to do with a page, so it stays.)

Q. If I unify enrol to enroll, do I end up with enrolll?
A. No. Anything already using the preferred spelling is protected. Chains such as “web site → website → web-site” cannot collapse either.

Q. Why is the color inside “Colorado” not flagged?
A. Short entries would otherwise match inside longer words — color in *Colorado*, PC in *PCR*, atual in *atualmente* — and unifying them would break the text. So occurrences that sit inside another word are not counted.

Q. My text is not highlighted (in a textarea)
A. Some input fields cannot highlight every match at once. In that case the first one is selected instead and you can step through with “Go to occurrence”. That is expected.

Q. I get “Bulk apply does not work on a selection”
A. You loaded the text with part of it selected. Clear the selection and press “Load text from the editor” again.

Q. A snippet says “Could not find where to insert”
A. It goes into the field you are typing in. Click where you want it first, then try again.

Q. I want to undo a snippet I inserted
A. Press Ctrl+Z (Cmd+Z on a Mac) in that field. The browser's own undo works normally.

Q. I want to undo a fix I applied
A. Undo / “Undo the bulk apply” in the panel takes it back in one click. Ctrl+Z (Cmd+Z on a Mac) in the editor works too, but in editors that keep every paragraph separate — the WordPress block editor, for one — you need one press per paragraph that changed. The editor treats it the same as retyping the text yourself.

Q. A finding says “Choose the preferred spelling for each item”
A. One spelling has more than one possible target. Rather than applying in bulk, pick the target in each item's dropdown and press “Apply here”.

Privacy

Q. Is my draft sent anywhere?
A. The spelling and client-rule checks send nothing at all — they run entirely on your computer. Only when you press AI proofreading is the text sent, and only to the AI service you set up. With a local model such as Ollama it never leaves the machine.

Q. Where is my API key stored?
A. In your browser only (chrome.storage.local). It is not sent anywhere, including to us.

Q. Can I use this on work covered by an NDA?
A. The spelling and client-rule checks involve no network traffic, so they are rarely a problem. AI proofreading does send your text outside. Check your agreement, and use a local model if you need to.

Q. Is the saved “text from before” sent anywhere?
A. No. It is kept on this device only. Press “Discard” if you would rather not keep it.


Getting in touch

Email: support@proofkit.jp

Send bug reports, questions and requests here. We aim to reply within a few days.

Before you write

Press “If something is not working” → “Copy diagnostics” on the settings page and paste the result into your email. It makes the cause far easier to find.

Here is what the diagnostics contain (you can read it on screen before you paste):

IncludedNot included
Extension version, browser and OS, first-use dateYour article text
The site you were working on (e.g. note.com), the kind of field, the lengthYour API key (only whether one is saved)
How many client presets, dictionary entries and snippets you haveThe page URL (anything after the host)
The last 20 errorsThe wording you saved

If you would rather not keep the log, “Clear the log” on the same screen removes it.

Please do not paste your article text — we have no need for it.

These three details make it faster still:

What to tell usExample
What you did and what happened“I pressed apply all and a paragraph with no findings changed too”
Which editorWordPress block editor / note / Medium / Google Docs (paste box)
DiagnosticsThe copy from above

Fixes reach you automatically through the Chrome Web Store. There is nothing to reinstall.