Open source · self-host or Lector Cloud

Read your way into a new language.

Lector is a language-learning reader. It is an alternative to LingQ and Clozemaster. Use Lector Cloud, or run it on your own hardware. Import a book, an article, a video, or a podcast. Click any word to translate it. Mine vocabulary as you read. Practise it with frequency-ordered cloze. Send it to Anki.
Lector reader view with click-to-translate and word-state colouring
Read

Turn any book into a lesson.

Lector imports an EPUB file, an article you paste, or a page from a URL. It colours every word by how well you know it: new, learning, or known. For an instant translation on your device, click any word. For rare words, a large language model (LLM) does the translation.
The Lector reader with a novel, colour-coded word states, and click-to-translate
Listen

Read along with video and audio.

Paste a YouTube URL and choose a caption track. Lector imports the transcript, and every line keeps its timestamp. Click a line to move the player to that moment. Lector never downloads or hosts the video. You can also upload a podcast episode. A Whisper model transcribes it, and the current sentence highlights as the audio plays.
A YouTube transcript in Lector with the embedded player and timestamped lines
Practice

Practise the words that matter first.

Lector holds thousands of Tatoeba sentence pairs. It orders them by frequency, so you learn the words you meet most often. You practise with multiple-choice questions or by typing the answer. A spaced-repetition system returns each sentence to you just before you forget it.
Cloze practice with multiple-choice options and mastery tracking
Remember

Mine vocabulary. Sync it with Anki.

Save words as you read. Lector adds them to your vocabulary database and records the known and learning states. Send mined words and phrases to Anki as Basic or Cloze cards. The Lector add-on also syncs reviews back. The add-on is in beta. When you grade a card in Anki, Lector updates the mastery of that word.
The export-to-Anki dialog with the Basic and Cloze card types
Understand

A tutor for your questions, and an editor for your writing.

Ask the built-in tutor your grammar questions in plain language. Keep a journal in your target language. The tutor gives you inline corrections with explanations. It also shows the text before and after each correction. The tutor works with the Claude API or with a local model.
The tutor chat with a grammar conversation
Organise

A library that stays tidy.

Group your collections in the way you think about them. Drag a collection to reorder it. Drop new books straight into a group. Lector records the reading progress of each collection, so you always know your position.
Library organised into collapsible groups with drag-to-reorder and reading progress
Also included

Everything else, without the sprawl.

Text-to-speech

Lector can use Google Cloud to pronounce words and sentences correctly. This feature is optional.

Web and paste import

Lector reads an article from any URL with Readability. You can also paste text directly.

Offline-first storage

Lector stores data in SQLite on the server and in IndexedDB in the browser. It needs no cloud account and no sync.

Statistics dashboard

The dashboard shows your vocabulary growth, your reading streaks, your activity heatmaps, and your cloze mastery. It also rates your fluency on the Common European Framework of Reference (CEFR) scale.

AI translation, with an offline backup

When you need a translation, Lector calls Claude or a local LLM. If neither is available, it uses the on-device dictionary from the language pack.

Any language

The reader works with any language. A language pack adds a cloze bank and a dictionary.

Language packs

Languages, ready to read.

Each language pack contains a frequency-ordered cloze bank and an on-device dictionary. Every pack has the same depth.

On the roadmap.

🇮🇳

Hindi → English

हिन्दी

🇻🇳

Vietnamese → English

Tiếng Việt

🇵🇭

Tagalog → English

Tagalog

🇷🇴

Romanian → English

Română

🇬🇷

Modern Greek → English

Ελληνικά

🇭🇺

Hungarian → English

Magyar

🇮🇱

Modern Hebrew → English

עברית

🇩🇰

Danish → English

Dansk

🇫🇮

Finnish → English

Suomi

🇸🇰

Slovak → English

Slovenčina

🇮🇪

Irish → English

Gaeilge

🏴󠁧󠁢󠁷󠁬󠁳󠁿

Welsh → English

Cymraeg

🏴󠁧󠁢󠁳󠁣󠁴󠁿

Scottish Gaelic → English

Gàidhlig

🇮🇱

Biblical Hebrew → English

עברית מקראית

Which language do you want next?

Choose a language and we will email you once, on the day it is ready. No newsletter.

Your build order comes from this list. Want to talk it over? Join the Discord.

A new language is simple to add. To build a pack yourself, open the GitHub repository.

We keep your address for this one announcement. Read the privacy policy.

Two ways to run it

