Polish what you write, everywhere on the web.
Select text in any input, textarea, or rich editor on any website. A floating toolbar appears with one-click actions to Improve, Fix grammar, Shorten, or change tone to Formal / Casual. The text is rewritten in place using your own AI API key.
- No server. Calls go directly from your browser to your chosen provider.
- Bring your own key. Gemini's free tier means $0/month for typical use.
- Works on rich editors — Gmail, Notion, Twitter/X, LinkedIn, Slack web, etc. (anything
contenteditableor shadow-DOM-based). - Personal style memory. A free-form notes field lets you tell the model about your voice, audience, and rules — applied to every rewrite.
- One-click on/off. Toggle the extension from the popup without uninstalling.
- Clone the repo:
git clone https://github.com/ameer-pk/prose.git
- Open
chrome://extensions(works in any Chromium browser: Edge, Brave, Arc). - Enable Developer mode (top right).
- Click Load unpacked and pick the
prosefolder. - The options page opens automatically. Pick a provider, paste your API key, click Save.
Prose pins a single fast, low-cost model per provider — no model picker, no surprises.
| Provider | Primary model | Fallback | Endpoint |
|---|---|---|---|
| Google Gemini | gemini-2.5-flash-lite |
gemini-3.1-flash-lite-preview |
generateContent (v1beta) |
| OpenAI | gpt-5.4-nano |
— | Responses API (/v1/responses) |
Gemini calls automatically retry once on rate-limit / overload errors, falling back to the preview model so your rewrite still goes through.
- Gemini (free tier): https://aistudio.google.com/app/apikey
- OpenAI: https://platform.openai.com/api-keys
Each provider has its own key slot — switching the provider dropdown swaps the visible field, and your other key is preserved.
- Click into any text field on any website.
- Select the text you want to rewrite.
- A small toolbar appears above the selection. Click an action.
- The selected text is replaced with the rewrite — undo (⌘Z / Ctrl+Z) works.
In the settings page there's a "Your writing style & context" textarea (up to 2,000 chars, autosaves). Anything you put there is woven into every rewrite as background context — without overriding the action. Examples:
I'm a backend engineer writing for non-technical PMs. Prefer plain English, short sentences, no exclamation marks. British spelling.
Brand voice: warm, slightly playful, never corporate. Avoid "leverage", "synergy", "delve".
- ✅ Plain
<input>/<textarea>on any page - ✅
contenteditableeditors — Gmail, LinkedIn, Twitter/X, Notion, Slack, Discord web, ProseMirror / Lexical / Slate / TipTap - ✅ Editors mounted inside Shadow DOM and modal portals
- ❌ Google Docs — uses a custom canvas-rendered editor with no real DOM text. No browser extension can rewrite Docs in place.
manifest.json MV3 service-worker manifest
src/
background.js Service worker — calls Gemini / OpenAI
content.js Injected on every page — selection + toolbar + replace
shared/tokens.css Design tokens shared by popup + options
popup/ Browser-action popup (provider + enabled toggle)
options/ Full settings page (key, style notes, privacy)
icons/ 16/32/48/128 PNGs (white feather on brand purple)
assets/ Source SVGs used to generate icons
- Your API key lives in
chrome.storage.local— local to your browser, never synced or sent anywhere except the provider you chose. - Selected text is sent only to that provider, exactly when you click an action.
- No analytics, no telemetry, no backend, no data collection.
| Permission | Why |
|---|---|
storage |
Persist your provider, API key(s), enabled toggle, and style notes locally |
contextMenus |
Reserved for right-click actions |
activeTab |
Read your current selection when you trigger an action |
<all_urls> host access |
Inject the toolbar in any page where you select text |
- Custom "rewrite as…" free-form action
- Per-site disable list
- History of recent rewrites with diff/undo UI
- Anthropic / Groq / OpenRouter providers
- Keyboard shortcut (e.g. ⌘⇧K to improve selection)
Need help or have feedback? → ameer.pk
Prose is free and always will be. If it saves you time, a small tip is hugely appreciated and keeps the lights on:
→ hamzait2017.gumroad.com/l/prose-ai (pay-what-you-want)
MIT