Skip to main content
Back

Browser Extension

Hardware-accelerated conversions for converter.kaimdt.dev — GPU encoding via browser WebCodecs, and optionally system FFmpeg (NVENC · VideoToolbox · QSV) through the Hardware Bridge. The WebApp works without the extension; this is purely a performance upgrade.

Live Status

auto-updates every 5 s

Extension

Not installed

Install below

Hardware Bridge

Requires extension first

GPU Encoder (WebCodecs)

Not available

Browser may not support WebCodecs

CPU Cores

1

Single-worker mode

JS Heap

Unknown

Chrome only

SharedArrayBuffer

Disabled

COOP/COEP headers required

Best available tier: FFmpeg WASM — CPU-based (install extension for GPU acceleration)

Engine Comparison

FeatureWASM
No extension
Extension
No HW Bridge
HW Bridge
Ext + Native host
Video re-encoding✓ CPU✓ GPU/ASIC✓ NVENC · VideoToolbox · QSV · AMF
Max file size~2 GB~2 GBUnlimited (streaming)
H.265 / HEVC encodeBrowser-dependent✓ (system codec)
AV1 decodeCPU (slow)GPU fastGPU fast
Audio conversion
Speed (1080p 60 s)~3–5 min~30–60 s~5–15 s
Requires extension
Requires HW Bridge✓ (optional install)
Open Source✓ Apache-2.0✓ Apache-2.0

The Extension and Hardware Bridge are open source (Apache-2.0). The converter web app itself is proprietary.

Step 1 — Install the Extension

Supported: Chrome · Edge · Brave · Opera · Vivaldi · Chromium · Firefox. 🧭 Safari — planned.

Step 2 — Hardware Bridge (optional · open source)

GitHub ↗

The Hardware Bridge connects the extension to system FFmpeg via Native Messaging. It enables NVENC, VideoToolbox, QuickSync, and AMF hardware encoders and removes the 2 GB file-size limit. The installer automatically detects FFmpeg; if not found it will offer to install it for you.

Quick Install — Pre-built binaryGitHub Releases ↗

Download the pre-built installer for your OS from GitHub Releases — no need to install Node.js or clone the repo:

Or run from source (requires Node.js)
1

Clone the repository

git clone https://github.com/kaimdt/kaimdt-converter
cd kaimdt-converter/native-host-installer
2

Run the installer

The GUI installer guides you through all steps automatically and supports all browsers. In terminal mode, provide your extension ID (all Chromium-based browsers use the same Chrome Web Store ID) or pass --firefox for Firefox (fixed ID kaimdt-converter@kaimdt.dev).

# macOS / Linux — GUI (recommended)
./install.sh

# macOS / Linux — terminal, Chrome / Edge / Brave / Opera / Vivaldi
./install.sh --no-gui --chrome-ext-id YOUR_EXTENSION_ID

# macOS / Linux — terminal, Firefox
./install.sh --no-gui --firefox

# Windows — GUI (recommended)
.\install.bat

# Windows — terminal, Chrome / Edge / Brave / Opera / Vivaldi
.\install.bat --no-gui --chrome-ext-id YOUR_EXTENSION_ID

The installer checks for FFmpeg and, if not found, offers to install it automatically or let you provide a custom path.

🔍 Where do I find my Extension ID?
1

Open your browser's extension page in the address bar: chrome://extensions (Edge: edge://extensions, Opera: opera://extensions).

2

Enable Developer mode using the toggle switch (usually top-right).

3

Find the kaimdt Converter card and copy the ID shown below the name, e.g. opkfolgclmgdodompoldolcmcnmpiogo.

4

Paste the ID into the install command or enter it in the GUI installer — it auto-detects the ID when the extension is already installed in this browser.

If you installed the extension from the Chrome Web Store, the ID is permanent. Only developer-mode (unpacked) extensions get a different ID.

3

Reload the extension

Open chrome://extensions (Edge: edge://extensions), click the reload button on kaimdt Converter. The "HW Bridge" badge will appear in the navbar when active.

