Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Version License Platform Build Status Coverage Status

This is a framework for downloading and decoding progressive JPEGs easily on iOS and OS X. It uses libjpeg-turbo as underlying JPEG implementation. We vendor version 1.4.0 of the static library from libjpeg-turbo's official release for convenience.


Simply install it via CocoaPods:

pod 'Concorde'

and then use CCBufferedImageView which progressively downloads and shows an image:

let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "") {

If you use Contentful, install the subspec:

pod 'Concorde/Contentful'

and replace your usage of UIImageView with CCBufferedImageView to automatically use progressive JPEGs if you have been using the UIImageView category before. This will work regardless of the original format of your files due to the image transformation functionality of the delivery API.

Manual integration

You can also integrate Concorde as a subproject or download a binary build from the releases section. Please note that those are only provided for iOS at the moment.


Copyright (c) 2015 Contentful GmbH. See LICENSE for further details.

CCBufferedImageDecoder is derived from WebKit, see comments in its file for further copyright details.

The examples use, which artificially slows the connection down to 0.5 Kilobyte/second to demonstrate the differences between regular and progressive JPEGs.