A tiny local web app for highlighting and commenting on plain text files.
Project description
txthighlight
A tiny local web app for highlighting and commenting on plain text files.
Installation
pip install txthighlight
Usage
By default it serves the current directory:
txthighlight
Run it on a file:
txthighlight --host 0.0.0.0 --port 8080 somefile.txt
Or on a directory:
txthighlight --host 0.0.0.0 --port 8080 ./docs
Then open:
http://0.0.0.0:8080
If you serve a directory, / shows a simple directory listing and you can click into files or subdirectories. The listing visually marks directories, likely annotatable text files, .json sidecars, and other files.
Highlight metadata is stored next to the source file in:
somefile.txt.json
Only UTF-8 text files are supported. Non-UTF-8 files are rejected with an error.
What it does
- renders a plain text file in the browser
- lets you select text and highlight it
- lets you add comments to highlights
- lets you remove highlights
- stores annotation data locally in a JSON sidecar file
- works with desktop and mobile browsers
Why this exists
There are many tools for annotating PDFs, rich text documents, and web pages. There are very few simple tools for annotating a raw local text file.
Plain text is still a common working format for:
- transcripts
- logs
- OCR output
- legal or policy text
- prompt corpora
- research notes
- interview notes
- exported chat histories
This project fills that narrow gap: plain text in, annotations in a nearby JSON file, no database required.
The niche
This tool lives in an awkward but useful niche.
Most annotation tools assume one of these:
- HTML pages annotated by a browser extension
- rich text documents like Word or Google Docs
- PDF with built-in annotation support
- note-taking apps with their own storage format
But sometimes you do not want any of that. Sometimes you have a .txt file and want to keep working with a .txt file.
Data format
Annotations are stored in <text-file>.json.
Example:
{
"source_file": "/path/to/somefile.txt",
"annotations": [
{
"id": "3d7278a2-6d67-4e1c-a0c8-4a0a7d3b0e40",
"start": 12,
"end": 42,
"comment": "Important passage",
"created_at": 1713350000,
"updated_at": 1713350123
}
]
}
Offsets are character offsets into the text file as loaded by the app.
Contributing
Contributions are welcome! Please submit pull requests or open issues on the GitHub repository.
License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file txthighlight-0.1.0a2.tar.gz.
File metadata
- Download URL: txthighlight-0.1.0a2.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22f896250d96a5711f0ee27f7f3a2a4ef8ce94dfbf30282c53188e373d62c00f
|
|
| MD5 |
5dfdf5967f16752b9adb8f4ac29af88b
|
|
| BLAKE2b-256 |
aaa8fa058f81ebcc4b1f76d010060900d936abb5df7abf79cadc9c13db3bf282
|
File details
Details for the file txthighlight-0.1.0a2-py2.py3-none-any.whl.
File metadata
- Download URL: txthighlight-0.1.0a2-py2.py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b56f6e1e565be5e5bf81f8d661046858e071a71265df211fc214cc9f68580f2f
|
|
| MD5 |
b4c9c0a37fb82d6a1fb871e1c0b65918
|
|
| BLAKE2b-256 |
1c5f5a5246d0a22fbfbbe591ade715b5a0a56308e22d1604e87862c671bb4941
|