Type less, do more. FluentTyper brings smart autocomplete, spell checking, and text expansion to text inputs across the web.
- Install: Chrome, Firefox, Edge
- Report a bug: GitHub issue form
- Request a feature: Feature request form
- Contributing: CONTRIBUTING.md
- Security policy: SECURITY.md
- Sponsor development: Buy Me a Coffee
FluentTyper helps you write faster and with fewer mistakes:
- Predictive autocomplete while typing
- Local prediction with libPresage (autocomplete never uses an AI model in store builds)
- Spelling suggestions
- Offline measurement-unit spacing in verified prose contexts
- Offline Review text: proofread a field you already wrote, with categorized highlights, one-click fixes and "Fix all safe" (
Alt+Shift+R) - Optional Local AI in Review (Chrome and Edge): an on-device model adds context-aware corrections and, only when you ask, rewrites in a style you pick. It downloads once after you set it up, then runs offline; your text never leaves the device
- Text expansion snippets for repeated phrases
- Keyboard-first suggestion selection with arrow keys and
Tab
Example: type callMe and expand it to Call me back once you're free.
- English
- Spanish
- French
- Croatian
- Greek
- Swedish
- Polish
- German
- Brazilian Portuguese
- Arabic
- Install FluentTyper from your browser store.
- Click any regular text input field on a website.
- Start typing to see suggestions.
- Use arrow keys to choose a suggestion.
- Press
Tabto accept, orEscto dismiss. - To proofread text you already wrote, press
Alt+Shift+R, click the Review button in the corner of the text box, or choose Review text in the popup.
FluentTyper applies configuration in this order:
- Global enable switch (
Enable Extension) must be on. - Domain allow/block mode decides if FluentTyper runs on the current site.
- If a site profile exists for the current domain, it overrides config values:
language: always overridden by the profile value.inline_suggestion: overridden only when set in the profile; otherwise inherited from global.numSuggestions: overridden only when set in the profile; otherwise inherited from global.
Site profiles never bypass domain enable/disable logic. If a domain is blocked by allow/block mode, FluentTyper remains disabled there even if a profile exists.
FluentTyper works on most websites, including Google Docs.
Google Docs support activates on any document edit page when FluentTyper is enabled for docs.google.com. Suggestions are applied through a single synthetic plain-text paste into the editor, and the edit is verified against the document model before local learning records it. See docs/google-docs-integration.md for details and limits. Other canvas-based rich text editors can still be partially or fully incompatible.
If you hit an unsupported site, please open a bug report so compatibility can be improved.
- Autocomplete is Presage-only in every build (Chrome, Firefox, Edge); no model runs while you type.
- Review can use an optional on-device model on Chrome and Edge (WebGPU), set up explicitly under Settings → Grammar → Local AI. It runs in the extension's own background service worker, never in the page. Firefox keeps the rule-based Review. See docs/review-mode.md and the design note docs/local-ai-review.md.
FluentTyper is privacy-first:
- No upload of your typed content
- Works offline
- Predictions are generated locally on your computer
- Review text checks the field in the page itself; the reviewed text is never uploaded, logged or stored
- Local AI in Review runs on your device. Setting it up downloads model files once from Hugging Face (which sees ordinary connection data such as your IP address and which files are requested, never your text); after that it works offline. Prompts, reviewed text and results are kept in memory only while a review is open
FluentTyper uses Bun as the primary package manager and script runner.
- Bun
1.4.2(pinned inpackageManager)
bun install
bun run build
bun run build --platform=firefoxbun run check # lint + format + typecheck
bun run lint # Oxlint with TypeScript-aware rules
bun run typecheck # TypeScript 7 only
bun run format:check # Prettier onlybun test # unit tests
bun run test:e2e # e2e smoke (Chrome)
bun run test:e2e:full # full regression (Chrome + Firefox)bun run watch # rebuilds on file changes (dev mode)Migration note: bun.lock is the source of truth for reproducible installs. npm/pnpm are no longer required for normal development workflows.
FluentTyper follows a strict layered clean architecture:
src/
core/
domain/ # Pure business logic, contracts, types
application/ # Use-case orchestration, repositories
adapters/
chrome/
background/ # Service worker, prediction engines
content-script/ # DOM interaction, suggestion UI
ui/
options/ # Settings pages
popup/ # Extension popup
onboarding/ # First-run experience
Layer boundaries are enforced by Oxlint no-restricted-imports rules. See docs/agents/architecture.md for details.
Please report bugs through GitHub Issues using the bug template:
- Issue chooser: github.com/bartekplus/FluentTyper/issues/new/choose
- Direct bug report form: bug_report.yml
To speed up triage, include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Browser and FluentTyper version
- Screenshots or recordings when possible
Use the feature request form to propose improvements:
- Issue chooser: github.com/bartekplus/FluentTyper/issues/new/choose
- Direct feature form: feature_request.yml
Good feature requests include:
- The problem you want to solve
- The proposed solution
- Alternatives you considered
- Browser context and examples or mockups
If you discovered a security vulnerability, follow SECURITY.md and avoid opening a public issue.
Development and contribution guidelines are in CONTRIBUTING.md.
If FluentTyper saves you time, you can support maintenance and future development:
MIT - Copyright (c) 2026 Bartosz Tomczyk