Skip to content

DLX Provider

Fahry-a edited this page Aug 3, 2026 · 1 revision

DLX Translation Provider

Translatify can translate lyrics with a DLX-compatible endpoint (formerly known as DeepLX) instead of Google Translate. DLX is an open-source, self-hostable translation server that talks to DeepL's translation service without an API key.

The DLX provider was added in Translatify 0.0.0.20, alongside fixes for popup settings and a rework of the provider architecture — see the Changelog for details.

This feature is experimental. DLX endpoints can be public, self-hosted, or run by anyone — you are responsible for the server you point Translatify at. If anything looks off, switch the provider back to Google Translate.


Why use DLX?

  • No API key required — DLX is a self-hostable server that proxies DeepL, so you don't need a DeepL developer account or an API token.
  • Better translations than Google Translate — DeepL's engine handles lyrics context, idioms, and tone more naturally.
  • Batch by default — Translatify sends the whole lyric sheet as one request per song (DLX preserves newlines), which keeps translations consistent and faster than translating line by line. Google Translate is limited to per-line requests, which is why it can miss meaning that only makes sense across the whole song.
  • Privacy — you choose the endpoint. Self-hosted means lyrics go to your server and nowhere else.

The trade-off: a slow or unreachable endpoint makes translation slower, and a public endpoint you don't control is a privacy consideration — see Choosing an endpoint.


Quick start

You need a DLX-compatible server first. The easiest way to try it is a public DLX instance (no setup) or your own self-hosted instance (privacy) — see Self-hosting.

1. Configure Translatify

Open the extension popup and set:

Field Value
Translation Provider DLX
API Endpoint URL https://your-dlx-instance.example.com/translate
Translation Mode Batch (default)

Then click Test Connection. Approve the permission prompt when your browser asks for access to the endpoint. A success message means you're ready.

2. Translate

Open a song's lyrics in the Spotify web player and press the translate button. With Batch mode, the whole lyric sheet is translated in one request — usually faster and more consistent than per-line.


Choosing an endpoint

The endpoint is the URL Translatify sends requests to (e.g. https://your-dlx-instance.example.com/translate). You can use:

  • Your own self-hosted instance — full privacy, recommended.
  • A public DLX instance — zero setup, but the server operator sees the lyrics you translate and can rate-limit or go down. Only use instances you trust.

There is no default endpoint bundled in Translatify — which server receives your lyrics is always an explicit choice you make. This is intentional.


Settings reference

When you choose DLX as the provider, these controls appear:

  • API Endpoint URL — the full URL of a DLX-compatible server (e.g. https://your-dlx-instance.example.com/translate). No /translate is appended automatically — enter the full path.
  • Translation Mode
    • Batch (default) — the whole lyric sheet is sent as one request per song. Consistent results, fewer requests, faster for most songs. Line count mismatches show an error marker instead of misaligning.
    • Per line — one request per lyric line. Useful for very long songs or if your endpoint struggles with multi-line requests, but results can be less consistent and it generates more requests.
  • Test Connection — sends a tiny request to verify the endpoint works.
  • Clear current song cache / Clear all cache — force a fresh translation if you changed endpoints or want to retry.

Self-hosting

DLX (formerly DeepLX, renamed in July 2026) is an open-source project by OwO-Network, MIT-licensed. The translation quality comes from DeepL, and the server does not need a DeepL API key.

Docker (recommended)

docker run -d -p 1188:1188 ghcr.io/owo-network/dlx:latest

Or with Docker Compose, using the repo's compose.yaml:

git clone https://github.com/OwO-Network/DLX
cd DLX
docker compose up -d

The server exposes a simple HTTP API on port 1188.

Binary

Download the binary for your platform from the Releases page and run it:

./dlx

There's also install.sh/uninstall.sh, a systemd unit (dlx.service) and a macOS plist for running it as a service.

Verify

Once running, the endpoint URL for Translatify is:

http://localhost:1188/translate

Test it from the terminal:

curl -X POST http://localhost:1188/translate \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello", "source_lang": "", "target_lang": "ID"}'

Expected response: {"code": 200, "data": "Halo"}.

Firefox / Chrome note: Translatify can request access to http://localhost endpoints (HTTP host permissions were added for localhost in 0.0.0.20). You may need to allow mixed content in Firefox for http://localhost — if the test connection fails and you're sure the server is running, check your browser's localhost HTTP policy.


Public endpoints (optional)

Prefer to try the DLX provider without running your own server? These are public instances, maintained by the community and the Translatify DLX provider author, Fahry-a:

Endpoint Hosted by Notes
https://sta.oryn.my.id/deepl STA — Fahry-a Serverless Translation API on Cloudflare Workers. Free, no API key.

STA is a serverless translation service (MIT) — a production fork of xixu-me/DeepLX that proxies DeepL and Google through Cloudflare's edge network, with intelligent endpoint rotation and rate limiting to avoid HTTP 429 errors.

Use it as the API Endpoint URL, then Test Connection. Public instances can be slow, rate-limited, or temporarily down — and the operator sees the lyrics you translate. Don't use a public endpoint for anything sensitive.


How it works

  • In Batch mode, Translatify collects all visible lyric lines and sends them in one request to your endpoint, with newlines preserved. The server returns the translated text, which Translatify splits back per line.
  • In Per line mode, each line is translated individually (like Google Translate).
  • If a batch request fails or returns the wrong number of lines, Translatify shows an error marker on the translate button and stops — it doesn't fall back to per-line requests that could produce inconsistent translations.
  • Lines that can't be translated (e.g. , punctuation-only) are skipped and left as they are.
  • When Spotify re-renders lyric lines (e.g. for the highlighted/current line), Translatify re-applies the cached translation instead of re-translating, so the lyrics stay consistent.
  • The endpoint URL, mode, and settings are stored locally in your browser (chrome.storage.local) — never sent to Translatify's developers.

Troubleshooting

Connection failed / test fails Check that the server is running and reachable. For a self-hosted instance, confirm the port is open: curl http://localhost:1188/translate. For a public instance, it may be down or rate-limiting.

"access to the endpoint was not granted" The browser permission prompt was dismissed. Click Test Connection again and approve it.

"Endpoint returned … instead of JSON" / parse errors Make sure the URL is the full endpoint path (including /translate). Unlike the Custom AI provider, Translatify does not append a path for DLX.

Translations missing or inconsistent In Batch mode, some lines may not match if the server returns a different number of lines. Try Per line mode, clear the song cache, and retry.

Too slow Batch mode should already be fast for most songs; if the endpoint itself is slow, there's little to do other than switching endpoints. For very long songs, per-line mode can feel more responsive even if it does more requests.

Rate limited (429) / server busy Public instances get busy. Wait a moment, or switch to your own self-hosted instance.


Privacy

  • The endpoint URL and mode are stored locally in your browser (chrome.storage.local) — never sent to Translatify's developers.
  • Translation requests go directly from your browser to the endpoint you configured.
  • Translatify only requests access to the specific endpoint you enter, and only after you approve the browser's permission prompt.
  • With a public endpoint, the server operator can see the lyrics you translate. Use a self-hosted instance if that matters to you.

Clone this wiki locally