Skip to main content

Lixity

tests PyPI Downloads DOI Python 3.10+ License: AGPL-3.0

See where your manuscript changes. Read before you revise.

Lixity is a local manuscript analysis tool for authors, editors and researchers. Compare sentence rhythm, vocabulary, dialogue and tense across chapters, then open paragraphs to read the text and local measurements. Ask whether a change serves the scene before deciding what to keep or revise.

Lixity dashboard — chapter comparison, sentence rhythm and passage drill-down

Matthias Fahsold developed Lixity as an architect and developer at ROST Services GmbH and used it while writing his own debut novel.

Try the example · Three-minute first look · Install · What you can do · Practical guides · v0.6.0 release notes

The example is a read-only report made from invented text. It needs no installation or manuscript upload. Documentation is English; you can read the results in German, English, French, Spanish, Italian, Portuguese or Dutch.

Try it in 30 seconds

Open the synthetic report (invented text), Effi Briest or Pride and Prejudice. Explore a chapter comparison, then open a paragraph to read its measurements. No install, account or upload is needed. The three-minute first look explains the results without requiring statistics background.

Built-in analysis runs on your computer. Optional external OCR workers have separate data boundaries.

Install and start

Install uv, then run on Windows, macOS or Linux:

uv tool install --python 3.12 --managed-python lixity
uv tool update-shell

Open a new terminal, verify lixity --version, then start the local workspace with lixity service start --open. Choose Open Project or Analyze a manuscript; the first-project guide explains both. For later visits, use the packaged lixity-start.sh / lixity-start.ps1 launcher or the same service command.

The installation guide covers platform setup, pinned release wheels with SHA256SUMS, service status and logs, updates and removal. After an upgrade, restart the workspace to load the installed version.

What you can do

Understand your writing

See how sentence lengths, vocabulary, dialogue and tense vary throughout your manuscript. Open the passages behind a result before deciding whether to revise. Short or empty texts cannot support every comparison; unavailable results are shown explicitly.

Manuscript overview showing sentence rhythm, vocabulary and dialogue measures

Read the language signals · Mobile view · Dark theme

Walkthrough: select a chapter cell, expand a paragraph's Values and switch to the style dimensions

Compare chapters in context

The chapter map uses your manuscript's chapters as its reference. For example, a chapter with longer sentences than usual may reflect a new voice or a formal report. Select a coloured cell to inspect that chapter. The style axes bring together related measurements, helping you see which chapters share patterns and which features distinguish them.

Chapter comparison map showing differences from the manuscript's own style

Understand chapter comparisons · Style dimensions · Reference bands

Assign scenes to registers—such as dialogue, action or a formal report—so you can compare scenes with a similar purpose. Each group has its own middle values (medians); you can also set optional targets. Small samples may leave measurements unavailable. Scene example · Setup and limits.

Print what the analysis found

Export an A5 reading copy, A4 analysis report or A4 submission sheet from PDF export in the project controls, or use lixity pdf. The composer uses your project's title, author and optional publication details. Empty fields supply no inferred information.

See the complete Effi Briest report or Pride and Prejudice report. PDF layouts and font limits · Publication settings.

Keep review notes beside the text

Start from the flagged passages list, open a paragraph and read its measured values, source lines and tense labels. A note can be written directly on the passage; work markers keep it next to the relevant text in Markdown. Their visibility in a book export depends on the editor or converter you use.

Walkthrough: review flagged passages, open a paragraph, read its values and write a marker note on the passage

Review markers linked to passages, with statuses and an editable note

Work-marker instructions · Flagged passages · Note on a passage · Paragraph view

Connect sources, claims and decisions

The experimental research workspace keeps selected sources, quotations and notes in a separate local archive. A dossier gathers notes on a topic; a claim records an assertion you can link to source passages; a decision explains what you chose for the book. Filter by title or tag, or search the saved text. A saved quotation records what a source says; its accuracy still needs review.

Local visual reference inside a dossier section, with a description and an explicit synthetic-source caption

Import authorized local files or selected Zotero Desktop attachments. Scans can use local Tesseract or a configured OCR worker; inspect extraction warnings and quotations. Evidence links pin source paragraphs, while manuscript quote associations connect reviewed prose to exact claim revisions.

Review identifies older linked versions and changed manuscript anchors for your assessment. Related revisions can be previewed and saved together; conflicts preserve your draft. Nothing is repinned silently. Add local images as visual references, or use Timeline to organize claims with explicit calendar periods. These links and views record your interpretation; they do not establish factual truth. Research workflows and limits.

Walkthrough: the claims timeline places dated claims on a shared axis and jumps from a bar to its claim card

Research guide · Search and citations · Sources · Claims · Decisions · Decision review · Related revision preview

Choose a project and its settings

Preview a manuscript before importing it, select its analysis language and adjust which differences you want to examine. Project settings also hold the author name, publication details and optional confidentiality-agreement controls.

Project settings with manuscript selection, analysis preferences and the five-field NDA generator

Project workflow · Import preview · Mobile settings

