# sdwebimage/sdwebimage

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/sdwebimage-sdwebimage).**

25,644 stars · 5,966 forks · Objective-C · MIT

## Links

- GitHub: https://github.com/SDWebImage/SDWebImage
- Homepage: https://sdwebimage.github.io
- awesome-repositories: https://awesome-repositories.com/repository/sdwebimage-sdwebimage.md

## Topics

`cache` `carthage` `cocoapods` `gif` `heif` `image` `ios` `jpeg` `macos` `objective-c` `png` `sdwebimage` `swift` `visionos` `watchos` `webp`

## Description

SDWebImage is an asynchronous image downloader and caching library for iOS and macOS applications. It provides a core identity centered on a network utility for fetching images from URLs, a tiered memory and disk caching engine, and a processing framework for decoding and encoding media.

The library features a specialized rendering engine for animated formats such as GIF and WebP, including support for progressive animation rendering. It distinguishes itself through a plugin system that allows for extended image format support and the ability to replace default loading or storage logic with custom implementations.

Its broader capabilities cover image processing via composable transformations, network request customization including header management and data decryption, and visual effects such as transition animations and loading indicators. It also includes utilities for background prefetching and monitoring download progress through observable objects.

## Tags

### Graphics & Multimedia

- [URL Image Downloaders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-downloaders/url-image-downloaders.md) — Provides an asynchronous network utility to fetch images from URLs without blocking the main application thread.
- [Animated Image Rendering](https://awesome-repositories.com/f/graphics-multimedia/animation-motion/animated-image-rendering.md) — Implements a specialized rendering engine for animated formats like GIF and WebP with memory optimizations.
- [Plugin-Based Decoders](https://awesome-repositories.com/f/graphics-multimedia/image-decoding/plugin-based-decoders.md) — Uses a plugin-based decoder system to support non-native image formats through external modules.
- [Image Processing](https://awesome-repositories.com/f/graphics-multimedia/image-editing-processing/image-processing.md) — Provides a framework for decoding, encoding, and applying transformations such as scaling and cropping to images.
- [Image Format Decoders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/image-processing-pipelines/image-format-decoders.md) — Processes various image formats and codecs to prepare raw data for rendering in a user interface. ([source](https://sdwebimage.github.io/))
- [Downsampling Decoders](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/image-processing-pipelines/image-format-decoders/downsampling-decoders.md) — Provides downsampling decoders that reduce memory usage by loading only the necessary pixels for a specific view size.
- [Progressive Rendering](https://awesome-repositories.com/f/graphics-multimedia/animation-motion/animated-image-rendering/progressive-rendering.md) — Implements progressive rendering that displays animated images incrementally as they download. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage))
- [Post-Decoding Processes](https://awesome-repositories.com/f/graphics-multimedia/image-decoding/post-decoding-processes.md) — Processes images after decoding, such as resizing or cropping, before storing the results in the cache. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage))
- [Composable Transformations](https://awesome-repositories.com/f/graphics-multimedia/image-editing-processing/image-processing/composable-transformations.md) — Allows execution of customizable and composable image processing tasks immediately after a remote download. ([source](https://cdn.jsdelivr.net/gh/sdwebimage/sdwebimage@master/README.md))
- [Thumbnail Generation](https://awesome-repositories.com/f/graphics-multimedia/image-encoders/thumbnail-generation.md) — Converts existing images into smaller target sizes during encoding to improve performance and reduce memory. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage))
- [Image Format Conversion](https://awesome-repositories.com/f/graphics-multimedia/image-format-encoding/image-format-conversion.md) — Transforms image objects into data representations using specific formats like JPEG, PNG, GIF, or WebP. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md))
- [Image Transformation Caching](https://awesome-repositories.com/f/graphics-multimedia/image-transformation-caching.md) — Applies modifications like scaling or rotating after download and caches the resulting transformed version. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-5.0-Migration-guide.md))

### Part of an Awesome List

- [Custom Loading and Caching Logic](https://awesome-repositories.com/f/awesome-lists/media/image-loading-and-caching/custom-loading-and-caching-logic.md) — Allows Kingfisher to replace default memory and disk loading logic with custom implementations to control how data is fetched and stored. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-5.0-Migration-guide.md))
- [Custom Loading Handlers](https://awesome-repositories.com/f/awesome-lists/media/image-loading/custom-loading-handlers.md) — Supports custom loading handlers to integrate with specific network stacks or non-standard image data streams. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage))

### Data & Databases

- [Network Image Caching](https://awesome-repositories.com/f/data-databases/data-caching/remote-dataset-caching/network-image-caching.md) — Implements a tiered memory and disk caching system to persist remote image data and minimize network requests.
- [iOS Persistent Image Caches](https://awesome-repositories.com/f/data-databases/data-caching/remote-dataset-caching/network-image-caching/ios-persistent-image-caches.md) — Ships with a persistent disk cache for iOS to store image data across app sessions and avoid redundant downloads. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md))
- [Tiered Caching Systems](https://awesome-repositories.com/f/data-databases/tiered-caching-systems.md) — Employs a tiered caching system combining fast memory and persistent disk storage to minimize network latency.
- [Cache Key Generation](https://awesome-repositories.com/f/data-databases/cache-key-generation.md) — Maps complex image URLs to unique strings to ensure consistent cache retrieval regardless of dynamic URL parameters.
- [Cache Key Generators](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/caching-performance/caching-strategies/cache-key-generators.md) — Provides custom cache key generation to transform dynamic URLs into consistent identifiers for cache lookups. ([source](https://github.com/SDWebImage/SDWebImage/wiki/How-to-use))
- [HTTP Caching](https://awesome-repositories.com/f/data-databases/http-caching.md) — Complies with HTTP cache-control headers to determine when images should be reloaded from the server. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Common-Problems))
- [Cache Expiration Management](https://awesome-repositories.com/f/data-databases/metadata-caching/cache-expiration-management.md) — Manages cache expiration and memory limits to prevent system memory pressure and ensure data freshness. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Common-Problems))

### Mobile Development

- [Image Loading Libraries](https://awesome-repositories.com/f/mobile-development/ios-application-architectures/image-loading-libraries.md) — Offers a comprehensive image downloading and caching library specifically for iOS and macOS applications.
- [Image Memory Constraints](https://awesome-repositories.com/f/mobile-development/ios-animation-frameworks/image-memory-constraints.md) — Provides memory-aware image scaling to shrink large bitmaps that exceed memory thresholds and prevent application crashes. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md))
- [Image Prefetchers](https://awesome-repositories.com/f/mobile-development/mobile-utilities/image-prefetchers.md) — Includes utilities for background image prefetching to load assets into the cache before they are needed by the UI. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-5.0-Migration-guide.md))

### DevOps & Infrastructure

- [Storage Backend Integrations](https://awesome-repositories.com/f/devops-infrastructure/storage-backend-integrations.md) — Provides storage backend integrations allowing the swapping of default caches for third-party external storage plugins. ([source](https://cdn.jsdelivr.net/gh/sdwebimage/sdwebimage@master/README.md))

### Networking & Communication

- [HTTP Request Customization](https://awesome-repositories.com/f/networking-communication/http-request-customization.md) — Allows modification of HTTP requests, server responses, and data decryption to customize how images are acquired. ([source](https://github.com/SDWebImage/SDWebImage/wiki/5.6-Code-Architecture-Analysis))
- [Request Cancellations](https://awesome-repositories.com/f/networking-communication/network-request-clients/request-cancellations.md) — Enables the cancellation of active image downloads using unique tokens to optimize network resource usage. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md))
- [Download Progress Tracking](https://awesome-repositories.com/f/networking-communication/remote-file-downloads/download-progress-tracking.md) — Provides mechanisms to monitor bytes received during image downloads and trigger completion or failure callbacks. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/HowToUse.md))
- [Request Header Configuration](https://awesome-repositories.com/f/networking-communication/request-header-configuration.md) — Provides tools to set custom HTTP headers, such as the Accept header, to request specific image MIME types. ([source](https://github.com/SDWebImage/SDWebImage/wiki/Advanced-Usage))

### Programming Languages & Runtimes

- [Asynchronous Image Loading](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/lazy-loading/asynchronous-image-loading.md) — Allows fetching images from URLs and assigning them to UI elements using placeholders and progress tracking. ([source](https://github.com/SDWebImage/SDWebImage/blob/master/Docs/SDWebImage-4.0-Migration-guide.md))

### Software Engineering & Architecture

- [Asynchronous Task Queues](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-task-queues.md) — Implements an asynchronous task queue to manage image downloads and processing without blocking the main UI thread.
- [Image Format Plugins](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/plugin-module-systems/modular-plugin-architectures/plugin-based-architectures/plugin-based-architectures/image-format-plugins.md) — Provides a plugin system for extending the library to support non-native image encoding and decoding formats. ([source](https://cdn.jsdelivr.net/gh/sdwebimage/sdwebimage@master/README.md))

### Web Development

- [Request-Response Interceptors](https://awesome-repositories.com/f/web-development/request-response-interceptors.md) — Features a request-response interceptor pipeline to modify network requests and responses before image decoding.