Hardware Bridge — FAQ

What is the Hardware Bridge / Native Host?
The Hardware Bridge is a small helper program that is installed once on your computer. It listens for requests from the browser extension using the browser's Native Messaging protocol. When you convert a file, the extension forwards it to this program, which in turn invokes the FFmpeg binary installed on your system with the correct parameters — including NVENC (NVIDIA), VideoToolbox (Apple), QuickSync (Intel), or AMF (AMD) for hardware encoding.
Do I need to install this once or every time?
Once. The native host is registered as a permanent service (macOS: LaunchAgent, Linux: XDG Autostart, Windows: Registry key). After that it starts automatically on demand whenever the extension triggers a conversion — no manual action required.
Which browsers are supported?

All major desktop browsers are supported:

  • Chromium-based: Chrome, Chromium, Edge, Brave, Opera, Vivaldi — all share the same extension ID from the Chrome Web Store.
  • Firefox: Uses a fixed extension ID (kaimdt-converter@kaimdt.dev) — no ID entry needed.
  • Safari: Planned for a future release.

The installer writes manifest files to each browser's native messaging host directory. You can install for multiple browsers at once using the GUI installer.

Which operating systems are supported?
  • macOS: Intel and Apple Silicon.
  • Linux: Any distribution with a supported package manager (apt, dnf, pacman, zypper, Flatpak). Both x86-64 and ARM.
  • Windows: Windows 10 and later (x86-64).
How does the browser communicate with the native host?
The browser establishes a JSON pipe to the native host program using the Chrome Native Messaging API (or the equivalent Firefox API). The extension sends the file and conversion options; the native host responds with progress messages and the finished result. The connection is held only during an active conversion and is closed afterwards. The extension status in the browser updates automatically every 5 seconds — you'll see immediately if the native host is restarted or disconnected.
What happens after a browser update or extension update?
The native host itself is independent of the browser and does not need to be reinstalled when the browser updates. The extension ID also stays the same after extension updates from the Chrome Web Store.
Exception: If you loaded the extension as an unpacked (developer-mode) extension and reloaded it, the temporary extension ID may change. In that case, re-run the installer.
How do I update the native host?
Download the new version from GitHub Releases and run the installer again. It overwrites the existing installation automatically. Alternatively, pull the repository and run ./install.sh again — the installer detects whether a version is already present and updates it.
The Hardware Bridge shows 'Not installed' even though I installed it. What should I do?
  1. Reload the extension: Open chrome://extensions and click the reload icon on kaimdt Converter. The extension will then make a new connection attempt.
  2. Reload this page: Status updates automatically every 5 seconds. Pressing F5 forces an immediate recheck.
  3. Check the extension ID: The installer was run with a specific extension ID. Make sure the installed extension has the same ID (visible in chrome://extensions with Developer mode enabled).
  4. Re-run the installer with the correct extension ID (see step 2 above).
  5. Check FFmpeg: The native host requires FFmpeg on the system path or as an absolute path. Test in a terminal: ffmpeg -version
Does the native host run in the background all the time?
No. The native host is started on demand by the browser and exits automatically when the connection is closed. It consumes no CPU or noticeable resources while idle.
How do I uninstall the native host?

macOS / Linux:

./install.sh --uninstall

Windows (PowerShell):

.\install.bat --uninstall

Encoder Priority

1

Hardware Bridge

System FFmpeg via browser extension — NVENC, VideoToolbox, QuickSync, AMF

HW
2

GPU (WebCodecs)

Browser GPU/ASIC encoder via WebCodecs API — ~90%+ native throughput

GPU
3

FFmpeg WASM

CPU-based FFmpeg WebAssembly — full codec support, works everywhere

CPU

Open Source

Licensed Apache-2.0. The converter web application is proprietary.

Security

The content script is only active on converter.kaimdt.dev and beta.converter.kaimdt.dev. No data is collected or transmitted outside your machine. All file processing happens locally. The native host only runs when explicitly triggered by a conversion.