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. Append query parameters to transform what it serves.
# The url, untouched
https://test.src.img.pro/4j2/abc12345.jpg
# WebP, 800px wide, a touch brighter
https://test.src.img.pro/4j2/abc12345.jpg?format=webp&w=800&brightness=1.1
One source can produce many cached variants with no per-transform charge. Each distinct URL is cached independently and parameter order doesn’t matter. Safeguards may ignore unsupported values or fall back to the source/default rendition.
Named sizes
The shortcut: ready-made variants you request with ?size=, no parameters to pick. The three responsive sizes appear in the 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.
https://test.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.
autois intentionally unsupported: a cached transform is shared across clients, so it can’t depend on one client’sAcceptheader.
https://test.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
worhalone to scale proportionally; set both withfitto 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/cropfill and trim;contain/padletterbox;scale-downnever enlarges. An explicitcover/crop/padwill upscale to fill the box. - gravity default auto
- Which part to keep when cropping:
auto,face,left,right,top,bottom.facecenters on detected faces. - zoom 0–1
- Crop tightness around
gravity=face.0= most context,1= tight.
# 400×400 square crop centered on faces
https://test.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;
~80is a good web default. Named levels map to roughly90 / 75 / 60 / 45. No effect on PNG: PNG output is always lossless truecolor, so use a lossy format for a smaller file.
https://test.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
<1lightens midtones,>1darkens them (0and1are 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.
0–10, but values near the top produce visually useless extremes. Stay inside the “useful range” unless you’re after a specific effect.# Subtle warmth
https://test.src.img.pro/4j2/abc12345.jpg?brightness=1.1&contrast=1.05&saturation=1.1
# Black and white
https://test.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–20for a subtle wash,40+for a heavy placeholder. Useful for hero overlays and privacy masking. - sharp 0–10 · default 0
- Unsharp-mask intensity.
1–3subtle,4–6noticeable,7+aggressive (can ring on smooth areas).
# Blurred hero background
https://test.src.img.pro/4j2/abc12345.jpg?blur=15
# Detail boost
https://test.src.img.pro/4j2/abc12345.jpg?sharp=4
Orientation
Rotate, mirror, or trim borders. Rotation at the supported angles involves no resampling; the output is re-encoded in the requested format like any transform (use PNG for a fully lossless result).
- 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).
# Fix a sideways photo, then mirror it
https://test.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
copyrightkeeps copyright/author tags and strips GPS + device info (the default).nonestrips everything (recommended before sharing any photo publicly).keeppasses all original EXIF through, including GPS; use only when you need it preserved.
# Strip all EXIF before sharing a phone photo
https://test.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=pngso 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), orrgb(…)/rgba(…). Aftersegment=foregroundit swaps the background; on its own it fills any transparent pixels. Omit it and alpha-capable formats stay transparent, while others fill white.
# Cutout on a white background (Amazon / Shopify ready)
https://test.src.img.pro/4j2/abc12345.jpg?segment=foreground&background=white&format=jpg
# Transparent PNG cutout
https://test.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.
- 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 radius0–250, default60. darken-bg: background brightness0.05–1, default0.5(lower = darker). color-pop: no strength (the background is fully desaturated). Out-of-range values clamp.
# Portrait-mode blur behind the subject
https://test.src.img.pro/4j2/abc12345.jpg?fx=blur-bg
# Spotlight: dim the background to 30%
https://test.src.img.pro/4j2/abc12345.jpg?fx=darken-bg&strength=0.3
format= when set (JPEG in the examples above). The composite fills every pixel, so no alpha is needed; use format=png only if you want lossless output. Effects compose with sizing (w/h/fit), q, and tile; other adjustment parameters (rotate, blur, brightness, …) are ignored while fx is set. 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
idof 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.
# Tile your watermark (id wm0listo1) across a photo, served as WebP
https://test.src.img.pro/4j2/abc12345.jpg?tile=wm0listo1&format=webp
Combining transforms
Chain parameters freely: order doesn’t matter, and the CDN runs everything in a single pass. (The one exception is effects: while fx is set, only sizing, quality, format, and tile apply.)
# Privacy-blurred preview with EXIF stripped
https://test.src.img.pro/4j2/abc12345.jpg?blur=40&metadata=none
# Faded social card
https://test.src.img.pro/4j2/abc12345.jpg?format=jpg&contrast=0.9&saturation=0.8
# Rotated, sharpened, exported to AVIF
https://test.src.img.pro/4j2/abc12345.jpg?rotate=90&sharp=3&format=avif
Caching & formats
- Caching
- Each unique URL is cached independently at the edge. A cache miss generates the requested rendition; later matching requests reuse the cached result.
- Upscaling
- The default
scale-downfit never enlarges beyond the source;cover/crop/padupscale to fill the requested box. - Accepted uploads
- JPEG, PNG, GIF, WebP, AVIF, and supported HEIC originals up to 20 MB (20,000,000 bytes). The API proves decoder capability before creating the image.