bumptech/glide · error · NoResultEncoderAvailableException
Failed to find result encoder for resource class: {}, you ma
Error message
Failed to find result encoder for resource class: {}, you may need to consider registering a new Encoder for the requested type or DiskCacheStrategy.DATA/DiskCacheStrategy.NONE if caching your transformed resource is unnecessary. What it means
Thrown (as NoResultEncoderAvailableException) by Registry.getResultEncoder() when no ResourceEncoder is registered for the given resource's class. Glide needs a result encoder to write a transformed/decoded resource to the disk cache; without one it cannot cache the resource type.
Source
Thrown at library/src/main/java/com/bumptech/glide/Registry.java:575
modelToResourceClassCache.put(
modelClass, resourceClass, transcodeClass, Collections.unmodifiableList(result));
}
return result;
}
public boolean isResourceEncoderAvailable(@NonNull Resource<?> resource) {
return resourceEncoderRegistry.get(resource.getResourceClass()) != null;
}
@NonNull
public <X> ResourceEncoder<X> getResultEncoder(@NonNull Resource<X> resource)
throws NoResultEncoderAvailableException {
ResourceEncoder<X> resourceEncoder = resourceEncoderRegistry.get(resource.getResourceClass());
if (resourceEncoder != null) {
return resourceEncoder;
}
throw new NoResultEncoderAvailableException(resource.getResourceClass());
}
@NonNull
@SuppressWarnings("unchecked")
public <X> Encoder<X> getSourceEncoder(@NonNull X data) throws NoSourceEncoderAvailableException {
Encoder<X> encoder = encoderRegistry.getEncoder((Class<X>) data.getClass());
if (encoder != null) {
return encoder;
}
throw new NoSourceEncoderAvailableException(data.getClass());
}
@NonNull
public <X> DataRewinder<X> getRewinder(@NonNull X data) {
return dataRewinderRegistry.build(data);
}
@NonNullView on GitHub (pinned to eb14a895d8)
Solutions
- Register a ResourceEncoder for your resource class in Registry via registry.append(...).
- If caching the transformed resource is unnecessary, use DiskCacheStrategy.DATA or DiskCacheStrategy.NONE to avoid requiring a result encoder.
Example fix
// before // decoding a CustomResource but no encoder -> NoResultEncoderAvailableException Glide.with(view).load(model).diskCacheStrategy(DiskCacheStrategy.RESOURCE).into(view) // after (option A) register an encoder registry.append(CustomResource::class.java, CustomResourceEncoder()) // after (option B) avoid caching the resource Glide.with(view).load(model).diskCacheStrategy(DiskCacheStrategy.DATA).into(view)
Defensive patterns
Strategy: try-catch
Validate before calling
// Check encoder availability before caching the resource.
val resource: Resource<*> = /* ... */
if (glide.registry.isResourceEncoderAvailable(resource)) {
// safe to use DiskCacheStrategy.RESOURCE / ALL
} else {
// use DiskCacheStrategy.DATA or NONE, or register an encoder
} Try / catch
try {
glide.registry.getResultEncoder(resource)
} catch (e: NoResultEncoderAvailableException) {
// register a ResourceEncoder<CustomResource> or switch diskCacheStrategy
} Prevention
- Register a ResourceEncoder for every custom resource type you cache.
- Use isResourceEncoderAvailable() to gate DiskCacheStrategy.RESOURCE/ALL.
- Pair custom decoders with matching encoders in Registry.
When it happens
Trigger: getResultEncoder(resource) looks up resourceEncoderRegistry.get(resource.getResourceClass()); if null, NoResultEncoderAvailableException is thrown with the resource class name.
Common situations: Loading/caching a custom resource type for which you registered a ResourceDecoder but no ResourceEncoder; using DiskCacheStrategy.RESOURCE (or ALL) for a type Glide cannot write back; a custom ModelLoader producing a non-standard decoded type.
Related errors
- Failed to find source encoder for data class: {dataClass}
- Failed to find image header parser.
- Glide has been called recursively, this is probably an inter
- GeneratedAppGlideModuleImpl is implemented incorrectly. If y
- Cannot register already registered manager
AI-assisted analysis of bumptech/glide@eb14a895d8 (2026-08-14).
Data as JSON: /api/errors/bdcdedd0df50bf41.
Report an issue: GitHub.