About teiCrafter
teiCrafter is a browser editor for TEI-XML editions. It opens an existing edition, shows the text page by page next to its facsimile, and lets you correct the text and annotate persons, places, organisations and works with authority identifiers (GND, GeoNames, Wikidata). It is a static page that runs entirely in the browser. The deterministic editing path reads the edition from and saves it to a local file on your computer. Optional AI and lookup actions send the context described below directly to the selected external service.
What it is for, and what it is not
teiCrafter is a working environment for correcting and annotating TEI editions in the browser. Most editions reach it as the output of OCR or HTR pipelines that a person now verifies and refines. Plaintext files in a project folder open as minimal TEI drafted by a fixed rule (the text is carried verbatim). A separate, optional entry can draft TEI from plain text with a language model, and the editor can request model proposals for the current folio. A per-user control switches both AI surfaces off. It is not an XML development environment: there is no schema design and no transformation toolchain. Because saving changes nothing outside your deliberate edits, the same files can move between teiCrafter and tools such as oXygen or ediarum without one disturbing the other's work. It does not perform text recognition (that is upstream work) and does not publish editions; publishing is a separate step with its own tools.
What saving does (lossless)
Most XML software opens a file by parsing it into an internal tree and saves by
writing that tree back out. The rewritten text is almost never the original:
attribute order, entity notation (ä versus
ä), whitespace inside tags and line endings are silently
normalised, because the tree never recorded them. teiCrafter never rebuilds the
file. The opened text itself remains the document; an edit replaces exactly the
edited passage inside it, and everything else is preserved byte for byte. For
example, a file containing <w norm="sich" orig="ſich">
comes back with the attributes in exactly that order and spelling. The practical
consequence: a file comparison after saving shows precisely the human
intervention, and nothing else, which is what makes editorial changes reviewable
and provable. The editor checks this while you work and reports it next to the
text (the well-formed, lossless chip); in addition, a re-runnable
test suite in the repository round-trips several hundred real edition files and
compares the result to the input.
What the editing unit is
TEI encodes its own structure, so the editor takes the editing unit from the
document instead of asking for configuration: word-level when the TEI tokenizes
words (<w>), line-level when it marks only line breaks
(<lb>/<l>). Any TEI file opens without
setup. A project can add settings on top through a manifest file
(teicrafter.project.json next to the edition): its name, an image
resolver for the facsimile, the markup its guidelines allow (declared per
document type, since one project can hold letters, life documents and other
genres), its indices and views. The facsimile pane reads
<facsimile>/<zone> and links text and image
in both directions via @facs.
What can be annotated
Entities (persons, places, organisations, works, events) live in a
<standOff> index inside the document; selected text is linked to
them as <name ref> mentions, and authority identifiers attach to
an entity as <idno> elements (several registers per entity are
possible). Editorial notes are written as <note target> entries,
and textual-critical markup wraps a passage in <unclear>,
<del> or <add>, or marks a
<gap/>. Confirmed annotations become part of the TEI and follow the
lossless saving behaviour described above. Browser storage also retains editor
preferences, recent file handles, and one eligible unsaved draft for recovery.
What leaves the browser
Opening, editing, and saving a TEI file does not transmit it to teiCrafter or a model provider. Page images are fetched from the repositories the edition points to (for the examples: GAMS and the IIIF service of the Austrian National Library); an authority lookup sends the search term you typed to the chosen register (lobid.org for the GND, wikidata.org, geonames.org). Fonts, the OpenSeadragon viewer and the TEI vocabulary are served with teiCrafter. "New from text (LLM)" sends the pasted text and applicable mapping instructions to the selected model provider. "Propose (AI)" sends the current folio text with the active project prompt, mapping, and annotation vocabulary to that provider. The API key is held in memory for the session only. The TEI element and attribute vocabulary the editor can suggest comes from a vendored, versioned copy of the TEI P5 Guidelines compilation (currently 4.11.0, published by the TEI Consortium under CC-BY 3.0 and BSD-2-Clause) that is served with the page itself; requesting it transmits nothing of your edition. The repository's security and data-handling statement lists the external and local browser data flows.
Browser requirements
A current browser with ES6-module support is required. Saving in place uses the File System Access API and is available in Chromium-based browsers; everywhere else the editor offers the edited file as a download instead. Nothing is installed.
Machine-generated content
Content that a machine produced is marked violet and
counted as unreviewed until a human verifies it; violet is used for
machine-generated content and for nothing else. A generated initial TEI opens as
an unreviewed draft. In-context entity, markup, textual-criticism, and note proposals
carry resp="#ai". Inline proposals provide confirm and reject controls
in the layers inspector; proposed standOff notes provide the same controls at their
violet note marker.
The example projects
The tool is developed against three real projects, not all of them editions in the narrow sense: the Wenzelsbibel (word-level; the real Codex 2759 with IIIF facsimile where present, a synthetic stand-in for the licence-restricted codex in the public preview), a Jeanne Hersch letter from the Zentralbibliothek Zürich pipeline (line-level, page scans), and a letter from Stefan Zweig Digital (line-level, facsimile via the GAMS repository).
Method and provenance
teiCrafter is developed with Promptotyping, an AI-assisted, knowledge-document-driven development method; the knowledge base, the recorded decisions and the re-runnable tests are part of the repository: github.com/DigitalHumanitiesCraft/teiCrafter.
Status, citation, licence
teiCrafter is a research preview: it is under active development, its behaviour and interface change between versions, and it is not intended for production use. The tool is referenced in Pollin, C., Fischer, F., Sahle, P., Scholger, M. & Vogeler, G. (2025): When it was 2024. Generative AI in the Field of Digital Scholarly Editions. Zeitschrift für digitale Geisteswissenschaften 10, doi:10.17175/2025_008. The source code is available under the MIT License. Bundled reference data and fixtures retain the rights stated in their notices, source files, or embedded rights statements.
Who makes this
teiCrafter is a research tool by Digital Humanities Craft OG (Graz, Austria). Contact: office@dhcraft.org. Legal information: imprint.