> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://uploadcare.com/docs/llms.txt.

# List of on-the-fly CDN operations

> Uploadcare features a powerful CDN that can deliver your content across the world in no time.

Uploadcare CDN features on-the-fly image optimization, a large set of image
transformations, and non-image file operations, such as getting file
information or changing file delivery behavior.

[`https://:subdomain.ucarecd.net/:uuid/`](https://examples.ucarecd.net/22240276-2f06-41f8-9411-755c8ce926ed/)

`:subdomain` is your project's subdomain. Find it in [Delivery](https://app.uploadcare.com/projects/-/settings/#delivery).

You can find detailed specifications of all CDN operations in the
[URL API](https://uploadcare.com/docs/api/url/).

## Image processing operations \[#image-processing-list]

Key types of image operations are:

* [Compression](/docs/compression/)
* [Resize, crop, rotation](/docs/transformations/image/resize-crop/#size)
* [Overlays and watermarks](/docs/transformations/image/overlay/)
* [Effects and enhancements](/docs/effects-enhancements/)
* [Face-detection based transformations](/docs/face-detection/)
* [Animated images optimization](/docs/transformations/gif-to-video/)
* [Rasterization](/docs/transformations/image/svg/)

When applying any image operation, a new file is created (cached on our CDN,
and not counted towards your storage limits). If not set, this file is encoded
with the default [quality](/docs/compression/#operation-quality) and original
[format](/docs/compression/#operation-format). However, you can adjust them to meet
your requirements better.

### Limitations \[#limits]

Image processing operations have limits that you should consider.

#### Input image formats \[#formats]

List of supported image formats:

* AVIF
* BMP
* GIF
* HEIC
* JPEG
* PCX
* PNG
* TGA
* TIFF
* WEBP

Some formats have several variations, and we support the most popular ones.
[Contact sales](https://uploadcare.com/schedule-demo/) if you require additional formats or variations.

Without any image processing operation in the URL, CDN [instructs](/docs/cdn-operations/#inline)
browsers to show images (`Content-Disposition: inline`) and download other file
types (`Content-Disposition: attachment`). Browsers may not show all image formats,
such as `TIFF` and `HEIC` formats. If you need to display an image, add any image
processing operation, `-/preview/` for instance.

#### Core operations

When processing images, you must add at least one of the following operations
via their respective URL directives:

* [`preview`](/docs/transformations/image/resize-crop/#operation-preview)
* [`resize`](/docs/transformations/image/resize-crop/#operation-resize)
* [`smart_resize`](/docs/transformations/image/resize-crop/#operation-smart-resize)
* [`scale_crop`](/docs/transformations/image/resize-crop/#operation-scale-crop)

#### File size

Image processing operations can be applied to files smaller than 100 MB.

The file size limit can be increased individually.
To do this, [contact our sales team](https://uploadcare.com/schedule-demo/).

#### Output image dimensions \[#dimensions]

The dimensions you specify for the last operation should not exceed 3000x3000
pixels. You can go up to 5000x5000 pixels by explicitly setting
your [image format](/docs/compression/#operation-format) to JPEG, `/format/jpeg/`.

You can extend the output max resolution up to 8192x8192, and up to 16384x16384
for JPEGs in trade-off for increased latency. [Contact our sales team](https://uploadcare.com/schedule-demo/)
to learn more about this option.

#### SVG files \[#svg]

Any image transformation CDN URL is valid with an SVG file. Most operations
don't affect the response SVG body, while geometric operations (`crop`,
`preview`, `resize`, `scale_crop`) change SVG attributes and work as expected.
To apply full range of operations on SVG file, it should be rasterized by
applying `/rasterize/` operation. Read more about [SVGs](/docs/transformations/image/svg/).

SVGs uploaded before May 26, 2021 still have `is_image: false` and adding
processing operations to them will result in error. Contact [support](mailto:help@uploadcare.com)
to batch process previously uploaded files.

#### Image resolution

We don't provide on-the-fly image processing for images greater than
75 MP in resolution: those are tagged as **non-image** files and can only be delivered
via CDN as-is. Adding processing operations to non-image files will result
in an error.

#### Simple rotation

When the only image transformation you want is rotating, consider using the
[`preview`](/docs/transformations/image/resize-crop/#operation-preview) control without any arguments. When
you use any of the transformations, we automatically rotate images according to
their EXIF orientation.

#### Animated images \[#animated]

Animated images are treated as static by the transformations engine.
Learn more about [animated images optimization](/docs/transformations/gif-to-video/).

## Videoframe \[#videoframe]

`/videoframe/:timestamp/`

Returns a still PNG image taken from a video at the given timestamp. Any image
operations can be appended to the URL to resize or convert that frame.
Learn more about [videoframe](/docs/transformations/videoframe/).

```cdn
https://:subdomain.ucarecd.net/:uuid/videoframe/00:00:05/
```

## Show or download \[#inline]

`-/inline/yes/`
`-/inline/no/`

By default, CDN instructs browsers to show images and download other file types.
The `inline` control allows you to change this behavior.

## Change filename \[#cdn-filename]

Your original filenames can be accessed via [REST API](https://uploadcare.com/docs/api/rest/).
Request to receive a JSON response with file parameters including
`original_filename`.

You can set an optional filename that users will see instead of the original name:

```cdn
https://:subdomain.ucarecd.net/:uuid/:filename
```

`:subdomain` is your project's subdomain. Find it in [Delivery](https://app.uploadcare.com/projects/-/settings/#delivery).

`:filename` should comply with [file name conventions](https://www.rfc-editor.org/rfc/rfc3986#section-3.3)
and it should be a valid part of a URL. For example, `filename.ext`.

## Get file information as JSON \[#operation-json]

`-/json/`

Returns file-related information, such as image dimensions or geotagging data in
the JSON format. This operation should be the last in the URL.

```json
$ curl "https://examples.ucarecd.net/6374b0f2-f9f9-4dcc-b709-22507e1976b8/-/json/"
{
    "id": "6374b0f2-f9f9-4dcc-b709-22507e1976b8",
    "format": "JPEG",
    "color_mode": "RGB",
    "width": 3024,
    "height": 4032,
    "sequence": false,
    "orientation": 1,
    "dpi": [72, 72],
    "geo_location": {"latitude": 59.9814, "longitude": 30.2118},
    "datetime_original": "2019-06-23T14:22:13",
    "hash": "a51a7375cc893599"
}
```

This operation can also be applied to any transformed version of an image.
The response will contain the `original` key with information about the original image.

```json
$ curl "https://examples.ucarecd.net/6374b0f2-f9f9-4dcc-b709-22507e1976b8/-/preview/320x320/-/json/"
{
    "id": "/6374b0f2-f9f9-4dcc-b709-22507e1976b8/-/preview/320x320/",
    "original": {
        "id": "6374b0f2-f9f9-4dcc-b709-22507e1976b8",
        "format": "JPEG",
        "color_mode": "RGB",
        "width": 3024,
        "height": 4032,
        "sequence": false,
        "orientation": 1,
        "dpi": [72, 72],
        "geo_location": {"latitude": 59.9814, "longitude": 30.2118},
        "datetime_original": "2019-06-23T14:22:13"
    },
    "width": 240,
    "height": 320,
    "hash": "a51a7375cc893599",
    "blurhash": "mSG8J.VsFzEN0fI;nj$*E5s;xBbEM|t7t6of-Qt7NLNHxZR*NHae"
}
```

While most fields are self-explanatory, additional information about
the `hash` and `blurhash` fields can be found below.

### Perceptual hash \[#operation-json-phash]

The file info response includes a `hash` field with the perceptual hash value
calculated using the pixel contents of an image. Perceptual hashing is a common
fingerprinting technique used to quickly compare images and find duplicates or similar images.
Uploadcare automatically calculates a 64-bit perceptual hash value
and returns it as a HEX string. This makes it easy to identify image duplicates by directly
comparing their perceptual hash values. To find similar images, it's important
to compare perceptual hash values bitwise using the
[Hamming distance](https://en.wikipedia.org/wiki/Hamming_distance).
A small number of unmatched bits (e.g., up to 8 bits) indicates subtle differences
in visual content, while non-similar images will typically have more than 8 differing bits.

### Blurhash \[#operation-json-blurhash]

Get a `blurhash` string by appending the original image URL with one of
[image processing operations](/docs/transformations/image/#image-transformations-list)
and the `-/json/` operation, for example:

```
https://:subdomain.ucarecd.net/:uuid/-/preview/-/json/
```

The provided file info response will includes a `blurhash` field containing a compact
string representation of the image. This representation allows for reconstructing
an image that captures the general structure and color scheme without fine details,
making it useful as a blurred placeholder while the full image loads.
This enhances the user experience on platforms with varying image loading times.

For the best user experience, make sure to store and deliver `blurhash` values
along with your HTML markup or JSON data from the server, instead of making requests
to the API on each page load.

Find more info on the [official Blurhash site](https://blurha.sh/).

<table>
  <tr>
    <td>
      [![](https://examples.ucarecd.net/6374b0f2-f9f9-4dcc-b709-22507e1976b8/-/resize/440x588/-/quality/lightest/)](https://examples.ucarecd.net/6374b0f2-f9f9-4dcc-b709-22507e1976b8/-/preview/)

      \


      Original image\

      Separate request, about 11Kb
    </td>

    <td>
      ![blurhash representation](https://examples.ucarecd.net/1840d7d0-2424-4f00-b3d4-8059a8143e1e/)

      \


      Blurhash representation\

      Restored from 52 bytes string
    </td>
  </tr>
</table>

## File groups operations

File groups serve as collections of files that help you organize
content within your Uploadcare project.
A group itself and files within it MUST belong to the same project.

Most often, file groups are used in the following cases:

* [Multipage document conversion](/docs/transformations/file-conversion/#multipage-conversion)
* Creating [video thumbnails](/docs/transformations/video-encoding/#operation-thumbs)
* Uploads multiple files simultaneously and then needs to display them together.

Learn more about [file groups](/docs/file-groups/).