Read a report in the terminal

Use lixity analyze manuscript.md --language de for a readable report, or add --json for software integration. Chapter, paragraph, dialogue, pacing and research commands are covered in the command reference.

Terminal report with sentence lengths, readability and vocabulary measures

These screenshots use public-domain literature or synthetic project records. More views and capture details.

How to read the results

Each measurement answers a specific question about the text:

Measurement What it helps you notice
Sentence length and variation Whether sentences stay similar in length or alternate between short and long. Suspense also depends on what happens in them.
Vocabulary diversity How varied word use is. Compare passages of similar length, language and purpose.
Dialogue share How much text falls inside recognized quotation marks. A high value may be expected in a conversation scene.
Chapter differences and consistency How closely measurable chapters follow the book's observed patterns. A deliberate change in voice can lower consistency.

Chapter comparisons use the manuscript's middle values and typical spread (median and MAD), with an adjustment for estimated sampling noise. Colours mark the direction of a difference, not its literary value. Optional statistical checks mark a selection for review; they cannot certify that a passage needs editing. An unavailable value can mean there is too little text or too few comparable chapters to calculate it.

The mathematical core includes several vocabulary measures (HD-D, MTLD, MATTR, Guiraud R, Maas a² and Yule's K). They answer related questions using different models and sample sizes. Readability and grammatical-pattern indicators have language-specific limits. Formulas, citations and worked examples live in Methods. The interpretation guide explains how to read results; stability and validation limits describe what has and has not been established.

Read the workflows: Intentional registers · Local word echoes.

Supported languages

German (de) and English (en) have the most extensive linguistic resources and language-specific fixtures. French (fr), Spanish (es), Italian (it), Portuguese (pt) and Dutch (nl) also have localized interfaces and analysis resources, with narrower heuristic coverage and validation.

Choose the manuscript language explicitly. LIXITY_LANG=de selects German terminal messages independently of --language de, which selects German analysis. Documentation is English; source quotations retain their original language. Mathematical identifiers and numeric JSON values are language-neutral. Language support and limits.

Documentation map

Current release

The current release is v0.6.0, continuing the pre-1.0 development line; historical v3.0.1 and earlier notes and tags remain available. Public JSON and research storage schema versions are independent; this release reads research archives through v7. When upgrading from the historical numbering, install the pinned release wheel explicitly; PyPI upgrades continue normally afterwards. Release notes describe compatibility and known limits; the changelog records subsequent work on main.

Python API and automation

from lixity import api

html = api.dashboard(text, language="de", project_config={})

CLI, Python and dashboard analysis share one pipeline. Analysis/profile JSON uses schema v2; style JSON uses v4. Integrations should pass explicit project settings when working with several projects. Inspect installed capabilities with lixity about --json and lixity COMMAND --help.

Choose api.analyze for numeric results or api.fingerprint for a style reference. For several outputs, reuse one analysis result.

Interface contracts · Architecture · Research commands · Automation summary

Research

The methods and the tool's placement among stylometry and corpus tools are described in the software paper draft under paper/, prepared for the Journal of Open Source Software. Released versions are archived on Zenodo: cite the concept DOI 10.5281/zenodo.23390297 (see CITATION.cff); every release also receives its own version DOI.

License

Lixity is open source under the AGPL-3.0-or-later. Use it freely for private and commercial writing, research and teaching — including self-publishing your book; no extra permission is needed. If you distribute Lixity or a modified version, the AGPL requires that recipients receive the corresponding source under the same license.

A separate written commercial license is available for integrations that cannot meet the AGPL, for example embedding Lixity in a closed-source product or running a modified version as a network service without releasing its source.

Licensing guide · Full AGPL text · Former LNCL-1.0 text · Commercial enquiries

Maintainer: Matthias Fahsold, Hamburg, Germany. Project operator: ROST Services GmbH, Rümpel, Germany. Legal notice.

Contributing · Report a security concern · Sample-text provenance

Metadata

Release files for lixity 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lixity 0.6.0
File Size Uploaded Provenance
lixity-0.6.0.tar.gz 903.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for lixity 0.6.0
File Interpreter ABI Platform
lixity-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / lixity-0.6.0.tar.gz

Download URL lixity-0.6.0.tar.gz
Size 903.7 kB
Tags Source
SHA-256 checksum
How to use checksums
41c93dcac1681b9fe4b21368069c7ac353358b5574b4be6a4804457db1120164
BLAKE2b-256 checksum
How to use checksums
f2f212a09b9fe8a9ed493b18fc07076b93c61a58d46c8e6c620d0a802877ce19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / lixity-0.6.0-py3-none-any.whl

Download URL lixity-0.6.0-py3-none-any.whl
Size 679.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
11be5a1d8136977c074fb67e1299490dc2a077e980c95cdd04756fc667dc7f08
BLAKE2b-256 checksum
How to use checksums
ad68d2381977af0ff12bfaef16152c6e0ff0758961962a288c2a214c431be65c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for lixity 0.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for lixity-0.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page