Processing model
- ImageForge
- Build-time pre-generation
- Vercel Image Optimization
- Runtime/on-demand optimization
- Cloudinary
- Runtime API transformations
- imgix
- Runtime URL transformations
ImageForge is an image optimization CLI for Next.js image optimization and static pipelines. It performs build-time image optimization with WebP conversion, AVIF conversion, blurDataURL generation, and hash-based image caching, then writes imageforge.json and enforces freshness in CI with --check.
npm install -g @imageforge/clinpx @imageforge/cli ./public/imagesUse global install for repeated runs and one-off execution commands when needed.
Per-request billing · first-hit latency · external-service compliance risk
Direct factual comparison of ImageForge, Vercel Image Optimization, Cloudinary, and imgix. Pricing references are shown inline and dated for context.
As of February 11, 2026
Owner: ImageForge Maintainers (Product + Growth)
| Capability | ImageForge | Vercel Image Optimization | Cloudinary | imgix |
|---|---|---|---|---|
Processing model | Build-time pre-generation | Runtime/on-demand optimization | Runtime API transformations | Runtime URL transformations |
Entry pricing | $0 (open source) | Free tier + paid usage beyond limits | Plus plan from about $89-$99/mo | Credit bundles from $25/mo + custom enterprise |
Illustrative 28K-image monthly scenario | $0 recurring | About $115 overage on top of a Pro plan in one reported case | $224+ estimated at similar scale | Custom quote, often modeled as high three-figure+ monthly |
CI quality gate | Built-in --check | Not a CLI check mode | Not a CLI check mode | Not a CLI check mode |
Air-gapped compatibility | Local processing, no external image API | Requires external runtime service | Managed external service | Managed external service |
Illustrative scenario values are directional and depend on plan, region, and request patterns. Use provider calculators and account analytics for exact billing projections.
Point ImageForge at your source directory to generate WebP/AVIF derivatives and blur placeholders at build time.
imageforge ./public/images -f webp,avifAdd --check in CI so stale outputs fail the pipeline with a rerun command your team can copy and paste.
imageforge ./public/images --check
# fails if outputs are staleRead imageforge.json inside your app for dimensions, blurDataURL, and deterministic output paths.
{
"generated": "2026-02-11T09:30:00.000Z",
"images": {
"hero.jpg": {
"blurDataURL": "data:image/png;base64,iVBOR...",
"outputs": {
"webp": { "path": "hero.webp", "size": 98765 },
"avif": { "path": "hero.avif", "size": 65432 }
}
}
}
}Keep image optimization predictable with build-time outputs, CI checks, and deterministic metadata your app can consume directly.
Generate deterministic WebP/AVIF assets before deploy so production traffic does not trigger transformation bills.
-f webp,avif
Use --check to fail CI when source images changed without regenerated outputs.
--check
Content and options hashing skips unchanged files, keeping local and CI reruns predictable.
--cache
Emit blurDataURL, dimensions, and output paths in imageforge.json for direct next/image usage.
--blur
Set --concurrency to keep large catalogs under control without overloading build workers.
--concurrency
Use --json for structured logs in CI pipelines and internal automation tooling.
--json
Evidence snapshot - 200 source images, P2 / batch-all
See benchmark details in Methodology or browse the full evidence page.
As of March 15, 2026 - owner ImageForge Maintainers (CLI + Growth)
Dataset
200 images
P2 / batch-all
Cold wall
79.62s
input 5.1 MB, generated 1.1 MB
Warm p50
132.3ms
1508.8 img/s
Speedup
600.65x
cold vs warm mean wall
Headline benchmark numbers are sourced from a documented benchmark evidence record and are updated through approval-gated sync PRs.
View the full benchmark report for cold/warm charts, deltas, and run metadata.
200 source images with a combined input size of 5.1 MB. Output target formats are WebP and AVIF under profile P2.
CLI v0.1.6, Node 22, ubuntu-24.04, dataset 1.0.0, scenario batch-all.
imageforge ./public/images --formats webp,avif --quality 80 --blur
Benchmark evidence source: .github/workflows/benchmark-ci.yml. Sync path: automated nightly snapshot PR to imageforge-site with manual reviewer approval.
78% is the size delta from 5.1 MB input to 1.1 MB generated outputs in this evidence snapshot. 79.6s is the associated run duration shown in the example output.
As of March 15, 2026. Owner: ImageForge Maintainers (CLI + Growth). Artifact: benchmark workflow.
Use --check in CI to fail when source images need processing and keep output deterministic across branches.
Failing run
$ imageforge ./public/images --check
[1/3] cached logo.png
[2/3] needs processing hero.jpg
[3/3] needs processing new-banner.png
2 image(s) need processing.
Run: imageforge ./public/images -f webp,avif
Exit code: 1Passing run
$ imageforge ./public/images --check
[1/3] cached logo.png
[2/3] cached hero.jpg
[3/3] cached new-banner.png
All images up to date.
Exit code: 0Import imageforge.json and feed blurDataURL and dimensions into next/image. The same manifest shape can be consumed in Astro, Nuxt, Remix, and static pipelines.
// lib/imageforge.ts
import manifest from "../imageforge.json";
export function getImageMeta(src: string) {
return manifest.images[src];
}
// app/page.tsx
import Image from "next/image";
import { getImageMeta } from "@/lib/imageforge";
const hero = getImageMeta("hero.jpg");
const heroSrc = "/images/hero.jpg";
<Image
src={heroSrc}
alt="Product hero banner"
width={hero.width}
height={hero.height}
placeholder="blur"
blurDataURL={hero.blurDataURL}
/>;Next.js-first workflows are front and center, with the same manifest pattern usable in other frameworks and static pipelines.
Profile: small product teams and agencies that need predictable hosting costs.
Pain: per-request optimization pricing grows faster than traffic budgets.
ImageForge fit: pre-generate optimized assets once and keep recurring image optimization spend at $0.
npx @imageforge/cli ./public/images -f webp,avif
Profile: engineering orgs that already enforce lint, typecheck, and formatting in pipeline gates.
Pain: unoptimized assets slip into deploys because image checks are manual.
ImageForge fit: add --check so stale images fail fast with an exact remediation command.
imageforge ./public/images --check
Profile: security-sensitive environments with strict data residency and egress controls.
Pain: external image APIs can violate compliance boundaries or security policy.
ImageForge fit: all processing is local in the build environment, with no third-party upload path.
imageforge ./secure-assets -f webp,avif --concurrency 4
Profile: teams moving to VPS, Kubernetes, or self-managed hosting for cost and control.
Pain: runtime image optimization becomes migration friction and infrastructure overhead.
ImageForge fit: generate static derivatives at build time and serve from any CDN or static host.
imageforge ./public/images --out-dir ./public/optimized
ImageForge is optimized for deterministic build-time pipelines. These tradeoffs keep costs predictable and operations simple.
In responsive width-set mode, requested widths are treated as targets. Effective generated widths can clamp to source dimensions and do not upscale.
Mitigation: Set width targets intentionally, inspect generated outputs, and keep width-set counts within the documented cap for your CLI version.
ImageForge generates a fixed derivative set at build time. It does not resize images on-the-fly per request.
Mitigation: Generate the sizes you need ahead of time or pair outputs with a CDN strategy.
ImageForge writes static assets and metadata, but it does not include global delivery infrastructure.
Mitigation: Deploy outputs behind Cloudflare, CloudFront, Fastly, or your existing CDN layer.
Large first-time catalogs can take minutes to process because work scales with source file count.
Mitigation: Hash caching keeps subsequent runs fast by processing only changed files.
Start with one command, add --check in CI, and keep deterministic image outputs in every deployment environment.
npm install -g @imageforge/clinpx @imageforge/cli ./public/images