Transformations
Transform any image you host on img.pro straight from its URL — convert formats, resize, color-correct, blur or sharpen, rotate, remove the background, or strip EXIF. No re-uploading, no extra storage. Append parameters to the URL and each distinct result is cached independently at the edge worldwide.
url field — a direct CDN URL the API returns on every upload and media response, on every plan, including anonymous. The named sizes are ready-made and included on every plan; the parameters below give you full manual control over the same url.How It Works
Every upload and media API response includes a url field — a direct CDN URL shaped like this:
https://src.img.pro/4j2/abc12345.jpg
Append query parameters to transform what it serves:
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. Invalid values are silently ignored and the image still loads. With the default scale-down fit, images are never enlarged — requesting a larger size is a no-op; cover/crop/pad will upscale to fill the requested box.
Named sizes
The simplest transform — ready-made variants you request with ?size=. The three responsive sizes (s / m / l) ship in every response's sizes object; social is a fixed 1200×630 card requested the same way, but it isn't part of sizes. Append ?size=m to any image url when you don't want to hand-pick parameters.
| Value | Size | Description |
|---|---|---|
?size=s | Short side 320px | Thumbnails, avatars. Aspect ratio preserved. |
?size=m | Short side 640px | Inline previews, feed cards. Aspect ratio preserved. |
?size=l | Short side 1080px | Full-width hero / detail views. Aspect ratio preserved. |
?size=social | 1200×630 | Fixed OpenGraph / social-card frame; any source aspect is padded to fit. |
# Medium variant — short side 640px, aspect preserved
https://src.img.pro/4j2/abc123.jpg?size=m
Format
Append ?format= to convert on the fly. It overrides the extension in the URL path — …/abc123.jpg?format=webp serves WebP even though the path says .jpg.
| Value | Format | Best for |
|---|---|---|
?format=webp | WebP | Best balance of quality and size (recommended) |
?format=avif | AVIF | Smallest files, widening browser support |
?format=jpg | JPEG | Universal compatibility |
?format=png | PNG | Lossless, transparency |
?format=gif | GIF | Legacy compatibility; animation where WebP/AVIF aren't supported |
# Convert a JPEG upload to WebP
https://src.img.pro/4j2/abc123.jpg?format=webp
# Convert and lift the brightness slightly
https://src.img.pro/4j2/abc123.jpg?format=avif&brightness=1.1
Background
Remove the background with a single param, optionally fill it with a solid color. Background removal uses an image-segmentation model running on the edge.
| Param | Values | Description |
|---|---|---|
segment | foreground | Replace the background with transparency (output as PNG to preserve the alpha channel). |
background | CSS named color, hex (#aabbcc — URL-encode # as %23), rgb(r,g,b), or rgba(r,g,b,a). Default #FFFFFF (white). | Fill the background. Use after segment=foreground to swap the background; on its own, fills any transparent pixels in the source. |
# Remove the background, output transparent PNG
https://src.img.pro/4j2/abc123.jpg?segment=foreground&format=png
# Remove the background and replace with white (Amazon / Shopify ready)
https://src.img.pro/4j2/abc123.jpg?segment=foreground&background=white&format=jpg
# Fill an existing transparent PNG with light gray
https://src.img.pro/4j2/abc123.jpg?background=%23f5f5f5
background takes URL-encoded hex (%23aabbcc), CSS named colors (white, black, navy, etc.), or rgb(...) / rgba(...) functions (URL-encode the parens if needed). For photos with people or products, pair it with segment=foreground for clean cutouts.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. An explicit cover, crop, or pad fit will upscale to fill the requested box.
| Param | Values | Description |
|---|---|---|
w, h | 1 – 4096 (px) | Target width / height. Set one to scale proportionally, or both with fit to control how the image fills the box. |
fit | scale-down (default), contain, cover, crop, pad, squeeze | How the image fits w×h. cover/crop fill and trim; contain/pad letterbox; scale-down never enlarges. |
gravity | auto, face, left, right, top, bottom | Which part to keep when cropping. face centers on detected faces. |
zoom | 0 – 1 | Crop tightness around gravity=face. 0 = max context, 1 = tight. |
# 800px-wide WebP
https://src.img.pro/4j2/abc123.jpg?w=800&format=webp
# 400×400 square crop centered on faces
https://src.img.pro/4j2/abc123.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.
| Param | Values | Description |
|---|---|---|
q | 1 – 100 | Explicit quality. Higher = better and larger; ~80 is a good web default. |
high, medium-high, medium-low, low | Named levels (≈ 90 / 75 / 60 / 45) when you'd rather not pick a number. |
# Explicit quality
https://src.img.pro/4j2/abc123.jpg?format=webp&q=80
# Named level
https://src.img.pro/4j2/abc123.jpg?format=webp&q=high
Color & Tone
Tweak brightness, contrast, gamma, and saturation. Each is a decimal multiplier centered at 1 (no change). Omit the param to leave the channel untouched.
| Param | Range | What it does |
|---|---|---|
brightness | 0 – 10 | Multiplier. 1 = unchanged, 0 = pure black, 2 = twice as bright. Useful range: ~0.5 to ~2. |
contrast | 0 – 10 | Multiplier. 1 = unchanged, 0 = flat mid-gray, >1 = punchier. Useful range: ~0.7 to ~2. |
gamma | 0 – 10 | Multiplier. 0 and 1 = unchanged, <1 lightens midtones, >1 darkens midtones. Useful range: ~0.5 to ~2.5. (Direction is opposite of what some image editors call "gamma".) |
saturation | 0 – 10 | Multiplier. 1 = unchanged, 0 = grayscale, >1 = vivid. Useful range: ~0.5 to ~2. |
0–10. Values near the top end produce visually useless extremes (blown-out color, pure black), so treat the "Useful range" column above as your working range and step outside it only with a specific effect in mind.# Slight brightness lift, classic web tweak
https://src.img.pro/4j2/abc123.jpg?brightness=1.1&contrast=1.05
# Black and white
https://src.img.pro/4j2/abc123.jpg?saturation=0
# Faded vintage look
https://src.img.pro/4j2/abc123.jpg?contrast=0.85&saturation=0.7&gamma=1.15
Blur
Apply a gaussian blur. Useful for hero overlays, placeholder images, or privacy masking.
| Param | Range | Description |
|---|---|---|
blur | 0 – 250 (default 0) | Gaussian blur radius in pixels. 10–20 for subtle, 40+ for heavy. 0 = no blur (same as omitting the param). |
# Subtle blur for a hero background
https://src.img.pro/4j2/abc123.jpg?blur=15
# Heavy blur for a placeholder
https://src.img.pro/4j2/abc123.jpg?blur=80
Sharpen
Enhance fine detail with an unsharp-mask. Subtle values fix slightly soft photos; high values can introduce ringing on smooth areas.
| Param | Range | Description |
|---|---|---|
sharp | 0 – 10 | Intensity. 1–3 subtle, 4–6 noticeable, 7+ aggressive. |
# Subtle sharpen
https://src.img.pro/4j2/abc123.jpg?sharp=2
# Noticeable detail boost
https://src.img.pro/4j2/abc123.jpg?sharp=5
Orientation
Rotate or mirror without re-uploading. Rotation is lossless for the supported angles.
| Param | Values | Description |
|---|---|---|
rotate | 90, 180, 270 | Clockwise rotation in degrees. Other values are silently ignored. |
flip | h, v, hv | Mirror horizontally, vertically, or both. |
# Fix a sideways photo (rotate 90° clockwise)
https://src.img.pro/4j2/abc123.jpg?rotate=90
# Mirror horizontally
https://src.img.pro/4j2/abc123.jpg?flip=h
# Combine: rotate then flip
https://src.img.pro/4j2/abc123.jpg?rotate=180&flip=v
Privacy
Control what EXIF/metadata travels with the image. Cameras and phones embed GPS coordinates, device info, and timestamps; strip them before sharing.
| Param | Values | Description |
|---|---|---|
metadata | copyright (default) | Keep copyright/author tags only; strip GPS and device info. This is what you get when ?metadata= is omitted. |
none | Strip everything (GPS, camera, timestamps, software). Recommended for any photo before public sharing. | |
keep | Pass all original metadata through, including GPS coordinates and device info. Use this only when you specifically need the original EXIF preserved. |
# Strip all EXIF before sharing a phone photo
https://src.img.pro/4j2/abc123.jpg?metadata=none
# Keep only copyright/author tags
https://src.img.pro/4j2/abc123.jpg?metadata=copyright
Combining Transforms
Chain parameters freely. Order doesn't matter — the CDN runs everything in a single pass:
# WebP with a touch of warmth
https://src.img.pro/4j2/abc123.jpg?format=webp&brightness=1.05&saturation=1.1
# Faded social card
https://src.img.pro/4j2/abc123.jpg?format=jpg&contrast=0.9&saturation=0.8
# Privacy-blurred preview with EXIF stripped
https://src.img.pro/4j2/abc123.jpg?blur=40&metadata=none
# Cutout product photo on a white background
https://src.img.pro/4j2/abc123.jpg?segment=foreground&background=white&format=jpg
# Rotated, sharpened, exported to AVIF
https://src.img.pro/4j2/abc123.jpg?rotate=90&sharp=3&format=avif
Tool Pages
Most query-param operations also have dedicated tool pages — drag-and-drop landing pages that produce a downloadable result without typing any URL. They're best when you want a permanent file to download or share, rather than an inline transform on an existing link:
- Remove background — one-click background removal with a download
- HEIC to JPG, WebP to JPG, PNG to WebP — format converters
- Blur, Sharpen, Grayscale — one-click filters
- Rotate, Flip — orientation fixes
- Strip EXIF, Add background color — cleanup operations
Tool pages are best for one-off downloads where you want the file directly. The query params above are best for inline embeds, OG previews, and anywhere the same source image needs many variants.
Caching & Performance
- Each unique URL is cached independently at 300+ edge locations
- Cache hit: ~5ms from the nearest data center
- Cache miss: 50–200ms (transform + cache)
- Invalid parameter values are silently ignored — the image still loads
- The default
scale-downfit never enlarges beyond the source;cover/crop/padupscale to fill the requested box
Supported Formats
Transformable: JPEG, PNG, GIF, WebP, AVIF, HEIC
Served as-is: SVG, BMP, ICO (transforms are ignored, file is served directly)