Open source. Your way.

You get the same app in both cases. Host it yourself for free, or let us run it for you.

Self-host

Free
Run the Docker image on your own hardware. Your data never leaves your server. You bring your own LLM keys, or you run a local model. Lector is free forever.
Read the setup docs

Lector Cloud

Beta · from $5/mo

We host it, back it up, and keep it updated. You need no Docker and no setup. Just sign in and start to read. If you prefer not to run a server, choose Lector Cloud.

Start on Lector Cloud
Why self-host

Your course should not rent your progress back to you.

Your data, your server

Reading history, vocabulary, and progress live in a SQLite file on your hardware. There are no third parties and no telemetry.

No subscriptions

Deploy Lector once. Then learn forever. There are no monthly fees, no premium tiers, and no feature gates.

Works offline

Reading, cloze, and vocabulary all run without a connection. Only AI features need the internet.

Simple backup

Your data is one SQLite file in one Docker volume. Copy it with rsync or borg, or copy it to a USB drive.

Get started

Ready in about a minute.

Lector needs one Docker container and one volume. Copy this into a docker-compose.yml file. Then start the container.
# Create a directory for Lector
mkdir lector && cd lector

# Create a docker-compose.yml
cat <<EOF > docker-compose.yml
services:
  lector:
    image: ghcr.io/heuwels/lector:latest
    container_name: lector
    restart: unless-stopped
    ports:
      - "3400:3000"
    environment:
      - NODE_ENV=production
    volumes:
      - ./data:/app/data
EOF

# Start it up
docker compose up -d
Questions

Good to know.

Still curious? The docs cover installation, reverse proxies, AnkiConnect, and every environment variable.
Is it really free?

If you host it yourself, Lector is free and open-source. Deploy it on your own machine, with optional authentication. There is no subscription and there are no feature gates. If you do not run a local model, your only cost is your own use of an LLM API. If you prefer not to run a server, Lector Cloud starts at $5/mo and we host it for you. For comparison, LingQ costs about $15/mo and Clozemaster Pro about $13/mo.

Self-host or Lector Cloud. Which is right for me?

If you can run a Docker container, host Lector yourself. It costs nothing, your data never leaves your hardware, and you bring your own LLM keys. If you prefer to read and let someone else handle the servers, Lector Cloud does that from $5/mo. We also handle the backups and the updates. You can move between the two at any time. Export your data whenever you want to, because you always own it.

Where does my data live?

The answer depends on how you run Lector. If you host it yourself, all your data stays on your hardware in a Docker volume, and a backup is one file copy. There are no third-party databases, no analytics, and no telemetry. To let us count the active self-hosted installations, you may opt in and send us a signal. On Lector Cloud, we host your data in AWS (us-east-1). You can export it at any time, and you always own it.

Do I need an API key or a GPU?

No. The reader, the cloze practice, and the vocabulary tracking all work offline against a built-in dictionary. Only three features use the network: AI translation, the tutor, and writing correction. You can point those three at a local model or at any OpenAI-compatible API. Ollama, Llama, and Gemma all work. For a setup that needs no connection at all, read offline and remote use.

Which languages does Lector support?

The reader works with any language. A language pack adds a frequency-ordered cloze bank and an on-device dictionary. The packs now cover 中文, Español, العربية, Français, Português, Русский, Bahasa Indonesia, Deutsch, Türkçe, Italiano, Polski, Українська, Nederlands, Afrikaans, Čeština, Svenska, Esperanto, Κοινή, Latina. We add more packs over time. To add a new pair, send a simple pull request.

How do I get help?

Open the contact page. Send a message. You can also email [email protected]. The Discord server is another option.

How is this different from LingQ, Clozemaster, or Anki?

Lector does the work of both LingQ and Clozemaster in one place. It keeps all your known words in one vocabulary database, and not spread across separate services. You still own your cards in Anki. Lector gives you LingQ-style reading with click-to-translate, Clozemaster-style frequency cloze, two-way Anki sync, an LLM tutor, and a writing journal. You run one app on your own server, and you own your data. See the full comparisons: Lector vs LingQ, Lector vs Clozemaster, Lector vs Lute, Lector vs LinguaCafe, and Lector vs FreeLingo.

Get involved

Learn alongside other readers.

Join our Discord server. There you can share resources, compare progress, ask for new languages, and tell us what to build next.
Join the Discord server

Start to read in your target language today.

Host the open-source app yourself for free, or sign in to Lector Cloud and start.