Documentation
Learn how SwiftIn works — from translating selected text and input fields to real-time chat translation on 8 platforms.
Getting Started
Up and running in minutes
Install the Extension
Visit the Chrome Web Store and add SwiftIn. Works on Chrome, Edge, Brave, Opera, and Vivaldi.
Create an Account
Click the SwiftIn icon in your toolbar → "Log in". Register with email or sign in with Google. Your free account is ready immediately.
Choose Your Language
Open the popup and select your target language. SwiftIn supports 100+ languages with automatic source language detection.
Start Translating
Type in any input field, select text on any page, or enable chat translation on supported platforms. All three modes work simultaneously.
Input Translation
Translate inside any text field
Type in any language, translate with one click. The translated text replaces your input in-place.
Auto-detection
Detects all input fields — textarea, input, and contentEditable elements. A floating translate button appears next to the focused field.
In-place replacement
Click the button or press your hotkey — the original text is replaced with the translation directly in the field.
Sensitive field protection
Password fields, credit card inputs, SSN fields, and other personal data inputs are automatically detected and skipped.
Hotkey: You can trigger input translation with a keyboard shortcut instead of clicking the button. Configurable in Settings → General → Hotkeys.
Selection Translation
Select any text, translate instantly
Highlight text on any webpage — a SwiftIn icon appears next to your selection. Click it to open a translation popup.
Floating popup
The translation appears in a draggable, resizable popup. It stays on screen until you close it — scroll freely without losing the result.
Built-in TTS
Each popup includes play buttons for both the original text and the translated text. Click to hear the pronunciation.
Theme support
Supports dark, light, and system themes. Uses a closed Shadow DOM — website styles never interfere with SwiftIn's UI.
Snooze
Don't want the icon right now? Snooze it for 24 hours or 1 week. Resume anytime from Settings.
Chat Translation
Real-time translation on 8 platforms
Translate messages, comments, posts, and emails directly where they appear — without copy-pasting.
Two Translation Modes
Button Mode
A "Translate with SwiftIn" button appears on each message. Click to translate individually. Messages in your target language are automatically skipped.
Best for: selective translation, saving quota
Auto-Translate
All visible messages are translated automatically as they appear. Uses IntersectionObserver to process only messages currently in the viewport.
Best for: full immersion, understanding all messages
How It Works
Viewport-based processing
Only processes messages visible on screen. Uses IntersectionObserver and MutationObserver with a batch queue (max 10 concurrent) to avoid API overload.
Platform-specific adapters
Each platform has a dedicated adapter that understands its unique DOM structure — message containers, author elements, and theme classes.
URL stripping
Messages containing only URLs are automatically skipped. In mixed messages, URLs are preserved as-is while surrounding text is translated.
Toggle button
After translation, a "Show original" / "Show translation" toggle appears on each message to switch between views.
Important: Chat translations are ephemeral — they are never saved to your history. Characters are still counted against your quota. On Team plans, the owner must enable chat translation for the team.
Translation Styles
Three typing styles, adjustable intensity
Control how your typed translations sound — from casual internet slang to professional business tone. Available for Type & Translate.
Normal
Universal translation for everyday use. Clear, natural, and accurate.
All plansSlang
Vivid internet language with colloquialisms. Great for social media and casual chats.
Pro & TeamBusiness
Professional and formal tone. Suitable for emails, reports, and client communication.
Pro & TeamStyle Intensity
Each style has an intensity slider from minimum to maximum. At minimum, the style adds a light touch. At maximum, the entire tone and vocabulary shifts to match the chosen style.
Note: Translation styles apply only to input field translations. Selection translations always use the Normal style (enforced server-side for consistency).
Text-to-Speech
Hear how it sounds
AI voice synthesis powered by Gemini 2.5 Flash TTS — natural pronunciation in 70+ languages.
Inline playback
TTS buttons appear inline — one for the translated text and one for the original. Click to play, click again to pause.
Voice options
Two voice types: Kore (female) and Puck (male). Adjust speed and pitch in the TTS settings panel inside the extension popup.
Note: TTS characters are counted separately from translation characters. The limit resets each billing period. Add-on packs include bonus TTS characters.
Shortcuts
Keyboard shortcuts
Speed up your workflow with built-in hotkeys. Browser commands work globally — even when the popup is closed.
Browser Commands
Registered at the browser level. Work on any page, including when the extension popup is closed. Remap via chrome://extensions/shortcuts.
| Default | Action |
|---|---|
Alt+Shift+T | Toggle translation on/off |
Alt+Shift+S | Translate selected text |
Alt+Shift+L | Cycle target language |
Extension Hotkeys
In-page shortcuts handled by the content script. Recordable in Settings → General → Hotkeys.
| Default | Action |
|---|---|
Tab | Translate text in the focused input field |
— | Toggle translation on current site (set your own) |
— | Translate selection (set your own) |
— | Toggle extension on/off (set your own) |
— | Cycle target language (set your own) |
Tab key: By default, pressing Tab while typing in an input field sends the text for translation. You can change this to any key combination in Settings.
Custom hotkeys: Extension hotkeys marked "—" have no default — record your own combination in Settings → General → Hotkeys. Each hotkey supports any modifier combination (Ctrl, Alt, Shift, Meta) plus a key.
Plans & Limits
Detailed plan comparison
Every plan includes core translation features. Paid plans unlock higher quotas, longer texts, extra styles, cloud history, and TTS.
Free
$0
Pro
from $4.99/mo
Team
from $3.99/seat/mo
How limits work
Monthly reset
Translation and TTS character quotas reset automatically on your billing day each month. Free plans reset on the 1st.
Atomic deduction
Characters are deducted before the API call and refunded if the translation fails. This prevents quota loss on errors.
Add-on packs
Need more characters? Purchase one-time add-on packs (card or crypto). They stack on top of your plan quota and are consumed oldest-first (FIFO). Add-ons never expire.
Team pooling
On Team plans, each seat gets its own character pool. The team owner can distribute add-on characters across members from the dashboard.
Per-request limits
Each individual translation request is capped at 1K (Free), 10K (Pro), or 15K (Team) characters. Longer texts need to be split into smaller parts.
Approaching your limit? You will see an in-extension notification when your usage reaches 80% and 100%. Check your current usage anytime in the extension popup or the web dashboard.
Settings
Extension settings
Access via popup → gear icon, or right-click the extension icon → Options. Opens in a dedicated browser tab.
General
Interface Language
Language for the extension UI. Available: English, Russian, Spanish, French, German, Portuguese, Japanese.
Hotkeys
Three recordable shortcuts: Translate Selection, Toggle Translation, Toggle Site Translation. Click the field, press your combination, confirm.
Display
Toggle the floating translate icon on input fields, and the selection popup icon. Both can be independently enabled or disabled.
Data
Enable/disable local selection history and cloud sync. Disabling cloud sync permanently deletes server-side history.
Content (Chat)
Platform Toggles
Enable or disable translation for each platform individually: Discord, LinkedIn, Twitter/X, YouTube, Reddit, Slack, Upwork, Gmail.
Chat Target Language
Separate from the main translation language. Messages in your target language are automatically skipped.
Translation Mode
Choose between single message button mode and auto-translate mode. These are mutually exclusive.
Excluded Sites
Add domains where SwiftIn should not activate. The extension auto-normalizes URLs (strips protocol, www, paths, ports). Separate multiple domains with commas, spaces, or newlines.
Popup controls: The toolbar popup controls your target language, translation style, style intensity, and provides quick access to history and settings.
History & Storage
Your translation history
SwiftIn stores translations both locally and on the server, depending on your plan and settings.
Local History
Browser storage
Input translations are always saved locally — up to 5,000 items. Oldest non-favorited items are auto-removed (LRU). Favorites are never auto-deleted.
Selection history
Optionally saved locally too. Enable in Settings → General → Data. Selection items show a "Selected" badge in the history list.
Source filter
Filter history by source: All, Input, or Selection. Chat translations are never saved — they are ephemeral.
Cloud Sync
Cross-device access
Pro and Team plans can sync translations to the server. Access your history from any device through the web dashboard.
Opt-in for Pro
On Pro plans, cloud sync is opt-in. On Team plans, input translations are always synced. Selection history sync is controlled by the team owner.
Disabling cloud sync: When you disable cloud sync, all server-side translation history is permanently deleted. Your local history on the current device is preserved.
Privacy & Security
How we protect your data
Security is built into every layer — from the extension to the database.
Encryption
All data encrypted in transit (TLS) and at rest. Passwords hashed with bcrypt. JWT tokens for API authentication with automatic refresh.
Database Security
Row Level Security (RLS) on all 15 database tables. Backend-only RPCs are revoked from client access.
Extension Isolation
Content scripts hold no API keys or tokens — all communication goes through the background service worker. Closed Shadow DOM for CSS isolation.
Data Minimization
We never send personally identifiable information to the AI model — only the text you want translated. Free plan history never leaves your browser.
Additional Protections
Sensitive field detection
Built-in SensitiveFieldDetector automatically identifies and skips password fields, credit card inputs, SSN fields. Always active, cannot be disabled.
Two-factor authentication
TOTP-based 2FA compatible with Google Authenticator, Authy, and similar apps. Enable in Dashboard → Settings → Security.
Input validation
All API inputs validated with Zod schemas. Rate limiting per user. Server-side character counting prevents quota manipulation.
FAQ