Getting Started

Gumlet is realtime image resizing and manipulation service. It’s aimed to simplify image manipulation, storage on server and delivery for mobile devices.

You just need a free Gumlet account to get started. You can create one here

How it works

Gumlet works by fetching image from the storage you specify, manipulate in realtime and deliver it. All parameters for image manipulation are supplied as query string parameters. The URL can be used anywhere including in IMG tag.

<img src="">

Gumlet is designed to be fast. Our server side processing algorithms use native C++ code and GPUs to get best speed possible for image manipulation. CDN is in-built in our service so no matter where your images are stored, your users will always get the images from closest location possible.


Our pricing is simple. You only get charged for bandwidth you use. Period.

You can do unlimited number of image transformations on your image for free. You only get charged for the resultant bandwidth usage. There is no minimum fee per month and no minimum commitment. We only charge for bandwidth from Gumlet servers to your users. There is no charge for pulling image from your origin server.

When you sign up, you also get 1 GB free bandwidth every month for first year. That means, if your monthly usage is less than 1 GB, you can use Gumlet FREE for 1 year.

Bandwidth usage is rounded to next integer GB. For example, if you use 50.3 GB in a given month, you will be charged for 51 GB of bandwidth usage.

Pricing in INR

Our billing is always done in Indian Rupee. We will display amount in USD for your convenience but you will be charged exact amount in INR. This means that as per exchange rate, you might be charged higher or lower if you are paying from outside India.

Your credit balance will always be kept in INR so once you pay, exchange rate fluctuations will not have any impact on your balance. (This means if you know your currency is going to be strengthened, you can pay us in advance 😉)

How can you price it so low?

If you check our competitors, you might find that our pricing is simplest and lowest. Most of companies out there charge minimum monthly fees or have pricing tiers which are prohibitively expensive when you consider per GB costs.

We have very simple rationale that if we can get virtual servers for $5 a month these days, there is no need to pay double of that just to do image operations. Our per GB price includes CDN costs as well as our service costs. So, every time you perform a transformation, we charge you for the bandwidth + small markup on CDN price.

It’s really that simple. We want developers to stop doing image transformations on server and offload that task to simple, scalable and cheap service. We have realized how frustrating it can become to store 10 different size and thumbnails of same image.

Go ahead and offload image manipulation on Gumlet, we deliver best images while you concentrate on your core business.

Non-payment consequences.

You can sign up without credit card but if your usage exceeds 1 GB or you have created an image source or your first year has ended, we will send you invoice at start of month. We give time of 30 days to pay the balance.

If you don’t pay after repeated reminders, we return 404 response for your images until the balance is paid. If the balance is not paid for extended period, we will be forced to delete your image source and the namespace becomes available for anyone to use.

We suggest that you add credits to your account as soon as you receive notification from us to have uninterrupted service. Best practice is to add credits for next 5-6 months before usage. That way, you need not pay every month and enjoy service without any disruption.

Image Source

Gumlet does not store images on servers. You can store your source images on storage of your choice and retain full control over them. If you stop using Gumlet, the images will no longer be available with us after CDN cache expires.

Gumlet supports three types of image sources. Web Folders, Web Proxy and Amazon S3 bucket.

Web Folders

If you have source images stored in a folder in your server, you can use it as image source for Gumlet. For example, let’s assume all your images are stored at You can specify this as base URL while setting image source.

Once setup is complete, your image will be available at You can now manipulate the image as

Web Proxy

A Web Proxy source allows your gumlet source to serve any image with a publicly-addressable URL. If you use this source, we recommend you URL encode all the external URLs supplied. If the external URL of image is and you want to serve it from your web source named example, you should write URL as per below.

Amazon S3

You can use images stored in Amazon S3 bucket as image source. Gumlet needs read bucket and list object permissions to access the images. Please create access token with these permissions and add them while creating the image store.

You can optionally specify base path while creating Amazon S3 image source. If your image is stored at s3://yourbucket/some/image/path/lenna.jpg and if you specify /some/image/path as base path, your resultant URL for Gumlet will become Without base path, the Gumlet URL will be

Default Parameters

While creating image source, you can also add default parameters. These are the parameters which will be applied to all images from this image source even when you don’t pass them via URL parameters.

Default parameters are overridden when the same parameter is supplied via query parameter. For exmaple, if you set width as default parameter with value 300, all images served will have width of 300px by default now. If any image is requested with width=500 in URL parameters, that image will be served with 500px width.

If default parameters are applied on your image, an extra header x-gumlet-defaultparams is added in response of all images. This will help you identify which default params are applied and debug issues in image delivery.

Image API

Image manipulation is achieved by Image API. You just need to provide query string parameters to manipulate images. Each query string parameter is described below. Any parameter having invalid value will be discarded and will not have any effect on output.

Let us remind you again that you just need a free Gumlet account to get started. You can create one here


This parameter sets width of output image. w is an alias for this parameter.

If this parameter is omitted, and the height parameter is set, the output width is set automatically such that aspect ratio is preserved. If both height and width parameters are set, the output image dimensions are set as per mode parameter.

If none of the height and width parameters are set, original aspect ratio is preserved and output dimensions depend on parameters like scale if provided.

Maximum value for this is 8192 and any output which has more than this width will be scaled down to this value.



This parameter sets height of output image. h is an alias for this parameter.

If this parameter is omitted, and the width parameter is set, the output height is set automatically such that aspect ratio is preserved. If both height and width parameters are set, the output image dimensions are set as per mode setting.

