bumptech/glide · error · NoImageHeaderParserException
Failed to find image header parser.
Error message
Failed to find image header parser.
What it means
Thrown (as NoImageHeaderParserException) by Registry.getImageHeaderParsers() when the image-header-parser registry is empty. Glide needs at least one ImageHeaderParser to inspect image headers (format, orientation, dimensions) during decoding.
Source
Thrown at library/src/main/java/com/bumptech/glide/Registry.java:602
}
throw new NoSourceEncoderAvailableException(data.getClass());
}
@NonNull
public <X> DataRewinder<X> getRewinder(@NonNull X data) {
return dataRewinderRegistry.build(data);
}
@NonNull
public <Model> List<ModelLoader<Model, ?>> getModelLoaders(@NonNull Model model) {
return modelLoaderRegistry.getModelLoaders(model);
}
@NonNull
public List<ImageHeaderParser> getImageHeaderParsers() {
List<ImageHeaderParser> result = imageHeaderParserRegistry.getParsers();
if (result.isEmpty()) {
throw new NoImageHeaderParserException();
}
return result;
}
/**
* Thrown when no {@link com.bumptech.glide.load.model.ModelLoader} is registered for a given
* model class.
*/
// Never serialized by Glide.
@SuppressWarnings("serial")
public static class NoModelLoaderAvailableException extends MissingComponentException {
public NoModelLoaderAvailableException(@NonNull Object model) {
super("Failed to find any ModelLoaders registered for model class: " + model.getClass());
}
public <M> NoModelLoaderAvailableException(
@NonNull M model, @NonNull List<ModelLoader<M, ?>> matchingButNotHandlingModelLoaders) {View on GitHub (pinned to eb14a895d8)
Solutions
- Ensure Glide is initialized through the normal path (Glide.init / GeneratedAppGlideModule) which registers default ImageHeaderParsers.
- If building a custom Registry, register at least one ImageHeaderParser (e.g. DefaultImageHeaderParser) via registry.append(...).
- Keep the glide default integration artifacts (gif decoder, etc.) on the classpath.
- Add ProGuard/R8 keep rules so parsers are not stripped, or disable shrinking for Glide's registry classes.
- Avoid calling image-load APIs before Glide initialization completes.
Example fix
// before (custom Registry with no header parser)
val glide = GlideBuilder()
.setRegistry(Registry()) // empty -> NoImageHeaderParserException
.build(context)
// after
val registry = Registry().apply {
register(InputStream::class.java, DefaultImageHeaderParser())
// ... plus decoders/encoders
}
val glide = GlideBuilder().setRegistry(registry).build(context) Defensive patterns
Strategy: validation
Validate before calling
// Ensure default header parsers are registered (normal init path does this).
// In a custom Registry, register at least one parser:
registry.register(InputStream::class.java, DefaultImageHeaderParser())
// Optionally guard before decoding an image.
fun canParseHeaders(glide: Glide): Boolean =
try { glide.registry.imageHeaderParsers.isNotEmpty() } catch (e: NoImageHeaderParserException) { false } Try / catch
try {
glide.registry.imageHeaderParsers
} catch (e: NoImageHeaderParserException) {
// register a parser or report misconfiguration before attempting loads
} Prevention
- Initialize Glide through the standard path so default parsers register.
- In custom Registries, always append an ImageHeaderParser.
- Keep default decoder integrations (gif decoder) and ProGuard keep rules intact.
When it happens
Trigger: getImageHeaderParsers() calls imageHeaderParserRegistry.getParsers(); if the list is empty, NoImageHeaderParserException is thrown.
Common situations: A trimmed Glide setup where the default header parsers were not registered (e.g. constructing Glide via GlideBuilder without registering defaults); a custom Registry/Initializer that cleared parsers; aggressive R8/ProGuard stripping; missing glide-gif-decoder / default decoder integrations; image loading attempted before full Glide initialization.
Related errors
- Log level must be one of Log.VERBOSE, Log.DEBUG, Log.INFO, L
- Failed to find result encoder for resource class: {}, you ma
- Failed to find source encoder for data class: {dataClass}
- Glide has been called recursively, this is probably an inter
- GeneratedAppGlideModuleImpl is implemented incorrectly. If y
AI-assisted analysis of bumptech/glide@eb14a895d8 (2026-08-14).
Data as JSON: /api/errors/441072b70464b8ce.
Report an issue: GitHub.