Open source · self-host or cloud

Read your way into a new language.

Lector turns the books and articles you actually want to read into a complete course. Click any word to translate, mine vocabulary as you go, drill it with frequency-ordered cloze, and push it to Anki โ€” on our cloud, or your own hardware.

Cloud is in beta · self-hosting is free forever

Lector reader view with click-to-translate and word-state colouring
Read

Turn any book into a lesson.

Import an EPUB, paste an article, or pull one from a URL. Lector renders it in clean Literata typography and colours every word by how well you know it โ€” new, learning, known. Click any word for an instant on-device translation, and an LLM fills in for the rare ones.
Lector reader showing a novel with colour-coded word states and click-to-translate
Practice

Drill the words that matter first.

Thousands of Tatoeba sentence pairs, ordered by frequency so you learn the words you'll actually meet. Multiple-choice and typing modes, scheduled by a spaced-repetition system that brings each sentence back exactly when you're about to forget it.
Cloze practice with multiple-choice options and mastery tracking
Remember

Mine vocabulary. Push it to Anki.

Save words as you read and Lector builds your personal vocabulary database, tracking known and learning states. When you're ready, export mined words as Basic or Cloze cards straight into Anki over AnkiConnect โ€” no copy-paste, no plugins.
Export-to-Anki dialog choosing Basic or Cloze card type
Understand

A tutor on call, and an editor for your writing.

Ask the built-in LLM tutor grammar questions in plain language. Keep a journal in your target language and get inline corrections with explanations and before/after comparisons. Works with the Claude API or a local model โ€” your choice.
LLM tutor chat showing a grammar conversation
Organise

A library that stays tidy.

Group your collections however you think about them, drag to reorder, and drop new books straight into a group. Reading progress follows each collection so you always know where you left off.
Library organised into collapsible groups with drag-to-reorder and reading progress
In the box

Everything else, without the sprawl.

Text-to-speech

Optional Google Cloud TTS to hear words and sentences pronounced correctly.

Web & paste import

Pull an article from any URL via Readability, or paste text directly.

Offline-first storage

SQLite server-side, IndexedDB client-side. No cloud accounts, no sync.

Statistics dashboard

CEFR fluency, vocabulary growth, reading streaks, activity heatmaps, cloze mastery.

AI translation with a fallback

Claude or a local LLM on demand, dropping to a 2,000-word offline dictionary.

Any language reads

The reader works with any language; packs add cloze banks and dictionaries.

Language packs

Languages, ready to read.

Each pack ships a frequency-banded cloze bank and an on-device dictionary, at the same depth. The reader itself works with any language.

๐Ÿ‡ฎ๐Ÿ‡น ๐Ÿ‡ต๐Ÿ‡น ๐Ÿ‡ท๐Ÿ‡บ ๐Ÿ‡จ๐Ÿ‡ณ ๐Ÿ‡ฏ๐Ÿ‡ต On the roadmap

Italian and Portuguese slot straight in. Russian is next; Mandarin and Japanese follow as a pair (word-segmentation + a reading layer).

Add your language
Two ways to run it

Open source. Your way.

The same app, whichever way you run it. 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 run a local model), and it's free forever.
Read the setup docs

Lector Cloud

Beta · from $5/mo

We host it, back it up, and keep it updated. No Docker, no setup โ€” just sign in and start reading. For when you'd rather not run a server.

Start on the cloud
Why self-host

Your course shouldn't rent your progress back to you.

Your data, your server

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

No subscriptions

Deploy once, learn forever. No monthly fees, no premium tiers, no feature gates.

Works offline

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

Simple backup

One SQLite file, one Docker volume. rsync it, borg it, or copy it to a USB drive.

Get started

Running in about a minute.

One Docker container, one volume. Drop this into a docker-compose.yml and bring it up.
# 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.

Start reading in your target language today.

Open source to self-host for free, or on our cloud in a click.