Skip to content

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

1

Install the Extension

Visit the Chrome Web Store and add SwiftIn. Works on Chrome, Edge, Brave, Opera, and Vivaldi.

2

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.

3

Choose Your Language

Open the popup and select your target language. SwiftIn supports 100+ languages with automatic source language detection.

4

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.

Discord
Chat messages
LinkedIn
Chat messages, job descriptions
Twitter/X
Tweets, replies, DMs
YouTube
Comments
Reddit
Comments & posts
Slack
Messages & channels
Upwork
Messages
Gmail
Emails

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 plans

Slang

Vivid internet language with colloquialisms. Great for social media and casual chats.

Pro & Team

Business

Professional and formal tone. Suitable for emails, reports, and client communication.

Pro & Team

Style 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.

DefaultAction
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.

DefaultAction
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

Translation quota50,000 chars / month
Max text per request1,000 chars
TTS quota1,000 chars / month
Max TTS per request1,000 chars
Rate limit10 req / min
Daily translation cap100 translations
Translation stylesNormal only
HistoryLocal only (browser)
History retentionUnlimited (local)

Pro

from $4.99/mo

Translation quota700,000 chars / month
Max text per request10,000 chars
TTS quota5,000 chars / month
Max TTS per request5,000 chars
Rate limit40 req / min
Daily translation capUnlimited
Translation stylesNormal, Slang, Business
HistoryLocal + Cloud sync (opt-in)
History retention90 days (server)

Team

from $3.99/seat/mo

Translation quota1,500,000 chars / seat / month
Max text per request15,000 chars
TTS quota5,000 chars / seat / month
Max TTS per request5,000 chars
Rate limit80 req / min
Daily translation capUnlimited
Translation stylesNormal, Slang, Business
HistoryLocal + Cloud sync (always on)
History retention180 days (server)

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

Frequently Asked Questions

SwiftIn works on all Chromium-based browsers — Google Chrome, Microsoft Edge, Brave, Opera, and Vivaldi. The extension uses Manifest V3 with a Service Worker architecture.
SwiftIn uses Google Gemini 2.5 Flash for translations. Text is sent to our backend API, validated and checked against your quota, then processed by the AI model. The translation is returned with auto-detected source language. We support 100+ languages for text and 70+ languages for TTS.
Yes. All data is encrypted in transit (TLS) and at rest. Passwords are hashed with bcrypt. All database tables use Row Level Security (RLS). Free plan history is stored only in your browser — never on our servers. Pro/Team server history is opt-in. We comply with GDPR.
Translation text is processed by Google Gemini AI (US — GCP). User accounts and history are stored in Supabase PostgreSQL (US — AWS). We do not send any personally identifiable information to the AI model — only the text you want translated.
You will see an in-extension notification at 80% and 100% usage. Options: wait for the next billing period (limits auto-reset on your billing day), upgrade your plan for a higher monthly quota, or purchase a one-time add-on character pack. Add-on packs stack on top of your plan quota, never expire, and are consumed oldest-first (FIFO). See the Plans & Limits section above for exact quotas per plan.
No. SwiftIn includes a built-in SensitiveFieldDetector that automatically identifies and skips password fields, credit card inputs, and other personal data fields. This protection is always active and cannot be disabled.
Chat translations are ephemeral — they are never saved to history, though characters count against your quota. On Team plans, the owner must explicitly enable chat translation. URL-only messages are automatically skipped to save quota.
The selection popup uses a closed Shadow DOM for complete CSS isolation, so it renders correctly on any website regardless of the site's own styles. It supports both dark and light themes, is draggable and resizable, and includes TTS playback and copy buttons.
No. A free account is required to use the extension. Registration takes seconds — sign up with email or Google. The free plan gives you 50,000 characters/month and 100 translations/day immediately.
Go to Dashboard → Settings → Security. SwiftIn supports TOTP-based 2FA (compatible with Google Authenticator, Authy, and similar apps). After enabling 2FA, you will be asked to verify your code on every login.