Visita Interiora Terrae Rectificando Invenies Occultum Lapidem

Vitriol

Visit the interior of the earth; by rectification you will find the hidden stone.

A self-contained, desktop file converter spanning ~150 formats across documents, data, images, audio, video, 3D models, archives, ebooks, subtitles, fonts, and X.509 crypto material — with optional Philosopher's Stone mode that hides any lossless file inside an ordinary-looking image, audio file, video, archive, or self-extracting script.

Download for Windows Sign in / Launch web app View on GitHub
Eleven categories · ~150 file extensions · several thousand conversion pairs

What it does

Drop files into Vitriol's playlist. Pick a target format. Click convert. Everything runs locally — no telemetry, no network calls during conversions, no third-party APIs.

Documents

md · html · docx · pdf · epub · odt · rtf · pptx · txt · rst · org · ipynb · tex · adoc · textile · muse · opml · djot · typst · fb2 · docbook · jats · mediawiki · dokuwiki · jira · man · beamer · revealjs · bibtex · csljson · …

Data

csv · tsv · xlsx · json · jsonl · yaml · toml · ini · env · xml · parquet · feather · orc · vcf

Images

png · jpg · webp · bmp · tiff · gif · ico · tga · apng · avif · heic · jxl · jp2 · qoi · icns · sgi · pfm · pnm · ppm · dds · xbm · svg · psd · eps · …

Audio & Video

mp3 · wav · flac · ogg · opus · m4a · aac · aiff · alac · ac3 · mp2 · oga · mka · mp4 · mkv · webm · avi · mov · wmv · flv · mpg · mpeg · m4v · 3gp · ts · asf · f4v · ogv

3D Models

glb · gltf · obj · stl · fbx · ply · dae · 3ds

Plus first-class support for archives (zip · 7z · tar · tar.gz · tar.bz2 · tar.xz · tar.zst), comic books (cbz · cb7 · cbr), subtitles (srt · vtt · ass · ssa · sub · mpl), fonts (otf · ttf · woff · woff2), and X.509 crypto material (pem · crt · cer · key · der). The wider markup/document family is powered by Pandoc, auto-fetched on first launch.

Source-available

Code-signed

AES-256 encrypted

Telemetry-free

Philosopher's Stone

The hidden stone

Drop any lossless file in. Get back an output that looks like an ordinary image, audio file, video, archive, or self-extracting script — but contains the original bytes inside, recoverable byte-exact through Vitriol. Optional AES-256 password protection per file.

Three Stone-mode PNGs of three different sources, plus the same Chopin source hidden again with the password Chopin. Same source, different password, completely different image — the encryption is baked into the carrier itself.

AES-256 password protection

Per-file optional password derived through PBKDF2-HMAC-SHA256. Without the right password, the file does not decode — and the wrong password produces silent garbage on image/audio/video/zip/3D outputs, so a probing attacker can't tell encryption was even used.

Verify Round-Trip

Optional safety toggle. When on, every Stone conversion is immediately reversed in a temp folder, and the output only commits if the reverse produces bytes matching the original. Catches end-to-end integrity issues before they reach disk.

Layering for depth

Save a file as .png. Drop the result back in and save it as .wav. Then the .wav as .mkv. Each layer can carry its own password — recovering the original means unwrapping every layer in reverse order with the right password at each step.

Round-trip examples

Sample outputs

Three source files and the Stone-mode .png, .wav, and .mkv outputs Vitriol produces from them. Drop any of these back into Vitriol to recover the original source byte-for-byte. Self-extracting .py and .exe outputs work differently — see the next section.

Inline players are 30-second previews of the Stone-mode .wav output — generated music that's actually carrying the source file's bytes inside it. The Chopin row has no preview because audio-to-audio is a same-category conversion (no Stone hiding when both sides are already audio).

Sample Music Zip

A zip archive of audio files — auto-engages Stone mode.

Stone .wav output (preview)

The Raven by Edgar Allan Poe

A PDF of the poem — converted into image, audio, and video.

Stone .wav output (preview)

Chopin — Nocturne Op. 9, No. 2

An m4a recording — Stone outputs include both no-password and password-protected image variants of the cross-category conversions. Password: Chopin

Run them, don't reload them

Self-extracting scripts

Stone-mode .py and .exe outputs are different from the image / audio / video outputs above — they contain everything needed to reconstruct the source without Vitriol installed. Run the script, it rebuilds the original file next to itself.

Self-extracting .py

