Tutorial

Get started with JSON DeepL by following this step-by-step tutorial.

The web interface is the fastest way to translate a JSON file — no install, no account. Everything happens in your browser except the actual translation request, which is forwarded to DeepL and never stored.

1. Get a DeepL API key

You'll need your own DeepL API key — the free tier works fine for trying this out. DeepL never charges you for signing up; you only pay (or use your free quota) for what you actually translate.

2. Open the tool

Head to the homepage and paste your API key into the DeepL API Key field. It's sent directly to DeepL for each translation request and is never stored on our servers.

Your key stays in your browser's session storage while you work — it's cleared when you close the tab.

3. Fill in your project details

  • Project Name — used to name the downloaded file(s).
  • Source Language — the language your JSON is currently written in.
  • Target Languages — pick one or more languages to translate into. Refer to the supported languages for the full list.
  • Formality — prefer_less for a casual tone, prefer_more for a formal tone, where the target language supports it.

4. Add your JSON

Choose Single if you have one JSON file to translate, or Multiple if you're translating several files into a shared directory structure (each with its own optional directory name and filename prefix).

Paste your JSON directly into the textarea. It can be nested to any depth, but arrays aren't supported — only objects and string values.

{
  "hello": "Hello world",
  "nested": {
    "greeting": "Welcome back, {{name}}!"
  }
}
Interpolation placeholders like {{name}}, {name}, and :name are protected automatically — DeepL won't try to translate them.

The output tree on the right updates live so you can see exactly what files will be produced before you translate.

5. Translate

Click Translate. If this translation would push you close to or over your DeepL character quota, you'll see a warning with your current usage before anything is sent — you can cancel or continue anyway.

Once translation completes, your file downloads automatically:

  • One output file (single source, one target language) downloads directly as a .json file.
  • Multiple output files (multiple source files, and/or multiple target languages) download together as a .zip, preserving your directory structure.

What's next?

  • Prefer scripting this into your build? Check out the CLI — it works the same way, just from your terminal, and keeps translations in sync as your source file changes.
  • Self-hosting your own copy? You also get an HTTP API for free.