Skip to content

Commit

Permalink
[Images] Pricing and Troubleshooting updates (#17067)
Browse files Browse the repository at this point in the history
* Updated main landing page

* Updated Pricing page

* Added errors to Troubleshooting

* Update src/content/docs/images/index.mdx

Co-authored-by: hyperlint-ai[bot] <154288675+hyperlint-ai[bot]@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Jun Lee <junlee@cloudflare.com>

* Implementing feedback

* Small edits

* Wording tweak

* Incorporated feedback

---------

Co-authored-by: hyperlint-ai[bot] <154288675+hyperlint-ai[bot]@users.noreply.github.com>
Co-authored-by: Jun Lee <junlee@cloudflare.com>
  • Loading branch information
3 people authored Sep 26, 2024
1 parent 54f5d07 commit 4e4c527
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 33 deletions.
17 changes: 12 additions & 5 deletions src/content/docs/images/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,29 @@ head:

---

import { CardGrid, Description, Feature, LinkTitleCard } from "~/components"
import { CardGrid, Description, Feature, LinkTitleCard, Plan } from "~/components"

<Description>

Store, transform, optimize, and deliver images at scale
</Description>

Cloudflare Images provides an end-to-end solution to build and maintain your image infrastructure from one API.
<Plan type="all" />

Images runs on [Cloudflare’s global network](https://www.cloudflare.com/network/).
Cloudflare Images provides an end-to-end solution designed to help you streamline your image infrastructure from a single API and runs on [Cloudflare's global network](https://www.cloudflare.com/network/).

There are two different ways to use Images:

- **Efficiently store and deliver images.** You can upload images into Cloudflare Images and dynamically deliver multiple variants of the same original image.
- **Optimize images that are stored outside of Images** You can make transformation requests to optimize any publicly available image on the Internet.

Cloudflare Images is available on both [Free and Paid plans](/images/pricing/). By default, all users have access to the Images Free plan, which includes limited usage of the transformations feature to optimize images in remote sources.

:::note[Image Resizing is now available as transformations]

All Image Resizing features are now available as part of the Cloudflare Images product. You can optimize and transform any publicly available image on the Internet. With our new pricing model, you will be billed only once per 30 days for each unique transformation. Read our [Birthday Week 2023 announcement](https://blog.cloudflare.com/merging-images-and-image-resizing/) to learn more about why we made these changes.
All Image Resizing features are available as transformations with Images. Each unique transformation is billed only once per 30 days.

If you are using a legacy plan with Image Resizing, visit the [dashboard](https://dash.cloudflare.com/) to switch to the new plan.
If you are using a legacy plan with Image Resizing, visit the [dashboard](https://dash.cloudflare.com/) to switch to an Imagesplan.


:::
Expand Down
79 changes: 51 additions & 28 deletions src/content/docs/images/pricing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,52 +6,75 @@ sidebar:

---

## Cloudflare Images
By default, all users are on the Images Free plan. The Free plan includes access to the transformations feature, which lets you optimize images stored outside of Images, like in R2.

Cloudflare Images lets you store, optimize, and deliver images from one unified API. The Images product consists of three line items:
The Paid plan allows transformations, as well as access to storage in Images.

* Images Stored
* Images Delivered
* Images Transformed
Pricing is dependent on which features you use. The table below shows which metrics are used for each use case.

If you are not storing your images within the Images product, you will only pay for Images Transformed.
| Use case | Metrics | Availability |
|----------|---------|--------------|
| Optimize images stored outside of Images | Images Transformed | Free and Paid plans |
| Optimized images that are stored in Cloudflare Images | Images Stored, Images Delivered | Only Paid plans |

## Images Stored
## Images Free

Images Stored is a pre-paid pricing dimension. You purchase storage in increments of $5 per 100,000 original images.
On the Free plan, you can request up to 5,000 unique transformations each month for free.

Each original image can have up to 20 predefined variants *at no additional cost*. A predefined variant supports following properties:
Once you exceed 5,000 unique transformations:

* Width
* Height
* Fit
* Metadata
* Blurring
- Existing transformations in cache will continue to be served as expected.
- New transformations will return a `9423` error. If your source image is from the same domain where the transformation is served, then you can use the [`onerror` parameter](/images/transform-images/transform-via-url/#onerror) to redirect to the original image.
- You will not be charged for exceeding the limits in the Free plan.

Predefined variants can be configured from the Cloudflare dashboard by visiting **Images** > **Variants**.
To request more than 5,000 unique transformations each month, you can purchase an Images Paid plan.

Predefined variants do not count against your storage limit. For example, if you upload demo.jpg and have 10 predefined variants, it will count as one original image, not 11.
## Images Paid

## Images Delivered
When you purchase an Images Paid plan, you can choose your own storage or add storage in Images.

Images Delivered is a post-paid pricing dimension and *only* applies to images stored within the Images product. You will not be billed for Images Delivered if you are optimizing images that are stored elsewhere (in S3 or R2, for example).
| Metric | Pricing |
|--------|---------|
| Images Transformed | First 5,000 unique transformations included + $0.50 / 1,000 unique transformations / month |
| Images Stored | $5 / 100,000 images stored / month |
| Images Delivered | $1 / 100,000 images delivered / month |

Images Delivered costs $1 per 100,000 images delivered. Every image requested by the browser counts as one delivered image. For example, if you have a product page displaying 10 images stored on the Images product, and the page is visited 10,000 times over the course of the month, it will result in 100,000 delivered images or $1.00 in billable usage.
If you optimize an image stored outside of Images, then you will be billed only for Images Transformed.

## Images Transformed
Alternatively, Images Stored and Images Delivered apply only to images that are stored in your Images bucket. When you optimize an image that is stored in Images, then this counts toward Images Delivered — not Images Transformed.

Images Transformed is a post-paid pricing dimension. If your images are not stored on Cloudflare Images, you will *not* be billed for Images Delivered pricing dimension and do not need to purchase Images Stored. Transformations cost $0.50 per 1,000 unique transformations per month.
## Metrics

A unique transformation is defined as a request to transform an original image with a combination of [supported flags](https://developers.cloudflare.com/images/transform-images/transform-via-url/#options), with the exception of the `format` flag.
### Images Transformed

Unique transformations are counted over a 30-day sliding window. For example, if you request an image variant on the 30th of one month, it counts once for that billing period. If you request the same image variant on the 1st of the next month, it does not count towards usage as the same transformation was requested within the last 30 days.
A unique transformation is a request to transform an original image based on a set of [supported parameters](/images/transform-images/transform-via-url/#options). This metric is used only when optimizing images that are stored outside of Images.

The `format` flag being exempted from counting as a unique transformation means that if demo.jpg is resized to 100x100 and is delivered to some of your users as webp and others as avif or png, it will still count as one billable transformation for that month instead of three.
For example, if you transform `thumbnail.jpg` as 100x100, then this counts as 1 unique transformation. If you transform the same `thumbnail.jpg` as 200x200, then this counts as a separate unique transformation.

Images Transformed count is not impacted by the cache hit rate. This makes estimating pricing more predictable. For example, 1,000 product images that are resized 5 different ways will result in 5,000 unique transformations per month and cost $2.50.
You are billed for the number of unique transformations that are counted during each billing period.

:::note[Note]
Unique transformations are counted over a 30-day sliding window. For example, if you request `width=100/thumbnail.jpg` on June 30, then this counts once for that billing period. If you request the same transformation on July 1, then this will not count as a billable request, since the same transformation was already requested within the last 30 days.

The `format` parameter counts as only 1 billable transformation, even if multiple copies of an image are served. In other words, if `width=100,format=auto/thumbnail.jpg` is served to some users as AVIF and to others as WebP, then this counts as 1 unique transformation instead of 2.

Images is an account-level product. You do not need a Pro/Biz subscription to use the Images product. It can be purchased and used with any of your zones, including free zones.
:::
#### Example

A retail website has 1,000 original product images that get served in 5 different sizes each month. This results in 5,000 unique transformations — or a cost of $2.50 per month.

### Images Stored

Storage in Images is available only with an Images Paid plan. You can purchase storage in increments of $5 for every 100,000 images stored per month.

You can create predefined variants to specify how an image should be resized, such as `thumbnail` as 100x100 and `hero` as 1600x500.

Only uploaded images count toward Images Stored; defining variants will not impact your storage limit.

### Images Delivered

For images that are stored in Images, you will incur $1 for every 100,000 images delivered per month. This metric does not include transformed images that are stored in remote sources.

Every image requested by the browser counts as 1 billable request.

#### Example

A retail website has a product page that uses Images to serve 10 images. If the page was visited 10,000 times this month, then this results in 100,000 images delivered — or $1.00 in billable usage.
2 changes: 2 additions & 0 deletions src/content/docs/images/reference/troubleshooting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ When resizing fails, the response body contains an error message explaining the
* 9413 — The image exceeds the maximum image area of 100 megapixels. Use a smaller image and try again.
* 9420 — The origin server redirected to an invalid URL. Confirm settings at your origin and try again.
* 9421 — The origin server redirected too many times. Confirm settings at your origin and try again.
* 9422 - The request is taking too long to process.
* 9423 - The transformation request is rejected because the usage limit was reached. If you need to request more than 5,000 unique transformations, upgrade to an Images Paid plan.
* 9504, 9505, & 9510 — The origin server could not be contacted because the origin server may be down or overloaded. Try again later.
* 9523 — The `/cdn-cgi/image/` resizing service could not perform resizing. This may happen when an image has invalid format. Use correctly formatted image and try again.
* 9524 — The `/cdn-cgi/image/` resizing service could not perform resizing. This may happen when an image URL is intercepted by a Worker. As an alternative you can [resize within the Worker](/images/transform-images/transform-via-workers/). This can also happen when using a `pages.dev` URL of a [Cloudflare Pages](/pages/) project. In that case, you can use a [Custom Domain](/pages/configuration/custom-domains/) instead.
Expand Down

0 comments on commit 4e4c527

Please sign in to comment.