A standalone Python script. Anyone with Python installed can run it; no Vitriol needed. Cross-platform (Windows / macOS / Linux), small file size, easy to inspect — open it in any text editor to see the embedded payload as base64.

Run it:

python the_file.py

If password-protected, you'll be prompted on stdin. Five wrong attempts and the script self-deletes.

Self-extracting .exe

A native Windows executable. Recipients don't need Python or Vitriol — just Windows. Double-click to run; the embedded payload extracts to the same folder as the executable.

Run it:

double-click on Windows
or:  the_file.exe

Same password rules as .py. Windows may show a SmartScreen warning for unsigned executables — that's expected.

You can also drop a .py or .exe Stone output back into Vitriol if you have it installed — both paths recover the same original bytes — but the whole point of these formats is that you don't have to. They're for sharing with people who won't be installing Vitriol.

Try the example scripts

Sample Music Zip → .py

Run with Python; rebuilds Sample Music Zip.zip in the same folder.

The Raven → .py

Run with Python; rebuilds The Raven By Edgar Allan Poe.pdf in the same folder.

Chopin (password-protected) → .py & .exe

Both rebuild Chopin - Nocturne Op. 9.m4a. You'll be prompted for a password — use Chopin. The .exe runs without Python; the .py needs it.

Free · Windows 10 / 11 · 64-bit

Download Vitriol

Both editions are digitally signed via Azure Trusted Signing. Right-click the downloaded file → Properties → Digital Signatures to verify the certificate.

Recommended

Installer

VitriolSetup-.exe · ~120 MB · signed

Standard Windows install. Puts Vitriol under Program Files, registers a Start Menu entry, and gives you a normal Add/Remove Programs entry. One-click in-app updates from this point forward.

  • Standard install path
  • Start Menu + optional Desktop shortcut
  • Auto-update with one click
  • Uninstall via Settings → Apps
Download installer
Portable

Portable zip

Vitriol-portable.zip · ~120 MB · signed inner exe

Extract anywhere — Desktop, USB stick, a tools folder. No installer, no admin rights. Inner Vitriol.exe carries the same signature as the installed edition.

  • Run from any folder
  • No admin rights required
  • Update notifications + browser link
  • Delete the folder to remove
Download portable zip

Both downloads include FFmpeg, Assimp, DejaVu Sans, Cinzel, and an embedded Python runtime. No system Python install required. Nothing is downloaded at runtime except the optional once-per-day update check.

Self-host · Docker · multi-user

Run your own server

Same engine, multi-user web UI, accounts & roles, REST API, custom themes, OIDC SSO. One container, one volume, one command. Pick the path that fits.

One-liner

Pulls the prebuilt image from GHCR, creates a persistent volume, starts the container.

curl -fsSL https://vitriol.rocks/install.sh | bash

Then open http://localhost:3825 — the first-run wizard creates your super admin in the browser.

Docker run

Manual one-shot if you'd rather not pipe shell scripts. Same result.

docker run -d \
  --name vitriol \
  --restart unless-stopped \
  -p 3825:3825 \
  -v vitriol-data:/data \
  ghcr.io/kl3mta3/vitriol-docker:latest

Coolify

Deploys the compose file from this repo as a managed Coolify resource — automatic TLS, named volumes, healthchecks.

Deploy on Coolify

In your Coolify dashboard: New Resource → Public Repository, paste the repo URL, pick Docker Compose. Domain + TLS handled by Coolify's Traefik.

From source

Clone, customize, build. Useful if you want to fork or pre-bake config.

git clone https://github.com/kl3mta3/Vitriol-Docker
cd Vitriol-Docker
docker compose up -d --build

Persistent state (DB, secret key, uploads, outputs, certs) lives in the vitriol-data named volume — survives restarts and image upgrades. The first user to hit the URL creates the super admin in the browser; no env-var gymnastics. Postgres / Neon supported via VITRIOL_DATABASE_URL. Full setup & admin guide is on the API page and inside the running app at /admin/server/guide.

For developers

Build from source

Source-available under the Elastic License v2. Clone, run, audit. Vitriol's Stone mode uses standard cryptography (AES-256-CTR + PBKDF2-HMAC-SHA256) — you don't have to take our word for it.

git clone https://github.com/kl3mta3/Vitriol.git
cd Vitriol
python launcher.py

First launch installs the pip packages and downloads FFmpeg, Assimp, Pandoc, and bundled fonts to local folders. Subsequent launches are instant.