Lixity
Read the patterns in your writing. Keep the evidence behind your decisions.
Lixity helps authors, editors and researchers see how a manuscript changes from chapter to chapter. It measures sentence lengths, word use, dialogue and tense, with chapter comparisons and paragraph views for reading the measured text. Its research workspace keeps source quotations and writing decisions connected. Your literary judgment guides what you keep or revise.
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.5.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.
Read the language signals · Mobile view · Dark theme
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.
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.
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.
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.
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 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.
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 much words repeat. 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.
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
- Practical guides — installation, interpretation, research and comparisons with other tools.
- First project · Installation and updates.
- CLI workflows — use
lixity --helpandlixity COMMAND --helpfor the installed commands and options. - Automation contracts · Research workflows.
- Methods · Stability · Architecture · Localization.
- Agent index · Full documentation bundle.
Current release
The current release is v0.5.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.
Choose api.analyze for numeric results or api.fingerprint for a style
reference. Each convenience call performs its own analysis; integrations needing
several outputs can reuse the shared 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.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| lixity-0.5.0.tar.gz | 895.8 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lixity-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.6 MB
Release files / lixity-0.5.0.tar.gz
| Download URL | lixity-0.5.0.tar.gz |
|---|---|
| Size | 895.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a15abe995aea9caeac3dc740ece1b736cc6f81337603861b372f13f365b0c97
|
|
BLAKE2b-256 checksum How to use checksums |
3827557a91a981b006f4cc97830edd36d6d842b769dab0604656e63df6de1a74
|
| 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 logRelease files / lixity-0.5.0-py3-none-any.whl
| Download URL | lixity-0.5.0-py3-none-any.whl |
|---|---|
| Size | 675.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1cda5ef1ac576c3245f9952b93d45b4589dfd7402f714aed39bc1ad255b42b49
|
|
BLAKE2b-256 checksum How to use checksums |
cd7fd03fdf7f0528292b44deba8595be66a204757d32c3c8befd738203dc7c62
|
| 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 logSecurity for lixity 0.5.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.
Attestation for lixity-0.5.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 logA 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.