facebook/docusaurus · error · Error
Error: Input file is missing or uses unsupported image forma
Error message
Error: Input file is missing or uses unsupported image format, lqip v${version} What it means
Thrown by the lqip-loader base64() helper when the image file's extension is not in SUPPORTED_MIMES (only `jpeg`, `jpg`, `png` are supported). The ERROR_EXT constant string is reused from sharp's own error wording and embeds the installed lqip-loader version. Note the throw at line 36 is purely an extension/MIME check; if the extension IS supported but sharp itself fails to decode the file, the catch at line 42 logs and rethrows sharp's error instead.
Source
Thrown at packages/lqip-loader/src/lqip.ts:36
jpeg: 'image/jpeg',
jpg: 'image/jpeg',
png: 'image/png',
};
/**
* It returns a Base64 image string with required formatting to work on the web
* (<img src=".." /> or in CSS url('..'))
*/
const toBase64 = (extMimeType: string, data: Buffer): string =>
`data:${extMimeType};base64,${data.toString('base64')}`;
export async function base64(file: string): Promise<string> {
let extension = path.extname(file);
extension = extension.split('.').pop()!;
const mime = SUPPORTED_MIMES[extension];
if (!mime) {
throw new Error(ERROR_EXT);
}
try {
const data = await sharp(file).resize(10).toBuffer();
return toBase64(mime, data);
} catch (err) {
logger.error`Generation of base64 failed for image path=${file}.`;
throw err;
}
}
View on GitHub (pinned to 3f483e80e3)
Solutions
- Convert or replace the image with jpg/png, the only formats lqip-loader currently supports for base64 LQIP.
- Rename a case-mismatched extension to lowercase (`.JPG` -> `.jpg`) since SUPPORTED_MIMES keys are lowercase.
- Disable LQIP generation for the problematic image or move it out of the lqip-processed asset path.
- Extend SUPPORTED_MIMES in a fork only if you also confirm sharp can resize that format to 10px reliably.
Example fix
// before: logo.webp is unsupported  // after: convert to png 
Defensive patterns
Strategy: validation
Validate before calling
import path from 'path';
const SUPPORTED_LQIP_EXT = new Set(['jpg', 'jpeg', 'png']);
function isLqipSupportedImage(filePath: string): boolean {
const ext = path.extname(filePath).split('.').pop()?.toLowerCase() ?? '';
return SUPPORTED_LQIP_EXT.has(ext);
}
// before referencing an image for lqip:
// if (!isLqipSupportedImage(assetPath)) convert it to png/jpg first. Type guard
const isLqipSupportedExt = (ext: string): boolean => ['jpg', 'jpeg', 'png'].includes(ext.toLowerCase());
Prevention
- Standardize docs images on jpg/png while lqip is enabled.
- Lowercase image extensions on commit (git mv Logo.JPG Logo.jpg).
- Run a prebuild check that scans referenced assets for unsupported extensions.
When it happens
Trigger: An MDX/doc page references a `.webp`, `.gif`, `.svg`, `.avif`, or other image whose extension is not in SUPPORTED_MIMES, and lqip-loader tries to generate its low-quality placeholder. Also triggered by an uppercase extension (`.JPG`) since the lookup is case-sensitive (path.extname returns the case as-is).
Common situations: Adding modern image formats (webp/avif) to docs while lqip is enabled; macOS/Windows saving files with capitalized extensions; a referenced asset that is actually an SVG masquerading with a raster extension.
Related errors
AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12).
Data as JSON: /api/errors/f7857ef99b32a6cb.
Report an issue: GitHub.