remotion-dev/remotion · error · Error
The repository contains an unsupported path: ${path}
Error message
The repository contains an unsupported path: ${path} What it means
Before downloading anything, loadGitHubRepository runs every tree path through validateRepositoryPath(): no backslashes, no NUL bytes, and no empty, '.', or '..' path segments. This is a security guard against path traversal and escape when repository files are written into the virtual project and OPFS storage. A single offending filename blocks the entire repository from loading.
Source
Thrown at packages/browser-studio/src/load-github-repository.ts:115
return response.statusText || `HTTP ${response.status}`;
};
const encodePath = (path: string) =>
path
.split('/')
.map((segment) => encodeURIComponent(segment))
.join('/');
const validateRepositoryPath = (path: string) => {
if (
path.includes('\\') ||
path.includes('\0') ||
path
.split('/')
.some((segment) => segment === '' || segment === '.' || segment === '..')
) {
throw new Error(`The repository contains an unsupported path: ${path}`);
}
};
const decodeTextFile = (contents: Uint8Array) => {
if (contents.includes(0)) {
return null;
}
try {
return new TextDecoder('utf-8', {fatal: true}).decode(contents);
} catch {
return null;
}
};
export const loadGitHubRepository = async ({
onProgress,
repoUrl,View on GitHub (pinned to 10db9de073)
Solutions
- Rename the offending file in the repository (git mv 'src\video.ts' src/video.ts) and push, then reload
- Remove files with backslashes or control characters in their names from the repo
- If you do not own the repo, it cannot be loaded in Browser Studio - clone it locally and fix the names first
Example fix
// before: repo tree contains a blob path 'src\video.ts'
// loadGitHubRepository({repoUrl}) -> Error: The repository contains an unsupported path: src\video.ts
// after: fix the filename in the repo
git mv 'src\video.ts' src/video.ts
git commit -m 'fix path separator' && git push Defensive patterns
Strategy: try-catch
Try / catch
try {
await loadGitHubRepository({repoUrl, signal});
} catch (e) {
const msg = String((e as Error).message);
if (/unsupported path/.test(msg)) {
// extract the path from the message and tell the repo owner to rename it (git mv) and push
} else throw e;
} Prevention
- Do not commit filenames containing backslashes or control characters - create paths with forward slashes
- If you build tooling that commits files via the GitHub API, sanitize names to slash-separated ASCII paths
- Test that your repo loads in Browser Studio before sharing the link
When it happens
Trigger: Loading a GitHub repository whose tree contains any blob path with a backslash (e.g. 'src\video.ts', usually created via the GitHub API by tooling), a NUL byte, or an empty/'.'/'..' segment. The check runs over every blob entry before the file-count and size checks.
Common situations: Third-party repositories you do not control, where CI or scripts committed filenames containing backslashes or control characters; almost never caused by the Browser Studio user's own actions.
Understand the failure class
Background: Path traversal blocked: "path escapes the workspace" and "outside site root" errors when a path will not stay inside its allowed directory — this error's family across 26 libraries.
Related errors
- Invalid public file path: ${path}
- Path is outside of the parent directory - not allowing readi
- Only HTTP(S) URLs can be imported
- Remote asset URLs cannot include credentials
- Invalid GitHub repository URL: ${repoUrl}
AI-assisted analysis of remotion-dev/remotion@10db9de073 (2026-08-22).
Data as JSON: /api/errors/aeedf7c30f666da2.
Report an issue: GitHub.