ConvertX

Conversion form for an uploaded PDF, with a search box above the output formats offered by Vips and GraphicsMagick.

Twenty-two conversion engines behind one upload form

ConvertX is a file converter that runs on your own server. You upload one or more files in the browser, pick an output format, and the server calls whichever command-line tool handles that conversion. The README lists twenty-two engines, among them FFmpeg for video, LibreOffice and Pandoc for documents, Calibre for e-books, ImageMagick and Vips for images, and Assimp for 3D models. The "1000+ formats" figure is counted engine by engine, so the same extension appears more than once: PNG is listed under Vips and again under GraphicsMagick.

Engine picked per format, batches returned as a .tar

  • Engine and format picked together: output formats are grouped by converter under a search box. A PDF can go through Vips or through GraphicsMagick, each with its own list of targets.
  • Several files per job: results download one by one or together as a .tar archive, and every job shows up on a history page that HIDE_HISTORY turns off.
  • 24-hour cleanup: files older than 24 hours are deleted by default (AUTO_DELETE_EVERY_N_HOURS, set it to 0 to keep everything).
  • FFmpeg flags exposed: FFMPEG_ARGS passes input options such as -hwaccel vaapi for hardware acceleration, FFMPEG_OUTPUT_ARGS passes output options, and MAX_CONVERT_PROCESS caps concurrent conversions, which are unlimited out of the box.
  • No database server: the backend, written in TypeScript on Bun and Elysia, keeps accounts and jobs in a SQLite file inside the ./data volume. WEBROOT serves the app under a subpath.

HEIC photos, Kindle books and Outlook .msg files

  • iPhone HEIC photos turned into JPEG or PNG by libheif.
  • E-books reformatted by Calibre for a reader: AZW3 or MOBI for Kindle, KEPUB for Kobo.
  • Outlook .msg messages saved as .eml, and VCF contact files exported to CSV.
  • PDF, Word, Excel or EPUB files turned into Markdown by MarkItDown, which ships in the image.
  • A PNG or JPEG logo traced to SVG by VTracer.

A 1.4 GB image and no admin role for accounts

The Docker image is about 1.4 GB compressed on Docker Hub, for amd64 and arm64 alike. It bundles LibreOffice, Calibre, TeX Live, Inkscape and FFmpeg on top of Debian testing, the base image since v0.18.0. The README documents no way to run ConvertX outside Docker.

Accounts have no administrator. Anyone who reaches a fresh instance can register the first account, and sign-up closes after that. Adding a second user means reopening registration to everyone with ACCOUNT_REGISTRATION=true, because the code has no admin role and no invitations. The README says never to expose the service to the internet with that flag or with anonymous access (ALLOW_UNAUTHENTICATED) turned on, and to let in only users you trust. Login also requires HTTPS or localhost unless HTTP_ALLOWED=true is set.

Conversions run as root unless configured otherwise: PUID defaults to 0. Since v0.19.0, setting PUID and PGID runs the server and every converter as an unprivileged user, and the container fixes the volume's permissions by itself.

The web UI is the only documented way in. The README describes no REST API. The request for one (issue #363) has been open since July 2025, and a pull request adding it (#693) was opened on October 27, 2026.

Latest release: 0.19.0, September 26, 2026. Its notes call it a "long overdue release with many bugfixes". Version 0.18.0, three months earlier, fixed a path traversal flaw in the conversion route. The security policy supports only the latest release. The last commit landed on October 26, 2026, and the code is licensed AGPL-3.0.

SOURCES

REPOhttps://github.com/C4illin/ConvertX
LICENSEAGPL-3.0