Alignment is a model.
Whitespace runs, letter/mark/number runs, and other Unicode code points form the alignment units. They are not linguistic words or grapheme clusters: CJK runs may stay together and emoji sequences may split. No case folding, trimming or Unicode normalization is applied.
The solver minimizes a fixed affine-gap score separately for each witness. Pairwise optima are not a jointly optimal multi-version alignment. Touching or overlapping changes are grouped conservatively into one locus; repeated text can admit multiple optimal matches. Affine-gap alignment reference ↗
The editor owns the choice.
A witness is one supplied version. The alignment base is a coordinate reference, not the best or original text. A selected reading is an editorial judgment. Unselected versions remain intact, and a custom reading is not assigned invented source support.
The TEI guidelines distinguish apparatus entries, preferred readings, alternatives and attesting witnesses. Our export follows those ideas but is not schema-certified; it does not model source damage, manuscript hands, uncertain transcription or historical descent. TEI critical apparatus ↗
Local and portable.
Your project stays in tab memory. Refreshing loses unsaved work. Download the project, not just the assembled text, to keep the originals and decisions. Undo/redo retains up to 20 changes in this tab only.
JSON preserves raw strings. XML escapes text and carriage returns; invalid XML characters are rejected explicitly. Native Unicode property classifications can differ between engine versions, so saved decision signatures are checked before reuse. XML 1.0 specification ↗
Use texts you have permission to process or distribute. All built-in examples are original synthetic passages. There is no AI call, account requirement or paid feature.