remotion-dev/remotion · error · Error

Whisper folder ${to} exists but the executable (${getWhisper

Error message

Whisper folder ${to} exists but the executable (${getWhisperExecutablePath(to, version)}) is missing. Delete ${to} and try again.

What it means

Thrown by `installWhisperCpu` when the target install folder already exists but the whisper.cpp executable is not present inside it. This indicates a partial or broken previous install. Like the model-size error (1053), it only throws when `printOutput` is true (the default); with `printOutput: false` it returns `{alreadyExisted: false}` and re-installs.

Source

Thrown at packages/install-whisper-cpp/src/install-whisper-cpp.ts:179

};

export const installWhisperCpp = async ({
	version,
	to,
	printOutput = true,
	signal,
}: {
	version: string;
	to: string;
	signal?: AbortSignal | null;
	printOutput?: boolean;
}): Promise<{
	alreadyExisted: boolean;
}> => {
	if (existsSync(to)) {
		if (!existsSync(getWhisperExecutablePath(to, version))) {
			if (printOutput) {
				throw new Error(
					`Whisper folder ${to} exists but the executable (${getWhisperExecutablePath(
						to,
						version,
					)}) is missing. Delete ${to} and try again.`,
				);
			}

			return Promise.resolve({alreadyExisted: false});
		}

		if (printOutput) {
			console.log(`Whisper already exists at ${to}`);
		}

		return Promise.resolve({alreadyExisted: true});
	}

	if (process.platform === 'darwin' || process.platform === 'linux') {

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Delete the folder named in the message and re-run `installWhisperCpu`.
  2. Programmatically, pass `printOutput: false` so a missing executable triggers an automatic re-install.
  3. On Windows, whitelist the whisper folder in your antivirus if it keeps removing the binary.

Example fix

// before
installWhisperCpu({version: '1.7.0', to: 'whisper'});

// after (auto-recover)
installWhisperCpu({
  version: '1.7.0',
  to: 'whisper',
  printOutput: false,
});
Defensive patterns

Strategy: validation

Validate before calling

import {existsSync} from 'fs';

function whisperInstallIsComplete(to: string, version: string): boolean {
  return existsSync(to) && existsSync(getWhisperExecutablePath(to, version));
}

if (!whisperInstallIsComplete(to, version)) {
  fs.rmSync(to, {recursive: true, force: true});
}

Try / catch

try {
  await installWhisperCpu({version, to});
} catch (err) {
  if (/executable .* is missing/.test(String(err))) {
    fs.rmSync(to, {recursive: true, force: true});
    return installWhisperCpu({version, to}); // retry after cleanup
  }
  throw err;
}

Prevention

When it happens

Trigger: A previous install was interrupted after creating the folder but before placing the binary; the executable was manually deleted; antivirus quarantined the binary. The check is `existsSync(to) && !existsSync(getWhisperExecutablePath(to, version))`.

Common situations: CI cancelled mid-install; an AV on Windows removing whisper.exe; partial extraction of the zip; switching versions leaves an incompatible folder layout.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/dc97d1a34b7a116e. Report an issue: GitHub.