Urtext /ˈʊrtekst/ is an open-source library for plaintext writing, research, documentation, knowledge bases, journaling, Zettelkasten, project/personal organization, note taking, a lightweight database substitute, or any other writing or information management that can be done in text format.

The basics are simple, and you can use only the parts you need. Get started on desktop or iPhone/iPad.

Features and Philosophy

Plain Text

Plaintext is fast, human-readable, flexible, cross-platform, device-portable, and future-proof. It can be easily diffed and version-controlled. Urtext can embed other syntaxes, including other markup language and programming language syntaxes.

Extensible

Being implemented in Python, it can execute self-modifying or arbitrary Python code. Urtext can be extended to add or modify functionality, to the extent of the Python language. If Urtext does not have a feature you want, you can add it with a little Python knowledge.

Future Proof

Because the storage format is plain text, an interpreter, compiler, and editor could be implemented in any sufficiently capable language, current, past or future.

Freeform, Flexible Syntax

Urtext is like an inverse programming language. Syntax combines content, structure and instructions together; there is no additional code or markup “behind” the visible syntax. Text can have metadata independent of the file system. An Urtext project encompass dozens or thousands of files, with individual files providing links to other other files or parts of files (nodes). Nodes can reference, modify, and organize one another, across hundreds or thousands of files. Text can be linked in tree-like, recursive (tangled), and other non-hierarchical ways.

Local First

Urtext operates on files locally present. It is not dependent on a cloud or other subscription service. Cloud or version control services can be used to sync project files among devices if desired.

Minimum UI

Employing theming and syntax highlighting, Urtext forms a user interface out of its own syntax. Almost everything in Urtext can be accomplished without popups, menus, or leaving the text buffer.

Files Handled For You

Direct interaction with file system is mostly unnecessary. Creating, naming, saving, and organizing files is handled for you.

Implementations

The interpreter for Urtext is in Python and can be used wherever Python 3.3 or later runs.

Urtext requires an implementation within a text editor or text view: