Transformations

Resize, crop, convert, color-correct, blur, rotate, remove the background, or strip EXIF — all from the image URL. No re-uploading, no extra storage. Append parameters and each distinct result is cached at the edge worldwide.

How it works

Every upload and media response includes a url field: a direct CDN link, on every plan including anonymous. Append query parameters to transform what it serves.

text
# The url, untouched
https://src.img.pro/4j2/abc12345.jpg

# WebP, 800px wide, a touch brighter
https://src.img.pro/4j2/abc12345.jpg?format=webp&w=800&brightness=1.1

One source image, unlimited variants — each distinct URL is cached independently. Order doesn’t matter, and an invalid value is ignored rather than failing the request, so the image always loads.

Named sizes

The shortcut: ready-made variants you request with ?size=, no parameters to pick. The three responsive sizes ship in every response’s sizes object; social is requested the same way.

?size=s short side 320px
Thumbnails and avatars. Aspect ratio preserved.
?size=m short side 640px
Inline previews and feed cards. Aspect ratio preserved.
?size=l short side 1080px
Full-width hero and detail views. Aspect ratio preserved.
?size=social 1200×630
Fixed OpenGraph / social-card frame. Any source aspect is padded to fit.
text
https://src.img.pro/4j2/abc12345.jpg?size=m

Format

Convert on the fly. format overrides the extension in the URL path, so …/abc.jpg?format=webp serves WebP even though the path says .jpg.

format jpg · png · webp · avif · gif
webp is the best quality-for-size balance (recommended); avif is the smallest; png is lossless with transparency; jpg is universal; gif is for legacy or animation. auto is intentionally unsupported — a cached transform is shared across clients, so it can’t depend on one client’s Accept header.
text
https://src.img.pro/4j2/abc12345.jpg?format=webp

Resize & crop

Resize and crop with explicit dimensions. With the default scale-down fit, images are never enlarged — requesting a larger size is a no-op.

w 1–4096 px
Target width. Set w or h alone to scale proportionally; set both with fit to control how the image fills the box.
h 1–4096 px
Target height. Same rules as w.
fit default scale-down
How the image fills w×h: scale-down, contain, cover, crop, pad, squeeze. cover/crop fill and trim; contain/pad letterbox; scale-down never enlarges. An explicit cover/crop/pad will upscale to fill the box.
gravity default auto
Which part to keep when cropping: auto, face, left, right, top, bottom. face centers on detected faces.
zoom 0–1
Crop tightness around gravity=face. 0 = most context, 1 = tight.
text
# 400×400 square crop centered on faces
https://src.img.pro/4j2/abc12345.jpg?w=400&h=400&fit=cover&gravity=face

Quality

Control output quality for lossy formats (JPEG / WebP / AVIF). Accepts a number or a named level.

q 1–100or high · medium-high · medium-low · low
Higher = better and larger; ~80 is a good web default. Named levels map to roughly 90 / 75 / 60 / 45. No effect on PNG — PNG output is always lossless truecolor, so use a lossy format for a smaller file.
text
https://src.img.pro/4j2/abc12345.jpg?format=webp&q=80

Color & tone

Each is a decimal multiplier centered at 1 (no change). Omit a param to leave that channel untouched.

brightness 0–10 · default 1
0 = black, 2 = twice as bright. Useful range ~0.5–2.
contrast 0–10 · default 1
0 = flat mid-gray, >1 = punchier. Useful range ~0.7–2.
gamma 0–10 · default 1
<1 lightens midtones, >1 darkens them (0 and 1 are both no-ops). Useful range ~0.5–2.5. Direction is opposite to what some editors call “gamma”.
saturation 0–10 · default 1
0 = grayscale, >1 = vivid. Useful range ~0.5–2.
All four are capped at 0–10, but values near the top produce visually useless extremes. Stay inside the “useful range” unless you’re after a specific effect.
text
# Subtle warmth
https://src.img.pro/4j2/abc12345.jpg?brightness=1.1&contrast=1.05&saturation=1.1

# Black and white
https://src.img.pro/4j2/abc12345.jpg?saturation=0

Filters

Soften or sharpen detail without re-uploading.

blur 0–250 · default 0
Gaussian blur radius in pixels. 10–20 for a subtle wash, 40+ for a heavy placeholder. Useful for hero overlays and privacy masking.
sharp 0–10 · default 0
Unsharp-mask intensity. 1–3 subtle, 4–6 noticeable, 7+ aggressive (can ring on smooth areas).
text
# Blurred hero background
https://src.img.pro/4j2/abc12345.jpg?blur=15

# Detail boost
https://src.img.pro/4j2/abc12345.jpg?sharp=4

Orientation

Rotate, mirror, or trim borders. Rotation is lossless for the supported angles.

rotate 90 · 180 · 270
Clockwise rotation in degrees. Other values are ignored.
flip h · v · hv
Mirror horizontally, vertically, or both.
trim border
Auto-crop a uniform border color around the image — scanned documents, letterboxed screenshots.
text
# Fix a sideways photo, then mirror it
https://src.img.pro/4j2/abc12345.jpg?rotate=90&flip=h

Privacy

Cameras and phones embed GPS, device info, and timestamps. Control what travels with the image.

metadata default copyright
copyright keeps copyright/author tags and strips GPS + device info (the default). none strips everything — recommended before sharing any photo publicly. keep passes all original EXIF through, including GPS; use only when you need it preserved.
text
# Strip all EXIF before sharing a phone photo
https://src.img.pro/4j2/abc12345.jpg?metadata=none

Background

Remove the background with a single param — image segmentation runs on the edge — and optionally fill it with a solid color.

segment foreground
Replace the background with transparency. Add format=png so the alpha channel survives; otherwise the output follows the path extension and JPEG flattens transparency.
background
Fill color for transparent areas: a CSS named color (white, navy), hex (URL-encode # as %23, e.g. %23f5f5f5), or rgb(…) / rgba(…). After segment=foreground it swaps the background; on its own it fills any transparent pixels. Omit it and alpha-capable formats stay transparent, while others fill white.
text
# Cutout on a white background (Amazon / Shopify ready)
https://src.img.pro/4j2/abc12345.jpg?segment=foreground&background=white&format=jpg

# Transparent PNG cutout
https://src.img.pro/4j2/abc12345.jpg?segment=foreground&format=png

Effects

One-param composites: the subject is separated from the background with the segmentation model, the effect is applied to the background only, and the sharp subject is layered back on top. These power the Portrait Mode, Color Pop, and Spotlight tools.

fx blur-bg · color-pop · darken-bg
blur-bg = portrait-style background blur; color-pop = grayscale background, full-color subject; darken-bg = dimmed background, spotlit subject.
strength per recipe
Tunes the effect (only meaningful alongside fx). blur-bg: blur radius 0–250, default 60. darken-bg: background brightness 0.05–1, default 0.5 (lower = darker). color-pop: no strength — the background is fully desaturated. Out-of-range values clamp.
text
# Portrait-mode blur behind the subject
https://src.img.pro/4j2/abc12345.jpg?fx=blur-bg

# Spotlight: dim the background to 30%
https://src.img.pro/4j2/abc12345.jpg?fx=darken-bg&strength=0.3
Effects output JPEG by default (the composite fills every pixel, so no alpha is needed); add format=png / webp / avif to override. Each fx + strength combination is computed once and cached at the edge.

Watermark

Repeat one of your own images across the base as a tiled overlay — the standard way to watermark. Upload the watermark once (typically a transparent, seamlessly-tiling PNG with opacity baked in), then reference it by id.

tile image id
The id of another image you host, repeated edge-to-edge at its native size over the base. The overlay must be in the same workspace as the base; an id that isn’t yours (or doesn’t exist) is ignored and the base is served unchanged.
text
# Tile your watermark (id wm0listo1) across a photo, served as WebP
https://src.img.pro/4j2/abc12345.jpg?tile=wm0listo1&format=webp
The overlay is tiled axis-aligned at its native pixel size, so design it as a seamless tile with the angle, color, and opacity baked in. PNG output is always lossless truecolor.

Combining transforms

Chain parameters freely — order doesn’t matter, and the CDN runs everything in a single pass.

text
# Privacy-blurred preview with EXIF stripped
https://src.img.pro/4j2/abc12345.jpg?blur=40&metadata=none

# Faded social card
https://src.img.pro/4j2/abc12345.jpg?format=jpg&contrast=0.9&saturation=0.8

# Rotated, sharpened, exported to AVIF
https://src.img.pro/4j2/abc12345.jpg?rotate=90&sharp=3&format=avif

Tool pages

Most of these operations also have dedicated tool pages: drag-and-drop pages that produce a downloadable file with no URL to type. Use them when you want a permanent file to download or share; use the query params above for inline embeds, OG previews, and serving many variants of one source.

Caching & formats

Caching
Each unique URL is cached independently at 300+ edge locations. Cache hit ≈ 5 ms; cache miss 50–200 ms (transform, then cache).
Upscaling
The default scale-down fit never enlarges beyond the source; cover / crop / pad upscale to fill the requested box.
Transformable
JPEG, PNG, GIF, WebP, AVIF, HEIC.
Served as-is
SVG, BMP, ICO — transforms are ignored and the file is served directly.