litmus
See what's hiding in your files — and remove it, safely.
litmus is a private, fully local tool that reveals invisible characters, hidden file information and content credentials in your documents, code and images — then strips them out without changing anything you can see. Every clean-up is checked before it is saved: if a change cannot be confirmed safe, litmus keeps your original untouched.
- Check — see what's hidden: invisible characters, embedded file info, content credentials
- Clean — remove it, while what you see stays exactly the same
- Trust — nothing is saved unless the result is verified safe
- Private — 100% offline; your files never leave your machine
Works with text, source code, PNG, JPEG and SVG files.
Get started in one minute
git clone https://github.com/LastDev-coder/litmus
cd litmus
./start.sh # macOS / Linux
./start.ps1 # Windows (PowerShell)
That's the whole setup — it prepares everything and opens the app in your browser. Drop a file in, choose Check or Clean, and download the clean result. Requires Python 3.11+ (or uv, which fetches Python for you).
Using the app
- Drop a file onto the page.
- Check shows what's hiding inside, explained in plain language.
- Clean removes it and hands you the cleaned file. Your original is never modified.
Pick a cleaning level to control how much is done:
| Level | What it does |
|---|---|
| Minimal | Remove invisible characters only |
| Standard (default) | Also normalize unusual spaces, line endings and letterforms |
| Tidy | Also neaten extra blank lines |
| Code-aware | Also remove unused Python imports |
Command line
Prefer a terminal? After setup, the same features are available as commands:
source .venv/bin/activate
litmus inspect myfile.txt # what's hidden? (read-only)
litmus transform myfile.txt # print the cleaned version
litmus transform myfile.txt --in-place --backup # save it, keep a .bak
litmus serve # open the web app
litmus --help # everything else
For source-code files, litmus is deliberately strict: it saves a cleaned code file only when it can verify the program still behaves the same. If it can't verify, it refuses and tells you why.
Privacy
Everything runs on your machine. No accounts, no uploads, no telemetry, no
network access. The web app binds to 127.0.0.1 and analyses files in memory.
License
Metadata
Release files for litmus-cli 0.3.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 | |
|---|---|---|---|
| litmus_cli-0.3.0.tar.gz | 80.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| litmus_cli-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 160.2 kB
Release files / litmus_cli-0.3.0.tar.gz
| Download URL | litmus_cli-0.3.0.tar.gz |
|---|---|
| Size | 80.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5bd48bc090d2fa27a2eff2875dd733d4287126906831c9002e2aea6aade40a77
|
|
BLAKE2b-256 checksum How to use checksums |
0f607f3633405b2531566588c72c788d938ac6f473b3a83d8b21fde4d8f1a955
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / litmus_cli-0.3.0-py3-none-any.whl
| Download URL | litmus_cli-0.3.0-py3-none-any.whl |
|---|---|
| Size | 80.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
145c858cba88c8693b2f987a3a42b5a882472128676e3bc290100400398fbb93
|
|
BLAKE2b-256 checksum How to use checksums |
263927013cacbbba2f9de71c3feb666f091f738f09bd28e843c496c4219393f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|