A Chrome extension that lets you right-click on selected text and proofread it in different styles using AI — works out-of-the-box with Chrome's Built-in AI (Gemini Nano), no API key needed.
- Zero-config by default — uses Chrome Built-in AI (Gemini Nano), no sign-up or API keys
- Right-click context menu with 8 proofread styles:
- 📝 Formal — professional, polished tone
- 😊 Friendly — warm, conversational tone
- 📧 Email — professional email format
- 😂 Humorous — witty rewrite
- ✅ Grammar Only — fix errors, keep original tone
- 💡 Simplify — plain, clear language
- 🇬🇧 Translate → English + Proofread
- 🇫🇷 Translate → French + Proofread
- Floating popup with proofread result, draggable header
- Copy result to clipboard
- Replace selected text in editable fields (textarea, input, contenteditable)
- Try Again button to regenerate with a different variation
- Auto-detects input language and proofreads in the same language (except translate styles)
- Dark/light theme follows system preference
The extension uses a tiered approach so non-technical users can get started immediately:
| Tier | Provider | Auth | Default Model | Notes |
|---|---|---|---|---|
| Default | Chrome Built-in AI | None | Gemini Nano | Zero-config, runs on-device, Chrome 138+ |
| Upgrade | Google Gemini | Sign in with Google | gemini-2.0-flash | Better quality, cloud-based |
| Advanced | OpenAI | API key | gpt-4o | Hidden behind "Advanced" toggle |
| Advanced | xAI / Grok | API key | grok-3 | Hidden behind "Advanced" toggle |
| Advanced | Ollama (local) | None | llama3 | Hidden behind "Advanced" toggle |
- Clone or download this repository
- Open Chrome and go to
chrome://extensions/ - Enable Developer mode (top-right toggle)
- Click Load unpacked and select the
proofread-extension/folder - The ✍ icon appears in your toolbar
Right-click the extension icon → Options (or click the ✍ icon)
Works immediately with no setup on Chrome 138+. The options page shows the current status:
- Ready — model is available on-device
- Downloading — model is being downloaded (first use)
- Unavailable — browser/device not supported; switch to a cloud provider
- Select OpenAI (GPT-4o) as provider
- Paste your API key from platform.openai.com/api-keys
- Click Save Settings
- Click ⚙️ Advanced Options to expand
- Select Google Gemini as provider
- Click Sign in with Google — no API key needed
- Click Save Settings
Note: For the Google OAuth to work, you need a Google Cloud project with an OAuth 2.0 client ID (type: Chrome Extension). Set the client ID in
manifest.json→oauth2.client_id. See Google's guide.
- Click ⚙️ Advanced Options to expand
- Select OpenAI (GPT-4o) as provider
- Paste your API key from platform.openai.com/api-keys
- Click Save Settings
- Click ⚙️ Advanced Options to expand
- Select xAI (Grok) as provider
- Paste your API key from console.x.ai
- Click Save Settings
- Install Ollama and pull a model:
ollama pull llama3 - Click ⚙️ Advanced Options to expand
- Select Ollama (Local) as provider
- Set the base URL (default:
http://localhost:11434) - Click Save Settings
- Select text on any webpage
- Right-click → ✍ Proofread → choose a style
- A floating popup appears with the proofread result
- Actions:
- 📋 Copy — copy result to clipboard
- ✏️ Replace — replace selected text (only in editable fields)
- 🔄 Try Again — generate a new variation
- ✕ or click outside — close the popup
- Drag the header to reposition the popup
proofread-extension/
├── manifest.json # Extension manifest (MV3)
├── background/
│ └── service-worker.js # Context menu + LLM orchestration
├── content/
│ ├── content.js # Popup overlay rendering
│ └── content.css # Popup styles
├── lib/
│ ├── llm-providers.js # LLM provider abstraction + prompts
│ └── google-auth.js # Google OAuth2 helper
├── options/
│ ├── options.html # Settings page
│ └── options.js # Settings logic
├── icons/
│ ├── icon16.png
│ ├── icon48.png
│ └── icon128.png
└── README.md
- API keys stored in
chrome.storage.sync(encrypted at rest by Chrome) - Chrome Built-in AI runs entirely on-device — text never leaves the browser
- LLM responses rendered as plain text (
textContent), neverinnerHTML— XSS-safe - No
eval()or dynamic code execution - Host permissions scoped to only the required API domains
- Google OAuth tokens managed by Chrome's built-in identity API