How our tools work
This page explains where the work happens when you use a Convertur tool, which engines do the converting, how we check that a tool does what its page says, and how pages are kept up to date.
Where the work happens
Every tool runs in your browser tab. The file you choose is read by code in the page, converted there, and offered back to you as a download. It is not sent to a Convertur server. Heavy jobs run in a Web Worker so the page keeps responding, and large engines are compiled to WebAssembly so the same code a desktop app uses can run in the browser.
Some engines are too large to ship with the site. They load the first time you use a tool that needs them, from Convertur or a public content delivery network, and every one is pinned to an exact version so results don't change without us knowing. Only code is downloaded. Your file is never attached to those requests. The Privacy Policy lists the providers involved.
The engines behind each kind of tool
- Images: the browser's own image decoders and canvas for common formats, libheif for HEIC, jSquash for AVIF encoding, UTIF for TIFF, exifr for metadata and ImageTracer for tracing images into SVG. Camera RAW converters extract the JPEG preview the camera stores inside the RAW file.
- PDFs: pdf-lib to merge, split, rotate and edit, PDF.js to render pages and read text, and Tesseract.js for OCR.
- Audio and video: FFmpeg compiled to WebAssembly, plus Mediabunny with the browser's built-in media encoders where the browser supports the format.
- Data files: Papa Parse for CSV, SheetJS Community Edition for Excel, js-yaml, smol-toml and fast-xml-parser for config formats, and the official SQLite WebAssembly build for databases.
- Documents and subtitles: Mammoth for Word files, marked for Markdown, Turndown for HTML to Markdown, and the browser's print engine for PDF output.
- Archives and fonts: fflate and client-zip for ZIP files, 7-Zip compiled to WebAssembly for RAR and 7z, a WOFF2 encoder for web fonts and opentype.js for font tables.
- Local AI: background removal and OCR models that download to your browser and run on your device.
How we check results
The trickier conversion code, such as ZIP writing, OpenType to TrueType conversion, STL parsing, media conversion planning and pixel art palettes, is covered by automated tests in the codebase. Statements on a tool page about what it supports are checked against the tool's code and the documentation of the engine it uses. When a page claims something a tool can't do, we change the page or the tool.
A conversion that finishes is not proof that the result is right for your use. Every tool page lists what to check before you rely on the output, and the disclaimer explains the limits.
Update dates
Each tool page shows a “Last updated” date. It is the date that tool's page copy last changed. We review a page when its engine or behavior changes, when the copy is rewritten, and when someone reports a problem with it. Guides and blog posts show their own updated dates, and the changelog lists what has changed across the site.
Report an error
If a tool gives a wrong result or a page says something that isn't true, use the contact form or email hello@sajam.dev. Every tool page has a “Report an error” link that fills in the page for you. Please describe the file type and what you expected, but don't send confidential files.