Set the URL. Get the image.

img2.site stores your images and renders every size, crop and format straight from the delivery URL. Upload once, then change the URL, not the file.

Public beta · Open to everyone Plans from $9/month. Built for public images.

A common kingfisher perched on a lichen-covered branch
https://img2site-smoke.i2scd.net/resize/1200x800/format/webp/quality/80/f/www-kingfisherLive render

Swap a segment. The proof re-renders from the new URL.

Crop
Size
Format
Quality
File

Photos by Frank-2.0 and Jebulon, CC0, via Wikimedia Commons. Rendered live on an img2.site delivery host.

The grammar fits on one line.

Operations are lowercase name/value segments, in any order, followed by /f/ and the file slug. A chain that does not parse answers 404 instead of guessing.

resize
resize/{w}x{h}

1 to 8192 px per side. Leave one side empty, as in 1024x, to keep the aspect ratio.

fit
resize/{w}x{h}/fill · smart · fit

Cover the box and crop the centre, crop around the most interesting region, or fit inside the box.

crop
crop/{x},{y},{w},{h}

Take a pixel box from the source before resizing.

format
format/webp · avif · jpeg · png

Pick the output format. Without it, the stored format is kept (PNG for an SVG).

quality
quality/{1-100}

Encoder quality for JPEG, WebP and AVIF.

preset
preset:{name}

A named chain you define for the project, such as preset:large, so templates never spell out sizes.

original
originals/f/{slug}

The sanitized image as stored, with no transforms and no embedded metadata.

Upload once. Change the URL, not the file.

  1. Upload

    Send the file through the SDK or an upload session. It is sanitized and stored in your project.

  2. Render

    The first request for a chain renders it; after that it is served from cache. Output never carries embedded metadata.

  3. Deliver

    Put the URL in an img tag or srcset. Protected projects use signed URLs, and each project can limit which chains it allows.

With the JavaScript SDK
import { createUploader, imageUrl } from "@img2site/sdk-client";

const uploader = createUploader({ endpoint: "/api/img2site" });
const { file_slug } = await uploader.upload(file);

imageUrl({ host: "my-store.i2scd.net", slug: file_slug, chain: "resize/800x/format/webp" });
// https://my-store.i2scd.net/resize/800x/format/webp/f/<file_slug>

See recent activity and finalized totals in one dashboard. Straightforward plans, with no automatic overages.

Three plans, shared across your projects.

  • Starter$9200,000 delivery credits
    10 GB image storage
  • Builder$29750,000 delivery credits
    50 GB image storage
  • Growth$792,500,000 delivery credits
    200 GB image storage
Compare plans

Join the public beta.

Create an account, choose a plan and upload your first image. Questions first? Tell us what you are building and we will reply by email.

Get started