If none of the height and width parameters are set, original aspect ratio is preserved and output dimensions depend on parameters like scale if provided.

Maximum value for this is 8192 and any output which has more than this height will be scaled down to this value.



Specifies device pixel ratio. Valid values are 1, 2 and 3. This acts as multiplier to both width and height. width=200&height=300&dpr=2 is equivalent to width=400&height=600.

This makes it easy to specify image with correct resolution when using srcset attribute of <img> tag.


Specifies the resize behavior when width or height parameters are provided.

fit: Resize to fit within boundaries specified by width and height parameters. If ratio given differs from original aspect ratio, only one dimension will be set as per given value and other dimension will be smaller such that original aspect ratio is maintained.

crop: Entire area defined is filled maintaining aspect ratio but might crop part of image. The type of cropping is determined by crop parameter.

stretch: Resize to fill area defined by height and width. It might not preserve aspect ratio and image might be distorted.

fill: Preserving aspect ratio, resize the image to the maximum width or height specified then embed on a background of the exact width and height as original image. The color of background can be specified by background parameter.

Default mode is fit.



Allows you to define crop position when using crop as mode parameter.

Valid values are entropy, skin, top, topleft, left, bottomleft, bottom, bottomright, right, topright and center.

While other modes are self explanatory, let us describe first two crop modes.

entropy: focus on region with highest Shanon Entropy.

skin: focus on region with highest luminance frequancy and skin tones.

Default mode if no parameter is provided is center.



Extract a region from image. This operation is always applied before resize operation. Please give the parameters according to original image.

The value should be provided as comma separated list left,top,width,height.



Pads/Extends the edges of the image with the color provided by the background parameter. The value should either be integer which adds padding of same number of pixel to all edges or it should be comma separated list of 4 integers as top,right,bottom,left.

E.g. pad=40,20,40,30 will add 40px padding on top, 20px on right, 40px on bottom and 30px on left. If you want to add same padding to all sides, you can provide just one number like pad=40 and it will add 40px on all sides.

Please note this operation will add additional pixels and hence increase height and width of image. This operation is applied after resize. Please provide padding parameters accordingly.


background (bg)

Value of this parameter is used when mode is set as fill or you are converting other image type to jpeg or you are padding image with pad parameter.

This can be any of valid css color name like white or yellow. You can also set RGB hex value like bg=ff00bb to set background to #ff00bb value.

If you don’t pass any parameter, default value is white.


Trim “boring” pixels from all edges that contain values within a percentage similarity of the top-left pixel. The value of this parameter is number between 1 to 99 representing the percentage similarity.

This operation is applied after resize.



Rotates the image as per number of degrees provided as 0, 90, 180 or 270


flip=v will vertically flip the image. flip=h will horizontally flip the image. flip=hv or flip=vh will flip both horizontally and vertically.


Applies Gaussian blur of a given blur radius in float. blur=2.5 will blur the image by taking gaussian blur of 2.5 pixel radius. Valid values are between 0 and 100.


grayscale (greyscale)

Convert to 8-bit greyscale; 256 shades of grey. This is a linear operation. If the input image is in a non-linear colour space such as sRGB, use gamma with greyscale for the best results. By default the output image will be web-friendly sRGB and contain three (identical) color channel.

greyscale=true or grayscale=true are both valid parameters.



Produces negative of image. You can use it as invert=true



Enhance output image contrast by stretching its luminance to cover the full dynamic range. Enable it by setting enhance=true


Any pixel value greather than or equal to the threshold value will be set to 255, otherwise it will be set to 0. The parameter should be integer between 0 and 255



Apply a gamma correction by reducing the encoding (darken) pre-resize at a factor of 1/gamma then increasing the encoding (brighten) post-resize at a factor of gamma. This can improve the perceived brightness of a resized image in non-linear color spaces. JPEG and WebP input images will not take advantage of the shrink-on-load performance optimization when applying a gamma correction.

Valid value is between 1.0 and 3.0. Default is 2.2


Sharpen the image. This operation performs accurate sharpen of the L channel in the LAB color space. Valid values are between 0 and 100.



Sets output quality of image. Valid values are between 0 and 100 inclusive of them.

This parameter only takes effect when using jpeg or webpas output format

Setting this parameter to 100 will produce highest quality image. Default value is 85.


Gumlet serves same image format as source image after performing operations. If you want to change output image format, you can use this parameter.

You can use auto, jpeg, jpg, png, webp or raw. If original image has alpha channel and output does not support transparency, a white background is applied if background parameter is not provided.

If you use format=auto, Gumlet automatically detects best format according to user browser. For example, Google Chrome supports WebP hence that format will be delivered to users visiting with Chrome browser. When user browser does not support WebP, default image format as per original image is served. WebP image is almost always lesser size for same image quality which results in lower bandwidth usage and faster load times.

For example if you are using Chrome, all images you saw above are delivered as WebP and not as JPEG. You can check it in content-type response header.

If you check total downloaded content in “Network” tab of Chrome and Firefox, you will see Chrome uses lesser bandwidth because of WebP image delivery.


Gumlet automatically converts all JPEG images to progressive image and applies lossless quality optimizations by default.

If you set compress=true, we further apply lossy optimizations on image which can greatly reduce resultant image size without perceptual loss of quality. As illustrated in example below, most of time, it results in 30-50% reduction in resultant image size with almost no loss in quality.

This feature only works when output is produced in JPEG or PNG format.

original (3.8 MB)
compress=true (1.9 MB)


If you have any questions, found an issue or want to submit new feature request, please write to us at