remotion-dev/remotion · error · Error

${owner}/${repo} is larger than the 100 MB Browser Studio li

Error message

${owner}/${repo} is larger than the 100 MB Browser Studio limit.

What it means

The declared size of every blob in the tree is summed and compared against maximumRepositoryBytes = 100 MB (104,857,600 bytes). Repositories whose tracked files total more than that are rejected before downloading starts, because every byte would have to be fetched into browser memory or OPFS storage.

Source

Thrown at packages/browser-studio/src/load-github-repository.ts:186

	const fileEntries = tree.tree.filter(
		(entry): entry is GitHubTreeEntry & {type: 'blob'} => entry.type === 'blob',
	);
	for (const file of fileEntries) {
		validateRepositoryPath(file.path);
	}

	if (fileEntries.length > maximumRepositoryFiles) {
		throw new Error(
			`${owner}/${repo} has ${fileEntries.length.toLocaleString()} files. Browser Studio supports up to ${maximumRepositoryFiles.toLocaleString()}.`,
		);
	}

	const totalBytes = fileEntries.reduce(
		(total, entry) => total + (entry.size ?? 0),
		0,
	);
	if (totalBytes > maximumRepositoryBytes) {
		throw new Error(
			`${owner}/${repo} is larger than the 100 MB Browser Studio limit.`,
		);
	}

	let loadedBytes = 0;
	let loadedFiles = 0;
	const files: Record<string, string> = {};
	const publicFiles: Record<string, VirtualProjectPublicFile> = {};
	const hasPublicFiles = fileEntries.some((file) =>
		file.path.startsWith('public/'),
	);
	const publicFileStorage = hasPublicFiles
		? await createBrowserStudioProjectStorage()
		: null;
	const totalFiles = fileEntries.length;
	const reportDownloadProgress = () =>
		onProgress?.({
			loadedBytes,

View on GitHub (pinned to 10db9de073)

Solutions

  1. Reduce total tracked size below 100MB by moving large media out of the repository
  2. Remove large binaries from git history's tip (and avoid committing node_modules)
  3. Load a lighter branch or start from a minimal template and re-add assets selectively
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await loadGitHubRepository({repoUrl, onProgress});
} catch (e) {
  if (/100 MB Browser Studio limit/.test(String((e as Error).message))) {
    // guide the user to move large media out of the repo (host externally or use a lighter branch)
  } else throw e;
}

Prevention

When it happens

Trigger: Calling loadGitHubRepository on a repo where the sum of tree entry sizes (entry.size) exceeds 100MB - typically committed video/audio assets, PSDs, or large datasets. The reduce() over fileEntries crosses maximumRepositoryBytes and the load aborts before any fetch.

Common situations: Asset-heavy Remotion projects with committed MP4s or image sequences; repositories that bundle large model or data files; users migrating a desktop-size project into Browser Studio.

Related errors


AI-assisted analysis of remotion-dev/remotion@10db9de073 (2026-08-22). Data as JSON: /api/errors/b0879392d46311f5. Report an issue: GitHub.