Skip to content
hushvert

Add file conversion to your app, without uploading the file

hushvert's conversion engine is an open-source JavaScript SDK. Images, HEIC, audio, archives and PDF operations run in your users' browsers with WebAssembly, so the file never touches a server, yours or ours.

npm install @hushvert/engine

See it run

Drop an image below. The SDK converts it to WebP in your browser - no upload, no server, running the exact code on the right. Watch your network tab: nothing leaves.

Drop an image to convert it to WebP

PNG, JPG, WebP, AVIF or HEIC. It never leaves your browser.

import { convertFile } from '@hushvert/engine'

const webp = await convertFile(
  file,
  { from: 'png', to: 'webp', module: 'images' },
)
// runs in the browser; nothing uploaded

Why client-side conversion

  • No upload to secure. Every other conversion API receives the file by definition. This one does not, so for sensitive documents there is no retention policy, no data-processing agreement, and no breach surface for the conversion step.
  • No per-conversion cost. Work runs on your users' CPUs, not your servers. Conversion volume does not show up on your compute bill.
  • Verifiable, not promised. Open the network tab during a conversion and watch nothing leave. The privacy claim is something your users can check, which is rare and worth a lot.

Quickstart

import { configureEngine, convertFile } from '@hushvert/engine'

// Once at startup: point the engine at your served wasm worker assets.
configureEngine({ /* ffmpeg, libarchive, pdfjs asset URLs */ })

// Runs in the browser; the blob never left the device.
const blob = await convertFile(
  file,
  { from: 'heic', to: 'jpg', module: 'images' },
  (pct) => console.log(`${pct}%`),
)

Full setup, the asset-serving step, and the format list are in the repository README.

What it converts

Image interchange (PNG, JPG, WebP, AVIF, JXL) plus HEIC, BMP and TIFF decode; archive packing and listing (zip, tar, tar.gz, 7z); PDF merge, image-to-PDF, and PDF pages out as images; and audio plus small video via ffmpeg compiled to WebAssembly. The package ships TypeScript source and works with webpack, Vite and friends.

Heavy formats: the hosted API

Office documents to PDF, PDF to Word, and large video genuinely cannot run in a browser; they need a server. For exactly those, hushvert runs a hosted, usage-metered conversion API: one POST to submit, a poll to download, files deleted within about an hour. It is live now, self-serve with an API key, with a free monthly allowance before it draws on your account credits. Everything a browser can do stays in the free, keyless SDK.

When the SDK hits a server-only pair (like the ones above), point it at the hosted API to bridge the gap; client-side pairs still run locally and never touch the network. Keep your API key server-side and call the hosted API from your backend - never ship the key to the browser. The full request, error, and polling reference is on the API keys page.

Working in an AI coding agent? hushvert also ships an MCP server, @hushvert/mcp. Point Claude Code, Cursor, or any Model Context Protocol host at it with your API key and the agent gets a convert_file tool for the same server-only formats. It reads the file, runs the conversion, and writes the result in one call, so the agent never has to write upload-and-poll glue.

Common questions

Does the file get uploaded to a server?
No. @hushvert/engine runs the conversion in the user's browser with WebAssembly in Web Workers. For every format the browser can handle, the file never leaves the device, which you can confirm in the network tab. That removes the upload entirely, rather than securing it.
What is the license and the cost?
The SDK is MIT-licensed and free, published on npm as @hushvert/engine. Conversions run on your users' CPUs, so there is no per-conversion server bill to anyone.
What about office documents, PDF to Word, or large video?
Those genuinely cannot run in a browser, so they need a server. hushvert runs a hosted, usage-metered API for exactly those heavy formats: submit with one POST, poll for the result, download. It is live and self-serve with an API key, with a free monthly allowance before it draws on account credits. Grab a key at hushvert.com/developers/keys. The client-side SDK still covers everything a browser can do, free and keyless.
Can my AI coding agent convert files?
Yes. Install the @hushvert/mcp Model Context Protocol server and your agent (Claude Code, Cursor, Cline, Zed) gets a convert_file tool over the hosted API. The agent calls it when a task needs a server-only conversion like office-to-PDF, PDF-to-Word, or video; client-side pairs still belong in the free SDK. It is one npx line plus your API key, with the full setup in the package README.
Why does client-side conversion matter for my app?
If your product handles sensitive files (health, legal, finance, HR), keeping conversion on the user's device removes a whole category of risk: no upload to secure, no retention policy, no data-processing agreement for the conversion step, and a privacy claim your users can verify themselves.