
Paraglide JS
Tool
๐ช Paraglide JS
Compiler-based i18n library that emits tree-shakable translations, leading to up to 70% smaller bundle sizes.
Documentation ยท Quick Start ยท Report Bug
Used in production by
ย ย ย
ย ย ย
ย ย ย
ย ย ย
...and more
Trusted by framework authors
Svelte's official i18n recommendation
Part of TanStack's CI pipeline
Code Preview
// messages/en.json
{
"greeting": "Hello {name}!"
}
import { m } from "./paraglide/messages.js";
m.greeting({ name: "World" }); // "Hello World!" โ fully typesafe
The compiler generates typed message functions. Your bundler tree-shakes unused messages. Expect up to 70% smaller bundle sizes compared to runtime i18n libraries (e.g. 47 KB vs 205 KB).
Why Paraglide?
| Smaller Bundle Sizes | Up to 70% smaller than runtime i18n libraries. |
| Tree-Shakable | Unused messages are eliminated by your bundler. |
| Fully Typesafe | Autocomplete for message keys and parameters. Typos become compile errors. |
| Framework Agnostic | Works with React, Vue, Svelte, Solid, TanStack, or vanilla JS/TS. |
| Built-in i18n Routing | URL-based locale detection and localized paths out of the box. |
| Built on inlang | Integrates with VS Code extension, CLI, and translation editor. |
Works With Your Stack
React ยท
Vue ยท
TanStack Start ยท
SvelteKit ยท
Next.js ยท
Astro ยท
Vanilla JS/TS
Quick Start
npx @inlang/paraglide-js init
The CLI sets up everything:
- Creates your message files
- Configures your bundler (Vite, Webpack, etc.)
- Generates typesafe message functions
Then use your messages:
import { m } from "./paraglide/messages.js";
import { setLocale, getLocale } from "./paraglide/runtime.js";
// Use messages (typesafe, with autocomplete)
m.hello_world();
m.greeting({ name: "Ada" });
// Get/set locale
getLocale(); // "en"
setLocale("de"); // switches to German
Full Getting Started Guide โ
How It Works
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Inlang Project โ โโโโถ โ Paraglide Compiler โ โโโโถ โ ./paraglide/messages.js โ
โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ ./paraglide/runtime.js โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Paraglide compiles an inlang project into tree-shakable message functions. Your bundler eliminates unused messages at build time.
Message Format
Paraglide uses Intl.PluralRules for locale-aware pluralization, supporting all CLDR plural categories (zero, one, two, few, many, other) and ordinals (1st, 2nd, 3rd). Gender and custom selects are supported via the variants system.
// Pluralization example
m.items_in_cart({ count: 1 }); // "1 item in cart"
m.items_in_cart({ count: 5 }); // "5 items in cart"
// Works correctly for complex locales (Russian, Arabic, etc.)
Message format is plugin-based โ use the default inlang format, or switch to i18next, JSON, or ICU MessageFormat via plugins.
Pluralization & Variants Docs โ
Comparison
| Feature | Paraglide | i18next | react-intl |
|---|---|---|---|
| Bundle size | Up to 70% smaller via tree-shaking | โ Ships all messages | โ Ships all messages |
| Tree-shakable | โ | โ | โ |
| Typesafe | โ | Partial | โ |
| Framework agnostic | โ | Wrappers needed | React only |
| i18n routing | โ Built-in | โ | โ |
What Developers Say
"Paraglide JS is by far the best option when it comes to internationalization. Nothing better on the market."
Ancient-Background17 ยท Reddit
"Just tried Paraglide JS. This is how i18n should be done! Totally new level of DX."
Patrik Engborg ยท @patrikengborg
"I was messing with various i18n frameworks and must say Paraglide was the smoothest experience. SSG and SSR worked out of the box."
Dalibor Hon ยท Discord
Talks
Ecosystem
Paraglide is built on the open inlang format. Works with:
| Tool | Description |
|---|---|
| Sherlock | VS Code extension for inline translation editing |
| CLI | Machine translate from the terminal |
| Fink | Translation editor for non-developers |
| Parrot | Manage translations in Figma |
Explore the inlang ecosystem โ
Documentation
- Getting Started
- Framework Guides (Next.js, SvelteKit, Astro, etc.)
- Message Syntax & Pluralization
- Routing & SSR
- API Reference
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
License
MIT โ see LICENSE
Recommended complementary solutions
inlang CLI
Automate localization tasks in CI/CD pipelines with machine translation, validation, and plugin support for JSON, i18next, next-intl, and more.

Sherlock - VS Code extension
Visualize, edit & lint translated strings at a glance via Inline Decorations & Hover Support, and extract new strings with a single click.
inlang message format
Store translations in JSON files with support for variables, pluralization, and variants. The recommended storage plugin for inlang projects.

m-function-matcher
Enables the inlang Visual Studio Code extension (Sherlock) to work with paraglide