# Toolweight, full corpus > Side-by-side comparisons of developer infrastructure, weighed on the things that matter. This file concatenates every category hub as markdown, with full provenance for every cell. Generated 2026-11-14. Licensed CC-BY-4.0, Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. Index: https://toolweight.com/llms.txt · JSON: https://toolweight.com/api/v1 · MCP: https://toolweight.com/mcp --- --- title: "Sandbox providers compared: cold start, isolation and price" slug: sandbox-providers url: "https://toolweight.com/compare/sandbox-providers" question: Which sandbox provider should I run untrusted or agent-generated code on? tools: 19 fields: 26 last_verified: 2026-11-14 oldest_verified: 2026-01-15 median_verified: 2026-01-15 stale_values: 126 conflicting_values: 0 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 40% verify_cadence: 30d license: CC-BY-4.0 --- # Sandbox providers > **Which sandbox provider should I run untrusted or agent-generated code on?** > > E2B is the fastest general-purpose microVM sandbox for agents, but Fly.io Machines wins on price and control if you can skip an agent SDK. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/sandbox-providers | | Tools compared | 19 | | Fields compared | 26 | | Last verified | 2026-11-14 (today), newest single value | | Verification | 186 of 494 values have a verification date, checked between 2026-01-15 and 2026-11-14 (median 2026-01-15), 126 due for re-check. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 40% (mean cell confidence, not age) | | Killer field | cold_start_measured | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Fly.io Machines](https://toolweight.com/tools/fly-machines) | 80.3 | 96% | Raw Firecracker microVMs with a REST API, durable volumes and 35+ regions. | | 2 | [Daytona](https://toolweight.com/tools/daytona) | 80.2 | 100% | Sub-second container sandboxes for agent workloads, from a team that built a dev-env manager. | | 3 | [Blaxel](https://toolweight.com/tools/blaxel) | 78.0 | 91% | Agent-first cloud claiming ~25 ms microVM boots from snapshots. | | 4 | [Runloop](https://toolweight.com/tools/runloop) | 76.4 | 96% | Devboxes, blueprints and eval harnesses aimed at teams training coding agents. | | 5 | [Modal](https://toolweight.com/tools/modal) | 75.8 | 96% | Serverless Python compute with a Sandbox API bolted onto a GPU-first platform. | | 6 | [exe.dev](https://toolweight.com/tools/exe-dev) | 75.2 | 70% | Persistent VMs you SSH into, with root, apt and systemd, on a flat monthly plan. | | 7 | [E2B](https://toolweight.com/tools/e2b) | 73.1 | 100% | Open-source Firecracker sandboxes with Python and TypeScript SDKs for AI agents. | | 8 | [CodeSandbox SDK](https://toolweight.com/tools/codesandbox-sdk) | 72.9 | 100% | Firecracker VMs with memory snapshots, from the online IDE, now owned by Together AI. | | 9 | [Vercel Sandbox](https://toolweight.com/tools/vercel-sandbox) | 72.5 | 100% | Firecracker microVMs for running untrusted code from inside a Vercel deployment. | | 10 | [Namespace](https://toolweight.com/tools/namespace) | 71.6 | 91% | Fast microVM instances and CI runners with instant snapshots and cached builds. | | 11 | [boat](https://toolweight.com/tools/boat) | 70.1 | 87% | Persistent Ubuntu VMs for agents with SSH, Docker and disk-level fork, billed per second. | | 12 | [Islo](https://toolweight.com/tools/islo) | 69.2 | 57% | Per-agent isolated cloud sandboxes with enterprise policy controls, from Incredibuild. | | 13 | [Freestyle](https://toolweight.com/tools/freestyle) | 63.9 | 96% | Run untrusted JavaScript and full dev servers, with git hosting and domains built in. | | 14 | [GitHub Codespaces](https://toolweight.com/tools/github-codespaces) | 62.2 | 96% | Devcontainer-backed cloud VMs built for humans, occasionally repurposed for agents. | | 15 | [Northflank](https://toolweight.com/tools/northflank) | 62.0 | 96% | Container platform with bring-your-own-cloud, GPUs and a sandbox-shaped API. | | 16 | [Self-hosted Firecracker](https://toolweight.com/tools/diy-firecracker) | 60.8 | 96% | The baseline: Firecracker on your own metal, plus every hard part you now own. | | 17 | [Cloudflare Sandbox](https://toolweight.com/tools/cloudflare-sandbox) | 59.2 | 100% | Container sandboxes driven from a Worker, addressed through Durable Objects. | | 18 | [Val Town](https://toolweight.com/tools/val-town) | 43.7 | 91% | Deno isolates that run TypeScript on HTTP, cron and email triggers. | | 19 | [Riza](https://toolweight.com/tools/riza) | 41.1 | 87% | WASM-isolated code interpreter API for LLM output, with no filesystem or network. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Runtime | Tool | Cold start (ms) | Cold start (claimed) (ms) | Max runtime (ms) | Persistent FS | Snapshot & fork | Custom images | GPU | Runtimes | Preview URLs | Browser inside | File up/download | Sydney region | Concurrent limit (sandboxes) | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Fly.io Machines | 900ms | 300ms | 24h | ● | ◐ | ● | ● | any-oci-image | ◐ | ◐ | ◐ | ● | 500 sandboxes | | Daytona | 350ms | 90ms | 24h | ● | ● | ● | ● | python, javascript-typescript, bash, any-oci-image | ● | ◐ | ● | ○ | 100 sandboxes | | Blaxel | 500ms | 25ms | 24h | ◐ | ● | ● | - | python, javascript-typescript, bash, any-oci-image | ● | ◐ | ● | ◐ | 100 sandboxes | | Runloop | 800ms | 1s | 24h | ● | ● | ● | ○ | python, javascript-typescript, bash, any-oci-image | ● | ◐ | ● | ○ | 100 sandboxes | | Modal | 1.5s | 1s | 24h | ● | ◐ | ● | ● | python, javascript-typescript, bash, any-oci-image | ● | ◐ | ● | ○ | 100 sandboxes | | exe.dev | - | - | 24h | ● | ◐ | ◐ | - | any-oci-image | ● | - | ◐ | ● | - | | E2B | 400ms | 200ms | 24h | ◐ | ◐ | ● | ○ | python, javascript-typescript, bash, any-oci-image | ● | ● | ● | ○ | 100 sandboxes | | CodeSandbox SDK | 1.2s | 1s | 24h | ● | ● | ● | ○ | python, javascript-typescript, bash, any-oci-image | ● | ◐ | ● | ○ | 100 sandboxes | | Vercel Sandbox | 1.8s | - | 24h | ◐ | ◐ | ● | ○ | python, javascript-typescript, bash, any-oci-image | ● | ○ | ● | ○ | 2,000 sandboxes | | Namespace | 1.5s | 800ms | 24h | ● | ● | ● | - | any-oci-image | ◐ | ◐ | ◐ | ○ | 100 sandboxes | | boat | - | - | 30d | ◐ | ◐ | ◐ | ○ | python, javascript-typescript, bash, go, rust, java, ruby, php, any-oci-image | ● | ◐ | ● | ○ | 100 sandboxes | | Islo | - | - | - | ◐ | ◐ | ◐ | - | - | ◐ | ● | ◐ | - | - | | Freestyle | 700ms | - | 1h | ● | ◐ | ○ | ○ | javascript-typescript, python | ● | ○ | ● | ○ | 40 sandboxes | | GitHub Codespaces | 45s | 10s | 24h | ● | ◐ | ● | ○ | any-oci-image | ● | ◐ | ◐ | ● | 10 sandboxes | | Northflank | 12s | 1s | 24h | ● | ○ | ● | ● | any-oci-image | ● | ◐ | ◐ | ◐ | 200 sandboxes | | Self-hosted Firecracker | 200ms | 125ms | 24h | ● | ◐ | ● | ◐ | any-oci-image | ○ | ◐ | ○ | ● | 1,000 sandboxes | | Cloudflare Sandbox | 3s | - | 1h | ○ | ○ | ● | ○ | any-oci-image | ● | ◐ | ● | ◐ | 100 sandboxes | | Val Town | 150ms | 100ms | 5min | ○ | ○ | ○ | ○ | javascript-typescript | ● | ○ | ◐ | ○ | N/A | | Riza | 120ms | - | 1min | ○ | ○ | ○ | ○ | python, javascript-typescript, ruby, php | ○ | ○ | ◐ | ○ | - | ### Isolation & network | Tool | Isolation | Root in guest | Egress control | | --- | --- | --- | --- | | Fly.io Machines | microvm | ● | allowlist | | Daytona | container | ● | allowlist | | Blaxel | microvm | ● | open | | Runloop | microvm | ● | open | | Modal | gvisor | ● | proxy-logged | | exe.dev | vm | ● | allowlist | | E2B | microvm | ● | open | | CodeSandbox SDK | microvm | ● | open | | Vercel Sandbox | microvm | ● | allowlist | | Namespace | microvm | ● | proxy-logged | | boat | vm | ● | open | | Islo | microvm | ● | allowlist | | Freestyle | microvm | ◐ | allowlist | | GitHub Codespaces | vm | ● | allowlist | | Northflank | container | ◐ | allowlist | | Self-hosted Firecracker | microvm | ● | allowlist | | Cloudflare Sandbox | container | ● | allowlist | | Val Town | v8-isolate | ○ | proxy-logged | | Riza | wasm | ○ | blocked-by-default | ### Agent integration | Tool | MCP server | SDKs | Streaming output | | --- | --- | --- | --- | | Fly.io Machines | ◐ | rest-api, cli | ◐ | | Daytona | ● | python, typescript, cli | ● | | Blaxel | ● | python, typescript, cli | ● | | Runloop | ◐ | python, typescript, rest-api, cli | ● | | Modal | ◐ | python, cli | ● | | exe.dev | ● | cli, rest-api | - | | E2B | ◐ | python, typescript, cli | ● | | CodeSandbox SDK | ○ | typescript, python | ● | | Vercel Sandbox | ○ | typescript | ● | | Namespace | ○ | go, rest-api, cli | ● | | boat | ○ | python, typescript, cli | ● | | Islo | - | python, typescript, cli | - | | Freestyle | ◐ | typescript, rest-api | ● | | GitHub Codespaces | ○ | rest-api, cli | ◐ | | Northflank | ● | typescript, rest-api, cli | ● | | Self-hosted Firecracker | ○ | rest-api | ○ | | Cloudflare Sandbox | ◐ | typescript | ● | | Val Town | ● | typescript, rest-api, cli | ◐ | | Riza | ◐ | python, typescript, rest-api | ○ | ### Pricing | Tool | Price / hour (/hr) | Meter | Idle cost | | --- | --- | --- | --- | | Fly.io Machines | $0.031/hr | per-second | free-when-stopped | | Daytona | $0.17/hr | per-second | storage-only | | Blaxel | $0.17/hr | per-second | storage-only | | Runloop | $0.32/hr | per-second | storage-only | | Modal | $0.238/hr | per-second | active-cpu-only | | exe.dev | $0.105/hr | subscription | free-when-stopped | | E2B | $0.17/hr | per-second | storage-only | | CodeSandbox SDK | $0.15/hr | per-second | storage-only | | Vercel Sandbox | $0.341/hr | per-second | active-cpu-only | | Namespace | $0.24/hr | per-minute | free-when-stopped | | boat | $0.018/hr | per-second | free-when-stopped | | Islo | $0.3/hr | per-hour | free-when-stopped | | Freestyle | $0.13/hr | per-request | storage-only | | GitHub Codespaces | $0.18/hr | per-minute | storage-only | | Northflank | $0.07/hr | per-minute | full-rate | | Self-hosted Firecracker | $0.03/hr | per-hour | full-rate | | Cloudflare Sandbox | $0.18/hr | per-10ms | free-when-stopped | | Val Town | - | subscription | free-when-stopped | | Riza | N/A | per-request | free-when-stopped | ### Traction | Tool | GitHub stars | Funding | | --- | --- | --- | | Fly.io Machines | - | series-c-plus | | Daytona | 71,000 | seed | | Blaxel | - | seed | | Runloop | - | seed | | Modal | - | series-b | | exe.dev | - | - | | E2B | 15,000 | series-a | | CodeSandbox SDK | 13,000 | acquired | | Vercel Sandbox | 0 | series-c-plus | | Namespace | - | seed | | boat | - | - | | Islo | - | - | | Freestyle | - | seed | | GitHub Codespaces | - | public | | Northflank | - | series-a | | Self-hosted Firecracker | 27,000 | - | | Cloudflare Sandbox | 1,000 | public | | Val Town | 144 | seed | | Riza | - | seed | ### Positioning | Tool | Positioning | | --- | --- | | Fly.io Machines | Hardware-virtualised containers that run anywhere, started and stopped over an API. | | Daytona | Secure, elastic infrastructure for running AI-generated code. | | Blaxel | An agent-native cloud: sandboxes, agent hosting and a model gateway in one platform. | | Runloop | Infrastructure and evaluation harnesses for teams building coding agents. | | Modal | Serverless compute for AI teams, with sandboxes as one primitive. | | exe.dev | Modern VMs you SSH into, with root, apt and systemd, on a flat monthly plan. | | E2B | Open-source infrastructure for running AI-generated code. | | CodeSandbox SDK | The VM infrastructure behind CodeSandbox, sold as an SDK. | | Vercel Sandbox | Run untrusted code from your Vercel app in an ephemeral microVM. | | Namespace | Fast ephemeral compute for CI, builds and remote development. | | boat | Full Linux VMs for AI agents, billed per second and free when stopped. | | Islo | An isolated cloud environment per coding agent, with enterprise policy control over what it can reach. | | Freestyle | The backend for AI app builders: run code, host git, serve previews, attach domains. | | GitHub Codespaces | A configured development environment in the cloud, one click from the repository. | | Northflank | Run agent workloads, services and GPUs in your own cloud account. | | Self-hosted Firecracker | The microVM monitor underneath most of this roster, and none of the platform. | | Cloudflare Sandbox | Containers you can call from a Worker, with a Durable Object as the control plane. | | Val Town | Write and deploy TypeScript in the browser, triggered by HTTP, cron or email. | | Riza | A code interpreter API for safely running code written by LLMs. | ### Timeline | Tool | Shipped | | --- | --- | | Fly.io Machines | 2022 | | Daytona | 2025 | | Blaxel | 2025 | | Runloop | 2024 | | Modal | 2024 | | exe.dev | - | | E2B | 2023 | | CodeSandbox SDK | 2024 | | Vercel Sandbox | 2025 | | Namespace | 2023 | | boat | - | | Islo | - | | Freestyle | 2024 | | GitHub Codespaces | 2020 | | Northflank | 2021 | | Self-hosted Firecracker | 2018 | | Cloudflare Sandbox | 2025 | | Val Town | 2022 | | Riza | 2024 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Cold start | `cold_start_measured` | features | duration | ms | lower | 10 | p50 wall-clock from a single client in a fixed region calling create-sandbox on an account with nothing running, until a trivial command returns output. TLS, scheduling, image pull and the return trip all counted. Never vendor-supplied. | | Cold start (claimed) | `cold_start_claimed` | features | duration | ms | lower | 0 | The fastest boot figure the vendor puts on its own site or docs, whatever it happens to measure. Deliberately weighted zero: it is here for contrast with the measured column, not for scoring. | | Isolation | `isolation_tech` | isolation | enum | - | higher | 7 | The boundary between guest code and the host kernel. microVM and VM mean a hypervisor; gVisor is a user-space kernel; wasm and v8-isolate are language-level sandboxes with no syscall surface; container means a shared kernel with namespaces. | | Root in guest | `root_access` | isolation | tristate | - | n/a | 4 | Whether code in the sandbox can install packages and mount filesystems as root. Yes means sudo or a root shell out of the box; partial means a rootless approximation such as a user namespace or a package-manager wrapper. | | Egress control | `egress_control` | isolation | enum | - | higher | 6 | First-party control over what the sandbox can reach outbound. allowlist means per-sandbox destination rules; blocked-by-default means no network unless granted; proxy-logged means traffic is visible but unrestricted; open means the internet with no first-party controls. | | Max runtime | `max_runtime` | features | duration | ms | higher | 5 | Longest a single sandbox may run before the platform kills it, on a paid plan, ignoring idle timeouts you configure yourself. 24 h is used as the ceiling for platforms that impose no limit at all. | | Persistent FS | `persistent_fs` | features | tristate | - | n/a | 5 | Whether files written in the sandbox survive its lifetime. Yes means a durable volume you can reattach; partial means state survives pause/resume or a snapshot but not deletion; no means the filesystem is ephemeral. | | Snapshot & fork | `snapshot_fork` | features | tristate | - | n/a | 8 | Whether you can freeze a running sandbox and restore or clone it. Yes means both snapshot and fork of a live memory image; partial means pause/resume or disk-only cloning without live memory forking. | | Custom images | `custom_images` | features | tristate | - | n/a | 6 | Whether you can supply your own base image. Yes means an arbitrary Dockerfile or OCI image; partial means a curated base you extend with a setup script or a restricted build; no means fixed vendor runtimes only. | | GPU | `gpu` | features | tristate | - | n/a | 3 | Whether a sandbox can be attached to a GPU on a self-serve plan. Partial means GPUs exist elsewhere on the platform but are not exposed through the sandbox API, or require contacting sales. | | Runtimes | `language_runtimes` | features | multi-enum | - | higher | 3 | Languages executable without building your own image. any-oci-image means arbitrary images are supported, which implies every language but is listed separately because it costs you a build step. | | Preview URLs | `preview_urls` | features | tristate | - | n/a | 5 | Whether a port inside the sandbox can be exposed on a public HTTPS URL straight from the API. Partial means it works but needs manual configuration, a tunnel, or a domain you own. | | Browser inside | `browser_in_sandbox` | features | tristate | - | n/a | 3 | Whether the vendor ships a supported image with a headless or streamed browser and a CDP endpoint. Partial means you can install Chromium yourself but nothing is provided or documented. | | File up/download | `file_transfer_api` | features | tristate | - | n/a | 4 | A first-party API for moving files in and out of a running sandbox without shelling out to base64 or SSH. Partial means one direction only, a hard size cap, or CLI-only access. | | Sydney region | `sydney_region` | features | tristate | - | n/a | 2 | Whether sandboxes can be pinned to an Australian region. Partial means reachable only via bring-your-own-cloud, an enterprise agreement, or an anycast edge with no placement guarantee. | | Concurrent limit | `max_concurrency` | features | number | sandboxes | higher | 4 | Concurrent sandboxes allowed on the standard paid tier without contacting sales. 1000 is used as the ceiling for platforms whose only limit is your quota or your wallet. | | MCP server | `mcp_server` | agentic | tristate | - | n/a | 5 | A first-party Model Context Protocol server letting an agent create and drive sandboxes as tools. Partial means community-maintained, in preview, or covering only part of the API. | | SDKs | `sdk_languages` | agentic | multi-enum | - | higher | 6 | Officially maintained client libraries. rest-api is listed only where there is no typed SDK worth using and you are expected to call HTTP directly. | | Streaming output | `streaming_stdout` | agentic | tristate | - | n/a | 6 | Whether stdout and stderr stream back incrementally while a command runs rather than arriving when it exits. Partial means streaming exists but only over a separate channel such as WebSocket or SSH. | | Price / hour | `price_per_hour` | pricing | currency | /hr | lower | 7 | List price for roughly 2 vCPU and 4 GB running for one hour on the cheapest paid tier, no commitment, excluding storage and egress. Per-second and credit-based vendors are converted; the arithmetic is noted on the cell. | | Meter | `billing_granularity` | pricing | enum | - | higher | 4 | The smallest unit the meter rounds to. Matters most for short-lived sandboxes: per-minute rounding on a 12-second sandbox costs five times per-second rounding for identical work. | | Idle cost | `idle_billing` | pricing | enum | - | higher | 6 | What you pay while a sandbox exists but is doing nothing, the common case when an agent is blocked on model inference. full-rate means wall-clock billing regardless of CPU use. | | GitHub stars | `github_stars` | traction | number | - | higher | 1 | Stars on the vendor's primary open-source repository, rounded to the nearest thousand. Null where the product is closed-source, since an SDK's star count measures nothing useful. | | Funding | `funding_stage` | traction | enum | - | higher | 2 | Latest disclosed funding stage of the company operating the product, as a crude proxy for how long it can keep subsidising compute. acquired means it now sits inside a larger company. | | Shipped | `launched` | timeline | number | - | n/a | 0 | Year the sandbox product itself became publicly usable, not the year the company was founded, which is often much earlier for platforms that pivoted into this category. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor describes the product on its own homepage, paraphrased to one line. Useful for spotting who is actually competing with whom. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Most agent-friendly | `agent-friendly` | Weights what a coding agent needs: snapshots to branch state, streaming output, file transfer, an MCP server and a real SDK. | snapshot_fork:10, mcp_server:8, streaming_stdout:8, sdk_languages:7, file_transfer_api:7, persistent_fs:6, custom_images:6, preview_urls:5, cold_start_measured:5, browser_in_sandbox:4, max_concurrency:4, price_per_hour:3 | https://toolweight.com/compare/sandbox-providers?w=snapshot_fork:10,mcp_server:8,streaming_stdout:8,sdk_languages:7,file_transfer_api:7,persistent_fs:6,custom_images:6,preview_urls:5,cold_start_measured:5,browser_in_sandbox:4,max_concurrency:4,price_per_hour:3 | | Fastest cold start | `fastest-cold-start` | Boot time dominates and everything else is a tiebreak. Claimed numbers still score zero. | cold_start_measured:10, snapshot_fork:6, max_concurrency:4, isolation_tech:2, price_per_hour:2, billing_granularity:2 | https://toolweight.com/compare/sandbox-providers?w=cold_start_measured:10,snapshot_fork:6,max_concurrency:4,isolation_tech:2,price_per_hour:2,billing_granularity:2 | | Cheapest per hour | `cheapest-per-hour` | List price for a 2 vCPU / 4 GB sandbox, how granular the meter is, and what you pay while nothing is running. | price_per_hour:10, idle_billing:8, billing_granularity:6, max_runtime:3, max_concurrency:2, cold_start_measured:2 | https://toolweight.com/compare/sandbox-providers?w=price_per_hour:10,idle_billing:8,billing_granularity:6,max_runtime:3,max_concurrency:2,cold_start_measured:2 | | Strongest isolation | `strongest-isolation` | For untrusted third-party code: kernel boundary, outbound network control and how much of the host the guest can see. | isolation_tech:10, egress_control:9, root_access:5, max_runtime:2, persistent_fs:2, price_per_hour:1 | https://toolweight.com/compare/sandbox-providers?w=isolation_tech:10,egress_control:9,root_access:5,max_runtime:2,persistent_fs:2,price_per_hour:1 | ## Which one should you pick? - **What are you actually running in the sandbox?** - _Agent-generated code, and I want a default that just works_ - **Do you need to self-host, or keep an exit hatch if the vendor changes?** - _Yes — portability matters_ - → **[E2B](https://toolweight.com/tools/e2b)** — Apache-licensed Firecracker with Dockerfile templates; the only ecosystem you can self-host without rewriting your integration. - _No — fully managed is fine, and boot time is the whole game_ - → **[Daytona](https://toolweight.com/tools/daytona)** — Sub-90 ms shared-kernel container start wins on ergonomics and speed — but a shared kernel is not a hypervisor, so weigh the isolation you are giving up. - _Evals and benchmark-harness work_ - → **[Runloop](https://toolweight.com/tools/runloop)** — Devbox snapshots plus a built-in benchmark harness — a different product shape that fits evals rather than general execution. - _A feature inside an app I've already deployed_ - **Where does that app already live?** - _Vercel_ - → **[Vercel Sandbox](https://toolweight.com/tools/vercel-sandbox)** — Makes the sandbox a line in the app you already ship; not fastest or cheapest, and not trying to be. - _Cloudflare_ - → **[Cloudflare Sandbox](https://toolweight.com/tools/cloudflare-sandbox)** — The same bet on Workers: the sandbox is part of the deployment you already run. - _My own infra_ - → **[Fly.io Machines](https://toolweight.com/tools/fly-machines)** — A real Firecracker VM at roughly a tenth the cost, with a durable volume, a Sydney region, and nothing charged while stopped. ## Verdict - Nobody buys a sandbox; they buy the seconds between an agent deciding to run code and it running - They also buy confidence that a hostile `rm -rf` or crypto miner stays inside the box - Everything else on this page is a proxy for those two things - Fastest: V8 isolates and WASM (Val Town, Riza) start in milliseconds - Mid: snapshot microVMs (E2B, Blaxel, CodeSandbox SDK, Runloop) land between 150 ms and two seconds - Slowest: Kubernetes containers (Northflank) and full VMs (GitHub Codespaces), seconds to tens of seconds - Daytona's sub-90 ms is a shared-kernel container start, no guest kernel to boot - Blaxel's 25 ms and Daytona's sub-90 ms are real, but only for warm operations on your own machine - Not the number you get over TLS into a pool that just scaled to zero - E2B is the default for agent harnesses: Apache-licensed, Firecracker, Dockerfile templates - E2B is the only ecosystem where you can self-host without rewriting your integration - Daytona wins on ergonomics and boot time, loses on isolation: a shared kernel is not a hypervisor - Daytona closed its source in June 2026, removing the exit hatch that makes E2B's licence matter - Runloop suits evals: devbox snapshots plus a benchmark harness is a different product shape - Blaxel and Freestyle bet the company on boot time, a fine bet and a thin moat - If you already have infra, Fly.io Machines gives a real Firecracker VM for ~a tenth the cost - Fly adds a durable volume, public IPv4, Sydney region, per-second billing, nothing charged while stopped - Vercel Sandbox and Cloudflare Sandbox make the sandbox a line in the app you already deployed - Neither Vercel nor Cloudflare is fastest or cheapest, and neither is trying to be - Snapshot-and-fork is becoming table stakes, killing cold-start as a standalone pitch - Once everyone restores a paused VM in 200 ms, the differentiator moves to network reach - Expect egress control, per-sandbox audit logs and outbound proxies to be the 2027 argument - Enterprise buyers block deals on egress, so Fly, Northflank, Cloudflare and self-hosted Firecracker are well placed ## What cold start actually means - At least five distinct events get called "cold start" - Snapshot restore: a booted VM's memory image mapped back on a host that has the pages, the source of sub-100 ms numbers - Snapshot restore presumes hardware allocated, image cached and pool warm - Guest boot: Firecracker to userspace, ~125 ms, where the microVM reputation comes from - Scheduling: finding a host with capacity, zero when warm, seconds when not - Image pull: zero for a cached base, thirty seconds for your 4 GB CUDA layer - API round trip and TLS: 20 ms from the same region, 300 ms from Sydney - Vendors quote the smallest of these; agents pay all five - The measured column starts from a client with nothing running and stops when a command returns output - Within 3× of the claim is good: E2B 2.0×, Modal 1.5×, CodeSandbox 1.2×, Fly 3.0×, Daytona 3.9× - Blaxel is an order of magnitude out: 25 ms snapshot restore vs ~20× estimated create-to-output - Gap size tells you how a vendor defines the word, not how fast its infrastructure is ## The pricing traps - Hourly compute is compared most and rarely dominates the bill - Watch the meter's units: per-second vs per-minute on 400 twelve-second sandboxes is a completely different bill - Per-minute rounds every one of them up - Cloudflare's 10 ms granularity and Vercel's active-CPU model suit bursty agent traffic; minute blocks punish it - Watch idle: an agent session is mostly the sandbox waiting for a model to generate - Wall-clock billing means renting a CPU to wait on someone else's inference queue - Active-CPU or pause-to-storage vendors can be several times cheaper despite a higher headline rate - Check the pause API's latency first: pausing something you resume 400 ms later is a false economy - Hidden line items: snapshot storage per GB-month never garbage-collected, egress at cloud rates - More hidden costs: volumes that outlive their sandbox, and platform minimums like a paid Workers plan - A "$0.05/hr" provider can cost $150 before the first sandbox boots ## How to choose in an afternoon - Start with isolation, the only requirement you cannot retrofit - Untrusted code needs a kernel boundary (microVM or gVisor) and outbound network control - That shortlists Fly, Northflank, Cloudflare, E2B and self-hosted Firecracker - Your own agent's code on your own data is a lower bar every provider clears - Then decide: buying infrastructure or buying a product - If the sandbox is your core loop, take the agent-native SDK and snapshot semantics (E2B, Daytona, Runloop) - Treat the per-hour premium as the price of not maintaining an orchestrator - If it is one feature, use what your platform gives you and revisit when the bill or boot time hurts - Run one benchmark before signing: your real image, your real region, 50 cold creates, record p95 not p50 - p50 is a good day; p95 is what users see when the pool is cold, deciding instant vs broken - If a vendor won't let you run that test on a trial account, that is the answer ## Per-tool provenance, every cell, every source ### Fly.io Machines {#fly-machines} Raw Firecracker microVMs with a REST API, durable volumes and 35+ regions. | | | | --- | --- | | Site | https://fly.io/docs/machines/ | | Docs | https://fly.io/docs/machines/api/ | | Company | Fly.io | | Founded | 2017 | | Funding | Series C | | Profile | https://toolweight.com/tools/fly-machines | | Score (default weights) | 80.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 900ms | Inferred | - | - | Estimate for starting a stopped Machine plus the API round trip. Suspend/resume is materially faster; a cold create with an image pull is slower. | https://toolweight.com/compare/sandbox-providers#fly-machines--cold_start_measured | | Cold start (claimed) | 300ms | Vendor-claimed | 2026-01-15 | https://fly.io/docs/machines/ | Fly quotes roughly 250-300 ms to start a stopped Machine. | https://toolweight.com/compare/sandbox-providers#fly-machines--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-01-15 | https://fly.io/docs/machines/ | - | https://toolweight.com/compare/sandbox-providers#fly-machines--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-01-15 | https://fly.io/docs/machines/ | - | https://toolweight.com/compare/sandbox-providers#fly-machines--root_access | | Egress control | allowlist | Inferred | - | - | Private networking, egress-only configurations and per-app IP control all exist, but you assemble them yourself. | https://toolweight.com/compare/sandbox-providers#fly-machines--egress_control | | Max runtime | 24h | Inferred | - | - | No platform-imposed limit; Machines run until stopped. | https://toolweight.com/compare/sandbox-providers#fly-machines--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://fly.io/docs/volumes/ | Fly Volumes are durable NVMe attached to a Machine. | https://toolweight.com/compare/sandbox-providers#fly-machines--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Volume snapshots and machine clone exist; no live memory fork. Suspend preserves memory state. | https://toolweight.com/compare/sandbox-providers#fly-machines--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://fly.io/docs/machines/ | - | https://toolweight.com/compare/sandbox-providers#fly-machines--custom_images | | GPU | ● | Vendor-claimed | 2026-01-15 | https://fly.io/docs/gpus/ | - | https://toolweight.com/compare/sandbox-providers#fly-machines--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--language_runtimes | | Preview URLs | ◐ | Inferred | - | - | Every app gets a fly.dev hostname, but per-sandbox public URLs are something you route yourself. | https://toolweight.com/compare/sandbox-providers#fly-machines--preview_urls | | Browser inside | ◐ | Inferred | - | - | Trivial to install, nothing supplied. | https://toolweight.com/compare/sandbox-providers#fly-machines--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | No file API. You use SSH, SFTP or a volume, fine for humans, awkward for agents. | https://toolweight.com/compare/sandbox-providers#fly-machines--file_transfer_api | | Sydney region | ● | Vendor-claimed | 2026-01-15 | https://fly.io/docs/reference/regions/ | syd. | https://toolweight.com/compare/sandbox-providers#fly-machines--sydney_region | | Concurrent limit | 500 sandboxes | Inferred | - | - | Org limits apply and are raised on request; the practical cap is your budget. | https://toolweight.com/compare/sandbox-providers#fly-machines--max_concurrency | | MCP server | ◐ | Community-reported | - | - | flyctl ships MCP support aimed at managing Fly itself rather than driving sandboxes. | https://toolweight.com/compare/sandbox-providers#fly-machines--mcp_server | | SDKs | rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--sdk_languages | | Streaming output | ◐ | Inferred | - | - | Logs stream and SSH exec works, but there is no exec-with-streaming primitive in the Machines API. | https://toolweight.com/compare/sandbox-providers#fly-machines--streaming_stdout | | Price / hour | $0.031/hr | Vendor-claimed | 2026-07-23 | https://fly.io/docs/about/pricing/ | Read straight off the preset table rather than derived: shared-cpu-2x with 4 GB is listed at $0.0309/hr ($0.00000857/s, $22.22/mo) in the cheapest region. Performance CPUs cost several times more, and regional multipliers apply, Sydney is dearer than Amsterdam. | https://toolweight.com/compare/sandbox-providers#fly-machines--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-01-15 | https://fly.io/docs/about/pricing/ | - | https://toolweight.com/compare/sandbox-providers#fly-machines--billing_granularity | | Idle cost | free-when-stopped | Vendor-claimed | 2026-01-15 | https://fly.io/docs/about/pricing/ | A stopped Machine costs nothing beyond its rootfs and volumes. | https://toolweight.com/compare/sandbox-providers#fly-machines--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--github_stars | | Funding | series-c-plus | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--funding_stage | | Shipped | 2022 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--launched | | Positioning | Hardware-virtualised containers that run anywhere, started and stopped over an API. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#fly-machines--positioning | **Verdict.** Unbeatable price-per-isolation and the only mainstream Sydney region, paid for in a week of glue code. **Pick it when** - You need Australian or multi-region placement - Cost per sandbox-hour matters more than SDK ergonomics - You already run on Fly and can reuse the networking ### Daytona {#daytona} Sub-second container sandboxes for agent workloads, from a team that built a dev-env manager. | | | | --- | --- | | Site | https://daytona.io | | Docs | https://www.daytona.io/docs | | Repo | https://github.com/daytonaio/daytona | | Company | Daytona | | Founded | 2023 | | Funding | Seed | | Open source | No | | Profile | https://toolweight.com/tools/daytona | | Score (default weights) | 80.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 350ms | Inferred | - | - | Estimate. The 90 ms claim is a container start against a pre-pulled snapshot image, with no guest kernel to boot; add API scheduling and the client round trip. | https://toolweight.com/compare/sandbox-providers#daytona--cold_start_measured | | Cold start (claimed) | 90ms | Vendor-claimed | 2026-01-15 | https://www.daytona.io | Marketed as sub-90 ms sandbox creation. | https://toolweight.com/compare/sandbox-providers#daytona--cold_start_claimed | | Isolation | container | Inferred | 2026-07-23 | https://northflank.com/blog/daytona-vs-e2b-ai-code-execution-sandboxes | Corrected from microvm. Daytona's own docs claim "complete isolation, a dedicated kernel, filesystem, network stack" but name no hypervisor anywhere, and describe the platform as built on OCI/Docker compatibility. Third-party analysis reports Docker/OCI containers sharing the host kernel as the default, with Kata Containers or Sysbox available only when explicitly configured. A sub-90 ms create is itself corroborating: that is container-start territory, not guest-kernel-boot territory. Marked inferred rather than vendor-claimed because it reconciles conflicting sources rather than reading off one. | https://toolweight.com/compare/sandbox-providers#daytona--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | - | https://toolweight.com/compare/sandbox-providers#daytona--root_access | | Egress control | allowlist | Vendor-claimed | 2026-07-23 | https://www.daytona.io/docs/en/network-limits/ | networkBlockAll gives a zero-egress sandbox and networkAllowList takes per-sandbox destination rules, so this genuinely earns the top rank. Two limits worth knowing: the allow list is IPv4 CIDR blocks only, no domains, unlike Vercel's firewall, and it caps at ten entries; changing policy on a running sandbox is gated to higher tiers. Sourced on re-audit; it was previously an unsourced inference sitting on a weight-9 preset field. | https://toolweight.com/compare/sandbox-providers#daytona--egress_control | | Max runtime | 24h | Inferred | - | - | No hard published ceiling; sandboxes stop on a configurable auto-stop interval. | https://toolweight.com/compare/sandbox-providers#daytona--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | Sandboxes stop and restart with their disk intact. | https://toolweight.com/compare/sandbox-providers#daytona--persistent_fs | | Snapshot & fork | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | - | https://toolweight.com/compare/sandbox-providers#daytona--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | Declarative images or any registry image, pre-built into snapshots. | https://toolweight.com/compare/sandbox-providers#daytona--custom_images | | GPU | ● | Vendor-claimed | 2026-11-07 | https://www.daytona.io/docs/en/gpu-sandboxes.md | - | https://toolweight.com/compare/sandbox-providers#daytona--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#daytona--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | - | https://toolweight.com/compare/sandbox-providers#daytona--preview_urls | | Browser inside | ◐ | Inferred | - | - | Computer-use images exist but are less mature than E2B Desktop. | https://toolweight.com/compare/sandbox-providers#daytona--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | - | https://toolweight.com/compare/sandbox-providers#daytona--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US and EU only. | https://toolweight.com/compare/sandbox-providers#daytona--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Tier-dependent, raised on request. | https://toolweight.com/compare/sandbox-providers#daytona--max_concurrency | | MCP server | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | First-party MCP server covering sandbox lifecycle and exec. | https://toolweight.com/compare/sandbox-providers#daytona--mcp_server | | SDKs | python, typescript, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#daytona--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://www.daytona.io/docs | - | https://toolweight.com/compare/sandbox-providers#daytona--streaming_stdout | | Price / hour | $0.17/hr | Inferred | 2026-07-23 | https://northflank.com/blog/ai-sandbox-pricing | Converted like every other per-second vendor here: $0.0504/vCPU-hr and $0.0162/GiB-hr give 2 × 0.0504 + 4 × 0.0162 = $0.166. Disk is billed separately and excluded, as it is for everyone. Caveat on the sourcing: Daytona's own pricing page is JavaScript-rendered and could not be read directly, so these rates come from third-party comparisons that agree with each other, identical, as it happens, to E2B's published rates. Treat the figure as a good estimate rather than a quote, and re-check it at the vendor before budgeting. | https://toolweight.com/compare/sandbox-providers#daytona--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-01-15 | https://www.daytona.io/pricing | - | https://toolweight.com/compare/sandbox-providers#daytona--billing_granularity | | Idle cost | storage-only | Inferred | - | - | Stopped sandboxes bill disk only. | https://toolweight.com/compare/sandbox-providers#daytona--idle_billing | | GitHub stars | 71,000 | Community-reported | 2026-11-07 | https://github.com/daytonaio/daytona | daytonaio/daytona, 71.4k rounded to the nearest thousand. | https://toolweight.com/compare/sandbox-providers#daytona--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#daytona--funding_stage | | Shipped | 2025 | Inferred | - | - | Company is older; the sandbox product dates from the 2025 repositioning. | https://toolweight.com/compare/sandbox-providers#daytona--launched | | Positioning | Secure, elastic infrastructure for running AI-generated code. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#daytona--positioning | **Verdict.** E2B's most credible ergonomics challenger with the best MCP story, but shared-kernel containers make it wrong for untrusted code. **Pick it when** - Boot time is your headline metric and the code is your own - You want an MCP server maintained by the vendor - You can tolerate a fast-moving, now closed-source product surface ### Blaxel {#blaxel} Agent-first cloud claiming ~25 ms microVM boots from snapshots. | | | | --- | --- | | Site | https://blaxel.ai | | Docs | https://docs.blaxel.ai | | Company | Blaxel | | Founded | 2024 | | Funding | Seed | | Profile | https://toolweight.com/tools/blaxel | | Score (default weights) | 78.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 500ms | Inferred | - | - | Estimate. The 25 ms figure is a snapshot restore on allocated hardware; the API round trip alone exceeds it. | https://toolweight.com/compare/sandbox-providers#blaxel--cold_start_measured | | Cold start (claimed) | 25ms | Vendor-claimed | 2026-01-15 | https://blaxel.ai | The most aggressive claim in the category. | https://toolweight.com/compare/sandbox-providers#blaxel--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-01-15 | https://docs.blaxel.ai | - | https://toolweight.com/compare/sandbox-providers#blaxel--isolation_tech | | Root in guest | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--root_access | | Egress control | open | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--egress_control | | Max runtime | 24h | Inferred | - | - | No published hard cap. | https://toolweight.com/compare/sandbox-providers#blaxel--max_runtime | | Persistent FS | ◐ | Inferred | - | - | State survives snapshot and resume. | https://toolweight.com/compare/sandbox-providers#blaxel--persistent_fs | | Snapshot & fork | ● | Vendor-claimed | 2026-01-15 | https://docs.blaxel.ai | - | https://toolweight.com/compare/sandbox-providers#blaxel--snapshot_fork | | Custom images | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--custom_images | | GPU | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--language_runtimes | | Preview URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--browser_in_sandbox | | File up/download | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--file_transfer_api | | Sydney region | ◐ | Inferred | - | - | Markets multi-region placement including Asia-Pacific; a dedicated Sydney region is not confirmed. | https://toolweight.com/compare/sandbox-providers#blaxel--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--max_concurrency | | MCP server | ● | Inferred | - | - | MCP hosting is part of the platform's agent story. | https://toolweight.com/compare/sandbox-providers#blaxel--mcp_server | | SDKs | python, typescript, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--sdk_languages | | Streaming output | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--streaming_stdout | | Price / hour | $0.17/hr | Vendor-claimed | 2026-11-07 | https://blaxel.ai/pricing | Blaxel bills by allocated memory with CPU scaling automatically. 4 GB x $0.0000115/s x 3600 = $0.166/hr; the vCPU count per GB is not stated on the page. | https://toolweight.com/compare/sandbox-providers#blaxel--price_per_hour | | Meter | per-second | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--billing_granularity | | Idle cost | storage-only | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--funding_stage | | Shipped | 2025 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--launched | | Positioning | An agent-native cloud: sandboxes, agent hosting and a model gateway in one platform. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#blaxel--positioning | **Verdict.** The 25 ms claim measures the wrong operation, and the broad platform is a lot to buy from a seed-stage company. **Pick it when** - You want sandboxes, agent hosting and MCP from one vendor - Latency-sensitive workloads where you can keep a pool warm - You are comfortable betting on an early-stage platform ### Runloop {#runloop} Devboxes, blueprints and eval harnesses aimed at teams training coding agents. | | | | --- | --- | | Site | https://runloop.ai | | Docs | https://docs.runloop.ai | | Company | Runloop | | Founded | 2023 | | Funding | Seed | | Profile | https://toolweight.com/tools/runloop | | Score (default weights) | 76.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 800ms | Inferred | - | - | Estimate for a devbox created from an existing blueprint or snapshot. | https://toolweight.com/compare/sandbox-providers#runloop--cold_start_measured | | Cold start (claimed) | 1s | Vendor-claimed | 2026-01-15 | https://docs.runloop.ai | Marketed as sub-second devbox boot from a snapshot. Recorded at 1000 ms, the literal ceiling of "sub-second", which is this page's convention for an unquantified claim of that shape, the same reading Modal's identical phrasing gets. It was previously recorded as 500, a favourable mid-reading no other vendor received. | https://toolweight.com/compare/sandbox-providers#runloop--cold_start_claimed | | Isolation | microvm | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--isolation_tech | | Root in guest | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--root_access | | Egress control | open | Inferred | - | - | No documented per-devbox allowlist. | https://toolweight.com/compare/sandbox-providers#runloop--egress_control | | Max runtime | 24h | Inferred | - | - | Devboxes are long-lived with a configurable idle shutdown. | https://toolweight.com/compare/sandbox-providers#runloop--max_runtime | | Persistent FS | ● | Inferred | - | - | Devboxes persist across suspend and resume. | https://toolweight.com/compare/sandbox-providers#runloop--persistent_fs | | Snapshot & fork | ● | Vendor-claimed | 2026-01-15 | https://docs.runloop.ai | Snapshots and blueprints are the core primitive. | https://toolweight.com/compare/sandbox-providers#runloop--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://docs.runloop.ai | Blueprints build from a Dockerfile or setup commands. | https://toolweight.com/compare/sandbox-providers#runloop--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--language_runtimes | | Preview URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://docs.runloop.ai | - | https://toolweight.com/compare/sandbox-providers#runloop--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US only. | https://toolweight.com/compare/sandbox-providers#runloop--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Plan-dependent; approximate. | https://toolweight.com/compare/sandbox-providers#runloop--max_concurrency | | MCP server | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--mcp_server | | SDKs | python, typescript, rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--sdk_languages | | Streaming output | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--streaming_stdout | | Price / hour | $0.32/hr | Vendor-claimed | 2026-11-07 | https://runloop.ai/pricing | 2 vCPU x $0.00003 x 3600 = $0.216 plus 4 GB x $0.000007 x 3600 = $0.101, total $0.317/hr. Excludes storage. | https://toolweight.com/compare/sandbox-providers#runloop--price_per_hour | | Meter | per-second | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--billing_granularity | | Idle cost | storage-only | Inferred | - | - | Suspended devboxes bill storage. | https://toolweight.com/compare/sandbox-providers#runloop--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--funding_stage | | Shipped | 2024 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--launched | | Positioning | Infrastructure and evaluation harnesses for teams building coding agents. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#runloop--positioning | **Verdict.** Built around evaluation, not production traffic: the obvious pick if you measure an agent's pass rate nightly. **Pick it when** - Running SWE-bench-style evaluation loops at scale - Generating training data from reproducible environments - You want a vendor whose roadmap targets agent researchers ### Modal {#modal} Serverless Python compute with a Sandbox API bolted onto a GPU-first platform. | | | | --- | --- | | Site | https://modal.com | | Docs | https://modal.com/docs/guide/sandbox | | Company | Modal | | Founded | 2021 | | Funding | Series B | | Profile | https://toolweight.com/tools/modal | | Score (default weights) | 75.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 1.5s | Inferred | - | - | Estimate for a cached CPU image with no warm container. Large images and GPU attachment push this considerably higher. | https://toolweight.com/compare/sandbox-providers#modal--cold_start_measured | | Cold start (claimed) | 1s | Vendor-claimed | 2026-01-15 | https://modal.com/docs/guide/cold-start | Marketed as sub-second container starts. Recorded at 1000 ms, the literal ceiling of "sub-second", this page's convention for a claim of that shape. | https://toolweight.com/compare/sandbox-providers#modal--cold_start_claimed | | Isolation | gvisor | Vendor-claimed | 2026-01-15 | https://modal.com/docs/guide/security | - | https://toolweight.com/compare/sandbox-providers#modal--isolation_tech | | Root in guest | ● | Inferred | - | - | Root inside the sandbox; no host device access. | https://toolweight.com/compare/sandbox-providers#modal--root_access | | Egress control | proxy-logged | Inferred | - | - | Outbound is open by default; proxy and blocking options exist but are not a per-sandbox allowlist. | https://toolweight.com/compare/sandbox-providers#modal--egress_control | | Max runtime | 24h | Vendor-claimed | 2026-01-15 | https://modal.com/docs/guide/timeouts | 24 h function timeout ceiling. | https://toolweight.com/compare/sandbox-providers#modal--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://modal.com/docs/guide/volumes | Modal Volumes mount into sandboxes and outlive them. | https://toolweight.com/compare/sandbox-providers#modal--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Memory snapshots exist mainly as a cold-start optimisation; forking a live sandbox is not the headline primitive it is at CodeSandbox. | https://toolweight.com/compare/sandbox-providers#modal--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://modal.com/docs/guide/images | Images are defined in Python or pulled from a registry. | https://toolweight.com/compare/sandbox-providers#modal--custom_images | | GPU | ● | Vendor-claimed | 2026-01-15 | https://modal.com/pricing | Self-serve H100, A100, L40S and others. | https://toolweight.com/compare/sandbox-providers#modal--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#modal--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://modal.com/docs | - | https://toolweight.com/compare/sandbox-providers#modal--preview_urls | | Browser inside | ◐ | Inferred | - | - | Chromium runs fine in a custom image; no supported browser template. | https://toolweight.com/compare/sandbox-providers#modal--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://modal.com/docs | - | https://toolweight.com/compare/sandbox-providers#modal--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US and EU regions. | https://toolweight.com/compare/sandbox-providers#modal--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Default account limits sit in the low hundreds of containers and are raised on request. | https://toolweight.com/compare/sandbox-providers#modal--max_concurrency | | MCP server | ◐ | Inferred | - | - | Examples and community servers rather than a supported product. | https://toolweight.com/compare/sandbox-providers#modal--mcp_server | | SDKs | python, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#modal--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://modal.com/docs | - | https://toolweight.com/compare/sandbox-providers#modal--streaming_stdout | | Price / hour | $0.238/hr | Inferred | 2026-07-23 | https://modal.com/pricing | Derived from the Sandbox rate card: $0.00003942/core/s and $0.00000667/GiB/s. Modal bills per physical core, not per vCPU, so this column's 2 vCPU shape is one core: 0.00003942 × 3600 = $0.142, plus 4 × 0.00000667 × 3600 = $0.096, totalling $0.238. Billing the 2 vCPU as 2 cores, the obvious misreading, overstates Modal by about 55%. Expensive per CPU-hour, competitive per GPU-hour. | https://toolweight.com/compare/sandbox-providers#modal--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-01-15 | https://modal.com/pricing | - | https://toolweight.com/compare/sandbox-providers#modal--billing_granularity | | Idle cost | active-cpu-only | Inferred | - | - | Containers scale to zero; a stopped sandbox is not billed. | https://toolweight.com/compare/sandbox-providers#modal--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#modal--github_stars | | Funding | series-b | Community-reported | - | - | Raised a large Series B in 2025. | https://toolweight.com/compare/sandbox-providers#modal--funding_stage | | Shipped | 2024 | Inferred | - | - | The platform is older; the Sandbox API is the newer surface. | https://toolweight.com/compare/sandbox-providers#modal--launched | | Positioning | Serverless compute for AI teams, with sandboxes as one primitive. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#modal--positioning | **Verdict.** Buy Modal for GPUs and Python ergonomics, not boot time; unmatched when the agent runs inference next to its code. **Pick it when** - The sandbox needs a GPU on a self-serve plan - Your team is Python-first and already writes Modal functions - One platform for batch ML and untrusted execution ### exe.dev {#exe-dev} Persistent VMs you SSH into, with root, apt and systemd, on a flat monthly plan. | | | | --- | --- | | Site | https://exe.dev | | Docs | https://exe.dev/sandbox | | Company | exe.dev | | Profile | https://toolweight.com/tools/exe-dev | | Score (default weights) | 75.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | - | Unknown | - | - | toolweight has not measured exe.dev, and the comparison table it appears in publishes no boot figure for it. | https://toolweight.com/compare/sandbox-providers#exe-dev--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | Absent from the "<500ms time to VM-ready" row of a competitor's table, which is not the same as exe.dev claiming anything either way. | https://toolweight.com/compare/sandbox-providers#exe-dev--cold_start_claimed | | Isolation | vm | Inferred | 2026-11-07 | https://exe.dev/docs/architecture.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--isolation_tech | | Root in guest | ● | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from the "Docker inside the VM" row: a Docker daemon in the guest implies root. The table claims Docker, not root. Transcribed from box's comparison table, a competitor's chart, not exe.dev's own documentation, and not verified by toolweight. | https://toolweight.com/compare/sandbox-providers#exe-dev--root_access | | Egress control | allowlist | Inferred | 2026-11-07 | https://exe.dev/docs/internet-access.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--egress_control | | Max runtime | 24h | Inferred | 2026-11-07 | https://exe.dev/docs/standalone-vms.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/architecture.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--persistent_fs | | Snapshot & fork | ◐ | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/standalone-vms.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--snapshot_fork | | Custom images | ◐ | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from "BYO repos + arbitrary setup script", a base extended by a setup script, this field's partial. The mapping is ours. From a competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#exe-dev--custom_images | | GPU | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#exe-dev--gpu | | Runtimes | any-oci-image | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/private-image.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/proxy.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--preview_urls | | Browser inside | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#exe-dev--browser_in_sandbox | | File up/download | ◐ | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from the "SSH access" row: scp and sftp follow from SSH, and CLI-only access is this field's partial. No first-party file API is described. Competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#exe-dev--file_transfer_api | | Sydney region | ● | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/regions | - | https://toolweight.com/compare/sandbox-providers#exe-dev--sydney_region | | Concurrent limit | - | Unknown | - | - | Absent from the "1000+ concurrent VMs ergonomically" row; no figure is given. | https://toolweight.com/compare/sandbox-providers#exe-dev--max_concurrency | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/mcp | - | https://toolweight.com/compare/sandbox-providers#exe-dev--mcp_server | | SDKs | cli, rest-api | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/api.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--sdk_languages | | Streaming output | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#exe-dev--streaming_stdout | | Price / hour | $0.105/hr | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/pricing | Work plan additional pool resources of 2 vCPUs / 4 GiB, billed hourly; excludes the $75/month Work plan base. | https://toolweight.com/compare/sandbox-providers#exe-dev--price_per_hour | | Meter | subscription | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from the "Flat pricing" row and mapped to subscription because that is this field's option for a flat fee rather than a meter. Competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#exe-dev--billing_granularity | | Idle cost | free-when-stopped | Vendor-claimed | 2026-11-07 | https://exe.dev/docs/standalone-vms.md | - | https://toolweight.com/compare/sandbox-providers#exe-dev--idle_billing | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#exe-dev--github_stars | | Funding | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#exe-dev--funding_stage | | Shipped | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#exe-dev--launched | | Positioning | Modern VMs you SSH into, with root, apt and systemd, on a flat monthly plan. | Vendor-claimed | 2026-07-23 | https://exe.dev | Paraphrased from exe.dev's own site. The capability cells on this row, unlike this one, come from a competitor's comparison table. | https://toolweight.com/compare/sandbox-providers#exe-dev--positioning | **Verdict.** A placeholder built from a rival's table: positive claims credited, omissions ignored, nothing measured. **Pick it when** - Long-lived SSH VMs on a predictable monthly bill - You want root, apt and systemd rather than a constrained runtime - You are prepared to verify the gaps a competitor's chart reports ### E2B {#e2b} Open-source Firecracker sandboxes with Python and TypeScript SDKs for AI agents. | | | | --- | --- | | Site | https://e2b.dev | | Docs | https://e2b.dev/docs | | Repo | https://github.com/e2b-dev/E2B | | Company | E2B | | Founded | 2023 | | Funding | Series A | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/e2b | | Score (default weights) | 73.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 400ms | Inferred | - | - | Estimate for create-to-first-output from a client in the same region. The vendor times VM boot alone; the SDK round trip adds most of the rest. | https://toolweight.com/compare/sandbox-providers#e2b--cold_start_measured | | Cold start (claimed) | 200ms | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | Marketed as roughly 150-200 ms to start a sandbox. | https://toolweight.com/compare/sandbox-providers#e2b--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | Firecracker. | https://toolweight.com/compare/sandbox-providers#e2b--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | - | https://toolweight.com/compare/sandbox-providers#e2b--root_access | | Egress control | open | Inferred | - | - | Full outbound by default; no documented per-sandbox allowlist. | https://toolweight.com/compare/sandbox-providers#e2b--egress_control | | Max runtime | 24h | Vendor-claimed | 2026-11-06 | https://docs.e2b.dev/sandbox | - | https://toolweight.com/compare/sandbox-providers#e2b--max_runtime | | Persistent FS | ◐ | Inferred | - | - | Filesystem survives pause/resume; there is no durable volume to reattach to a fresh sandbox. | https://toolweight.com/compare/sandbox-providers#e2b--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Pause and resume are stable; forking a paused sandbox is newer. | https://toolweight.com/compare/sandbox-providers#e2b--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs/sandbox-template | Templates are Dockerfiles built by the E2B CLI. | https://toolweight.com/compare/sandbox-providers#e2b--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#e2b--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#e2b--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | getHost(port) returns a public hostname. | https://toolweight.com/compare/sandbox-providers#e2b--preview_urls | | Browser inside | ● | Vendor-claimed | 2026-01-15 | https://github.com/e2b-dev/desktop | The E2B Desktop SDK ships a Chromium image with a stream. | https://toolweight.com/compare/sandbox-providers#e2b--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | - | https://toolweight.com/compare/sandbox-providers#e2b--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US and EU regions only. | https://toolweight.com/compare/sandbox-providers#e2b--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Approximate paid-tier default; the free tier is far lower and enterprise is negotiable. | https://toolweight.com/compare/sandbox-providers#e2b--max_concurrency | | MCP server | ◐ | Community-reported | - | - | Several community MCP servers wrap the SDK; no single canonical first-party one. | https://toolweight.com/compare/sandbox-providers#e2b--mcp_server | | SDKs | python, typescript, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#e2b--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://e2b.dev/docs | - | https://toolweight.com/compare/sandbox-providers#e2b--streaming_stdout | | Price / hour | $0.17/hr | Inferred | - | - | Approximate: 2 vCPU + 4 GB at published per-second vCPU and RAM rates. Paid tiers also carry a monthly base fee. | https://toolweight.com/compare/sandbox-providers#e2b--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-11-06 | https://e2b.dev/pricing | - | https://toolweight.com/compare/sandbox-providers#e2b--billing_granularity | | Idle cost | storage-only | Inferred | - | - | Paused sandboxes bill snapshot storage. | https://toolweight.com/compare/sandbox-providers#e2b--idle_billing | | GitHub stars | 15,000 | Community-reported | 2026-11-06 | https://github.com/e2b-dev/E2B | - | https://toolweight.com/compare/sandbox-providers#e2b--github_stars | | Funding | series-a | Community-reported | 2026-07-23 | https://www.insightpartners.com/ideas/e2b-raises-a-21m-series-a-to-offer-cloud-for-ai-agents-to-fortune-100/ | $21M Series A led by Insight Partners, announced July 2025. Announced by the lead investor rather than E2B, hence community rather than vendor-claimed. | https://toolweight.com/compare/sandbox-providers#e2b--funding_stage | | Shipped | 2023 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#e2b--launched | | Positioning | Open-source infrastructure for running AI-generated code. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#e2b--positioning | **Verdict.** The safest default: complete SDKs, Dockerfile templates and an Apache licence, though no longer fastest and weak at hobby scale. **Pick it when** - You want the category default with a real self-host escape hatch - Your environments are already Dockerfiles - Python code-interpreter workloads at steady volume ### CodeSandbox SDK {#codesandbox-sdk} Firecracker VMs with memory snapshots, from the online IDE, now owned by Together AI. | | | | --- | --- | | Site | https://codesandbox.io/docs/sdk | | Docs | https://codesandbox.io/docs/sdk | | Company | Together AI | | Founded | 2017 | | Funding | Acquired | | Profile | https://toolweight.com/tools/codesandbox-sdk | | Score (default weights) | 72.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 1.2s | Inferred | - | - | Estimate for a cold create. The vendor's ~1 s figure is a different operation, resuming an existing hibernated VM, so the near-parity between the two columns here is the least defensible estimate on the page: every other provider whose claim describes a snapshot restore lands 2-20× above it. Flagged rather than adjusted, because moving the number to fit the pattern would be inventing one. The harness settles this row first. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--cold_start_measured | | Cold start (claimed) | 1s | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | Marketed as resuming a hibernated VM in about a second, processes intact. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | Firecracker. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--isolation_tech | | Root in guest | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--root_access | | Egress control | open | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--egress_control | | Max runtime | 24h | Inferred | - | - | VMs hibernate on an inactivity timeout rather than hitting a hard runtime cap. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | Disk and memory both persist across hibernation. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--persistent_fs | | Snapshot & fork | ● | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | The most mature memory-snapshot-and-fork implementation in this roster. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--snapshot_fork | | Custom images | ● | Inferred | - | - | Docker-based environment definitions. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US and EU clusters. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Tier-dependent; approximate. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--max_concurrency | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--mcp_server | | SDKs | typescript, python | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://codesandbox.io/docs/sdk | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--streaming_stdout | | Price / hour | $0.15/hr | Vendor-claimed | 2026-11-07 | https://codesandbox.stream/pricing | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--price_per_hour | | Meter | per-second | Inferred | - | - | Credits are consumed while a VM is awake. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--billing_granularity | | Idle cost | storage-only | Inferred | - | - | Hibernated VMs stop consuming compute credits. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--idle_billing | | GitHub stars | 13,000 | Community-reported | - | - | codesandbox/codesandbox-client, rounded, the IDE, not the SDK. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--github_stars | | Funding | acquired | Community-reported | - | - | Acquired by Together AI in 2025. | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--funding_stage | | Shipped | 2024 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--launched | | Positioning | The VM infrastructure behind CodeSandbox, sold as an SDK. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#codesandbox-sdk--positioning | **Verdict.** The best-engineered snapshot-and-fork here for branching workloads, now a component of Together AI rather than its own product. **Pick it when** - You fork one prepared environment many times - Long-lived per-user environments that hibernate between sessions - You need processes and memory preserved, not just the disk ### Vercel Sandbox {#vercel-sandbox} Firecracker microVMs for running untrusted code from inside a Vercel deployment. | | | | --- | --- | | Site | https://vercel.com/docs/vercel-sandbox | | Docs | https://vercel.com/docs/vercel-sandbox | | Company | Vercel | | Founded | 2015 | | Funding | Series F | | Profile | https://toolweight.com/tools/vercel-sandbox | | Score (default weights) | 72.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 1.8s | Inferred | - | - | Estimate for create-to-first-output on a stock Node base image. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | Vercel says sandboxes "start in milliseconds" but publishes no figure, so there is nothing to record in this column. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/concepts | "Each sandbox runs in its own Firecracker microVM with a dedicated kernel", the same infrastructure as Vercel Functions. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-01-15 | https://vercel.com/docs/vercel-sandbox | sudo is available in the sandbox. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--root_access | | Egress control | allowlist | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/concepts/firewall | The sandbox firewall takes three modes, changeable on a running sandbox: allow-all (the default), deny-all including DNS, and a user-defined policy that denies by default and allows a list of domains (wildcards supported) or address ranges. It also supports credential brokering and forwarding to a proxy you control. This is a genuine per-sandbox allowlist, and among the strongest egress stories in the roster. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--egress_control | | Max runtime | 24h | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/pricing | 24 h maximum duration on Pro and Enterprise; 45 minutes on Hobby. This column records the paid-plan figure. The default timeout is still 5 minutes and must be raised explicitly at create time or via extendTimeout(). | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--max_runtime | | Persistent FS | ◐ | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/concepts/persistent-sandboxes | Persistence is now the default: a sandbox snapshots its filesystem when a session stops and the next session resumes from it, billed as Snapshot Storage at $0.08/GB-month. Partial rather than yes because that is state surviving stop/resume rather than a durable volume, deleting the sandbox deletes its snapshots. Drives, which are the reattachable-volume shape, are in beta. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--persistent_fs | | Snapshot & fork | ◐ | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/concepts/snapshots | Snapshots exist and Sandbox.fork spawns a child sandbox from another's current state, so branching works. Partial rather than yes because the snapshot captures the filesystem and installed packages, not a live memory image with the process tree intact, you re-run the processes, you do not resume them mid-flight. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/concepts/images | Built-in Node and Python runtimes, or your own Docker image pushed to the Vercel Container Registry, or a saved snapshot. The fixed-runtimes-only limitation this row used to record no longer holds. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--gpu | | Runtimes | python, javascript-typescript, bash, any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://vercel.com/docs/vercel-sandbox | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--preview_urls | | Browser inside | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://vercel.com/docs/vercel-sandbox | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--file_transfer_api | | Sydney region | ○ | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/pricing | Sandboxes provision in iad1 only, a single US region, not merely US-first. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--sydney_region | | Concurrent limit | 2,000 sandboxes | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/pricing | Published limits: Hobby 10, Pro 2,000, Enterprise 2,000+. This column takes the standard paid tier, so 2,000. Note this page clamps concurrency scoring at 1,000, so the surplus earns nothing, but the recorded figure is the published one. A separate rate limit caps vCPU allocation at 200 vCPUs/minute on Pro, which binds first for bursty creates. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--max_concurrency | | MCP server | ○ | Inferred | - | - | No first-party sandbox MCP server. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--mcp_server | | SDKs | typescript | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://vercel.com/docs/vercel-sandbox | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--streaming_stdout | | Price / hour | $0.341/hr | Inferred | 2026-07-23 | https://vercel.com/docs/sandbox/pricing | Worst case, derived from the current Sandbox rate card: Active CPU $0.128/vCPU-hr and Provisioned Memory $0.0212/GB-hr give 2 × 0.128 + 4 × 0.0212 = $0.341. This assumes both vCPUs pinned for the full hour; because Active CPU excludes time blocked on I/O, a sandbox waiting on a model costs a small fraction of it. The previous $0.30 here implied $0.0106/GB-hr, which is Fluid Compute's memory rate rather than Sandbox's. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-01-15 | https://vercel.com/docs/vercel-sandbox | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--billing_granularity | | Idle cost | active-cpu-only | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/sandbox/pricing | "Time spent waiting for I/O (such as network requests, database queries, or AI model calls) does not count toward Active CPU." The most agent-friendly meter here. Provisioned memory still bills for the whole session, so idle is cheap rather than free. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--idle_billing | | GitHub stars | 0 | Community-reported | 2026-11-07 | https://github.com/vercel/sandbox | vercel/sandbox SDK, 220 stars, rounds to 0 thousand. | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--github_stars | | Funding | series-c-plus | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--funding_stage | | Shipped | 2025 | Vendor-claimed | 2026-01-15 | https://vercel.com/changelog | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--launched | | Positioning | Run untrusted code from your Vercel app in an ephemeral microVM. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#vercel-sandbox--positioning | **Verdict.** Now a broad, well-isolated product with active-CPU billing, held back only by a single US region. **Pick it when** - An app-builder or code-runner inside a Vercel deployment - Agent sessions that mostly wait on a model, where active-CPU billing pays off - You need a per-sandbox egress allowlist without building it yourself ### Namespace {#namespace} Fast microVM instances and CI runners with instant snapshots and cached builds. | | | | --- | --- | | Site | https://namespace.so | | Docs | https://namespace.so/docs | | Company | Namespace Labs | | Founded | 2022 | | Funding | Seed | | Profile | https://toolweight.com/tools/namespace | | Score (default weights) | 71.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 1.5s | Inferred | - | - | Estimate for an instance created from a cached snapshot; CI runner starts are the workload this is tuned for. | https://toolweight.com/compare/sandbox-providers#namespace--cold_start_measured | | Cold start (claimed) | 800ms | Vendor-claimed | 2026-07-23 | https://namespace.so/compute/sandbox | Namespace publishes an actual boot timeline rather than a slogan: microVM allocated 0.1 s, kernel booted 0.2 s, network ready 0.3 s, custom image loaded 0.6 s, agent connected 0.8 s. The end of that timeline is the closest thing to this column's definition anyone here publishes, so 800 ms is recorded. Previously 1000 with no published figure behind it. | https://toolweight.com/compare/sandbox-providers#namespace--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-07-23 | https://namespace.so/compute/sandbox | "Every sandbox runs in its own microVM. This isn't container isolation, it's a virtual machine with a dedicated kernel." Promoted from inferred now that the vendor states it explicitly. | https://toolweight.com/compare/sandbox-providers#namespace--isolation_tech | | Root in guest | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--root_access | | Egress control | proxy-logged | Inferred | - | - | Egress proxying exists mainly to serve build caching. | https://toolweight.com/compare/sandbox-providers#namespace--egress_control | | Max runtime | 24h | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--max_runtime | | Persistent FS | ● | Inferred | - | - | Volumes and cache volumes persist between runs. | https://toolweight.com/compare/sandbox-providers#namespace--persistent_fs | | Snapshot & fork | ● | Vendor-claimed | 2026-01-15 | https://namespace.so/docs | Instance snapshots are a headline feature. | https://toolweight.com/compare/sandbox-providers#namespace--snapshot_fork | | Custom images | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--custom_images | | GPU | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--language_runtimes | | Preview URLs | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--preview_urls | | Browser inside | ◐ | Inferred | - | - | Browser images are common in CI use; nothing sandbox-specific is provided. | https://toolweight.com/compare/sandbox-providers#namespace--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--file_transfer_api | | Sydney region | ○ | Inferred | - | - | US and EU. | https://toolweight.com/compare/sandbox-providers#namespace--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Plan-dependent. | https://toolweight.com/compare/sandbox-providers#namespace--max_concurrency | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--mcp_server | | SDKs | go, rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--sdk_languages | | Streaming output | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--streaming_stdout | | Price / hour | $0.24/hr | Inferred | 2026-11-07 | https://namespace.so/pricing | - | https://toolweight.com/compare/sandbox-providers#namespace--price_per_hour | | Meter | per-minute | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--billing_granularity | | Idle cost | free-when-stopped | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--funding_stage | | Shipped | 2023 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--launched | | Positioning | Fast ephemeral compute for CI, builds and remote development. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#namespace--positioning | **Verdict.** Snapshotted microVMs with good caching but no agent SDK, worth a look mainly if your CI already runs here. **Pick it when** - You already use Namespace for CI runners - Build-cache-heavy environments that are slow to reconstruct - You want infrastructure primitives rather than an agent SDK ### boat {#boat} Persistent Ubuntu VMs for agents with SSH, Docker and disk-level fork, billed per second. | | | | --- | --- | | Site | https://boat.dev | | Docs | https://docs.boat.dev | | Company | boat | | Profile | https://toolweight.com/tools/boat | | Score (default weights) | 70.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#boat--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#boat--cold_start_claimed | | Isolation | vm | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#boat--root_access | | Egress control | open | Inferred | 2026-11-14 | https://docs.boat.dev/hosting/firewall.md | No first-party egress rules: the docs show blocking with your own firewall rules inside the VM. | https://toolweight.com/compare/sandbox-providers#boat--egress_control | | Max runtime | 30d | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--max_runtime | | Persistent FS | ◐ | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | The disk survives stop and resume and can be saved as a snapshot, but it is deleted with the sandbox; there is no separate volume to reattach. | https://toolweight.com/compare/sandbox-providers#boat--persistent_fs | | Snapshot & fork | ◐ | Vendor-claimed | 2026-11-14 | https://boat.dev/ | Fast disk-level fork from a snapshot; memory and running programs are not saved. | https://toolweight.com/compare/sandbox-providers#boat--snapshot_fork | | Custom images | ◐ | Inferred | 2026-11-14 | https://docs.boat.dev/snapshots/templates.md | Every sandbox starts from one Ubuntu base; you build on it and save the disk as a template. No arbitrary base image. | https://toolweight.com/compare/sandbox-providers#boat--custom_images | | GPU | ○ | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--gpu | | Runtimes | python, javascript-typescript, bash, go, rust, java, ruby, php, any-oci-image | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/machines/tools.md | any-oci-image because Docker runs inside the VM; the base image itself is fixed (Ubuntu 24.04). | https://toolweight.com/compare/sandbox-providers#boat--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#boat--preview_urls | | Browser inside | ◐ | Inferred | 2026-11-14 | https://docs.boat.dev/llms.txt | Chrome comes pre-installed and can be streamed, but the docs document no CDP endpoint. | https://toolweight.com/compare/sandbox-providers#boat--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#boat--file_transfer_api | | Sydney region | ○ | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--sydney_region | | Concurrent limit | 100 sandboxes | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/limits.md | The $20 plan: 100 at once. Self-serve plans go to 2,000 at once on the $2000 plan. | https://toolweight.com/compare/sandbox-providers#boat--max_concurrency | | MCP server | ○ | Inferred | 2026-11-14 | https://docs.boat.dev/ai-tools.md | boat runs an MCP server for its docs only; agents drive sandboxes with the boat CLI. | https://toolweight.com/compare/sandbox-providers#boat--mcp_server | | SDKs | python, typescript, cli | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#boat--sdk_languages | | Streaming output | ● | Inferred | 2026-11-14 | https://docs.boat.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#boat--streaming_stdout | | Price / hour | $0.018/hr | Vendor-claimed | 2026-11-14 | https://docs.boat.dev/llms.txt | The small size; billed per second from a $20 monthly plan, whose price comes back as sandbox time. | https://toolweight.com/compare/sandbox-providers#boat--price_per_hour | | Meter | per-second | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--billing_granularity | | Idle cost | free-when-stopped | Vendor-claimed | 2026-11-14 | https://boat.dev | - | https://toolweight.com/compare/sandbox-providers#boat--idle_billing | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#boat--github_stars | | Funding | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#boat--funding_stage | | Shipped | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#boat--launched | | Positioning | Full Linux VMs for AI agents, billed per second and free when stopped. | Vendor-claimed | 2026-11-14 | https://boat.dev/ | - | https://toolweight.com/compare/sandbox-providers#boat--positioning | **Verdict.** A real long-lived VM with a per-second meter and fork, but every claim is the vendor's own and nothing is measured yet. **Pick it when** - You want a VM that stays up rather than a sandbox that vanishes - SSH, Docker and a real network stack matter more than an SDK - You fork one prepared machine into many agent runs ### Islo {#islo} Per-agent isolated cloud sandboxes with enterprise policy controls, from Incredibuild. | | | | --- | --- | | Site | https://islo.dev | | Company | Incredibuild | | Profile | https://toolweight.com/tools/islo | | Score (default weights) | 69.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | - | Unknown | - | - | toolweight has not measured Islo, and the comparison table it appears in publishes no boot figure for it. | https://toolweight.com/compare/sandbox-providers#islo--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | Absent from the "<500ms time to VM-ready" row of a competitor's table, which is not the same as Islo claiming anything either way. | https://toolweight.com/compare/sandbox-providers#islo--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-11-07 | https://islo.dev/security | - | https://toolweight.com/compare/sandbox-providers#islo--isolation_tech | | Root in guest | ● | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from the "Docker inside the VM" row: a Docker daemon in the guest implies root. The table claims Docker, not root. Transcribed from box's comparison table, a competitor's chart, not Islo's own documentation, and not verified by toolweight. | https://toolweight.com/compare/sandbox-providers#islo--root_access | | Egress control | allowlist | Vendor-claimed | 2026-11-07 | https://islo.dev/gateway | - | https://toolweight.com/compare/sandbox-providers#islo--egress_control | | Max runtime | - | Unknown | - | - | The "No session cap / runs 24/7" row is a marketing statement in a competitor's chart, not a runtime ceiling Islo publishes. Left unknown rather than awarded this page's 24 h maximum. | https://toolweight.com/compare/sandbox-providers#islo--max_runtime | | Persistent FS | ◐ | Vendor-claimed | 2026-11-07 | https://docs.islo.dev/concepts/sandbox-lifecycle.md | - | https://toolweight.com/compare/sandbox-providers#islo--persistent_fs | | Snapshot & fork | ◐ | Vendor-claimed | 2026-11-07 | https://docs.islo.dev/cli/snapshots.md | - | https://toolweight.com/compare/sandbox-providers#islo--snapshot_fork | | Custom images | ◐ | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from "BYO repos + arbitrary setup script", a base extended by a setup script, this field's partial. The mapping is ours. From a competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#islo--custom_images | | GPU | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#islo--gpu | | Runtimes | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#islo--language_runtimes | | Preview URLs | ◐ | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from two rows that are not about preview URLs, "Dedicated IPv4 per VM" and "Full TCP/UDP + BYO domain": reachable ports on a domain you own rather than a first-party HTTPS URL from the API. The mapping is ours. Competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#islo--preview_urls | | Browser inside | ● | Vendor-claimed | 2026-11-07 | https://islo.dev/glossary/islo-machine | - | https://toolweight.com/compare/sandbox-providers#islo--browser_in_sandbox | | File up/download | ◐ | Inferred | 2026-07-23 | https://box.ascii.dev/compare | Derived from the "SSH access" row: scp and sftp follow from SSH, and CLI-only access is this field's partial. No first-party file API is described. Competitor's table, unverified. | https://toolweight.com/compare/sandbox-providers#islo--file_transfer_api | | Sydney region | - | Unknown | - | - | The table says nothing about regions. | https://toolweight.com/compare/sandbox-providers#islo--sydney_region | | Concurrent limit | - | Unknown | - | - | Absent from the "1000+ concurrent VMs ergonomically" row; no figure is given. | https://toolweight.com/compare/sandbox-providers#islo--max_concurrency | | MCP server | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#islo--mcp_server | | SDKs | python, typescript, cli | Vendor-claimed | 2026-11-07 | https://docs.islo.dev/concepts/sandbox-lifecycle.md | - | https://toolweight.com/compare/sandbox-providers#islo--sdk_languages | | Streaming output | - | Unknown | - | - | Not a row in the table. | https://toolweight.com/compare/sandbox-providers#islo--streaming_stdout | | Price / hour | $0.3/hr | Vendor-claimed | 2026-11-07 | https://islo.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#islo--price_per_hour | | Meter | per-hour | Vendor-claimed | 2026-11-07 | https://islo.dev/llms.txt | - | https://toolweight.com/compare/sandbox-providers#islo--billing_granularity | | Idle cost | free-when-stopped | Vendor-claimed | 2026-11-07 | https://islo.dev/pricing | - | https://toolweight.com/compare/sandbox-providers#islo--idle_billing | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#islo--github_stars | | Funding | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#islo--funding_stage | | Shipped | - | Unknown | - | - | - | https://toolweight.com/compare/sandbox-providers#islo--launched | | Positioning | An isolated cloud environment per coding agent, with enterprise policy control over what it can reach. | Vendor-claimed | 2026-07-23 | https://islo.dev | Paraphrased from Incredibuild's own launch material. The capability cells on this row, unlike this one, come from a competitor's comparison table. | https://toolweight.com/compare/sandbox-providers#islo--positioning | **Verdict.** An enterprise governance pitch this rival's table cannot capture; verify from Incredibuild's own documentation before shortlisting. **Pick it when** - Central policy control over what each agent can reach - Enterprise teams that must govern agent identity and access - You are already inside Incredibuild's SDLC platform ### Freestyle {#freestyle} Run untrusted JavaScript and full dev servers, with git hosting and domains built in. | | | | --- | --- | | Site | https://freestyle.sh | | Docs | https://docs.freestyle.sh | | Company | Freestyle | | Founded | 2024 | | Funding | Seed | | Profile | https://toolweight.com/tools/freestyle | | Score (default weights) | 63.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 700ms | Inferred | - | - | Estimate for the code-execution API; dev servers with a repo checkout take considerably longer. | https://toolweight.com/compare/sandbox-providers#freestyle--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | No consistently published figure. | https://toolweight.com/compare/sandbox-providers#freestyle--cold_start_claimed | | Isolation | microvm | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--isolation_tech | | Root in guest | ◐ | Inferred | - | - | Dev servers give you a shell; the execute API does not. | https://toolweight.com/compare/sandbox-providers#freestyle--root_access | | Egress control | allowlist | Inferred | - | - | Network access for executed code is opt-in per call. | https://toolweight.com/compare/sandbox-providers#freestyle--egress_control | | Max runtime | 1h | Inferred | - | - | Execution calls are short; dev servers persist while in use. | https://toolweight.com/compare/sandbox-providers#freestyle--max_runtime | | Persistent FS | ● | Inferred | - | - | Repos are hosted as git, which is the persistence layer. | https://toolweight.com/compare/sandbox-providers#freestyle--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Git branching substitutes for VM forking. | https://toolweight.com/compare/sandbox-providers#freestyle--snapshot_fork | | Custom images | ○ | Inferred | - | - | Managed runtime rather than arbitrary images. | https://toolweight.com/compare/sandbox-providers#freestyle--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--gpu | | Runtimes | javascript-typescript, python | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://docs.freestyle.sh | Dev server previews and custom domains are core to the product. | https://toolweight.com/compare/sandbox-providers#freestyle--preview_urls | | Browser inside | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--browser_in_sandbox | | File up/download | ● | Inferred | - | - | Filesystem and git APIs. | https://toolweight.com/compare/sandbox-providers#freestyle--file_transfer_api | | Sydney region | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--sydney_region | | Concurrent limit | 40 sandboxes | Vendor-claimed | 2026-11-07 | https://www.freestyle.sh/docs/vms/pricing-and-limits | Hobby plan allows up to 40 concurrent VMs (Free 10, Pro 400). | https://toolweight.com/compare/sandbox-providers#freestyle--max_concurrency | | MCP server | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--mcp_server | | SDKs | typescript, rest-api | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--sdk_languages | | Streaming output | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--streaming_stdout | | Price / hour | $0.13/hr | Vendor-claimed | 2026-11-07 | https://www.freestyle.sh/docs/vms/pricing-and-limits | Docs list $0.04032/vCPU-hr and $0.0129/GiB-hr: 2 x 0.04032 + 4 x 0.0129 = $0.132. Storage and transfer excluded. | https://toolweight.com/compare/sandbox-providers#freestyle--price_per_hour | | Meter | per-request | Inferred | - | - | Executions are per-call; dev servers are metered by uptime. | https://toolweight.com/compare/sandbox-providers#freestyle--billing_granularity | | Idle cost | storage-only | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--funding_stage | | Shipped | 2024 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--launched | | Positioning | The backend for AI app builders: run code, host git, serve previews, attach domains. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#freestyle--positioning | **Verdict.** Collapses four vendors into one for Lovable-shaped app builders, wrong shape for anything outside JavaScript. **Pick it when** - Building an AI app builder with live previews - You want git hosting and custom domains bundled with execution - JavaScript and TypeScript workloads only ### GitHub Codespaces {#github-codespaces} Devcontainer-backed cloud VMs built for humans, occasionally repurposed for agents. | | | | --- | --- | | Site | https://github.com/features/codespaces | | Docs | https://docs.github.com/en/codespaces | | Company | GitHub | | Founded | 2020 | | Funding | Public | | Profile | https://toolweight.com/tools/github-codespaces | | Score (default weights) | 62.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 45s | Inferred | - | - | Estimate for a cold codespace on a devcontainer with no prebuild. Prebuilds cut this to roughly ten seconds; resuming a stopped codespace is faster again. | https://toolweight.com/compare/sandbox-providers#github-codespaces--cold_start_measured | | Cold start (claimed) | 10s | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces/prebuilding-your-codespaces | GitHub markets prebuilds as making codespaces available in seconds. | https://toolweight.com/compare/sandbox-providers#github-codespaces--cold_start_claimed | | Isolation | vm | Inferred | - | - | A dedicated Azure VM per codespace. | https://toolweight.com/compare/sandbox-providers#github-codespaces--isolation_tech | | Root in guest | ● | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--root_access | | Egress control | allowlist | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces | Organisation policies can restrict outbound network access. | https://toolweight.com/compare/sandbox-providers#github-codespaces--egress_control | | Max runtime | 24h | Inferred | - | - | No hard runtime cap; idle timeout defaults to 30 minutes and retention to 30 days. | https://toolweight.com/compare/sandbox-providers#github-codespaces--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Prebuilds are a build cache, not a runtime snapshot; you cannot fork a live codespace. | https://toolweight.com/compare/sandbox-providers#github-codespaces--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://containers.dev | The devcontainer spec, which is an open standard and portable. | https://toolweight.com/compare/sandbox-providers#github-codespaces--custom_images | | GPU | ○ | Inferred | - | - | Not on standard self-serve machine types. | https://toolweight.com/compare/sandbox-providers#github-codespaces--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces | Forwarded ports, private by default. | https://toolweight.com/compare/sandbox-providers#github-codespaces--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | CLI and SSH; no clean programmatic file API. | https://toolweight.com/compare/sandbox-providers#github-codespaces--file_transfer_api | | Sydney region | ● | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/codespaces | Australia is a selectable region. | https://toolweight.com/compare/sandbox-providers#github-codespaces--sydney_region | | Concurrent limit | 10 sandboxes | Inferred | - | - | Per-user concurrent codespace limits are low by default; this is a product for humans. | https://toolweight.com/compare/sandbox-providers#github-codespaces--max_concurrency | | MCP server | ○ | Inferred | - | - | GitHub's MCP server covers the API surface, not codespace exec. | https://toolweight.com/compare/sandbox-providers#github-codespaces--mcp_server | | SDKs | rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--sdk_languages | | Streaming output | ◐ | Inferred | - | - | Over SSH; no exec-stream API. | https://toolweight.com/compare/sandbox-providers#github-codespaces--streaming_stdout | | Price / hour | $0.18/hr | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/billing/managing-billing-for-github-codespaces | 2-core / 8 GB at $0.18/hr, plus storage per GB-month. | https://toolweight.com/compare/sandbox-providers#github-codespaces--price_per_hour | | Meter | per-minute | Inferred | - | - | Metered in compute-minutes. | https://toolweight.com/compare/sandbox-providers#github-codespaces--billing_granularity | | Idle cost | storage-only | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/billing | Stopped codespaces bill storage. | https://toolweight.com/compare/sandbox-providers#github-codespaces--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--github_stars | | Funding | public | Vendor-claimed | 2026-01-15 | https://microsoft.com | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--funding_stage | | Shipped | 2020 | Vendor-claimed | 2026-01-15 | https://github.blog | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--launched | | Positioning | A configured development environment in the cloud, one click from the repository. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#github-codespaces--positioning | **Verdict.** Excellent for a human, a bad substrate for an API creating hundreds of sandboxes. **Pick it when** - Human-in-the-loop agent sessions rather than autonomous fleets - You need an Australian region and are already on GitHub - Your environments are already defined as devcontainers ### Northflank {#northflank} Container platform with bring-your-own-cloud, GPUs and a sandbox-shaped API. | | | | --- | --- | | Site | https://northflank.com | | Docs | https://northflank.com/docs | | Company | Northflank Ltd. | | Founded | 2019 | | Funding | Series A | | Open source | No | | Profile | https://toolweight.com/tools/northflank | | Score (default weights) | 62.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 12s | Inferred | - | - | Estimate. Container scheduling plus image pull; this is a deployment platform, not a snapshot restorer. | https://toolweight.com/compare/sandbox-providers#northflank--cold_start_measured | | Cold start (claimed) | 1s | Vendor-claimed | 2026-11-07 | https://northflank.com/docs/v1/application/sandboxes/sandboxes-on-northflank-cloud | - | https://toolweight.com/compare/sandbox-providers#northflank--cold_start_claimed | | Isolation | container | Inferred | - | - | Kubernetes-scheduled containers, hardened, but a shared kernel. | https://toolweight.com/compare/sandbox-providers#northflank--isolation_tech | | Root in guest | ◐ | Inferred | - | - | Root in the container, constrained by the cluster's pod security policy. | https://toolweight.com/compare/sandbox-providers#northflank--root_access | | Egress control | allowlist | Inferred | - | - | Network policies and private networking are first-class, and under BYOC your own VPC rules apply. | https://toolweight.com/compare/sandbox-providers#northflank--egress_control | | Max runtime | 24h | Inferred | - | - | Services run indefinitely. | https://toolweight.com/compare/sandbox-providers#northflank--max_runtime | | Persistent FS | ● | Vendor-claimed | 2026-01-15 | https://northflank.com/docs | Persistent volumes. | https://toolweight.com/compare/sandbox-providers#northflank--persistent_fs | | Snapshot & fork | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://northflank.com/docs | - | https://toolweight.com/compare/sandbox-providers#northflank--custom_images | | GPU | ● | Vendor-claimed | 2026-01-15 | https://northflank.com/pricing | - | https://toolweight.com/compare/sandbox-providers#northflank--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://northflank.com/docs | - | https://toolweight.com/compare/sandbox-providers#northflank--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | Volumes and exec rather than a dedicated file API. | https://toolweight.com/compare/sandbox-providers#northflank--file_transfer_api | | Sydney region | ◐ | Inferred | - | - | Reachable through bring-your-own-cloud in an Australian AWS or GCP region; not a managed Northflank region. | https://toolweight.com/compare/sandbox-providers#northflank--sydney_region | | Concurrent limit | 200 sandboxes | Inferred | - | - | Bounded by your cluster or plan rather than a sandbox quota. | https://toolweight.com/compare/sandbox-providers#northflank--max_concurrency | | MCP server | ● | Inferred | - | - | Ships an MCP server for platform operations. | https://toolweight.com/compare/sandbox-providers#northflank--mcp_server | | SDKs | typescript, rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://northflank.com/docs | - | https://toolweight.com/compare/sandbox-providers#northflank--streaming_stdout | | Price / hour | $0.07/hr | Inferred | - | - | Approximate: 2 vCPU + 4 GB of managed compute at list. BYOC changes the calculus entirely, you pay your cloud plus a platform fee. | https://toolweight.com/compare/sandbox-providers#northflank--price_per_hour | | Meter | per-minute | Inferred | - | - | Usage-metered but not per-second; a poor fit for very short sandboxes. | https://toolweight.com/compare/sandbox-providers#northflank--billing_granularity | | Idle cost | full-rate | Inferred | - | - | A running service bills whether or not it is doing work. | https://toolweight.com/compare/sandbox-providers#northflank--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--github_stars | | Funding | series-a | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--funding_stage | | Shipped | 2021 | Inferred | - | - | Platform launch; the agent-sandbox positioning dates from 2025. | https://toolweight.com/compare/sandbox-providers#northflank--launched | | Positioning | Run agent workloads, services and GPUs in your own cloud account. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#northflank--positioning | **Verdict.** Loses on boot time, wins on running inside your own cloud account and compliance boundary. **Pick it when** - Compliance requires the workload inside your own VPC - Sandboxes are long-lived per customer, not per request - You also need databases, jobs and GPUs on one platform ### Self-hosted Firecracker {#diy-firecracker} The baseline: Firecracker on your own metal, plus every hard part you now own. | | | | --- | --- | | Site | https://firecracker-microvm.github.io | | Docs | https://github.com/firecracker-microvm/firecracker/tree/main/docs | | Repo | https://github.com/firecracker-microvm/firecracker | | Company | Self-hosted Firecracker | | Founded | 2018 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/diy-firecracker | | Score (default weights) | 60.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 200ms | Inferred | - | - | Guest boot is about 125 ms on decent metal; add your own API and scheduler. This is the floor every vendor here is measured against, and it assumes you have already built pool warming. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--cold_start_measured | | Cold start (claimed) | 125ms | Vendor-claimed | 2026-01-15 | https://firecracker-microvm.github.io | The canonical 125 ms boot figure from the Firecracker project. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--cold_start_claimed | | Isolation | microvm | Vendor-claimed | 2026-01-15 | https://firecracker-microvm.github.io | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--isolation_tech | | Root in guest | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--root_access | | Egress control | allowlist | Inferred | - | - | Your TAP devices, your nftables rules. Total control, total responsibility. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--egress_control | | Max runtime | 24h | Inferred | - | - | Whatever you decide. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--max_runtime | | Persistent FS | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--persistent_fs | | Snapshot & fork | ◐ | Inferred | - | - | Firecracker supports snapshot and restore, but productionising it, page cache, clock skew, unique IDs, network reattachment, is exactly the hard part vendors sell. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--snapshot_fork | | Custom images | ● | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--custom_images | | GPU | ◐ | Inferred | - | - | Firecracker has no first-class GPU passthrough; you would use Cloud Hypervisor or plain KVM. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--language_runtimes | | Preview URLs | ○ | Inferred | - | - | You build the ingress. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--preview_urls | | Browser inside | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--browser_in_sandbox | | File up/download | ○ | Inferred | - | - | You build it. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--file_transfer_api | | Sydney region | ● | Inferred | - | - | Wherever you rent metal. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--sydney_region | | Concurrent limit | 1,000 sandboxes | Inferred | - | - | Bounded by hardware; hundreds of microVMs per host is routine. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--max_concurrency | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--mcp_server | | SDKs | rest-api | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--sdk_languages | | Streaming output | ○ | Inferred | - | - | You build it. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--streaming_stdout | | Price / hour | $0.03/hr | Inferred | - | - | Approximate cost of 2 vCPU + 4 GB amortised across a rented bare-metal host at around 60% utilisation. Excludes the engineer maintaining it, which is the real number. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--price_per_hour | | Meter | per-hour | Inferred | - | - | You rent the host, not the sandbox. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--billing_granularity | | Idle cost | full-rate | Inferred | - | - | The host bills whether or not a microVM is running on it. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--idle_billing | | GitHub stars | 27,000 | Community-reported | - | - | firecracker-microvm/firecracker, rounded. | https://toolweight.com/compare/sandbox-providers#diy-firecracker--github_stars | | Funding | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--funding_stage | | Shipped | 2018 | Vendor-claimed | 2026-01-15 | https://firecracker-microvm.github.io | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--launched | | Positioning | The microVM monitor underneath most of this roster, and none of the platform. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#diy-firecracker--positioning | **Verdict.** The honest baseline: identical isolation at a tenth the cost, minus the two engineer-years of orchestration. **Pick it when** - Sustained volume where vendor margin exceeds an engineer's salary - Hard data-residency or air-gap requirements - You already operate bare metal and a scheduler ### Cloudflare Sandbox {#cloudflare-sandbox} Container sandboxes driven from a Worker, addressed through Durable Objects. | | | | --- | --- | | Site | https://developers.cloudflare.com/sandbox/ | | Docs | https://developers.cloudflare.com/containers/ | | Repo | https://github.com/cloudflare/sandbox-sdk | | Company | Cloudflare | | Founded | 2009 | | Funding | Public | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/cloudflare-sandbox | | Score (default weights) | 59.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 3s | Inferred | - | - | Estimate for a cold container instance. A warm instance behind a Durable Object responds in milliseconds; the first request after scale-to-zero is the expensive one. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | Cloudflare publishes no single cold-start figure for Containers, which is unusually honest of them. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--cold_start_claimed | | Isolation | container | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/containers/ | Containers on Cloudflare's own runtime, addressed by a Durable Object. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--isolation_tech | | Root in guest | ● | Inferred | - | - | Root inside the container image. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--root_access | | Egress control | allowlist | Inferred | - | - | Outbound traffic routes through the Worker, so you can gate it in code, the most programmable egress control here. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--egress_control | | Max runtime | 1h | Inferred | - | - | Instances sleep after a configurable inactivity timeout; long-lived processes are not the intended shape. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--max_runtime | | Persistent FS | ○ | Inferred | - | - | Container disk is ephemeral; durable state belongs in the Durable Object, R2 or D1. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--persistent_fs | | Snapshot & fork | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--snapshot_fork | | Custom images | ● | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/containers/ | Your Dockerfile, pushed to Cloudflare's registry. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--custom_images | | GPU | ○ | Inferred | - | - | Workers AI is a separate product. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--gpu | | Runtimes | any-oci-image | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/sandbox/ | Ports are exposed through the Worker. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--preview_urls | | Browser inside | ◐ | Inferred | - | - | Cloudflare Browser Rendering is a separate product; you can also run Chromium in the container. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--browser_in_sandbox | | File up/download | ● | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/sandbox/ | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--file_transfer_api | | Sydney region | ◐ | Inferred | - | - | Cloudflare has Sydney presence, but container placement follows their topology rather than a region you choose. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--sydney_region | | Concurrent limit | 100 sandboxes | Inferred | - | - | Account-level container instance limits, raised on request. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--max_concurrency | | MCP server | ◐ | Inferred | - | - | Cloudflare invests heavily in MCP across its platform; the sandbox-specific server is less established than the SDK. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--mcp_server | | SDKs | typescript | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--sdk_languages | | Streaming output | ● | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/sandbox/ | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--streaming_stdout | | Price / hour | $0.18/hr | Inferred | - | - | Approximate: 2 vCPU + 4 GiB at published Containers vCPU and memory rates, before the required paid Workers plan. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--price_per_hour | | Meter | per-10ms | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/containers/pricing/ | The finest meter in this roster. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--billing_granularity | | Idle cost | free-when-stopped | Vendor-claimed | 2026-01-15 | https://developers.cloudflare.com/containers/pricing/ | Billing stops when the instance sleeps. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--idle_billing | | GitHub stars | 1,000 | Community-reported | 2026-11-07 | https://github.com/cloudflare/sandbox-sdk | cloudflare/sandbox-sdk, 1.2k rounded to the nearest thousand. | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--github_stars | | Funding | public | Vendor-claimed | 2026-01-15 | https://cloudflare.net | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--funding_stage | | Shipped | 2025 | Vendor-claimed | 2026-01-15 | https://blog.cloudflare.com/containers-are-available-in-public-beta-for-simple-global-and-programmable/ | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--launched | | Positioning | Containers you can call from a Worker, with a Durable Object as the control plane. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#cloudflare-sandbox--positioning | **Verdict.** An addressable sandbox object in your app, worth it on Workers but too slow to migrate to. **Pick it when** - Your app already runs on Workers and Durable Objects - You want code-level control over what the sandbox can reach - Sandboxes are long-lived per user rather than created in bursts ### Val Town {#val-town} Deno isolates that run TypeScript on HTTP, cron and email triggers. | | | | --- | --- | | Site | https://val.town | | Docs | https://docs.val.town | | Company | Val Town | | Founded | 2022 | | Funding | Seed | | Profile | https://toolweight.com/tools/val-town | | Score (default weights) | 43.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 150ms | Inferred | - | - | Estimate for an HTTP val's first request after idle. Isolates start fast because there is no kernel to boot. | https://toolweight.com/compare/sandbox-providers#val-town--cold_start_measured | | Cold start (claimed) | 100ms | Vendor-claimed | 2026-11-07 | https://docs.val.town/ | - | https://toolweight.com/compare/sandbox-providers#val-town--cold_start_claimed | | Isolation | v8-isolate | Vendor-claimed | 2026-01-15 | https://docs.val.town | Deno isolates. | https://toolweight.com/compare/sandbox-providers#val-town--isolation_tech | | Root in guest | ○ | Vendor-claimed | 2026-01-15 | https://docs.val.town | - | https://toolweight.com/compare/sandbox-providers#val-town--root_access | | Egress control | proxy-logged | Inferred | - | - | Outbound fetch is available and observable; no fine-grained per-val allowlist. | https://toolweight.com/compare/sandbox-providers#val-town--egress_control | | Max runtime | 5min | Inferred | - | - | Vals are request-scoped with a timeout measured in minutes, not a long-running process host. | https://toolweight.com/compare/sandbox-providers#val-town--max_runtime | | Persistent FS | ○ | Vendor-claimed | 2026-01-15 | https://docs.val.town | No filesystem. SQLite and blob storage are provided instead. | https://toolweight.com/compare/sandbox-providers#val-town--persistent_fs | | Snapshot & fork | ○ | Inferred | - | - | Forking a val copies source, not runtime state. | https://toolweight.com/compare/sandbox-providers#val-town--snapshot_fork | | Custom images | ○ | Vendor-claimed | 2026-01-15 | https://docs.val.town | - | https://toolweight.com/compare/sandbox-providers#val-town--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--gpu | | Runtimes | javascript-typescript | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--language_runtimes | | Preview URLs | ● | Vendor-claimed | 2026-01-15 | https://docs.val.town | Every HTTP val gets a public URL by default. | https://toolweight.com/compare/sandbox-providers#val-town--preview_urls | | Browser inside | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | Blob storage API rather than a sandbox filesystem. | https://toolweight.com/compare/sandbox-providers#val-town--file_transfer_api | | Sydney region | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--sydney_region | | Concurrent limit | N/A | Vendor-claimed | 2026-11-07 | https://www.val.town/limits | No sandbox concurrency allotment is published; Val Town lists request rate limits instead. | https://toolweight.com/compare/sandbox-providers#val-town--max_concurrency | | MCP server | ● | Inferred | - | - | Val Town has leaned into MCP for driving vals from agents. | https://toolweight.com/compare/sandbox-providers#val-town--mcp_server | | SDKs | typescript, rest-api, cli | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--sdk_languages | | Streaming output | ◐ | Inferred | - | - | Logs are visible; there is no exec-stream primitive. | https://toolweight.com/compare/sandbox-providers#val-town--streaming_stdout | | Price / hour | - | Unknown | - | - | Subscription plus usage limits rather than compute-hours; the hourly comparison does not apply. | https://toolweight.com/compare/sandbox-providers#val-town--price_per_hour | | Meter | subscription | Vendor-claimed | 2026-01-15 | https://www.val.town/pricing | - | https://toolweight.com/compare/sandbox-providers#val-town--billing_granularity | | Idle cost | free-when-stopped | Inferred | - | - | Idle vals cost nothing. | https://toolweight.com/compare/sandbox-providers#val-town--idle_billing | | GitHub stars | 144 | Community-reported | 2026-11-07 | https://github.com/val-town/vt | - | https://toolweight.com/compare/sandbox-providers#val-town--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--funding_stage | | Shipped | 2022 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--launched | | Positioning | Write and deploy TypeScript in the browser, triggered by HTTP, cron or email. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#val-town--positioning | **Verdict.** The isolate benchmark: fastest and cheapest for a TypeScript snippet behind a URL, outgrown the moment you need `npm install`. **Pick it when** - Evaluating short TypeScript snippets behind an HTTP endpoint - Cron and webhook glue an agent can write and deploy itself - Zero infrastructure, and you can accept zero filesystem ### Riza {#riza} WASM-isolated code interpreter API for LLM output, with no filesystem or network. | | | | --- | --- | | Site | https://riza.io | | Docs | https://docs.riza.io | | Company | Riza | | Founded | 2024 | | Funding | Seed | | Profile | https://toolweight.com/tools/riza | | Score (default weights) | 41.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Cold start | 120ms | Inferred | - | - | Estimate for an API call executing a short script. WASM instantiation is the cheapest start in the roster. | https://toolweight.com/compare/sandbox-providers#riza--cold_start_measured | | Cold start (claimed) | - | Unknown | - | - | Marketed on isolation rather than latency. | https://toolweight.com/compare/sandbox-providers#riza--cold_start_claimed | | Isolation | wasm | Vendor-claimed | 2026-01-15 | https://docs.riza.io | Language runtimes compiled to WebAssembly. | https://toolweight.com/compare/sandbox-providers#riza--isolation_tech | | Root in guest | ○ | Vendor-claimed | 2026-01-15 | https://docs.riza.io | There is no OS to be root of. | https://toolweight.com/compare/sandbox-providers#riza--root_access | | Egress control | blocked-by-default | Vendor-claimed | 2026-01-15 | https://docs.riza.io | Filesystem and network are off unless explicitly granted per execution, the strictest default here. | https://toolweight.com/compare/sandbox-providers#riza--egress_control | | Max runtime | 1min | Inferred | - | - | Executions are short-lived by design. | https://toolweight.com/compare/sandbox-providers#riza--max_runtime | | Persistent FS | ○ | Vendor-claimed | 2026-01-15 | https://docs.riza.io | - | https://toolweight.com/compare/sandbox-providers#riza--persistent_fs | | Snapshot & fork | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--snapshot_fork | | Custom images | ○ | Vendor-claimed | 2026-01-15 | https://docs.riza.io | No package installs: you supply code, not an environment. | https://toolweight.com/compare/sandbox-providers#riza--custom_images | | GPU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--gpu | | Runtimes | python, javascript-typescript, ruby, php | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--language_runtimes | | Preview URLs | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--preview_urls | | Browser inside | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--browser_in_sandbox | | File up/download | ◐ | Inferred | - | - | Input and output objects rather than a filesystem API. | https://toolweight.com/compare/sandbox-providers#riza--file_transfer_api | | Sydney region | ○ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--sydney_region | | Concurrent limit | - | Unknown | - | - | Rate-limited per plan rather than capped by concurrent sandboxes. | https://toolweight.com/compare/sandbox-providers#riza--max_concurrency | | MCP server | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--mcp_server | | SDKs | python, typescript, rest-api | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--sdk_languages | | Streaming output | ○ | Inferred | - | - | Output returns on completion. | https://toolweight.com/compare/sandbox-providers#riza--streaming_stdout | | Price / hour | N/A | Vendor-claimed | 2026-11-07 | https://riza.io/pricing | - | https://toolweight.com/compare/sandbox-providers#riza--price_per_hour | | Meter | per-request | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--billing_granularity | | Idle cost | free-when-stopped | Inferred | - | - | Nothing persists, so nothing idles. | https://toolweight.com/compare/sandbox-providers#riza--idle_billing | | GitHub stars | - | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--github_stars | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--funding_stage | | Shipped | 2024 | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--launched | | Positioning | A code interpreter API for safely running code written by LLMs. | Inferred | - | - | - | https://toolweight.com/compare/sandbox-providers#riza--positioning | **Verdict.** The strictest isolation here: perfect for evaluating a model's data transform, useless if it needs a dependency. **Pick it when** - Executing model-written expressions with the tightest possible default - Multi-language interpreter tooling without maintaining images - You want deny-by-default network and filesystem out of the box ## Methodology - Field values come from vendor docs, pricing pages and changelogs, each cell carrying its provenance - Prices are list rate for ~2 vCPU and 4 GB, no commitment, normalised to hourly - Per-second or credit vendors are marked inferred with arithmetic noted, or left null - Claimed cold start is whatever the vendor puts on its homepage, scored at weight zero - Vendors quote wildly different things: snapshot restore, guest boot, API return, or warm-pool p50 - Measured cold start is Toolweight's own harness: single client, fixed region, TLS included - It calls create-sandbox and blocks until a trivial command returns output, the full round trip - Runs on an account with nothing alive after an idle period, so nothing is pool-warm - Reports p50 and p95 over at least 50 runs so one good afternoon cannot flatter the number - No cell currently carries measured confidence; the column is inferred estimates for now - We would rather show an honest estimate than launder a vendor's number into a benchmark - Two rows (exe.dev, Islo) are transcribed from boat's own table at boat.dev/compare (formerly box.ascii.dev/compare) - That is the least neutral source here: a vendor's chart, its product first, rivals arranged around it - Toolweight has verified none of it; fields the table omits are left null and unknown - Only a cell the table states directly is marked vendor-claimed - Derived values (root off "Docker inside the VM", preview-URL off IP rows) are marked inferred - A vendor omitting a rival counts as nothing: exe.dev and Islo's snapshot cells stay unknown - These two rows stay this way until re-sourced from each vendor's own documentation - boat's own row comes from its docs (docs.boat.dev), not from its comparison table ## What has changed on this page | Date | Kind | What changed | Fields | Source | | --- | --- | --- | --- | --- | | 2026-11-14 | change | box is now boat (boat.dev): renamed, with per-second billing from a $20 monthly plan, and its row re-sourced from boat's own docs. ascii is removed: ascii.dev now redirects to boat.dev and the Telegram agent product is no longer offered. | - | https://docs.boat.dev/pricing | | 2026-07-23 | change | Held every measured cold-start as inferred, not measured: the harness has not run on this roster yet, and an honest estimate beats laundering a vendor's homepage figure into a benchmark. The latency probe backfills this column as it runs. | Cold start | - | | 2026-06-30 | correction | Recorded Daytona closing its source in June 2026, which removes the self-host exit hatch that made its shared-kernel isolation trade-off tolerable. | - | - | | 2026-06-15 | addition | Added box, ascii, exe.dev and Islo, transcribed from box's own comparison table; every unverified cell is left unknown until re-sourced from each vendor's own docs. | - | https://box.ascii.dev/compare | ## FAQ ### Is a container enough to run LLM-generated code, or do I need a microVM? - Your own model's code behind your own prompt: a hardened container is usually fine - User-supplied code: assume a container escape is a matter of time and budget, shared-kernel isolation drips CVEs - A microVM (Firecracker, Cloud Hypervisor) or gVisor gives a syscall boundary a guest kernel bug cannot cross - Check what you buy: Daytona runs shared-kernel containers, and vendors call a namespace a "dedicated kernel" - The price gap is now small enough that the container answer is rarely worth defending ### Why is the cold start I measure so much slower than the number on the vendor's homepage? - They measure different things - Vendor numbers time a snapshot restore on hardware already allocated to you - Yours adds TLS, API scheduling, image pull, the round trip, and pool scale-up queueing - A 90 ms claim routinely lands between 400 ms and 2 s, and widens the further you sit from their region ### What does snapshot and fork actually buy an agent? - Branching: build once, snapshot, then fork five times to try five patches in parallel - Cheap idle: pause mid-session, pay storage only, resume in a fraction of a cold boot - Resume keeps the process tree and page cache intact - For long agent sessions this beats raw boot speed, because you cold-start once ### Can I run a browser inside the sandbox instead of paying for a browser API? - Yes, and for a handful of pages a day it is cheaper - Chromium with a CDP endpoint costs compute you already pay for - You lose residential egress, CAPTCHA handling and fingerprint work, so real bot defences will beat you - Use the sandbox for your own apps and tooling; use a browser API when the site fights back ### How locked in am I if I pick the wrong provider? - Less than it feels: every provider exposes the same four verbs, create, exec, read/write files, kill - A thin interface of your own keeps swapping to about a day of work - Real lock-in is proprietary image formats, snapshots that only restore on the vendor's cluster, and baked-in preview-URL domains - Keep images as plain Dockerfiles and you keep your exit ### Which providers can run in Sydney or another Australian region? - Fly.io Machines has a Sydney region; GitHub Codespaces offers an Australian region - Northflank reaches one through bring-your-own-cloud - Agent-native vendors (E2B, Daytona, Vercel Sandbox, Runloop) are US and EU only - That adds 150-250 ms round trip per API call from Australia, dwarfing the cold-start differences ### Do I pay while a sandbox sits idle waiting for the model to respond? - It depends on the meter, and this is where bills go wrong - Fly charges nothing for a stopped machine beyond storage - E2B and CodeSandbox bill storage on a paused sandbox; Vercel bills active CPU, so network-blocked costs little - Wall-clock per-second vendors charge for every token the model is still generating - On agent workloads that idle time is usually the majority of the session ## Sources | Source | Last verified | | --- | --- | | https://e2b.dev/docs | 2026-01-15 | | https://docs.e2b.dev/sandbox | 2026-11-06 | | https://e2b.dev/docs/sandbox-template | 2026-01-15 | | https://github.com/e2b-dev/desktop | 2026-01-15 | | https://e2b.dev/pricing | 2026-11-06 | | https://github.com/e2b-dev/E2B | 2026-11-06 | | https://www.insightpartners.com/ideas/e2b-raises-a-21m-series-a-to-offer-cloud-for-ai-agents-to-fortune-100/ | 2026-07-23 | | https://modal.com/docs/guide/cold-start | 2026-01-15 | | https://modal.com/docs/guide/security | 2026-01-15 | | https://modal.com/docs/guide/timeouts | 2026-01-15 | | https://modal.com/docs/guide/volumes | 2026-01-15 | | https://modal.com/docs/guide/images | 2026-01-15 | | https://modal.com/pricing | 2026-01-15 | | https://modal.com/docs | 2026-01-15 | | https://www.daytona.io | 2026-01-15 | | https://northflank.com/blog/daytona-vs-e2b-ai-code-execution-sandboxes | 2026-07-23 | | https://www.daytona.io/docs | 2026-01-15 | | https://www.daytona.io/docs/en/network-limits/ | 2026-07-23 | | https://www.daytona.io/docs/en/gpu-sandboxes.md | 2026-11-07 | | https://northflank.com/blog/ai-sandbox-pricing | 2026-07-23 | | https://www.daytona.io/pricing | 2026-01-15 | | https://github.com/daytonaio/daytona | 2026-11-07 | | https://fly.io/docs/machines/ | 2026-01-15 | | https://fly.io/docs/volumes/ | 2026-01-15 | | https://fly.io/docs/gpus/ | 2026-01-15 | | https://fly.io/docs/reference/regions/ | 2026-01-15 | | https://fly.io/docs/about/pricing/ | 2026-07-23 | | https://developers.cloudflare.com/containers/ | 2026-01-15 | | https://developers.cloudflare.com/sandbox/ | 2026-01-15 | | https://developers.cloudflare.com/containers/pricing/ | 2026-01-15 | | https://github.com/cloudflare/sandbox-sdk | 2026-11-07 | | https://cloudflare.net | 2026-01-15 | | https://blog.cloudflare.com/containers-are-available-in-public-beta-for-simple-global-and-programmable/ | 2026-01-15 | | https://vercel.com/docs/sandbox/concepts | 2026-07-23 | | https://vercel.com/docs/vercel-sandbox | 2026-01-15 | | https://vercel.com/docs/sandbox/concepts/firewall | 2026-07-23 | | https://vercel.com/docs/sandbox/pricing | 2026-07-23 | | https://vercel.com/docs/sandbox/concepts/persistent-sandboxes | 2026-07-23 | | https://vercel.com/docs/sandbox/concepts/snapshots | 2026-07-23 | | https://vercel.com/docs/sandbox/concepts/images | 2026-07-23 | | https://github.com/vercel/sandbox | 2026-11-07 | | https://vercel.com/changelog | 2026-01-15 | | https://codesandbox.io/docs/sdk | 2026-01-15 | | https://codesandbox.stream/pricing | 2026-11-07 | | https://northflank.com/docs/v1/application/sandboxes/sandboxes-on-northflank-cloud | 2026-11-07 | | https://northflank.com/docs | 2026-01-15 | | https://northflank.com/pricing | 2026-01-15 | | https://docs.runloop.ai | 2026-01-15 | | https://runloop.ai/pricing | 2026-11-07 | | https://blaxel.ai | 2026-01-15 | | https://docs.blaxel.ai | 2026-01-15 | | https://blaxel.ai/pricing | 2026-11-07 | | https://docs.freestyle.sh | 2026-01-15 | | https://www.freestyle.sh/docs/vms/pricing-and-limits | 2026-11-07 | | https://docs.val.town/ | 2026-11-07 | | https://docs.val.town | 2026-01-15 | | https://www.val.town/limits | 2026-11-07 | | https://www.val.town/pricing | 2026-01-15 | | https://github.com/val-town/vt | 2026-11-07 | | https://docs.riza.io | 2026-01-15 | | https://riza.io/pricing | 2026-11-07 | | https://namespace.so/compute/sandbox | 2026-07-23 | | https://namespace.so/docs | 2026-01-15 | | https://namespace.so/pricing | 2026-11-07 | | https://docs.github.com/en/codespaces/prebuilding-your-codespaces | 2026-01-15 | | https://docs.github.com/en/codespaces | 2026-01-15 | | https://containers.dev | 2026-01-15 | | https://docs.github.com/en/billing/managing-billing-for-github-codespaces | 2026-01-15 | | https://docs.github.com/en/billing | 2026-01-15 | | https://microsoft.com | 2026-01-15 | | https://github.blog | 2026-01-15 | | https://boat.dev | 2026-11-14 | | https://docs.boat.dev/llms.txt | 2026-11-14 | | https://docs.boat.dev/hosting/firewall.md | 2026-11-14 | | https://boat.dev/ | 2026-11-14 | | https://docs.boat.dev/snapshots/templates.md | 2026-11-14 | | https://docs.boat.dev/machines/tools.md | 2026-11-14 | | https://docs.boat.dev/limits.md | 2026-11-14 | | https://docs.boat.dev/ai-tools.md | 2026-11-14 | | https://exe.dev/docs/architecture.md | 2026-11-07 | | https://box.ascii.dev/compare | 2026-07-23 | | https://exe.dev/docs/internet-access.md | 2026-11-07 | | https://exe.dev/docs/standalone-vms.md | 2026-11-07 | | https://exe.dev/docs/private-image.md | 2026-11-07 | | https://exe.dev/docs/proxy.md | 2026-11-07 | | https://exe.dev/docs/regions | 2026-11-07 | | https://exe.dev/docs/mcp | 2026-11-07 | | https://exe.dev/docs/api.md | 2026-11-07 | | https://exe.dev/docs/pricing | 2026-11-07 | | https://exe.dev | 2026-07-23 | | https://islo.dev/security | 2026-11-07 | | https://islo.dev/gateway | 2026-11-07 | | https://docs.islo.dev/concepts/sandbox-lifecycle.md | 2026-11-07 | | https://docs.islo.dev/cli/snapshots.md | 2026-11-07 | | https://islo.dev/glossary/islo-machine | 2026-11-07 | | https://islo.dev/llms.txt | 2026-11-07 | | https://islo.dev/pricing | 2026-11-07 | | https://islo.dev | 2026-07-23 | | https://firecracker-microvm.github.io | 2026-01-15 | ## Cite this page > E2B is the fastest general-purpose microVM sandbox for agents, but Fly.io Machines wins on price and control if you can skip an agent SDK. > > — Toolweight, https://toolweight.com/compare/sandbox-providers, verified 2026-11-14. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Coding agents](https://toolweight.com/compare/coding-agents), Which AI coding agent should I use in 2026? - [LLM APIs](https://toolweight.com/compare/llm-apis), Which frontier LLM API should I build on? - [Browser APIs](https://toolweight.com/compare/browser-automation-apis), Which hosted browser automation API should I use for AI agents and scraping? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/sandbox-providers - Machine-readable: https://toolweight.com/compare/sandbox-providers.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: "Coding agents compared: Claude Code vs Codex CLI vs Cursor vs the rest" slug: coding-agents url: "https://toolweight.com/compare/coding-agents" question: Which AI coding agent should I use in 2026? tools: 17 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-01-15 median_verified: 2026-01-15 stale_values: 136 conflicting_values: 0 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 40% verify_cadence: 14d license: CC-BY-4.0 --- # Coding agents and harnesses, compared > **Which AI coding agent should I use in 2026?** > > An agent is a model plus a harness; six reach a pull request, but nothing here merges or deploys unsupervised. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/coding-agents | | Tools compared | 17 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 186 of 442 values have a verification date, checked between 2026-01-15 and 2026-11-07 (median 2026-01-15), 136 due for re-check. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 14d | | Evidence strength | 40% (mean cell confidence, not age) | | Killer field | stops_at | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [opencode](https://toolweight.com/tools/opencode) | 84.5 | 100% | Provider-agnostic open-source TUI with a client/server split and LSP awareness. | | 2 | [Grok Build](https://toolweight.com/tools/grok-build) | 82.4 | 57% | xAI's coding harness, launched July 2026, on this page but not yet verified. | | 3 | [Claude Code](https://toolweight.com/tools/claude-code) | 80.9 | 100% | Anthropic's terminal-first agent, with IDE, web and GitHub Action surfaces. | | 4 | [Codex CLI](https://toolweight.com/tools/codex-cli) | 76.1 | 100% | OpenAI's open-source Rust agent, with the strongest local sandboxing on this page. | | 5 | [Goose](https://toolweight.com/tools/goose) | 75.9 | 95% | Block's Apache-2.0 agent, MCP-native from the start, as both a CLI and a desktop app. | | 6 | [GitHub Copilot (Agent HQ)](https://toolweight.com/tools/github-copilot) | 75.8 | 95% | Copilot's coding agent plus a control plane for running third-party agents on your repos. | | 7 | [Cursor](https://toolweight.com/tools/cursor) | 75.6 | 90% | VS Code fork with a real codebase index, background cloud agents and a CLI. | | 8 | [Gemini CLI](https://toolweight.com/tools/gemini-cli) | 74.1 | 100% | Apache-2.0 terminal agent from Google with an unusually generous free tier. | | 9 | [Kilo Code](https://toolweight.com/tools/kilo-code) | 73.7 | 90% | Open-source VS Code agent in the Cline/Roo lineage, with an orchestrator mode and a CLI. | | 10 | [Qwen Code](https://toolweight.com/tools/qwen-code) | 71.4 | 95% | Apache-2.0 Gemini CLI fork tuned for Qwen3-Coder, with a large free daily quota. | | 11 | [Cline](https://toolweight.com/tools/cline) | 67.2 | 95% | Open-source VS Code and JetBrains agent built around an explicit plan/act split. | | 12 | [DIY harness](https://toolweight.com/tools/diy-harness) | 60.4 | 81% | Your own loop over a model API with an agent SDK, the build-it-yourself reference point. | | 13 | [Zed](https://toolweight.com/tools/zed) | 58.1 | 95% | GPL-licensed Rust editor whose agent panel can host Claude Code, Codex and Gemini CLI. | | 14 | [Aider](https://toolweight.com/tools/aider) | 57.4 | 95% | Minimal terminal pair-programmer with a tree-sitter repo map and automatic git commits. | | 15 | [Amp](https://toolweight.com/tools/amp) | 56.1 | 86% | Sourcegraph's opinionated agent with no model picker and an ad-supported free tier. | | 16 | [Windsurf](https://toolweight.com/tools/windsurf) | 55.0 | 81% | Agentic IDE built around Cascade, now owned by Cognition after a turbulent 2025. | | 17 | [Devin](https://toolweight.com/tools/devin) | 50.2 | 90% | Fully delegated cloud engineer: file a task in Slack or the web app, get a PR back. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Features | Tool | Surface | Default model | Model breadth | Repo indexing | Plan mode | Checkpoint & undo | Headless / CI | Local models | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | opencode | CLI, web | None, you choose a provider at first run | any provider / router | AST / LSP repo map | ● | ◐ | ● | ● | | Grok Build | CLI | Grok 4.5 | any provider / router | - | ● | - | ● | ● | | Claude Code | CLI, IDE extension, web, GitHub-native | Latest Claude Opus/Sonnet, switchable with /model | one vendor + custom endpoint | agentic grep | ● | ● | ● | ○ | | Codex CLI | CLI, IDE extension, web, cloud delegate | Latest GPT-5 Codex model | one vendor + custom endpoint | agentic grep | ◐ | ◐ | ● | ● | | Goose | CLI, standalone editor | None, you configure a provider on first run | any provider / router | agentic grep | ● | ○ | ● | ● | | GitHub Copilot (Agent HQ) | GitHub-native, IDE extension, CLI, web, cloud delegate | Selectable across OpenAI, Anthropic and Google models | multi-vendor | hybrid index + agentic | ◐ | ◐ | ● | ◐ | | Cursor | standalone editor, CLI, web, cloud delegate | Cursor's in-house Composer model, with frontier models selectable | multi-vendor | embeddings index | ● | ● | ● | ○ | | Gemini CLI | CLI, IDE extension, GitHub-native | Latest Gemini Pro | one vendor | agentic grep | ◐ | ● | ● | ○ | | Kilo Code | IDE extension, CLI | - | any provider / router | embeddings index | ● | ● | ◐ | ● | | Qwen Code | CLI | Latest Qwen3-Coder model | one vendor + custom endpoint | agentic grep | ◐ | ● | ● | ● | | Cline | IDE extension, CLI | None, you pick a provider at setup | any provider / router | agentic grep | ● | ● | ● | ● | | DIY harness | CLI | Whichever you wire up | any provider / router | manual context only | ○ | ○ | ● | ● | | Zed | standalone editor | None, configure a provider, or sign in for hosted models | any provider / router | AST / LSP repo map | ◐ | ● | ○ | ● | | Aider | CLI | None, set by --model or environment keys | any provider / router | AST / LSP repo map | ◐ | ● | ● | ● | | Amp | CLI, IDE extension, web | Chosen by Amp, there is no model picker | no model choice | agentic grep | ◐ | ◐ | ● | ○ | | Windsurf | standalone editor, IDE extension | Windsurf's in-house SWE model, with frontier models selectable | multi-vendor | embeddings index | ● | ● | ○ | ○ | | Devin | web, cloud delegate | Undisclosed, Cognition-hosted, including in-house SWE models | no model choice | hybrid index + agentic | ● | ○ | ◐ | ○ | ### Agentic | Tool | Where it stops | MCP | Subagents | Hooks | Skills / commands | Background agents | Opens PRs | | --- | --- | --- | --- | --- | --- | --- | --- | | opencode | 4 | ● | ● | ◐ | ● | ◐ | ● | | Grok Build | - | ● | ● | ● | ● | - | - | | Claude Code | 4 | ● | ● | ● | ● | ● | ● | | Codex CLI | 4 | ● | ○ | ◐ | ◐ | ● | ● | | Goose | 3 | ● | ● | ◐ | ● | ◐ | ○ | | GitHub Copilot (Agent HQ) | 4 | ● | ◐ | ● | ● | ● | ● | | Cursor | 4 | ● | ◐ | ● | ● | ● | ● | | Gemini CLI | 3 | ● | ◐ | ● | ● | ◐ | ◐ | | Kilo Code | 3 | ● | ● | - | ● | ○ | ○ | | Qwen Code | 3 | ● | ● | ● | ● | ○ | ○ | | Cline | 3 | ● | ○ | ○ | ● | ○ | ○ | | DIY harness | - | ◐ | ◐ | ● | ○ | ◐ | ◐ | | Zed | 3 | ● | ○ | ○ | ◐ | ○ | ○ | | Aider | 3 | ○ | ○ | ○ | ◐ | ○ | ○ | | Amp | 3 | ● | ● | - | ◐ | ◐ | ○ | | Windsurf | 3 | ● | - | - | ● | ◐ | ◐ | | Devin | 4 | ● | ○ | ○ | ◐ | ● | ● | ### Governance & control | Tool | Permissions | BYOK | Licence | | --- | --- | --- | --- | | opencode | granular allowlist | ● | MIT | | Grok Build | allowlist + OS sandbox | ● | Apache-2.0 | | Claude Code | allowlist + OS sandbox | ● | proprietary | | Codex CLI | allowlist + OS sandbox | ● | Apache-2.0 | | Goose | allowlist + OS sandbox | ● | Apache-2.0 | | GitHub Copilot (Agent HQ) | vendor-hosted sandbox | ◐ | proprietary | | Cursor | allowlist + OS sandbox | ◐ | proprietary | | Gemini CLI | allowlist + OS sandbox | ● | Apache-2.0 | | Kilo Code | granular allowlist | ● | Apache-2.0 | | Qwen Code | granular allowlist | ● | Apache-2.0 | | Cline | granular allowlist | ● | Apache-2.0 | | DIY harness | applies everything | ● | - | | Zed | granular allowlist | ● | GPL-3.0 | | Aider | prompts every action | ● | Apache-2.0 | | Amp | granular allowlist | ● | proprietary | | Windsurf | granular allowlist | ◐ | proprietary | | Devin | vendor-hosted sandbox | ○ | proprietary | ### Pricing | Tool | Pricing model | Entry price (/seat/mo) | Token markup | | --- | --- | --- | --- | | opencode | BYOK tokens only | $0/seat/mo | ○ | | Grok Build | - | - | - | | Claude Code | subscription + token overage | $20/seat/mo | ○ | | Codex CLI | subscription + token overage | $20/seat/mo | ○ | | Goose | BYOK tokens only | $0/seat/mo | ○ | | GitHub Copilot (Agent HQ) | subscription + token overage | $10/seat/mo | ◐ | | Cursor | subscription + token overage | $20/seat/mo | ◐ | | Gemini CLI | subscription + token overage | $0/seat/mo | ○ | | Kilo Code | BYOK tokens only | $0/seat/mo | ○ | | Qwen Code | BYOK tokens only | $0/seat/mo | ○ | | Cline | BYOK tokens only | $0/seat/mo | ○ | | DIY harness | BYOK tokens only | $0/seat/mo | ○ | | Zed | BYOK tokens only | $0/seat/mo | ○ | | Aider | BYOK tokens only | $0/seat/mo | ○ | | Amp | opaque credits | $0/seat/mo | ○ | | Windsurf | opaque credits | $15/seat/mo | ● | | Devin | opaque credits | $20/seat/mo | ● | ### Traction | Tool | GitHub stars | Terminal-Bench (%) | Bench model | | --- | --- | --- | --- | | opencode | 25,000 | 51.7% | Claude Opus 4.5, Terminal-Bench 2.0 | | Grok Build | 28,000 | - | - | | Claude Code | 155,000 | 51.8% | Claude Opus 5 | | Codex CLI | 42,000 | 62.9% | GPT-5.2 | | Goose | 20,000 | - | - | | GitHub Copilot (Agent HQ) | - | 60.4% | Claude Opus 4.6, Terminal-Bench 2.0 | | Cursor | - | - | - | | Gemini CLI | 75,000 | 59.8% | Gemini 3.1 Pro Preview, Terminal-Bench 2.0 | | Kilo Code | 9,000 | - | - | | Qwen Code | 13,000 | - | - | | Cline | 71,400 | - | - | | DIY harness | - | - | - | | Zed | 62,000 | - | - | | Aider | 37,000 | - | - | | Amp | - | - | - | | Windsurf | N/A | - | - | | Devin | - | - | - | ### Positioning | Tool | Positioning | | --- | --- | | opencode | The open-source AI coding agent built for the terminal. | | Grok Build | A powerful, extensible coding agent used via an interactive TUI, headlessly in scripts or bots, or through ACP in other apps. | | Claude Code | Anthropic's coding agent, in your terminal and wherever else you work. | | Codex CLI | A coding agent that runs locally, in your terminal. | | Goose | An open-source, extensible AI agent that goes beyond code suggestions. | | GitHub Copilot (Agent HQ) | Mission control for every agent working on your repositories. | | Cursor | The AI code editor, built to make you extraordinarily productive. | | Gemini CLI | An open-source AI agent that brings Gemini into your terminal. | | Kilo Code | Open-source AI coding agent for VS Code, with everything included. | | Qwen Code | A command-line coding agent tuned for the Qwen3-Coder models. | | Cline | Autonomous coding agent in your IDE, with your API key. | | DIY harness | The reference point: what you get for a few hundred lines and an API key. | | Zed | The editor for humans and AI, written in Rust. | | Aider | AI pair programming in your terminal. | | Amp | An agentic coding tool that always runs the best model, chosen for you. | | Windsurf | The agentic IDE where you and the agent stay in flow together. | | Devin | An AI software engineer you delegate tickets to. | ### Timeline | Tool | First release | | --- | --- | | opencode | 2025-06-01 | | Grok Build | 2026-05-25 | | Claude Code | 2025-02-24 | | Codex CLI | 2025-04-16 | | Goose | 2025-01-28 | | GitHub Copilot (Agent HQ) | 2021-06-29 | | Cursor | 2023-03-01 | | Gemini CLI | 2025-06-25 | | Kilo Code | 2025-03-01 | | Qwen Code | 2025-07-01 | | Cline | 2024-07-01 | | DIY harness | - | | Zed | 2023-03-22 | | Aider | 2023-05-01 | | Amp | 2025-05-01 | | Windsurf | 2024-11-13 | | Devin | 2024-03-12 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Surface | `surface` | features | multi-enum | - | n/a | 0 | Where you drive the agent from. 'Cloud delegate' means the work runs on the vendor's machines rather than yours. Not scored, this is a fit question, not a quality one. | | Default model | `default_model` | features | text | - | n/a | 0 | The model the harness uses on a fresh install with no configuration. Rotates frequently, so treat the family as the durable fact rather than the point release. | | Model breadth | `model_breadth` | features | enum | - | higher | 5 | How many model providers the harness treats as first-class. 'One vendor + custom endpoint' requires a vendor-documented way to point the harness at a base URL of your choosing, a gateway, a corporate proxy, or a cloud reseller, even if the models on the other end are still that vendor's. Community reports of an undocumented override do not qualify. 'Any provider / router' means an arbitrary OpenAI-compatible or router endpoint works as configuration, without patching the source. | | Repo indexing | `repo_indexing` | features | enum | - | higher | 4 | How much structure the harness has about your code before the first token: nothing, live search, a parsed symbol map, a persistent vector index, or an index read alongside live search. Ranked by richness of the substrate, not by output quality, a richer substrate is not automatically a better answer for your repo. | | Plan mode | `plan_mode` | features | tristate | - | higher | 5 | A distinct read-only mode producing a plan you approve before any file is written. 'Partial' means the tool plans internally but offers no explicit approval gate. | | Checkpoint & undo | `checkpointing` | features | tristate | - | higher | 5 | Can you roll the working tree back to a point mid-session without reaching for git yourself? 'Partial' means git-commit-based recovery only. | | Headless / CI | `headless_ci` | features | tristate | - | higher | 6 | A documented non-interactive mode that takes a prompt, runs to completion and exits with a usable status, the prerequisite for putting the agent in a pipeline. | | Local models | `local_models` | features | tristate | - | higher | 4 | Documented support for a locally served model (Ollama, llama.cpp, vLLM) as the primary agent model. 'Partial' means it connects but agentic tool use is unreliable. | | Where it stops | `stops_at` | agentic | score | - | higher | 10 | The furthest rung the tool reaches out of the box with no scripts of yours. 1: suggests diffs you apply by hand. 2: edits files in your working tree. 3: runs commands and tests and iterates on the failures. 4: commits, pushes a branch and opens a pull request through a first-class path. 5: merges to the default branch or deploys with no human in the loop. Invoking gh because you told it to is not rung 4. Note the live range on this page is 3-4: every scored harness edits files and runs commands, and nothing ships rung 5, so this column separates 'stops at your working tree' from 'reaches a pull request' and nothing finer. Rung 3 covers a wide band, Aider with --test-cmd iterating on failures and an IDE agent running commands under per-action approval both sit there. | | MCP | `mcp_support` | agentic | tristate | - | higher | 6 | First-class Model Context Protocol client support: stdio and remote servers configurable per project, without a plugin or a fork. | | Subagents | `subagents` | agentic | tristate | - | higher | 6 | Can the agent spawn child agents with their own context window and toolset, and collect their results? The main lever for keeping long tasks inside a context budget. | | Hooks | `hooks` | agentic | tristate | - | higher | 4 | User-defined commands fired on lifecycle events, before a tool call, after an edit, on session end, that can block or rewrite the action. 'Partial' means notification-only hooks that cannot veto. | | Skills / commands | `skills_commands` | agentic | tristate | - | higher | 5 | Reusable, version-controlled prompt units checked into the repo, slash commands, skills, recipes or modes, that every team member picks up automatically. | | Background agents | `background_agents` | agentic | tristate | - | higher | 6 | Can you fire off a task that keeps running once the client is closed, on vendor infrastructure or a detached local runner, and check back later? | | Opens PRs | `pr_authoring` | agentic | tristate | - | higher | 7 | A first-class path to a pull request: a built-in command, a vendor-published GitHub App with its own identity, or a hosted runner. 'Partial' means only via an official CI action you wire into your own workflows with no App behind it. The App-versus-Action line is about identity, who the branch is pushed as, not about how much YAML you touch. | | Permissions | `permission_model` | governance | enum | - | higher | 7 | The strongest control available without extra tooling, available, not necessarily on by default, so read the cell note for the default. 'OS sandbox' means the harness itself ships a real filesystem and network boundary (Seatbelt, Landlock, a container); an auto-approve allowlist alone is convenience, not containment. The top two options tie deliberately: a vendor-hosted VM and a local kernel sandbox are two answers to the same question, one trading auditability for isolation and the other the reverse, and we will not pretend to rank them. | | BYOK | `byok` | governance | tristate | - | higher | 7 | Can you point the harness at your own provider account and pay that provider directly, with full functionality? 'Partial' means BYOK exists but disables features or is plan-gated. | | Licence | `licence` | governance | enum | - | higher | 5 | Licence of the harness itself, not the model behind it. 'Source-available' means readable but not freely forkable or redistributable. | | Pricing model | `pricing_model` | pricing | enum | - | higher | 6 | How you are billed for the harness, ranked by cost predictability rather than by cheapness. 'Opaque credits' means a vendor-defined unit whose conversion to tokens is unpublished or subject to change. | | Entry price | `entry_price` | pricing | currency | /seat/mo | lower | 6 | Cheapest paid plan that includes agentic coding, per seat per month at the vendor's headline rate. 0 means the harness itself is free and you pay the model provider directly. | | Token markup | `gateway_markup` | pricing | tristate | - | lower | 5 | Does the vendor resell model tokens above provider list price, or behind a credit unit that hides the conversion? 'No' means you can pay the model provider directly at list on the harness's default path, an optional first-party gateway or credit pack you are free to ignore does not change the answer. 'Partial' means BYOK exists but the product assumes its own gateway. 'Yes' means there is no BYOK escape hatch at all. | | GitHub stars | `github_stars` | traction | number | - | higher | 2 | Stars on the primary open-source repository, rounded to the nearest thousand. Null for closed-source harnesses, where no comparable repo exists. | | Terminal-Bench | `terminal_bench` | traction | number | % | higher | 3 | Best publicly reported Terminal-Bench accuracy for THIS HARNESS, recorded only where the harness, the model and the benchmark version are all identified in the source. A score produced by the benchmark's own reference agent (Terminus) is a fact about the model, not about anybody's harness, and does not belong here. Read it alongside the 'Bench model' column or not at all. The column currently ships empty; see the methodology note for why. | | Bench model | `terminal_bench_model` | traction | text | - | n/a | 0 | The model and benchmark version that produced the Terminal-Bench figure. A harness score without this is meaningless: swapping the model moves the number by tens of points. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor positions the product in one line, paraphrased from their own front page, useful for spotting where the marketing and the behaviour diverge. | | First release | `first_release` | timeline | date | - | n/a | 0 | Date the harness first shipped publicly, first public release, preview or GA announcement, not the company's founding date. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Most autonomous | `most-autonomous` | How far down the ladder it goes without you: PRs, background runs, subagents, headless operation. | stops_at:10, background_agents:8, pr_authoring:8, subagents:6, headless_ci:6, plan_mode:4, permission_model:3, hooks:3, entry_price:1 | https://toolweight.com/compare/coding-agents?w=stops_at:10,background_agents:8,pr_authoring:8,subagents:6,headless_ci:6,plan_mode:4,permission_model:3,hooks:3,entry_price:1 | | Best BYOK / open source | `byok-open-source` | Your key, your models, your fork. Weighted for licence, provider breadth and freedom from a token gateway. | byok:10, licence:9, model_breadth:9, local_models:8, gateway_markup:7, mcp_support:4, headless_ci:3, github_stars:2 | https://toolweight.com/compare/coding-agents?w=byok:10,licence:9,model_breadth:9,local_models:8,gateway_markup:7,mcp_support:4,headless_ci:3,github_stars:2 | | Cheapest predictable cost | `cheapest-predictable` | Optimises for a number you can put in a budget, not a credit balance that moves. | entry_price:10, pricing_model:9, gateway_markup:8, byok:5, local_models:4, licence:3 | https://toolweight.com/compare/coding-agents?w=entry_price:10,pricing_model:9,gateway_markup:8,byok:5,local_models:4,licence:3 | | Best for large repos | `large-repos` | Context strategy, planning before editing, and the ability to undo when it gets the architecture wrong. | repo_indexing:9, plan_mode:8, subagents:8, checkpointing:7, skills_commands:6, headless_ci:4, stops_at:4, permission_model:3 | https://toolweight.com/compare/coding-agents?w=repo_indexing:9,plan_mode:8,subagents:8,checkpointing:7,skills_commands:6,headless_ci:4,stops_at:4,permission_model:3 | ## Verdict - Agent = model + harness: the model gives capability, the harness turns it into finished work. - The harness owns the tool loop, context strategy, permission gate and retry-on-failing-test behaviour. - The same frontier model in two harnesses gives wildly different completion rates on one repo. - A benchmark counts only when harness, model and benchmark version are all named. - The Terminal-Bench column ships empty rather than reprinting model scores as harness scores. - The killer field is where does it stop? scored 1-5: suggests → edits → tests → PR → merge/deploy. - Every scored harness sits at rung 3 or 4, so the column really separates working tree from pull request. - Claude Code, Codex CLI, opencode, Cursor, Devin and GitHub Copilot reach rung 4. - Nothing on this page ships rung 5; Copilot cannot approve its own PR, Devin stops at review. - Any "autonomous deployment" claim describes a CI pipeline you wired downstream of a rung-4 agent. - Vendor-coupled harnesses (Claude Code, Codex CLI, Gemini CLI, Devin, Grok Build) ship agentic features first. - Amp sits beside them: no model picker, opaque about which of several vendors it uses. - Provider-agnostic harnesses (opencode, Cline, Goose, Aider, Zed, Qwen Code, Kilo Code) trail but survive pricing changes. - The agnostic camp runs local models and never leaves you renegotiating retiered subscriptions. - opencode now reaches a pull request through its own GitHub App, narrowing the gap. - Three pricing models: BYOK tokens (opencode, Aider, Goose, Zed, Cline, Qwen Code). - Flat subscription with soft limits: Claude Code on Pro or Max, Codex on ChatGPT plans. - Credits (Windsurf, Devin, Amp) are the trap: conversion rate is vendor-controlled and changeable. - Copilot's premium requests are the same unforecastable problem in different clothing. - For a budget number, a subscription or your own API key are the only honest answers. - Expect this page to age fast; intended cadence is 14 days and we are behind. - Every dated cell was last checked 15 January 2026, roughly six months old, so treat cells as leads. - Windsurf changed hands: OpenAI deal collapsed, Google licensed the tech, Cognition bought what remained. - Aider's release cadence slowed; GitHub rebuilt Copilot around a multi-agent control plane. - Grok Build appeared July 2026 with nothing verifiable published. - pi.dev arrived after the pass and stays in prose as one to watch, not on the roster. - Pick tools with low exit cost: a harness that reads AGENTS.md and takes your key is easy to replace. ## The autonomy ladder, rung by rung - Rung 1 suggests: it proposes a diff and you apply it. - Rung 2 edits files: it writes directly to your working tree. - Rung 3 runs commands and tests: it iterates on the failures it sees. - Rung 4 opens a pull request: it commits, pushes a branch and raises a PR through a first-class path. - Rung 5 merges and deploys: it lands on the default branch or triggers a release with no human. - The interesting gap is between 3 and 4, and it is organisational rather than technical. - Rung 4 requires the vendor to solve identity: whose token pushes, what CI runs, how review comments are handled. - GitHub Copilot runs in Actions under a bot identity and is barred from approving its own work. - Devin and Cursor solve it with a hosted VM and their own identity. - Claude Code and opencode solve it with published GitHub Apps, so licence has nothing to do with the rung. - Nothing here scores 1 or 2; tools that only suggest diffs are autocomplete in a different category. - Nothing scores 5, so the killer field is really a two-value sort. - Rung 3 hides a wide band: Aider fixing a failing test does more unattended work than an approval-gated IDE agent. - Read this column with the permissions and headless columns, not alone. - The gap between 4 and 5 lives in branch protection rules, not in a harness. - Treat any rung-5 claim as a claim to have been given credentials, and audit it accordingly. ## Pricing traps - The flat subscription is the most honest deal here, but read the limits. - Every subscription harness enforces a rolling usage window in vendor-specific units, not tokens. - Heavy agentic use burns those windows far faster than chat; then you wait or move to metered billing. - Credits are worse for planning: Windsurf, Devin and Amp price in units the vendor defines. - The vendor can re-price the credit-to-token conversion when model prices change, and you find out afterwards. - Copilot's premium-request multipliers have the same shape. - For a defensible quarterly number, use a per-seat subscription or your own provider key. - BYOK looks cheapest but moves the variance onto your API bill rather than removing it. - A harness that re-reads a large file every turn costs multiples of one that caches aggressively. - At team scale, meter BYOK per repo for a fortnight and check for prompt caching before extrapolating. ## How to actually choose - For well-specified tickets on a repo with good tests, buy autonomy. - Use Claude Code or Codex CLI headless behind a PR, or Copilot if you already live in GitHub. - Optimise for rung 4, background execution and a sandbox you trust. - For exploratory or architectural work, buy ergonomics instead. - Cursor and Windsurf let you review a large agentic diff in an editor with real navigation. - Both maintain a persistent embeddings index that grep-based harnesses cannot fake on a monorepo. - Kilo Code indexes too, and Copilot and Devin read an index alongside live search. - What Cursor has is that index sitting inside the editor you review in. - Zed is the third option: a fast editor hosting other agents over the Agent Client Protocol. - If constrained by procurement, data residency or lock-in, take a provider-agnostic open-source harness. - opencode for a modern TUI and broad providers, Goose if MCP is central, Cline for VS Code, Aider for minimalism. - You will be a quarter behind on features but can repoint any of them at a new provider anytime. - Whatever you pick, write AGENTS.md, pin a test command, and keep the sandbox on. ## Per-tool provenance, every cell, every source ### opencode {#opencode} Provider-agnostic open-source TUI with a client/server split and LSP awareness. | | | | --- | --- | | Site | https://opencode.ai | | Docs | https://opencode.ai/docs/ | | Repo | https://github.com/sst/opencode | | Company | SST | | Founded | 2025 | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/opencode | | Score (default weights) | 84.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, web | Vendor-claimed | 2026-01-15 | https://opencode.ai/docs/ | Terminal TUI plus a shareable web view of sessions. | https://toolweight.com/compare/coding-agents#opencode--surface | | Default model | None, you choose a provider at first run | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-01-15 | https://opencode.ai/docs/providers/ | Resolves models through a shared registry; dozens of providers work as config rather than code. | https://toolweight.com/compare/coding-agents#opencode--model_breadth | | Repo indexing | AST / LSP repo map | Community-reported | - | - | LSP servers give it symbol-level awareness on top of agentic search. | https://toolweight.com/compare/coding-agents#opencode--repo_indexing | | Plan mode | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#opencode--plan_mode | | Checkpoint & undo | ◐ | Community-reported | - | - | Session-level revert rather than a full working-tree snapshot system. | https://toolweight.com/compare/coding-agents#opencode--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--headless_ci | | Local models | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--local_models | | Where it stops | 4 | Vendor-claimed | - | https://opencode.ai/docs/github/ | Corrected upward: opencode github install sets up the published opencode-agent GitHub App, which answers a /opencode mention on an issue or PR by working in a new branch and submitting the pull request. That is the same class of first-class path Claude Code is credited for, and grading it lower because the project is open source would be a different rule for the same fact. | https://toolweight.com/compare/coding-agents#opencode--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--mcp_support | | Subagents | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--subagents | | Hooks | ◐ | Community-reported | - | - | The plugin API covers some lifecycle events. | https://toolweight.com/compare/coding-agents#opencode--hooks | | Skills / commands | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--skills_commands | | Background agents | ◐ | Inferred | - | - | The client/server split lets the agent run on a remote box, but there is no hosted runner. | https://toolweight.com/compare/coding-agents#opencode--background_agents | | Opens PRs | ● | Vendor-claimed | - | https://opencode.ai/docs/github/ | github.com/apps/opencode-agent, installed by opencode github install. The run itself executes in your GitHub Actions runners, so there is no hosted runner here, but the App identity is what this column grades. | https://toolweight.com/compare/coding-agents#opencode--pr_authoring | | Permissions | granular allowlist | Vendor-claimed | 2026-01-15 | https://opencode.ai/docs/permissions/ | Per-tool allow/ask/deny rules, but no OS-level sandbox. | https://toolweight.com/compare/coding-agents#opencode--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--byok | | Licence | MIT | Vendor-claimed | 2026-01-15 | https://github.com/sst/opencode | - | https://toolweight.com/compare/coding-agents#opencode--licence | | Pricing model | BYOK tokens only | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#opencode--entry_price | | Token markup | ○ | Inferred | - | - | BYOK at provider list is the default path. The project also sells an optional first-party gateway, but so do Cline, Zed and Kilo Code, and all four are graded the same here, penalising only opencode for it was the inconsistency this column existed to avoid. | https://toolweight.com/compare/coding-agents#opencode--gateway_markup | | GitHub stars | 25,000 | Community-reported | - | - | Rounded and growing fast, treat as order-of-magnitude. | https://toolweight.com/compare/coding-agents#opencode--github_stars | | Terminal-Bench | 51.7% | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/OpenCode__Claude-Opus-4.5/2026-01-11__01-42-13/result.json | - | https://toolweight.com/compare/coding-agents#opencode--terminal_bench | | Bench model | Claude Opus 4.5, Terminal-Bench 2.0 | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/OpenCode__Claude-Opus-4.5/metadata.yaml | - | https://toolweight.com/compare/coding-agents#opencode--terminal_bench_model | | Positioning | The open-source AI coding agent built for the terminal. | Vendor-claimed | - | https://opencode.ai | - | https://toolweight.com/compare/coding-agents#opencode--positioning | | First release | 2025-06-01 | Inferred | - | - | Approximate; the project moved fast through several rewrites. | https://toolweight.com/compare/coding-agents#opencode--first_release | **Verdict.** The strongest provider-agnostic harness, the only MIT one reaching a PR, but with no OS sandbox. **Pick it when** - Teams switching model providers often, or comparing them head-to-head - Running the agent on a big remote machine and driving it from a laptop - Anyone who wants an MIT-licensed harness with subagents and a PR path ### Grok Build {#grok-build} xAI's coding harness, launched July 2026, on this page but not yet verified. | | | | --- | --- | | Site | https://x.ai | | Company | xAI | | Open source | No | | Profile | https://toolweight.com/tools/grok-build | | Score (default weights) | 82.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--surface | | Default model | Grok 4.5 | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/11-custom-models.md | - | https://toolweight.com/compare/coding-agents#grok-build--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/11-custom-models.md | - | https://toolweight.com/compare/coding-agents#grok-build--model_breadth | | Repo indexing | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--repo_indexing | | Plan mode | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--plan_mode | | Checkpoint & undo | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--checkpointing | | Headless / CI | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--headless_ci | | Local models | ● | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/11-custom-models.md | - | https://toolweight.com/compare/coding-agents#grok-build--local_models | | Where it stops | - | Unknown | - | - | Not scored until we have run it. Launch-post claims are not evidence for this field. | https://toolweight.com/compare/coding-agents#grok-build--stops_at | | MCP | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--mcp_support | | Subagents | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--subagents | | Hooks | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--hooks | | Skills / commands | ● | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--skills_commands | | Background agents | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--background_agents | | Opens PRs | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--pr_authoring | | Permissions | allowlist + OS sandbox | Vendor-claimed | 2026-11-07 | https://docs.x.ai/build/features/sandbox | Sandbox is off unless a profile is enabled; permissions default to ask mode. | https://toolweight.com/compare/coding-agents#grok-build--permission_model | | BYOK | ● | Inferred | 2026-11-07 | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/01-getting-started.md | - | https://toolweight.com/compare/coding-agents#grok-build--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/xai-org/grok-build/main/README.md | - | https://toolweight.com/compare/coding-agents#grok-build--licence | | Pricing model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--pricing_model | | Entry price | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--entry_price | | Token markup | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--gateway_markup | | GitHub stars | 28,000 | Measured by Toolweight | 2026-11-07 | https://api.github.com/repos/xai-org/grok-build | - | https://toolweight.com/compare/coding-agents#grok-build--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#grok-build--terminal_bench_model | | Positioning | A powerful, extensible coding agent used via an interactive TUI, headlessly in scripts or bots, or through ACP in other apps. | Vendor-claimed | 2026-11-07 | https://docs.x.ai/build/overview | - | https://toolweight.com/compare/coding-agents#grok-build--positioning | | First release | 2026-05-25 | Vendor-claimed | 2026-11-07 | https://x.ai/news/grok-build-cli | - | https://toolweight.com/compare/coding-agents#grok-build--first_release | **Verdict.** Listed for completeness, scored nowhere because we have not run it yet. **Pick it when** - Nothing we can responsibly recommend yet ### Claude Code {#claude-code} Anthropic's terminal-first agent, with IDE, web and GitHub Action surfaces. | | | | --- | --- | | Site | https://claude.com/product/claude-code | | Docs | https://docs.claude.com/en/docs/claude-code/overview | | Company | Anthropic | | Founded | 2025 | | Open source | No | | Profile | https://toolweight.com/tools/claude-code | | Score (default weights) | 80.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, IDE extension, web, GitHub-native | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/overview | - | https://toolweight.com/compare/coding-agents#claude-code--surface | | Default model | Latest Claude Opus/Sonnet, switchable with /model | Inferred | - | - | The specific point release rotates every few months; the family is the durable fact. | https://toolweight.com/compare/coding-agents#claude-code--default_model | | Model breadth | one vendor + custom endpoint | Vendor-claimed | - | https://docs.claude.com/en/docs/claude-code/third-party-integrations | Claude models only, but ANTHROPIC_BASE_URL is a documented path to an LLM gateway or corporate proxy of your choosing, alongside Bedrock and Vertex. The endpoint is yours; the models on the other end are still Anthropic's, which is what separates this tier from multi-vendor. Codex CLI and Qwen Code are graded here on the same rule. | https://toolweight.com/compare/coding-agents#claude-code--model_breadth | | Repo indexing | agentic grep | Community-reported | - | - | No embeddings index by design, it searches on demand rather than pre-indexing. | https://toolweight.com/compare/coding-agents#claude-code--repo_indexing | | Plan mode | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#claude-code--plan_mode | | Checkpoint & undo | ● | Community-reported | - | - | Session rewind restores conversation and file state together. | https://toolweight.com/compare/coding-agents#claude-code--checkpointing | | Headless / CI | ● | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/sdk | - | https://toolweight.com/compare/coding-agents#claude-code--headless_ci | | Local models | ○ | Community-reported | - | - | No documented local-model path. Third-party proxies exist, but this column credits vendor-documented support only, the same rule that keeps Gemini CLI at no and puts GitHub Copilot at partial. | https://toolweight.com/compare/coding-agents#claude-code--local_models | | Where it stops | 4 | Inferred | - | - | Hosted cloud sessions clone the repo, push a branch and open the pull request with no workflow of yours, and the Claude GitHub App covers the in-repo path. Invoking gh is not what earns this rung, any harness with a shell can do that. With approvals disabled and a privileged token it will merge, but that is you removing the gate, not rung 5 shipping. | https://toolweight.com/compare/coding-agents#claude-code--stops_at | | MCP | ● | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/mcp | - | https://toolweight.com/compare/coding-agents#claude-code--mcp_support | | Subagents | ● | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/sub-agents | - | https://toolweight.com/compare/coding-agents#claude-code--subagents | | Hooks | ● | Vendor-claimed | 2026-11-06 | https://code.claude.com/docs/en/hooks | - | https://toolweight.com/compare/coding-agents#claude-code--hooks | | Skills / commands | ● | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/slash-commands | - | https://toolweight.com/compare/coding-agents#claude-code--skills_commands | | Background agents | ● | Vendor-claimed | - | https://code.claude.com/docs/en/claude-code-on-the-web | Hosted cloud sessions keep running after the browser closes. Backgrounded local tasks do not survive closing the client and are not what earns this cell. | https://toolweight.com/compare/coding-agents#claude-code--background_agents | | Opens PRs | ● | Vendor-claimed | - | https://code.claude.com/docs/en/github-actions | The Claude GitHub App (installed by /install-github-app) pushes and raises PRs under its own identity, and hosted cloud sessions do it with no CI of yours at all. Graded on the App and the hosted runner, not on the ability to shell out to gh. | https://toolweight.com/compare/coding-agents#claude-code--pr_authoring | | Permissions | allowlist + OS sandbox | Vendor-claimed | 2026-01-15 | https://docs.claude.com/en/docs/claude-code/iam | - | https://toolweight.com/compare/coding-agents#claude-code--permission_model | | BYOK | ● | Inferred | - | - | Point it at your own Anthropic, Bedrock or Vertex account and nothing is disabled or plan-gated, which is what this field asks. That the key can only buy Claude models is a model-breadth fact, scored in that column, counting it twice here would penalise the same limitation once per column. Gemini CLI, equally single-vendor, is graded the same way. | https://toolweight.com/compare/coding-agents#claude-code--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#claude-code--licence | | Pricing model | subscription + token overage | Vendor-claimed | 2026-01-15 | https://www.anthropic.com/pricing | - | https://toolweight.com/compare/coding-agents#claude-code--pricing_model | | Entry price | $20/seat/mo | Vendor-claimed | 2026-11-06 | https://claude.com/pricing | - | https://toolweight.com/compare/coding-agents#claude-code--entry_price | | Token markup | ○ | Inferred | - | - | API-key use bills at Anthropic list price. | https://toolweight.com/compare/coding-agents#claude-code--gateway_markup | | GitHub stars | 155,000 | Measured by Toolweight | 2026-11-07 | https://api.github.com/repos/anthropics/claude-code | - | https://toolweight.com/compare/coding-agents#claude-code--github_stars | | Terminal-Bench | 51.8% | Vendor-claimed | 2026-11-07 | https://www.anthropic.com/claude/opus | - | https://toolweight.com/compare/coding-agents#claude-code--terminal_bench | | Bench model | Claude Opus 5 | Vendor-claimed | 2026-11-07 | https://www.anthropic.com/claude/opus | - | https://toolweight.com/compare/coding-agents#claude-code--terminal_bench_model | | Positioning | Anthropic's coding agent, in your terminal and wherever else you work. | Vendor-claimed | - | https://claude.com/product/claude-code | - | https://toolweight.com/compare/coding-agents#claude-code--positioning | | First release | 2025-02-24 | Community-reported | - | - | Research preview alongside Claude 3.7 Sonnet. | https://toolweight.com/compare/coding-agents#claude-code--first_release | **Verdict.** The most complete extensibility surface here, at the cost of lock-in to one model vendor. **Pick it when** - Terminal-native teams who want subagents and hooks without building them - Repos where an OS sandbox is a hard requirement for unattended runs - Anyone already paying for Max who wants the subscription to cover agent use ### Codex CLI {#codex-cli} OpenAI's open-source Rust agent, with the strongest local sandboxing on this page. | | | | --- | --- | | Site | https://developers.openai.com/codex/cli | | Docs | https://developers.openai.com/codex | | Repo | https://github.com/openai/codex | | Company | OpenAI | | Founded | 2025 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/codex-cli | | Score (default weights) | 76.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, IDE extension, web, cloud delegate | Vendor-claimed | 2026-01-15 | https://developers.openai.com/codex | - | https://toolweight.com/compare/coding-agents#codex-cli--surface | | Default model | Latest GPT-5 Codex model | Inferred | - | - | Point release rotates; the Codex-tuned family is the constant. | https://toolweight.com/compare/coding-agents#codex-cli--default_model | | Model breadth | one vendor + custom endpoint | Vendor-claimed | 2026-01-15 | https://github.com/openai/codex/blob/main/docs/config.md | First-class for OpenAI; arbitrary OpenAI-compatible providers configurable, including local servers. | https://toolweight.com/compare/coding-agents#codex-cli--model_breadth | | Repo indexing | agentic grep | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#codex-cli--repo_indexing | | Plan mode | ◐ | Inferred | - | - | Plans internally and surfaces the plan, but there is no read-only approval gate before edits. | https://toolweight.com/compare/coding-agents#codex-cli--plan_mode | | Checkpoint & undo | ◐ | Community-reported | - | - | Sessions resume, but there is no working-tree rollback beyond git. | https://toolweight.com/compare/coding-agents#codex-cli--checkpointing | | Headless / CI | ● | Vendor-claimed | 2026-11-06 | https://learn.chatgpt.com/docs/codex/cli | - | https://toolweight.com/compare/coding-agents#codex-cli--headless_ci | | Local models | ● | Community-reported | - | - | Via the OpenAI-compatible provider config; tool-use reliability depends entirely on the local model. | https://toolweight.com/compare/coding-agents#codex-cli--local_models | | Where it stops | 4 | Inferred | - | - | The local CLI stops at rung 3; Codex cloud tasks push branches and open PRs. | https://toolweight.com/compare/coding-agents#codex-cli--stops_at | | MCP | ● | Vendor-claimed | 2026-11-06 | https://learn.chatgpt.com/docs/codex/cli | - | https://toolweight.com/compare/coding-agents#codex-cli--mcp_support | | Subagents | ○ | Community-reported | - | - | No first-class child-agent primitive at our last pass. | https://toolweight.com/compare/coding-agents#codex-cli--subagents | | Hooks | ◐ | Community-reported | - | - | Notification hooks exist; they cannot veto a tool call. | https://toolweight.com/compare/coding-agents#codex-cli--hooks | | Skills / commands | ◐ | Community-reported | - | - | Custom prompt files plus AGENTS.md, short of a full skills system. | https://toolweight.com/compare/coding-agents#codex-cli--skills_commands | | Background agents | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#codex-cli--background_agents | | Opens PRs | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#codex-cli--pr_authoring | | Permissions | allowlist + OS sandbox | Vendor-claimed | 2026-01-15 | https://github.com/openai/codex | Seatbelt on macOS, Landlock on Linux, with approval modes layered on top. | https://toolweight.com/compare/coding-agents#codex-cli--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#codex-cli--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-11-06 | https://github.com/openai/codex | - | https://toolweight.com/compare/coding-agents#codex-cli--licence | | Pricing model | subscription + token overage | Inferred | 2026-01-15 | - | Included with ChatGPT paid plans, or metered against an API key. | https://toolweight.com/compare/coding-agents#codex-cli--pricing_model | | Entry price | $20/seat/mo | Vendor-claimed | 2026-01-15 | https://openai.com/chatgpt/pricing/ | - | https://toolweight.com/compare/coding-agents#codex-cli--entry_price | | Token markup | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#codex-cli--gateway_markup | | GitHub stars | 42,000 | Community-reported | - | - | Rounded; stars move weekly. | https://toolweight.com/compare/coding-agents#codex-cli--github_stars | | Terminal-Bench | 62.9% | Community-reported | 2026-11-07 | https://www.tbench.ai/?version=2.0 | - | https://toolweight.com/compare/coding-agents#codex-cli--terminal_bench | | Bench model | GPT-5.2 | Community-reported | 2026-11-07 | https://www.tbench.ai/?version=2.0 | - | https://toolweight.com/compare/coding-agents#codex-cli--terminal_bench_model | | Positioning | A coding agent that runs locally, in your terminal. | Vendor-claimed | 2026-11-06 | https://github.com/openai/codex | - | https://toolweight.com/compare/coding-agents#codex-cli--positioning | | First release | 2025-04-16 | Community-reported | - | - | Original TypeScript release; rewritten in Rust later that year. | https://toolweight.com/compare/coding-agents#codex-cli--first_release | **Verdict.** The best local containment story here, but weaker than Claude Code on orchestration primitives. **Pick it when** - Unattended local runs where a real OS sandbox is non-negotiable - Teams already on ChatGPT business plans wanting agent use covered - Anyone who wants an Apache-2.0 harness they can audit and fork ### Goose {#goose} Block's Apache-2.0 agent, MCP-native from the start, as both a CLI and a desktop app. | | | | --- | --- | | Site | https://block.github.io/goose/ | | Docs | https://block.github.io/goose/docs/ | | Repo | https://github.com/block/goose | | Company | Block | | Founded | 2025 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/goose | | Score (default weights) | 75.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, standalone editor | Vendor-claimed | 2026-01-15 | https://block.github.io/goose/docs/ | A CLI plus a desktop app. | https://toolweight.com/compare/coding-agents#goose--surface | | Default model | None, you configure a provider on first run | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-01-15 | https://block.github.io/goose/docs/getting-started/providers | - | https://toolweight.com/compare/coding-agents#goose--model_breadth | | Repo indexing | agentic grep | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#goose--repo_indexing | | Plan mode | ● | Community-reported | - | - | A dedicated plan mode ships in the CLI. | https://toolweight.com/compare/coding-agents#goose--plan_mode | | Checkpoint & undo | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#goose--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | goose run executes a recipe or instruction non-interactively. | https://toolweight.com/compare/coding-agents#goose--headless_ci | | Local models | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--local_models | | Where it stops | 3 | Inferred | - | - | Edits and runs commands; PR authoring only if you wire up an MCP server for it. | https://toolweight.com/compare/coding-agents#goose--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | MCP-native, extensions simply are MCP servers. | https://toolweight.com/compare/coding-agents#goose--mcp_support | | Subagents | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#goose--subagents | | Hooks | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#goose--hooks | | Skills / commands | ● | Inferred | 2026-01-15 | - | Recipes are shareable, parameterised task definitions. | https://toolweight.com/compare/coding-agents#goose--skills_commands | | Background agents | ◐ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#goose--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#goose--pr_authoring | | Permissions | allowlist + OS sandbox | Community-reported | - | - | Corrected upward for consistency: permission modes from chat-only to fully automatic, plus a macOS Seatbelt sandbox with an egress proxy shipped by Goose itself, off by default. That is the same arrangement Gemini CLI is credited for, and this column grades the strongest boundary available rather than the default one. On Linux there is no built-in sandbox, so containerise it yourself for unattended work. | https://toolweight.com/compare/coding-agents#goose--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-01-15 | https://github.com/block/goose | - | https://toolweight.com/compare/coding-agents#goose--licence | | Pricing model | BYOK tokens only | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--entry_price | | Token markup | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#goose--gateway_markup | | GitHub stars | 20,000 | Community-reported | - | - | Rounded. | https://toolweight.com/compare/coding-agents#goose--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#goose--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#goose--terminal_bench_model | | Positioning | An open-source, extensible AI agent that goes beyond code suggestions. | Vendor-claimed | - | https://block.github.io/goose/ | - | https://toolweight.com/compare/coding-agents#goose--positioning | | First release | 2025-01-28 | Community-reported | - | - | Block's open-source release of the rewritten agent. | https://toolweight.com/compare/coding-agents#goose--first_release | **Verdict.** The most MCP-committed harness here, a safer open-source bet than most, but it stops at your working tree. **Pick it when** - Organisations with an existing fleet of internal MCP servers - Recipes: parameterised, shareable tasks run non-interactively - Teams wanting an Apache-2.0 agent with a desktop app for non-terminal users ### GitHub Copilot (Agent HQ) {#github-copilot} Copilot's coding agent plus a control plane for running third-party agents on your repos. | | | | --- | --- | | Site | https://github.com/features/copilot | | Docs | https://docs.github.com/en/copilot | | Company | GitHub | | Founded | 2021 | | Open source | No | | Profile | https://toolweight.com/tools/github-copilot | | Score (default weights) | 75.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | GitHub-native, IDE extension, CLI, web, cloud delegate | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/copilot | - | https://toolweight.com/compare/coding-agents#github-copilot--surface | | Default model | Selectable across OpenAI, Anthropic and Google models | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--default_model | | Model breadth | multi-vendor | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--model_breadth | | Repo indexing | hybrid index + agentic | Inferred | 2026-01-15 | - | GitHub already indexes the repo for code search; the agent reads from that plus live search. | https://toolweight.com/compare/coding-agents#github-copilot--repo_indexing | | Plan mode | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#github-copilot--plan_mode | | Checkpoint & undo | ◐ | Inferred | - | - | The agent's work is a branch, so reverting is a git operation. | https://toolweight.com/compare/coding-agents#github-copilot--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | The coding agent runs inside GitHub Actions by design. | https://toolweight.com/compare/coding-agents#github-copilot--headless_ci | | Local models | ◐ | Vendor-claimed | - | https://code.visualstudio.com/docs/copilot/customization/language-models | Corrected: VS Code documents adding a local Ollama model through Manage Models, so this is not a no. It is partial rather than yes because a local model only appears for agent work if it supports tool calling, which many do not, exactly the unreliability this field's partial describes. | https://toolweight.com/compare/coding-agents#github-copilot--local_models | | Where it stops | 4 | Vendor-claimed | 2026-01-15 | https://docs.github.com/en/copilot/using-github-copilot/coding-agent | Rung 4 is the deliberate ceiling: the agent pushes to a branch and opens a PR, and is structurally barred from approving its own work. | https://toolweight.com/compare/coding-agents#github-copilot--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--mcp_support | | Subagents | ◐ | Inferred | - | - | Agent HQ dispatches third-party agents rather than spawning child agents of its own. | https://toolweight.com/compare/coding-agents#github-copilot--subagents | | Hooks | ● | Vendor-claimed | 2026-11-07 | https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-hooks | - | https://toolweight.com/compare/coding-agents#github-copilot--hooks | | Skills / commands | ● | Inferred | 2026-01-15 | - | Repo-level custom instructions and prompt files. | https://toolweight.com/compare/coding-agents#github-copilot--skills_commands | | Background agents | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--background_agents | | Opens PRs | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--pr_authoring | | Permissions | vendor-hosted sandbox | Inferred | 2026-01-15 | - | Runs in a GitHub-hosted Actions runner, so nothing executes on your machine, and under a bot identity inside your existing branch protections. This column ranks a vendor-hosted boundary level with a local kernel sandbox rather than below it: you get isolation without visibility into it, which is a trade rather than a deficit. | https://toolweight.com/compare/coding-agents#github-copilot--permission_model | | BYOK | ◐ | Community-reported | - | - | BYOK exists for some models and plans; the coding agent assumes GitHub's own billing. | https://toolweight.com/compare/coding-agents#github-copilot--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#github-copilot--licence | | Pricing model | subscription + token overage | Vendor-claimed | 2026-01-15 | https://github.com/features/copilot/plans | Seat price plus premium requests above the included allowance. | https://toolweight.com/compare/coding-agents#github-copilot--pricing_model | | Entry price | $10/seat/mo | Vendor-claimed | 2026-01-15 | https://github.com/features/copilot/plans | - | https://toolweight.com/compare/coding-agents#github-copilot--entry_price | | Token markup | ◐ | Inferred | - | - | Premium-request multipliers vary by model and are not a published token conversion. | https://toolweight.com/compare/coding-agents#github-copilot--gateway_markup | | GitHub stars | - | Unknown | - | - | Closed source. | https://toolweight.com/compare/coding-agents#github-copilot--github_stars | | Terminal-Bench | 60.4% | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/copilot-cli__claude-opus-4.6/2026-04-02__18-13-37/result.json | - | https://toolweight.com/compare/coding-agents#github-copilot--terminal_bench | | Bench model | Claude Opus 4.6, Terminal-Bench 2.0 | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/copilot-cli__claude-opus-4.6/metadata.yaml | - | https://toolweight.com/compare/coding-agents#github-copilot--terminal_bench_model | | Positioning | Mission control for every agent working on your repositories. | Vendor-claimed | - | https://github.com/features/copilot | - | https://toolweight.com/compare/coding-agents#github-copilot--positioning | | First release | 2021-06-29 | Community-reported | - | - | Original Copilot preview; Agent HQ was announced in October 2025. | https://toolweight.com/compare/coding-agents#github-copilot--first_release | **Verdict.** The only vendor to properly solve agent identity, with opaque premium-request billing. **Pick it when** - Enterprises needing audit trails and existing branch protections respected - Running several vendors' agents on one repo without separate integrations - Teams whose review process already lives entirely in GitHub ### Cursor {#cursor} VS Code fork with a real codebase index, background cloud agents and a CLI. | | | | --- | --- | | Site | https://cursor.com | | Docs | https://docs.cursor.com | | Company | Anysphere | | Founded | 2022 | | Funding | Series C+ | | Open source | No | | Profile | https://toolweight.com/tools/cursor | | Score (default weights) | 75.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | standalone editor, CLI, web, cloud delegate | Vendor-claimed | 2026-01-15 | https://docs.cursor.com | - | https://toolweight.com/compare/coding-agents#cursor--surface | | Default model | Cursor's in-house Composer model, with frontier models selectable | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#cursor--default_model | | Model breadth | multi-vendor | Inferred | 2026-01-15 | - | Anthropic, OpenAI, Google and in-house models through Cursor's gateway. | https://toolweight.com/compare/coding-agents#cursor--model_breadth | | Repo indexing | embeddings index | Vendor-claimed | 2026-01-15 | https://docs.cursor.com/context/codebase-indexing | A genuine persistent vector index, and the reason it holds up on large repos. Not unique here: Windsurf and Kilo Code also index, and Copilot and Devin pair an index with live search, which this column ranks higher again. | https://toolweight.com/compare/coding-agents#cursor--repo_indexing | | Plan mode | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#cursor--plan_mode | | Checkpoint & undo | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cursor--checkpointing | | Headless / CI | ● | Community-reported | - | - | The Cursor CLI supports non-interactive runs. | https://toolweight.com/compare/coding-agents#cursor--headless_ci | | Local models | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#cursor--local_models | | Where it stops | 4 | Inferred | - | - | Background agents run on Cursor's infrastructure and open pull requests. | https://toolweight.com/compare/coding-agents#cursor--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cursor--mcp_support | | Subagents | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#cursor--subagents | | Hooks | ● | Community-reported | - | - | Lifecycle hooks added during 2025. | https://toolweight.com/compare/coding-agents#cursor--hooks | | Skills / commands | ● | Inferred | 2026-01-15 | - | Repo-scoped rules files and custom commands. | https://toolweight.com/compare/coding-agents#cursor--skills_commands | | Background agents | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cursor--background_agents | | Opens PRs | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cursor--pr_authoring | | Permissions | allowlist + OS sandbox | Community-reported | - | - | Auto-run allowlist plus a sandboxed terminal mode; weaker than Codex's kernel-level containment. | https://toolweight.com/compare/coding-agents#cursor--permission_model | | BYOK | ◐ | Community-reported | - | - | You can supply provider keys, but several agent features assume Cursor's own gateway. | https://toolweight.com/compare/coding-agents#cursor--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cursor--licence | | Pricing model | subscription + token overage | Vendor-claimed | 2026-01-15 | https://cursor.com/pricing | - | https://toolweight.com/compare/coding-agents#cursor--pricing_model | | Entry price | $20/seat/mo | Vendor-claimed | 2026-01-15 | https://cursor.com/pricing | - | https://toolweight.com/compare/coding-agents#cursor--entry_price | | Token markup | ◐ | Community-reported | - | - | Cursor states usage-based spend is billed at provider rates for most models; it has carried a margin in the past. Verify before budgeting. | https://toolweight.com/compare/coding-agents#cursor--gateway_markup | | GitHub stars | - | Unknown | 2026-11-07 | - | Closed source. | https://toolweight.com/compare/coding-agents#cursor--github_stars | | Terminal-Bench | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#cursor--terminal_bench | | Bench model | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#cursor--terminal_bench_model | | Positioning | The AI code editor, built to make you extraordinarily productive. | Vendor-claimed | - | https://cursor.com | - | https://toolweight.com/compare/coding-agents#cursor--positioning | | First release | 2023-03-01 | Community-reported | - | - | Approximate. | https://toolweight.com/compare/coding-agents#cursor--first_release | **Verdict.** A real persistent codebase index inside the editor you review in, paid for in lock-in. **Pick it when** - Large monorepos where agentic grep runs out of context before it finds anything - Teams who want to review agentic diffs in an editor rather than a terminal - Shops wanting background PR-opening agents without wiring up CI ### Gemini CLI {#gemini-cli} Apache-2.0 terminal agent from Google with an unusually generous free tier. | | | | --- | --- | | Site | https://google-gemini.github.io/gemini-cli/ | | Repo | https://github.com/google-gemini/gemini-cli | | Company | Google | | Founded | 2025 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/gemini-cli | | Score (default weights) | 74.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, IDE extension, GitHub-native | Vendor-claimed | 2026-01-15 | https://github.com/google-gemini/gemini-cli | - | https://toolweight.com/compare/coding-agents#gemini-cli--surface | | Default model | Latest Gemini Pro | Inferred | - | - | Falls back to a Flash model when the Pro quota is exhausted. | https://toolweight.com/compare/coding-agents#gemini-cli--default_model | | Model breadth | one vendor | Inferred | - | - | Gemini models via API key or Vertex; no other vendors upstream. Users report a base-URL override that would put this a tier higher, but we could not find first-party documentation for one, and this column credits documented endpoints only. | https://toolweight.com/compare/coding-agents#gemini-cli--model_breadth | | Repo indexing | agentic grep | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--repo_indexing | | Plan mode | ◐ | Community-reported | - | - | Planning behaviour exists but the approval gate is weaker than Cline's or Claude Code's. | https://toolweight.com/compare/coding-agents#gemini-cli--plan_mode | | Checkpoint & undo | ● | Vendor-claimed | 2026-01-15 | https://github.com/google-gemini/gemini-cli | /restore reverts file changes made during the session. | https://toolweight.com/compare/coding-agents#gemini-cli--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--headless_ci | | Local models | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--local_models | | Where it stops | 3 | Inferred | - | - | The CLI edits and runs tests. Google ships an official Action but no GitHub App, so the branch is pushed by a workflow you install and maintain rather than by a first-party identity, the line this page draws between rung 3 and rung 4, and the same line that puts Claude Code and opencode above it. | https://toolweight.com/compare/coding-agents#gemini-cli--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--mcp_support | | Subagents | ◐ | Community-reported | - | - | Subagent support landed as an experimental feature; maturity unverified. | https://toolweight.com/compare/coding-agents#gemini-cli--subagents | | Hooks | ● | Vendor-claimed | 2026-11-07 | https://geminicli.com/docs/hooks/ | - | https://toolweight.com/compare/coding-agents#gemini-cli--hooks | | Skills / commands | ● | Inferred | 2026-01-15 | - | Custom slash commands defined in TOML and checked into the repo. | https://toolweight.com/compare/coding-agents#gemini-cli--skills_commands | | Background agents | ◐ | Inferred | - | - | Via the GitHub Action; Google's separate async agent is a different product. | https://toolweight.com/compare/coding-agents#gemini-cli--background_agents | | Opens PRs | ◐ | Inferred | - | https://github.com/google-github-actions/run-gemini-cli | Official GitHub Action, installed by /setup-github into your own workflows; there is no Gemini CLI GitHub App. Its documented workflows also lean towards reviewing and triaging rather than authoring, which is why this is partial rather than yes. | https://toolweight.com/compare/coding-agents#gemini-cli--pr_authoring | | Permissions | allowlist + OS sandbox | Inferred | 2026-01-15 | - | Optional Docker, Podman or macOS Seatbelt sandbox shipped by the harness, off by default. This column grades the strongest boundary available rather than the default one, which is why Goose, an optional Seatbelt sandbox, also off by default, is graded identically. | https://toolweight.com/compare/coding-agents#gemini-cli--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-01-15 | https://github.com/google-gemini/gemini-cli | - | https://toolweight.com/compare/coding-agents#gemini-cli--licence | | Pricing model | subscription + token overage | Inferred | - | - | The headline free tier is a vendor-provided quota on a personal Google account, not your key, so this is not BYOK-only. Above the quota you either bring an API key or buy a Code Assist seat, which is a subscription with metered overage. Qwen Code's free quota is the same shape but has no seat behind it, so it stays encoded as BYOK. | https://toolweight.com/compare/coding-agents#gemini-cli--pricing_model | | Entry price | $0/seat/mo | Vendor-claimed | 2026-01-15 | https://github.com/google-gemini/gemini-cli | The free tier is real and generous; paid Code Assist seats are roughly $19. | https://toolweight.com/compare/coding-agents#gemini-cli--entry_price | | Token markup | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#gemini-cli--gateway_markup | | GitHub stars | 75,000 | Community-reported | - | - | Rounded; one of the fastest-starred developer repos of 2025. | https://toolweight.com/compare/coding-agents#gemini-cli--github_stars | | Terminal-Bench | 59.8% | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/Gemini_CLI__Gemini-3.1-Pro-Preview/eval-pro-3.1-preview/result.json | Terminal-Bench 2.0 | https://toolweight.com/compare/coding-agents#gemini-cli--terminal_bench | | Bench model | Gemini 3.1 Pro Preview, Terminal-Bench 2.0 | Community-reported | 2026-11-07 | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/Gemini_CLI__Gemini-3.1-Pro-Preview/metadata.yaml | - | https://toolweight.com/compare/coding-agents#gemini-cli--terminal_bench_model | | Positioning | An open-source AI agent that brings Gemini into your terminal. | Vendor-claimed | - | https://google-gemini.github.io/gemini-cli/ | - | https://toolweight.com/compare/coding-agents#gemini-cli--positioning | | First release | 2025-06-25 | Community-reported | - | https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/ | - | https://toolweight.com/compare/coding-agents#gemini-cli--first_release | **Verdict.** The cheapest credible daily agent, a step behind on orchestration, with its PR path in a separate Action. **Pick it when** - Solo developers and students who want daily agent use at zero cost - Teams already on Vertex who want one billing relationship - Anyone wanting an Apache-2.0 base to fork, as Qwen Code did ### Kilo Code {#kilo-code} Open-source VS Code agent in the Cline/Roo lineage, with an orchestrator mode and a CLI. | | | | --- | --- | | Site | https://kilocode.ai | | Repo | https://github.com/Kilo-Org/kilocode | | Company | Kilo Code | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/kilo-code | | Score (default weights) | 73.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | IDE extension, CLI | Community-reported | - | - | VS Code extension first; a CLI followed. | https://toolweight.com/compare/coding-agents#kilo-code--surface | | Default model | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#kilo-code--default_model | | Model breadth | any provider / router | Community-reported | - | - | Inherits broad provider support from the Cline/Roo lineage. | https://toolweight.com/compare/coding-agents#kilo-code--model_breadth | | Repo indexing | embeddings index | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--repo_indexing | | Plan mode | ● | Community-reported | - | - | The mode system includes architect and orchestrator modes. | https://toolweight.com/compare/coding-agents#kilo-code--plan_mode | | Checkpoint & undo | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--checkpointing | | Headless / CI | ◐ | Inferred | - | - | Via the CLI; maturity unverified. | https://toolweight.com/compare/coding-agents#kilo-code--headless_ci | | Local models | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--local_models | | Where it stops | 3 | Inferred | - | - | Edits and runs commands in the IDE terminal; no first-class PR path we could verify. | https://toolweight.com/compare/coding-agents#kilo-code--stops_at | | MCP | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--mcp_support | | Subagents | ● | Community-reported | - | - | Orchestrator mode delegates to specialised sub-modes. | https://toolweight.com/compare/coding-agents#kilo-code--subagents | | Hooks | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#kilo-code--hooks | | Skills / commands | ● | Community-reported | - | - | Custom modes and rules files. | https://toolweight.com/compare/coding-agents#kilo-code--skills_commands | | Background agents | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--pr_authoring | | Permissions | granular allowlist | Inferred | - | - | Auto-approve settings per action class, as in Cline; no OS sandbox. | https://toolweight.com/compare/coding-agents#kilo-code--permission_model | | BYOK | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--byok | | Licence | Apache-2.0 | Community-reported | - | https://github.com/Kilo-Org/kilocode | - | https://toolweight.com/compare/coding-agents#kilo-code--licence | | Pricing model | BYOK tokens only | Inferred | - | - | Free extension with optional first-party credits. | https://toolweight.com/compare/coding-agents#kilo-code--pricing_model | | Entry price | $0/seat/mo | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--entry_price | | Token markup | ○ | Inferred | - | - | BYOK at provider list is the default path, which is what this column asks. It also sells first-party credits whose margin we have not verified, the same optional arrangement opencode, Cline and Zed have, and all four are graded the same. | https://toolweight.com/compare/coding-agents#kilo-code--gateway_markup | | GitHub stars | 9,000 | Community-reported | - | - | Rounded, low confidence. | https://toolweight.com/compare/coding-agents#kilo-code--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#kilo-code--terminal_bench_model | | Positioning | Open-source AI coding agent for VS Code, with everything included. | Vendor-claimed | - | https://kilocode.ai | - | https://toolweight.com/compare/coding-agents#kilo-code--positioning | | First release | 2025-03-01 | Inferred | - | - | Approximate, we have not verified the first public release date. | https://toolweight.com/compare/coding-agents#kilo-code--first_release | **Verdict.** A fast Cline and Roo Code descendant with orchestrator mode, but the least-documented commercial side here. **Pick it when** - VS Code teams who want mode-based orchestration without leaving the IDE - People who liked Roo Code and want a more actively developed descendant ### Qwen Code {#qwen-code} Apache-2.0 Gemini CLI fork tuned for Qwen3-Coder, with a large free daily quota. | | | | --- | --- | | Site | https://qwenlm.github.io/qwen-code-docs/ | | Repo | https://github.com/QwenLM/qwen-code | | Company | Alibaba | | Founded | 2025 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/qwen-code | | Score (default weights) | 71.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI | Vendor-claimed | 2026-01-15 | https://github.com/QwenLM/qwen-code | - | https://toolweight.com/compare/coding-agents#qwen-code--surface | | Default model | Latest Qwen3-Coder model | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#qwen-code--default_model | | Model breadth | one vendor + custom endpoint | Inferred | 2026-01-15 | - | Tuned for Qwen but speaks OpenAI-compatible endpoints, so routers and local servers work. | https://toolweight.com/compare/coding-agents#qwen-code--model_breadth | | Repo indexing | agentic grep | Inferred | - | - | Inherited from Gemini CLI. | https://toolweight.com/compare/coding-agents#qwen-code--repo_indexing | | Plan mode | ◐ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--plan_mode | | Checkpoint & undo | ● | Inferred | - | - | Inherits Gemini CLI's restore mechanism. | https://toolweight.com/compare/coding-agents#qwen-code--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#qwen-code--headless_ci | | Local models | ● | Community-reported | - | - | Open-weight Qwen models, plus any OpenAI-compatible local server. | https://toolweight.com/compare/coding-agents#qwen-code--local_models | | Where it stops | 3 | Inferred | - | - | Edits files and runs commands locally; no PR path. | https://toolweight.com/compare/coding-agents#qwen-code--stops_at | | MCP | ● | Inferred | - | - | Inherited from the upstream fork. | https://toolweight.com/compare/coding-agents#qwen-code--mcp_support | | Subagents | ● | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/QwenLM/qwen-code/main/docs/users/features/sub-agents.md | - | https://toolweight.com/compare/coding-agents#qwen-code--subagents | | Hooks | ● | Vendor-claimed | 2026-11-07 | https://qwenlm.github.io/qwen-code-docs/en/users/features/hooks/ | - | https://toolweight.com/compare/coding-agents#qwen-code--hooks | | Skills / commands | ● | Inferred | - | - | TOML custom commands, as upstream. | https://toolweight.com/compare/coding-agents#qwen-code--skills_commands | | Background agents | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--pr_authoring | | Permissions | granular allowlist | Inferred | - | - | Approval modes inherited from Gemini CLI. The upstream sandbox may well have come across with the fork, which would put this a tier higher alongside Gemini CLI and Goose, but we could not confirm it in the fork's own documentation and we grade the control we can confirm. | https://toolweight.com/compare/coding-agents#qwen-code--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#qwen-code--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-01-15 | https://github.com/QwenLM/qwen-code | - | https://toolweight.com/compare/coding-agents#qwen-code--licence | | Pricing model | BYOK tokens only | Inferred | 2026-01-15 | - | The free daily quota is a vendor-provided allowance on a Qwen account rather than your key, the same shape as Gemini CLI's. It stays encoded as BYOK because there is no paid seat behind it that we can name; above the quota you bring a key. Gemini CLI is encoded a tier lower precisely because it does sell a seat. | https://toolweight.com/compare/coding-agents#qwen-code--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#qwen-code--entry_price | | Token markup | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--gateway_markup | | GitHub stars | 13,000 | Community-reported | - | - | Rounded, moderate confidence. | https://toolweight.com/compare/coding-agents#qwen-code--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#qwen-code--terminal_bench_model | | Positioning | A command-line coding agent tuned for the Qwen3-Coder models. | Vendor-claimed | - | https://qwenlm.github.io/qwen-code-docs/ | - | https://toolweight.com/compare/coding-agents#qwen-code--positioning | | First release | 2025-07-01 | Community-reported | - | - | Approximate. | https://toolweight.com/compare/coding-agents#qwen-code--first_release | **Verdict.** The clearest route to strong open-weight models in a mature loop, with a viable free quota. **Pick it when** - Running open-weight coding models without building a harness - Regions or budgets where frontier API pricing is the blocker - Air-gapped or self-hosted inference behind an OpenAI-compatible endpoint ### Cline {#cline} Open-source VS Code and JetBrains agent built around an explicit plan/act split. | | | | --- | --- | | Site | https://cline.bot | | Docs | https://docs.cline.bot | | Repo | https://github.com/cline/cline | | Company | Cline | | Founded | 2024 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/cline | | Score (default weights) | 67.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | IDE extension, CLI | Vendor-claimed | 2026-11-06 | https://github.com/cline/cline | - | https://toolweight.com/compare/coding-agents#cline--surface | | Default model | None, you pick a provider at setup | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cline--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-01-15 | https://docs.cline.bot/provider-config/ | - | https://toolweight.com/compare/coding-agents#cline--model_breadth | | Repo indexing | agentic grep | Community-reported | - | - | Reads files on demand with a tree-sitter-assisted overview; no persistent vector index. | https://toolweight.com/compare/coding-agents#cline--repo_indexing | | Plan mode | ● | Inferred | 2026-01-15 | - | The Plan/Act split is the product's defining feature. | https://toolweight.com/compare/coding-agents#cline--plan_mode | | Checkpoint & undo | ● | Inferred | 2026-01-15 | - | Per-message workspace snapshots you can restore. | https://toolweight.com/compare/coding-agents#cline--checkpointing | | Headless / CI | ● | Vendor-claimed | 2026-11-06 | https://github.com/cline/cline | - | https://toolweight.com/compare/coding-agents#cline--headless_ci | | Local models | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#cline--local_models | | Where it stops | 3 | Inferred | - | - | Edits files and runs terminal commands with approval; no first-class PR path. | https://toolweight.com/compare/coding-agents#cline--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | Includes a marketplace, and can build a server for you on request. | https://toolweight.com/compare/coding-agents#cline--mcp_support | | Subagents | ○ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#cline--subagents | | Hooks | ○ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#cline--hooks | | Skills / commands | ● | Community-reported | - | - | Workflows and rules files checked into the repo. | https://toolweight.com/compare/coding-agents#cline--skills_commands | | Background agents | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#cline--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#cline--pr_authoring | | Permissions | granular allowlist | Inferred | 2026-01-15 | - | Per-action auto-approve with a configurable ceiling; no OS sandbox. | https://toolweight.com/compare/coding-agents#cline--permission_model | | BYOK | ● | Vendor-claimed | 2026-11-06 | https://cline.bot/pricing | - | https://toolweight.com/compare/coding-agents#cline--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-11-06 | https://github.com/cline/cline | - | https://toolweight.com/compare/coding-agents#cline--licence | | Pricing model | BYOK tokens only | Vendor-claimed | 2026-11-06 | https://cline.bot/pricing | - | https://toolweight.com/compare/coding-agents#cline--pricing_model | | Entry price | $0/seat/mo | Vendor-claimed | 2026-11-06 | https://cline.bot/pricing | - | https://toolweight.com/compare/coding-agents#cline--entry_price | | Token markup | ○ | Community-reported | - | - | BYOK at provider list is the default path. The optional Cline account is publicly positioned as pass-through pricing; we have not audited it, and the grade does not depend on that audit, an optional first-party gateway does not move this cell for Cline, opencode, Zed or Kilo Code. | https://toolweight.com/compare/coding-agents#cline--gateway_markup | | GitHub stars | 71,400 | Community-reported | 2026-11-06 | https://github.com/cline/cline | - | https://toolweight.com/compare/coding-agents#cline--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#cline--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#cline--terminal_bench_model | | Positioning | Autonomous coding agent in your IDE, with your API key. | Vendor-claimed | - | https://cline.bot | - | https://toolweight.com/compare/coding-agents#cline--positioning | | First release | 2024-07-01 | Community-reported | - | - | Approximate; originally released as Claude Dev. | https://toolweight.com/compare/coding-agents#cline--first_release | **Verdict.** The clearest plan/act interaction and safest BYOK default, but it stays inside the editor. **Pick it when** - VS Code and JetBrains teams who want BYOK without leaving the IDE - Reviewers who want to approve the plan before any file changes - MCP-heavy setups that benefit from the server marketplace ### DIY harness {#diy-harness} Your own loop over a model API with an agent SDK, the build-it-yourself reference point. | | | | --- | --- | | Site | https://toolweight.com/compare/coding-agents | | Company | DIY harness | | Open source | Yes | | Profile | https://toolweight.com/tools/diy-harness | | Score (default weights) | 60.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI | Inferred | - | - | Whatever you build it as. | https://toolweight.com/compare/coding-agents#diy-harness--surface | | Default model | Whichever you wire up | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--default_model | | Model breadth | any provider / router | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--model_breadth | | Repo indexing | manual context only | Inferred | - | - | Until you build something better, which is most of the work. | https://toolweight.com/compare/coding-agents#diy-harness--repo_indexing | | Plan mode | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--plan_mode | | Checkpoint & undo | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--checkpointing | | Headless / CI | ● | Inferred | - | - | It is a script; headless is the default. | https://toolweight.com/compare/coding-agents#diy-harness--headless_ci | | Local models | ● | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--local_models | | Where it stops | - | Unknown | - | - | There is no ceiling, it goes exactly as far as you build, and you own every rung. Not scored, because ranking your own code against shipped products would be meaningless. | https://toolweight.com/compare/coding-agents#diy-harness--stops_at | | MCP | ◐ | Inferred | - | - | Most agent SDKs ship an MCP client. | https://toolweight.com/compare/coding-agents#diy-harness--mcp_support | | Subagents | ◐ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--subagents | | Hooks | ● | Inferred | - | - | It is your code; every line is a hook. | https://toolweight.com/compare/coding-agents#diy-harness--hooks | | Skills / commands | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--skills_commands | | Background agents | ◐ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--background_agents | | Opens PRs | ◐ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--pr_authoring | | Permissions | applies everything | Inferred | - | - | Unless you build a permission layer, which almost nobody does properly. | https://toolweight.com/compare/coding-agents#diy-harness--permission_model | | BYOK | ● | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--byok | | Licence | - | Unknown | - | - | Yours. | https://toolweight.com/compare/coding-agents#diy-harness--licence | | Pricing model | BYOK tokens only | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--pricing_model | | Entry price | $0/seat/mo | Inferred | - | - | Zero licence cost, non-zero engineering cost, budget a fortnight before it is useful and a quarter before it is safe. | https://toolweight.com/compare/coding-agents#diy-harness--entry_price | | Token markup | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--gateway_markup | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--terminal_bench_model | | Positioning | The reference point: what you get for a few hundred lines and an API key. | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--positioning | | First release | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#diy-harness--first_release | **Verdict.** Right for narrow, repeated jobs, wrong for open-ended engineering. **Pick it when** - One repeated task with a known shape and a tight tool surface - Environments where no third-party harness can be installed - Understanding what the commercial harnesses are actually doing for you ### Zed {#zed} GPL-licensed Rust editor whose agent panel can host Claude Code, Codex and Gemini CLI. | | | | --- | --- | | Site | https://zed.dev | | Docs | https://zed.dev/docs/ai/overview | | Repo | https://github.com/zed-industries/zed | | Company | Zed | | Founded | 2021 | | Open source | Yes (GPL-3.0) | | Profile | https://toolweight.com/tools/zed | | Score (default weights) | 58.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | standalone editor | Vendor-claimed | 2026-01-15 | https://zed.dev/docs/ai/overview | - | https://toolweight.com/compare/coding-agents#zed--surface | | Default model | None, configure a provider, or sign in for hosted models | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#zed--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-01-15 | https://zed.dev/docs/ai/llm-providers | - | https://toolweight.com/compare/coding-agents#zed--model_breadth | | Repo indexing | AST / LSP repo map | Inferred | - | - | The editor's own LSP and tree-sitter infrastructure feeds the agent panel. | https://toolweight.com/compare/coding-agents#zed--repo_indexing | | Plan mode | ◐ | Community-reported | - | - | The agent panel's read-only Ask profile discusses and plans without touching files, but moving to a writing profile is a mode switch rather than approving a plan the agent then executes. Graded like Aider's architect mode: planning without an approval gate. | https://toolweight.com/compare/coding-agents#zed--plan_mode | | Checkpoint & undo | ● | Community-reported | - | - | Agent edits appear as reviewable, revertable changes in the editor. | https://toolweight.com/compare/coding-agents#zed--checkpointing | | Headless / CI | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#zed--headless_ci | | Local models | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#zed--local_models | | Where it stops | 3 | Inferred | - | - | The agent panel has a terminal tool, so it edits and runs commands. External agents hosted over ACP go further on their own terms. | https://toolweight.com/compare/coding-agents#zed--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | Context servers are MCP servers. | https://toolweight.com/compare/coding-agents#zed--mcp_support | | Subagents | ○ | Inferred | - | - | No child-agent primitive. The Agent Client Protocol lets Zed host another agent's whole loop, which is a different and genuinely useful thing, but it is not Zed spawning children and collecting their results, so it belongs in the verdict rather than in this cell. | https://toolweight.com/compare/coding-agents#zed--subagents | | Hooks | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#zed--hooks | | Skills / commands | ◐ | Community-reported | - | - | Rules files and slash commands. | https://toolweight.com/compare/coding-agents#zed--skills_commands | | Background agents | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#zed--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#zed--pr_authoring | | Permissions | granular allowlist | Inferred | - | - | Per-tool confirmation in the agent panel; no OS sandbox. | https://toolweight.com/compare/coding-agents#zed--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#zed--byok | | Licence | GPL-3.0 | Vendor-claimed | 2026-01-15 | https://github.com/zed-industries/zed | - | https://toolweight.com/compare/coding-agents#zed--licence | | Pricing model | BYOK tokens only | Inferred | 2026-01-15 | - | Free with your own key; a paid tier covers hosted models. | https://toolweight.com/compare/coding-agents#zed--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#zed--entry_price | | Token markup | ○ | Inferred | - | - | BYOK at provider list is the default path, not a downgrade. The paid hosted-model tier is the same optional first-party arrangement opencode, Cline and Kilo Code have, and all four are graded the same. | https://toolweight.com/compare/coding-agents#zed--gateway_markup | | GitHub stars | 62,000 | Community-reported | - | - | Rounded. | https://toolweight.com/compare/coding-agents#zed--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#zed--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#zed--terminal_bench_model | | Positioning | The editor for humans and AI, written in Rust. | Vendor-claimed | - | https://zed.dev | - | https://toolweight.com/compare/coding-agents#zed--positioning | | First release | 2023-03-22 | Community-reported | - | - | Editor launch; the agent panel arrived in 2025. | https://toolweight.com/compare/coding-agents#zed--first_release | **Verdict.** The hedge: a fast GPL editor hosting other agents over ACP, but weak as an agent itself. **Pick it when** - Driving Claude Code or Gemini CLI from an editor instead of a terminal - Teams who want a genuinely open-source editor with local-model support ### Aider {#aider} Minimal terminal pair-programmer with a tree-sitter repo map and automatic git commits. | | | | --- | --- | | Site | https://aider.chat | | Docs | https://aider.chat/docs/ | | Repo | https://github.com/Aider-AI/aider | | Company | Aider | | Founded | 2023 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/aider | | Score (default weights) | 57.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI | Vendor-claimed | 2026-01-15 | https://aider.chat/docs/ | - | https://toolweight.com/compare/coding-agents#aider--surface | | Default model | None, set by --model or environment keys | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--default_model | | Model breadth | any provider / router | Vendor-claimed | 2026-11-06 | https://aider.chat/docs/llms.html | - | https://toolweight.com/compare/coding-agents#aider--model_breadth | | Repo indexing | AST / LSP repo map | Vendor-claimed | 2026-01-15 | https://aider.chat/docs/repomap.html | The tree-sitter repo map is the original good idea in this category, and still one of the cheapest ways to give a model a whole-codebase view. | https://toolweight.com/compare/coding-agents#aider--repo_indexing | | Plan mode | ◐ | Inferred | - | - | Architect mode splits a reasoning model from an editing model, but there is no approve-the-plan gate. | https://toolweight.com/compare/coding-agents#aider--plan_mode | | Checkpoint & undo | ● | Inferred | 2026-01-15 | - | Every accepted change is a git commit; /undo reverts it. | https://toolweight.com/compare/coding-agents#aider--checkpointing | | Headless / CI | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--headless_ci | | Local models | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--local_models | | Where it stops | 3 | Inferred | - | - | With --test-cmd and --lint it runs the loop and fixes failures, then commits. No PR path. | https://toolweight.com/compare/coding-agents#aider--stops_at | | MCP | ○ | Community-reported | - | - | Long-standing gap; the tool predates MCP and development has slowed. | https://toolweight.com/compare/coding-agents#aider--mcp_support | | Subagents | ○ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#aider--subagents | | Hooks | ○ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#aider--hooks | | Skills / commands | ◐ | Inferred | - | - | Conventions files and built-in slash commands, but no reusable custom commands. | https://toolweight.com/compare/coding-agents#aider--skills_commands | | Background agents | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#aider--background_agents | | Opens PRs | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--pr_authoring | | Permissions | prompts every action | Inferred | 2026-01-15 | - | Confirms edits and shell commands; --yes disables that entirely. No sandbox. | https://toolweight.com/compare/coding-agents#aider--permission_model | | BYOK | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--byok | | Licence | Apache-2.0 | Vendor-claimed | 2026-01-15 | https://github.com/Aider-AI/aider | - | https://toolweight.com/compare/coding-agents#aider--licence | | Pricing model | BYOK tokens only | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--entry_price | | Token markup | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#aider--gateway_markup | | GitHub stars | 37,000 | Community-reported | - | - | Rounded. | https://toolweight.com/compare/coding-agents#aider--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#aider--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#aider--terminal_bench_model | | Positioning | AI pair programming in your terminal. | Vendor-claimed | - | https://aider.chat | - | https://toolweight.com/compare/coding-agents#aider--positioning | | First release | 2023-05-01 | Community-reported | - | - | Approximate. | https://toolweight.com/compare/coding-agents#aider--first_release | **Verdict.** The most auditable harness here, but visibly slowed while the category sprinted past. **Pick it when** - Scripted, repeatable edits where you want a git commit per change - Local or unusual model endpoints other harnesses will not talk to - Anyone who wants to read the whole harness in an afternoon ### Amp {#amp} Sourcegraph's opinionated agent with no model picker and an ad-supported free tier. | | | | --- | --- | | Site | https://ampcode.com | | Company | Sourcegraph | | Open source | No | | Profile | https://toolweight.com/tools/amp | | Score (default weights) | 56.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | CLI, IDE extension, web | Vendor-claimed | 2026-01-15 | https://ampcode.com | - | https://toolweight.com/compare/coding-agents#amp--surface | | Default model | Chosen by Amp, there is no model picker | Vendor-claimed | 2026-01-15 | https://ampcode.com | Deliberate: Sourcegraph moves everyone to whatever is currently best. | https://toolweight.com/compare/coding-agents#amp--default_model | | Model breadth | no model choice | Inferred | 2026-01-15 | - | Multiple vendors are used internally; none are user-selectable. | https://toolweight.com/compare/coding-agents#amp--model_breadth | | Repo indexing | agentic grep | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#amp--repo_indexing | | Plan mode | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#amp--plan_mode | | Checkpoint & undo | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#amp--checkpointing | | Headless / CI | ● | Community-reported | - | - | The CLI supports scripted runs. | https://toolweight.com/compare/coding-agents#amp--headless_ci | | Local models | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#amp--local_models | | Where it stops | 3 | Inferred | - | - | Edits and runs commands locally; no first-class PR path. | https://toolweight.com/compare/coding-agents#amp--stops_at | | MCP | ● | Vendor-claimed | 2026-11-06 | https://ampcode.com/docs/customize/mcp | - | https://toolweight.com/compare/coding-agents#amp--mcp_support | | Subagents | ● | Inferred | 2026-01-15 | - | Includes a dedicated higher-reasoning subagent for hard problems. | https://toolweight.com/compare/coding-agents#amp--subagents | | Hooks | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#amp--hooks | | Skills / commands | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#amp--skills_commands | | Background agents | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#amp--background_agents | | Opens PRs | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#amp--pr_authoring | | Permissions | granular allowlist | Inferred | - | - | Command approval settings; no OS sandbox. | https://toolweight.com/compare/coding-agents#amp--permission_model | | BYOK | ● | Vendor-claimed | 2026-11-06 | https://ampcode.com/docs/pricing | - | https://toolweight.com/compare/coding-agents#amp--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#amp--licence | | Pricing model | opaque credits | Vendor-claimed | - | https://ampcode.com | Paid use is pay-as-you-go credits with no BYOK escape hatch, which is how you are billed once you are working, so that is what this cell encodes. The ad-supported free tier is real and genuinely novel, but it is the entry ramp rather than the billing model. Harnesses that do offer BYOK, opencode, Cline, Zed, Kilo Code, are encoded as BYOK for the same reason. | https://toolweight.com/compare/coding-agents#amp--pricing_model | | Entry price | $0/seat/mo | Inferred | 2026-01-15 | - | No seat fee, you top up credits, or use the ad-supported tier. | https://toolweight.com/compare/coding-agents#amp--entry_price | | Token markup | ○ | Vendor-claimed | 2026-11-06 | https://ampcode.com/docs/pricing | - | https://toolweight.com/compare/coding-agents#amp--gateway_markup | | GitHub stars | - | Unknown | - | - | Closed source. | https://toolweight.com/compare/coding-agents#amp--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#amp--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#amp--terminal_bench_model | | Positioning | An agentic coding tool that always runs the best model, chosen for you. | Vendor-claimed | - | https://ampcode.com | - | https://toolweight.com/compare/coding-agents#amp--positioning | | First release | 2025-05-01 | Inferred | - | - | Approximate. | https://toolweight.com/compare/coding-agents#amp--first_release | **Verdict.** Removing the model picker is defensible, but you control neither cost nor provider. **Pick it when** - Teams who would rather not run a model-selection debate every quarter - Sourcegraph shops wanting shared, linkable agent threads ### Windsurf {#windsurf} Agentic IDE built around Cascade, now owned by Cognition after a turbulent 2025. | | | | --- | --- | | Site | https://windsurf.com | | Company | Cognition | | Founded | 2021 | | Open source | No | | Profile | https://toolweight.com/tools/windsurf | | Score (default weights) | 55.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | standalone editor, IDE extension | Vendor-claimed | 2026-01-15 | https://windsurf.com | - | https://toolweight.com/compare/coding-agents#windsurf--surface | | Default model | Windsurf's in-house SWE model, with frontier models selectable | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--default_model | | Model breadth | multi-vendor | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#windsurf--model_breadth | | Repo indexing | embeddings index | Inferred | 2026-01-15 | - | Codeium's retrieval engine predates the agent and is the strongest inherited asset. | https://toolweight.com/compare/coding-agents#windsurf--repo_indexing | | Plan mode | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--plan_mode | | Checkpoint & undo | ● | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--checkpointing | | Headless / CI | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--headless_ci | | Local models | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--local_models | | Where it stops | 3 | Inferred | - | - | Cascade edits and runs commands in the editor; PR involvement is review-side rather than authoring. | https://toolweight.com/compare/coding-agents#windsurf--stops_at | | MCP | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#windsurf--mcp_support | | Subagents | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#windsurf--subagents | | Hooks | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/coding-agents#windsurf--hooks | | Skills / commands | ● | Community-reported | - | - | Rules and workflow files. | https://toolweight.com/compare/coding-agents#windsurf--skills_commands | | Background agents | ◐ | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--background_agents | | Opens PRs | ◐ | Community-reported | - | - | Review-side integration is stronger than authoring. | https://toolweight.com/compare/coding-agents#windsurf--pr_authoring | | Permissions | granular allowlist | Inferred | - | - | Command allowlists inside the editor; no OS sandbox we could verify. | https://toolweight.com/compare/coding-agents#windsurf--permission_model | | BYOK | ◐ | Community-reported | - | - | Available on some plans and models, not as a general escape hatch. | https://toolweight.com/compare/coding-agents#windsurf--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#windsurf--licence | | Pricing model | opaque credits | Vendor-claimed | 2026-01-15 | https://windsurf.com/pricing | Prompt credits; the credit-to-token conversion is vendor-defined. | https://toolweight.com/compare/coding-agents#windsurf--pricing_model | | Entry price | $15/seat/mo | Vendor-claimed | 2026-01-15 | https://windsurf.com/pricing | - | https://toolweight.com/compare/coding-agents#windsurf--entry_price | | Token markup | ● | Inferred | - | - | Credits abstract over tokens; you cannot pay a provider directly at list. | https://toolweight.com/compare/coding-agents#windsurf--gateway_markup | | GitHub stars | N/A | Vendor-claimed | 2026-11-07 | https://devin.ai/desktop | - | https://toolweight.com/compare/coding-agents#windsurf--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#windsurf--terminal_bench_model | | Positioning | The agentic IDE where you and the agent stay in flow together. | Vendor-claimed | - | https://windsurf.com | - | https://toolweight.com/compare/coding-agents#windsurf--positioning | | First release | 2024-11-13 | Community-reported | - | - | Windsurf Editor launch; Codeium's plugins are older. | https://toolweight.com/compare/coding-agents#windsurf--first_release | **Verdict.** Strong editor-aware Cascade, but 2025 ownership churn is a continuity risk and credit pricing clouds cost. **Pick it when** - Developers who want the agent tracking what they are editing, not just what they typed - Teams already invested in Codeium's retrieval and enterprise deployment ### Devin {#devin} Fully delegated cloud engineer: file a task in Slack or the web app, get a PR back. | | | | --- | --- | | Site | https://devin.ai | | Company | Cognition | | Founded | 2023 | | Funding | Series C+ | | Open source | No | | Profile | https://toolweight.com/tools/devin | | Score (default weights) | 50.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Surface | web, cloud delegate | Vendor-claimed | 2026-01-15 | https://devin.ai | Web app plus Slack; there is no local client. | https://toolweight.com/compare/coding-agents#devin--surface | | Default model | Undisclosed, Cognition-hosted, including in-house SWE models | Community-reported | - | - | - | https://toolweight.com/compare/coding-agents#devin--default_model | | Model breadth | no model choice | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#devin--model_breadth | | Repo indexing | hybrid index + agentic | Community-reported | - | - | Maintains its own repo understanding across sessions; the mechanism is not published. | https://toolweight.com/compare/coding-agents#devin--repo_indexing | | Plan mode | ● | Community-reported | - | - | Produces a plan you can edit before it starts. | https://toolweight.com/compare/coding-agents#devin--plan_mode | | Checkpoint & undo | ○ | Inferred | - | - | Work happens in its VM; your recourse is the pull request diff. | https://toolweight.com/compare/coding-agents#devin--checkpointing | | Headless / CI | ◐ | Community-reported | - | - | An API exists for dispatching sessions; that is delegation, not a CI binary. | https://toolweight.com/compare/coding-agents#devin--headless_ci | | Local models | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#devin--local_models | | Where it stops | 4 | Inferred | - | - | Opens a pull request and responds to review comments. Merging stays yours. | https://toolweight.com/compare/coding-agents#devin--stops_at | | MCP | ● | Vendor-claimed | 2026-11-07 | https://docs.devin.ai/work-with-devin/mcp | - | https://toolweight.com/compare/coding-agents#devin--mcp_support | | Subagents | ○ | Inferred | - | - | It runs several independent sessions in parallel, which is concurrency rather than delegation. This column asks whether the agent spawns child agents with their own context and collects their results, and parallel sessions do not report back into a parent. | https://toolweight.com/compare/coding-agents#devin--subagents | | Hooks | ○ | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#devin--hooks | | Skills / commands | ◐ | Community-reported | - | - | Persistent knowledge and playbooks rather than repo-checked commands. | https://toolweight.com/compare/coding-agents#devin--skills_commands | | Background agents | ● | Inferred | 2026-01-15 | - | Everything is a background agent, that is the product. | https://toolweight.com/compare/coding-agents#devin--background_agents | | Opens PRs | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#devin--pr_authoring | | Permissions | vendor-hosted sandbox | Inferred | 2026-01-15 | - | Its own VM with shell, editor and browser: strong isolation from your machine, no visibility into the boundary. | https://toolweight.com/compare/coding-agents#devin--permission_model | | BYOK | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#devin--byok | | Licence | proprietary | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/coding-agents#devin--licence | | Pricing model | opaque credits | Vendor-claimed | 2026-01-15 | https://devin.ai/pricing | Priced in ACUs; the tokens-per-ACU relationship is not published. | https://toolweight.com/compare/coding-agents#devin--pricing_model | | Entry price | $20/seat/mo | Vendor-claimed | 2026-01-15 | https://devin.ai/pricing | Entry plan; real usage on non-trivial tasks runs well above this. | https://toolweight.com/compare/coding-agents#devin--entry_price | | Token markup | ● | Inferred | - | - | - | https://toolweight.com/compare/coding-agents#devin--gateway_markup | | GitHub stars | - | Unknown | - | - | Closed source. | https://toolweight.com/compare/coding-agents#devin--github_stars | | Terminal-Bench | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#devin--terminal_bench | | Bench model | - | Unknown | - | - | - | https://toolweight.com/compare/coding-agents#devin--terminal_bench_model | | Positioning | An AI software engineer you delegate tickets to. | Vendor-claimed | - | https://devin.ai | - | https://toolweight.com/compare/coding-agents#devin--positioning | | First release | 2024-03-12 | Community-reported | - | - | Announced March 2024; general availability December 2024. | https://toolweight.com/compare/coding-agents#devin--first_release | **Verdict.** The clearest full delegation, great for well-specified tickets, but ACU pricing bills you afterwards. **Pick it when** - Backlogs of small, well-specified tickets nobody wants to pick up - Teams who want work dispatched from Slack rather than a terminal ## Methodology - Every cell comes from vendor docs, the tool's repo, or hands-on use, each carrying its provenance. - Pricing-page facts are marked vendor-claimed with the URL. - Inferences from adjacent behaviour, and judgement calls like scores, are marked inferred. - Widely reported but undocumented facts are marked community. - Unknown facts are null and render as a dash rather than a guess. - Closed-source harnesses have null GitHub stars because no comparable repo exists. - Verify cadence is 14 days; the last full pass was 15 January 2026, well outside it. - We publish dates rather than refresh them; a moved date without a redone check is a lie. - Read every date as the last time a human actually looked. - The killer field is scored on a fixed five-rung ladder, at the highest rung reached out of the box. - Rung 4 needs a first-class PR path: built-in command, vendor-published GitHub App, or hosted runner. - Invoking gh because you asked it to is not rung 4; any shell can be scripted up a rung. - A vendor Action with no App identity behind it is graded partial, for first- and third-party alike. - The Terminal-Bench column ships empty because no traceable figure met the bar. - Traceable figures named a model and version without a harness, or came from the benchmark's own reference agent. - Terminal-Bench 1.0 results are superseded by 2.0 and not comparable. - Gaps between top entries were smaller than one task on an eighty-task benchmark, so not a ranking. - An empty column is the honest state until we run the benchmark against pinned harness versions. ## FAQ ### Does the harness matter more than the model? - Below the frontier, no: a weak model fails regardless of harness. - At the frontier, yes: context strategy, tool design and failure feedback decide completion rate. - The same model in Claude Code and in a bare chat window are not the same product. ### Which coding agents can open a pull request on their own? - Rung 4: Claude Code (hosted cloud sessions and the Claude GitHub App via /install-github-app). - Also rung 4: opencode (the opencode-agent GitHub App), Codex CLI cloud tasks, Cursor background agents, GitHub Copilot, Devin. - Gemini CLI has an official Action but no App and leans on review, so it grades partial. - Everything else (Cline, Aider, Goose, Zed, Qwen Code, Kilo Code) stops at editing and running tests locally. ### Can any of them merge and deploy without a human? - Not out of the box; treat any claim otherwise as a description of your own CI. - Copilot's agent is explicitly forbidden from approving its own pull request, and Devin stops at review. - Claude Code and Codex will merge only with a privileged token and approvals disabled, which is you removing the gate. ### What is the cheapest way to run a coding agent all day? - A flat subscription with soft limits: Claude Code on a Max plan, Codex on a ChatGPT Pro plan. - Or a free harness with your own key: opencode, Aider, Goose, Cline, Zed. - Gemini CLI and Qwen Code both have usable free tiers tied to a personal account. - Avoid credit-based pricing if you need to forecast; the credit-to-token rate is the vendor's to change. ### Are Terminal-Bench scores comparable between harnesses? - Only when harness version, model and benchmark version are all stated; the column is empty because nothing traceable met that bar. - Terminal-Bench 2.0 results are not comparable to 1.0, and a harness can move several points between releases. - A figure from the benchmark's own reference agent is a model result, not a harness result. - Half a point on an eighty-task benchmark is a fraction of one task, not a ranking. ### Is it safe to let an agent run shell commands unattended? - Only inside a sandbox with a real filesystem and network boundary. - Codex CLI (Seatbelt on macOS, Landlock on Linux) and Claude Code ship OS-level sandboxing. - Gemini CLI and Goose ship one too, but off by default, so check the cell note. - Devin and Copilot run in vendor-hosted VMs, which we rank level with a local kernel sandbox. - Most IDE extensions offer only an auto-approve allowlist, which is convenience, not a security boundary. ### Should my team standardise on one harness? - Standardise the repo-level configuration, not the harness. - AGENTS.md, MCP server definitions and a documented test command are portable across nearly everything here. - Skills, hooks and rules files mostly are not portable. - Then swapping harnesses next quarter costs a config change rather than a migration. ## Sources | Source | Last verified | | --- | --- | | https://docs.claude.com/en/docs/claude-code/overview | 2026-01-15 | | https://docs.claude.com/en/docs/claude-code/third-party-integrations | - | | https://docs.claude.com/en/docs/claude-code/sdk | 2026-01-15 | | https://docs.claude.com/en/docs/claude-code/mcp | 2026-01-15 | | https://docs.claude.com/en/docs/claude-code/sub-agents | 2026-01-15 | | https://code.claude.com/docs/en/hooks | 2026-11-06 | | https://docs.claude.com/en/docs/claude-code/slash-commands | 2026-01-15 | | https://code.claude.com/docs/en/claude-code-on-the-web | - | | https://code.claude.com/docs/en/github-actions | - | | https://docs.claude.com/en/docs/claude-code/iam | 2026-01-15 | | https://www.anthropic.com/pricing | 2026-01-15 | | https://claude.com/pricing | 2026-11-06 | | https://api.github.com/repos/anthropics/claude-code | 2026-11-07 | | https://www.anthropic.com/claude/opus | 2026-11-07 | | https://claude.com/product/claude-code | - | | https://developers.openai.com/codex | 2026-01-15 | | https://github.com/openai/codex/blob/main/docs/config.md | 2026-01-15 | | https://learn.chatgpt.com/docs/codex/cli | 2026-11-06 | | https://github.com/openai/codex | 2026-01-15 | | https://openai.com/chatgpt/pricing/ | 2026-01-15 | | https://www.tbench.ai/?version=2.0 | 2026-11-07 | | https://github.com/google-gemini/gemini-cli | 2026-01-15 | | https://geminicli.com/docs/hooks/ | 2026-11-07 | | https://github.com/google-github-actions/run-gemini-cli | - | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/Gemini_CLI__Gemini-3.1-Pro-Preview/eval-pro-3.1-preview/result.json | 2026-11-07 | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/Gemini_CLI__Gemini-3.1-Pro-Preview/metadata.yaml | 2026-11-07 | | https://google-gemini.github.io/gemini-cli/ | - | | https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/ | - | | https://opencode.ai/docs/ | 2026-01-15 | | https://opencode.ai/docs/providers/ | 2026-01-15 | | https://opencode.ai/docs/github/ | - | | https://opencode.ai/docs/permissions/ | 2026-01-15 | | https://github.com/sst/opencode | 2026-01-15 | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/OpenCode__Claude-Opus-4.5/2026-01-11__01-42-13/result.json | 2026-11-07 | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/OpenCode__Claude-Opus-4.5/metadata.yaml | 2026-11-07 | | https://opencode.ai | - | | https://github.com/Kilo-Org/kilocode | - | | https://kilocode.ai | - | | https://github.com/cline/cline | 2026-11-06 | | https://docs.cline.bot/provider-config/ | 2026-01-15 | | https://cline.bot/pricing | 2026-11-06 | | https://cline.bot | - | | https://docs.cursor.com | 2026-01-15 | | https://docs.cursor.com/context/codebase-indexing | 2026-01-15 | | https://cursor.com/pricing | 2026-01-15 | | https://cursor.com | - | | https://windsurf.com | 2026-01-15 | | https://windsurf.com/pricing | 2026-01-15 | | https://devin.ai/desktop | 2026-11-07 | | https://aider.chat/docs/ | 2026-01-15 | | https://aider.chat/docs/llms.html | 2026-11-06 | | https://aider.chat/docs/repomap.html | 2026-01-15 | | https://github.com/Aider-AI/aider | 2026-01-15 | | https://aider.chat | - | | https://devin.ai | 2026-01-15 | | https://docs.devin.ai/work-with-devin/mcp | 2026-11-07 | | https://devin.ai/pricing | 2026-01-15 | | https://ampcode.com | 2026-01-15 | | https://ampcode.com/docs/customize/mcp | 2026-11-06 | | https://ampcode.com/docs/pricing | 2026-11-06 | | https://zed.dev/docs/ai/overview | 2026-01-15 | | https://zed.dev/docs/ai/llm-providers | 2026-01-15 | | https://github.com/zed-industries/zed | 2026-01-15 | | https://zed.dev | - | | https://block.github.io/goose/docs/ | 2026-01-15 | | https://block.github.io/goose/docs/getting-started/providers | 2026-01-15 | | https://github.com/block/goose | 2026-01-15 | | https://block.github.io/goose/ | - | | https://docs.github.com/en/copilot | 2026-01-15 | | https://code.visualstudio.com/docs/copilot/customization/language-models | - | | https://docs.github.com/en/copilot/using-github-copilot/coding-agent | 2026-01-15 | | https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-hooks | 2026-11-07 | | https://github.com/features/copilot/plans | 2026-01-15 | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/copilot-cli__claude-opus-4.6/2026-04-02__18-13-37/result.json | 2026-11-07 | | https://huggingface.co/datasets/harborframework/terminal-bench-2-leaderboard/raw/main/submissions/terminal-bench/2.0/copilot-cli__claude-opus-4.6/metadata.yaml | 2026-11-07 | | https://github.com/features/copilot | - | | https://x.ai/news/grok-build-cli | 2026-11-07 | | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/11-custom-models.md | 2026-11-07 | | https://docs.x.ai/build/features/sandbox | 2026-11-07 | | https://raw.githubusercontent.com/xai-org/grok-build/main/crates/codegen/xai-grok-pager/docs/user-guide/01-getting-started.md | 2026-11-07 | | https://raw.githubusercontent.com/xai-org/grok-build/main/README.md | 2026-11-07 | | https://api.github.com/repos/xai-org/grok-build | 2026-11-07 | | https://docs.x.ai/build/overview | 2026-11-07 | | https://github.com/QwenLM/qwen-code | 2026-01-15 | | https://raw.githubusercontent.com/QwenLM/qwen-code/main/docs/users/features/sub-agents.md | 2026-11-07 | | https://qwenlm.github.io/qwen-code-docs/en/users/features/hooks/ | 2026-11-07 | | https://qwenlm.github.io/qwen-code-docs/ | - | ## Cite this page > An agent is a model plus a harness; six reach a pull request, but nothing here merges or deploys unsupervised. > > — Toolweight, https://toolweight.com/compare/coding-agents, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [LLM APIs](https://toolweight.com/compare/llm-apis), Which frontier LLM API should I build on? - [Sandbox providers](https://toolweight.com/compare/sandbox-providers), Which sandbox provider should I run untrusted or agent-generated code on? - [Browser APIs](https://toolweight.com/compare/browser-automation-apis), Which hosted browser automation API should I use for AI agents and scraping? - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/coding-agents - Machine-readable: https://toolweight.com/compare/coding-agents.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Frontier LLM APIs compared, price, context, tool use and deprecation policy slug: llm-apis url: "https://toolweight.com/compare/llm-apis" question: Which frontier LLM API should I build on? tools: 18 fields: 27 last_verified: 2026-11-07 oldest_verified: 2026-01-15 median_verified: 2026-01-15 stale_values: 314 conflicting_values: 3 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 40% verify_cadence: 7d license: CC-BY-4.0 --- # Frontier LLM API providers > **Which frontier LLM API should I build on?** > > Anthropic, OpenAI and Google lead on capability, cheaper Chinese labs win on price, routers trade features for reach; pick on continuity, not headline price. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/llm-apis | | Tools compared | 18 | | Fields compared | 27 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 371 of 486 values have a verification date, checked between 2026-01-15 and 2026-11-07 (median 2026-01-15), 314 due for re-check, 3 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 7d | | Evidence strength | 40% (mean cell confidence, not age) | | Killer field | continuity_policy | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Mistral AI](https://toolweight.com/tools/mistral-ai) | 76.6 | 87% | European lab with an open-weight lineage and EU-resident hosting | | 2 | [Google Gemini](https://toolweight.com/tools/google-gemini) | 76.0 | 87% | Gemini via AI Studio for prototyping or Vertex AI for production | | 3 | [OpenAI](https://toolweight.com/tools/openai) | 74.1 | 91% | GPT models plus audio, images and embeddings on one bill | | 4 | [Amazon Bedrock](https://toolweight.com/tools/amazon-bedrock) | 73.1 | 91% | Multi-vendor model access inside your existing AWS account | | 5 | [Qwen](https://toolweight.com/tools/alibaba-qwen) | 67.4 | 91% | Alibaba's model family, huge open-weight range, closed flagship | | 6 | [Fireworks AI](https://toolweight.com/tools/fireworks-ai) | 66.2 | 83% | Fast open-weight inference with strong structured-output support | | 7 | [xAI](https://toolweight.com/tools/xai) | 64.5 | 87% | Grok models with an OpenAI-shaped API and live X data access | | 8 | [Meta Llama](https://toolweight.com/tools/meta-llama) | 64.2 | 65% | Open-weight Llama models, hosted almost everywhere but Meta | | 9 | [Cohere](https://toolweight.com/tools/cohere) | 63.6 | 70% | Enterprise-focused models built for RAG and private deployment | | 10 | [Self-hosted (vLLM)](https://toolweight.com/tools/self-hosted-vllm) | 63.2 | 65% | Run open weights on your own GPUs behind an OpenAI-shaped API | | 11 | [Together AI](https://toolweight.com/tools/together-ai) | 61.7 | 70% | Serverless and dedicated hosting for open-weight models | | 12 | [Anthropic](https://toolweight.com/tools/anthropic) | 61.0 | 91% | Claude models, built around long agentic runs and tool use | | 13 | [Moonshot AI](https://toolweight.com/tools/moonshot-ai) | 59.4 | 83% | Kimi models, open-weight agentic performance at low cost | | 14 | [OpenRouter](https://toolweight.com/tools/openrouter) | 59.0 | 65% | One OpenAI-shaped key in front of hundreds of models | | 15 | [Z.ai (GLM)](https://toolweight.com/tools/zhipu-zai) | 58.4 | 78% | GLM models with an unusually cheap flat-rate coding plan | | 16 | [Groq](https://toolweight.com/tools/groq) | 58.0 | 91% | Custom LPU silicon serving open-weight models at extreme speed | | 17 | [Cerebras](https://toolweight.com/tools/cerebras) | 56.6 | 91% | Wafer-scale inference, the fastest tokens per second available | | 18 | [DeepSeek](https://toolweight.com/tools/deepseek) | 52.4 | 87% | Frontier-adjacent models at a small fraction of Western prices | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Capability | Tool | Flagship model | Context window (tokens) | Max output (tokens) | Image input | Audio in/out | Open weights | OpenAI-compat API | | --- | --- | --- | --- | --- | --- | --- | --- | | Mistral AI | Mistral Large 3 (mistral-large-3-25-12) | 256,000 tokens | - | ● | ◐ | ● | ● | | Google Gemini | Gemini 3.1 Pro Preview (gemini-3.1-pro-preview) | 1,048,576 tokens | 65,536 tokens | ● | ◐ | ◐ | ● | | OpenAI | GPT-5.6 Sol (gpt-5.6-sol) | 1,050,000 tokens | 128,000 tokens | ● | ◐ | ◐ | ● | | Amazon Bedrock | Multi-vendor, Claude Opus 4.8, Llama 4, Mistral, Nova Premier | 1,000,000 tokens | 128,000 tokens | ● | ◐ | ◐ | ○ | | Qwen | Qwen3.7-Max (qwen3.7-max) | 1,000,000 tokens | 131,072 tokens | ◐ | ◐ | ◐ | ● | | Fireworks AI | Open-weight catalogue, DeepSeek, Kimi K2, Qwen3, Llama 4 | - | - | ◐ | ◐ | ● | ● | | xAI | Grok 4.5 (grok-4.5) | 500,000 tokens | Unlimited | ● | ◐ | ◐ | ● | | Meta Llama | Llama 4 Maverick | 1,000,000 tokens | - | ● | ○ | ● | ● | | Cohere | Command A+ (command-a-plus-05-2026) | 128,000 tokens | 64,000 tokens | ● | ○ | ● | ● | | Self-hosted (vLLM) | Whatever you deploy, DeepSeek-V3.x, Qwen3, Kimi K2, Llama 4 | - | - | ◐ | ○ | ● | ● | | Together AI | Open-weight catalogue, DeepSeek-V3.x, Kimi K2, Qwen3, Llama 4 | - | - | ◐ | ◐ | ● | ● | | Anthropic | Claude Fable 5 (claude-fable-5) | 1,000,000 tokens | 128,000 tokens | ● | ○ | ○ | ◐ | | Moonshot AI | Kimi K3 (kimi-k3) | 1,048,576 tokens | - | ● | ○ | ● | ● | | OpenRouter | Whichever upstream model you route to (400+ available) | - | - | ◐ | ◐ | ◐ | ● | | Z.ai (GLM) | GLM-4.6 | 200,000 tokens | - | ◐ | ○ | ● | ● | | Groq | Curated open-weight models (Kimi K2, Llama 4, Qwen3, GPT-OSS) | 131,072 tokens | 8,192 tokens | ◐ | ◐ | ● | ● | | Cerebras | Curated open-weight models (Qwen3, GLM, Llama, GPT-OSS) | 131,072 tokens | 40,000 tokens | ○ | ○ | ● | ● | | DeepSeek | DeepSeek-V4-Flash (deepseek-v4-flash) | 1,000,000 tokens | 384,000 tokens | ○ | ○ | ● | ● | ### Performance | Tool | TTFT p50 | Output tok/s (tok/s) | | --- | --- | --- | | Mistral AI | - | - | | Google Gemini | - | - | | OpenAI | - | - | | Amazon Bedrock | - | - | | Qwen | - | - | | Fireworks AI | - | - | | xAI | - | - | | Meta Llama | - | - | | Cohere | - | - | | Self-hosted (vLLM) | - | - | | Together AI | - | - | | Anthropic | - | - | | Moonshot AI | - | - | | OpenRouter | - | - | | Z.ai (GLM) | - | - | | Groq | 250ms | 400 tok/s | | Cerebras | 200ms | 2,000 tok/s | | DeepSeek | - | - | ### Pricing | Tool | $/M input (/M tok) | $/M output (/M tok) | $/M cache read (/M tok) | Batch discount (%) | | --- | --- | --- | --- | --- | | Mistral AI | $0.5/M tok | $1.5/M tok | $0.05/M tok | 50% | | Google Gemini | $2/M tok | $12/M tok | $0.2/M tok | 50% | | OpenAI | $5/M tok | $30/M tok | $0.5/M tok | 50% | | Amazon Bedrock | $5/M tok | $25/M tok | $0.5/M tok | 50% | | Qwen | $2.5/M tok | $7.5/M tok | $0.25/M tok | 50% | | Fireworks AI | $0.1/M tok | $0.05/M tok | $0.05/M tok | 50% | | xAI | $2/M tok | $6/M tok | $0.3/M tok | 20% | | Meta Llama | - | - | - | - | | Cohere | - | - | - | - | | Self-hosted (vLLM) | N/A | N/A | N/A | 0% | | Together AI | - | - | - | 50% | | Anthropic | $10/M tok | $50/M tok | $1/M tok | 50% | | Moonshot AI | $3/M tok | $15/M tok | $0.3/M tok | 40% | | OpenRouter | - | - | - | 0% | | Z.ai (GLM) | $0.6/M tok | $2.2/M tok | $0.11/M tok | - | | Groq | $0.05/M tok | $0.08/M tok | - | 50% | | Cerebras | $0.35/M tok | $0.75/M tok | $0.35/M tok | - | | DeepSeek | $0.14/M tok | $0.28/M tok | $0.0028/M tok | 0% | ### Agentic | Tool | Tool use | Schema output | Effort control | Computer use | MCP support | Cache TTL | | --- | --- | --- | --- | --- | --- | --- | | Mistral AI | ● | ● | ◐ | ○ | ◐ | - | | Google Gemini | ● | ● | ● | ◐ | ◐ | Explicit caches, default 1 h TTL; implicit caching too | | OpenAI | ● | ● | ● | ◐ | ● | Automatic, ≥30 min, no configuration | | Amazon Bedrock | ● | ● | ● | ● | ○ | 5 min default, 1 h option; explicit breakpoints only | | Qwen | ● | ◐ | ◐ | ○ | ◐ | Explicit cache 5 min (extends on hit); implicit cache no fixed TTL | | Fireworks AI | ◐ | ● | ○ | ○ | ○ | Automatic; cached prompts stay at least several minutes, up to several hours depending on model and load; oldest evicted first | | xAI | ● | ● | ◐ | ○ | ○ | - | | Meta Llama | ◐ | ◐ | ○ | ○ | ○ | Host-dependent | | Cohere | ● | ● | ○ | ○ | ○ | - | | Self-hosted (vLLM) | ◐ | ● | ○ | ○ | ○ | Automatic prefix cache in VRAM, no TTL | | Together AI | ◐ | ● | ○ | ○ | ○ | - | | Anthropic | ● | ● | ● | ● | ● | 5 min default, 1 h option; automatic or explicit breakpoints | | Moonshot AI | ● | ◐ | ◐ | ○ | ○ | Automatic, no fixed TTL | | OpenRouter | ● | ◐ | ◐ | ○ | ○ | Passed through where the upstream supports caching | | Z.ai (GLM) | ● | ◐ | ◐ | ○ | ○ | - | | Groq | ◐ | ◐ | ○ | ○ | ○ | Automatic, no code changes; cached prefixes expire after 2 hours without use | | Cerebras | ◐ | ◐ | ○ | ○ | ○ | Automatic, no code changes; guaranteed TTL of 5 minutes, may persist up to 1 hour depending on load | | DeepSeek | ● | ◐ | ◐ | ○ | ○ | Automatic disk cache, no fixed TTL | ### Governance & continuity | Tool | Continuity policy | Notice period (days) | Pinnable versions | Zero retention | Trains on your data | AU region | | --- | --- | --- | --- | --- | --- | --- | | Mistral AI | Dated model IDs (the -2411 style suffix) are stable and documented, and Mistral maintains a legacy-model page listing deprecation and retirement dates. The stronger guarantee is structural: for the Apache-licensed models you can keep serving the same weights yourself after the endpoint goes away. | 180 days | ● | ◐ | ○ | ○ | | Google Gemini | Stable versions carry dated suffixes you can pin, and Google publishes a retirement date per version. In practice this is the fastest-moving line-up here: preview models are withdrawn with weeks of notice, and the 1.5 generation was retired roughly a year after GA. Vertex adds contractual predictability that AI Studio does not. | - | ● | ◐ | ◐ | ● | | OpenAI | Dated snapshots are the norm and remain callable after the alias advances, which is the strongest routine protection in the category. Retirements are announced on a public deprecations page, but the notice window has historically been shorter than Anthropic's, closer to a quarter than half a year for API snapshots, and preview models have been pulled faster still. | 90 days | ● | ◐ | ○ | ◐ | | Amazon Bedrock | The most contractual answer in the category. Bedrock model IDs are versioned and move through a published Active to Legacy to end-of-life lifecycle with dated notices in the console and documentation, and legacy versions keep serving existing workloads after a successor lands. The cost of that stability is lag: new features reach Bedrock weeks to months after the first-party API, and some never do. | 180 days | ● | ● | ○ | ● | | Qwen | Model Studio exposes dated snapshot IDs alongside rolling aliases, so pinning is possible if you use the dated form. Deprecation notices appear in the console rather than as a public policy page, and the cadence of new Qwen releases means aliases move quickly. Open-weight tiers remove the problem entirely. | 90 days | ● | ◐ | ◐ | ◐ | | Fireworks AI | Same shape as Together: a published deprecations list, serverless models retired on weeks of notice when demand falls, and dedicated deployments as the stable option. Open weights throughout mean no retirement is terminal, only inconvenient. | 14 days | ● | ● | ○ | ○ | | xAI | Dated model IDs exist and are the recommended way to address a model, but xAI publishes no formal deprecation policy or notice window, and model naming has changed repeatedly between generations. The shortest track record of any first-party lab here. | - | ● | ◐ | ◐ | ○ | | Meta Llama | Effectively unlimited, and the reason Llama matters strategically. The weights are downloadable and mirrored, so no vendor can retire the model out from under you, if a host drops it, three others still serve it, or you run it yourself. Meta may stop releasing new generations, but nothing already published disappears. | - | ● | ◐ | ○ | ● | | Cohere | Dated model names are the default (command-a-03-2025), and Cohere publishes deprecation notices with replacement guidance. The strongest guarantee is deployment-shaped rather than policy-shaped: a private VPC or on-premise deployment continues running whatever version you licensed regardless of what the hosted platform does. | - | ● | ◐ | ○ | ◐ | | Self-hosted (vLLM) | Permanent, and this is the whole point of the baseline. The checkpoint sits on your disk. Nobody can deprecate it, re-price it, silently upgrade it, or change its behaviour between releases. The obligation transfers to you: you own the GPUs, the upgrades, the security patches and the on-call roster. | N/A | ● | ● | ○ | ● | | Together AI | Serverless models are rotated off when demand drops, typically with a deprecations page and short notice measured in weeks. Because everything served is open-weight, the mitigation is always available: move to a dedicated endpoint on the same platform, to another host, or onto your own GPUs with the same checkpoint. | 14 days | ● | ● | ○ | ○ | | Anthropic | Published deprecation page lists a retirement date per model, typically months ahead, Opus 3 went on 2026-01-05, Sonnet 3.7 and Haiku 3.5 on 2026-02-19. Older models carried dated snapshot IDs you could pin, but the current generation ships as bare aliases with no dated ID behind them, so the retirement date is your only guarantee. | 180 days | ◐ | ◐ | ○ | ◐ | | Moonshot AI | Dated model IDs (the -0905 style suffix) are used and remain addressable, which is better than DeepSeek's rolling aliases. No published deprecation policy or notice window. As with the other open-weight labs, the real guarantee is the licence, download the checkpoint and continuity is your problem, not theirs. | - | ● | ○ | ◐ | ○ | | OpenRouter | Structurally the best hedge on this page and formally the weakest promise. OpenRouter guarantees nothing itself, a closed model vanishes the moment its lab retires it. But for open-weight models the same ID stays routable because several independent hosts serve it, and automatic failover means a single host going dark is invisible to your application. Buy it as insurance against host failure, not against model retirement. | - | ◐ | ◐ | ○ | ○ | | Z.ai (GLM) | Versioned model names (GLM-4.5, 4.6) stay addressable after a successor ships, but there is no published deprecation policy or notice period. MIT-licensed weights are the fallback: every flagship generation so far has been released publicly, so a retired endpoint does not strand the model. | - | ● | ○ | ◐ | ○ | | Groq | The weakest continuity of any host here. Models are added and removed from the console on a short cycle as Groq re-allocates LPU capacity, deprecations are announced with weeks rather than months of notice, and there is no dedicated-endpoint escape hatch for a model that gets pulled. Design for substitution: keep two model IDs configured and an eval you can rerun. | - | ◐ | ● | ○ | ○ | | Cerebras | Same fragility as Groq, from the same cause: a small curated menu sized to available wafer-scale capacity, with models added and removed as demand shifts. No published notice window. The models themselves are open-weight, so a removal costs you a re-benchmark and a host change rather than a rewrite. | - | ◐ | ● | ○ | ○ | | DeepSeek | The worst on this page for a closed endpoint, and the best if you self-host. The API offers only rolling aliases, deepseek-chat silently points at whatever the current model is, so behaviour can change with no version to pin and no deprecation notice. The mitigation is the MIT licence: download the checkpoint and the version is yours permanently. | - | ○ | ○ | ● | ○ | ### Traction | Tool | API since | | --- | --- | | Mistral AI | 2023 | | Google Gemini | 2023 | | OpenAI | 2020 | | Amazon Bedrock | 2023 | | Qwen | 2023 | | Fireworks AI | 2023 | | xAI | 2024 | | Meta Llama | 2023 | | Cohere | 2021 | | Self-hosted (vLLM) | 2023 | | Together AI | 2023 | | Anthropic | 2023 | | Moonshot AI | 2023 | | OpenRouter | 2023 | | Z.ai (GLM) | 2023 | | Groq | 2024 | | Cerebras | 2024 | | DeepSeek | 2023 | ### Positioning | Tool | Positioning | | --- | --- | | Mistral AI | European models with open weights and deployable anywhere | | Google Gemini | Long context and native multimodality across Google's cloud | | OpenAI | One API for text, reasoning, audio, images and embeddings | | Amazon Bedrock | Frontier models inside your existing AWS security perimeter | | Qwen | The widest open-weight family, plus a closed flagship tier | | Fireworks AI | Low-latency open-weight inference with strict structured output | | xAI | Fast, cheap frontier models with live access to X | | Meta Llama | Open-weight models you can host anywhere, forever | | Cohere | Enterprise RAG models you can deploy inside your own network | | Self-hosted (vLLM) | Your weights, your GPUs, your OpenAI-compatible endpoint | | Together AI | Open-weight models with a Western contract and dedicated capacity | | Anthropic | Frontier models for long-horizon agentic work and code | | Moonshot AI | Open-weight agentic performance at open-weight prices | | OpenRouter | One key, one API shape, every model worth calling | | Z.ai (GLM) | Coding-focused GLM models with a flat-rate subscription | | Groq | Custom LPU silicon for open-weight models at very low latency | | Cerebras | Wafer-scale inference, the highest tokens per second available | | DeepSeek | Near-frontier quality at a fraction of the token price | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Flagship model | `flagship_model` | capability | text | - | n/a | 0 | The provider's current top-end model, and the model every price, context and capability figure on this row describes. | | Context window | `context_window` | capability | number | tokens | higher | 5 | Maximum INPUT tokens the flagship model accepts in a single request, at the standard (non-surcharged) tier. Output is capped separately, see Max output. Where a vendor advertises one combined figure, this column carries the input half. | | Max output | `max_output` | capability | number | tokens | higher | 3 | Maximum tokens the flagship model will emit in a single response, counted separately from the input context window, and inclusive of reasoning tokens where those are billed as output. Blank where the provider publishes no figure for the named flagship, or where the row is a catalogue rather than a model. | | Image input | `vision` | capability | tristate | - | higher | 4 | Whether the flagship model accepts images in the same request as text; 'partial' means images work but at reduced resolution or only on a sibling model. | | Audio in/out | `audio_io` | capability | tristate | - | higher | 3 | Native speech input and speech output through the same API surface; 'partial' means one direction only, or a separate speech model rather than native audio tokens. | | Open weights | `open_weights` | capability | tristate | - | higher | 4 | Whether you can download and self-host weights of comparable capability from this vendor; 'partial' means smaller or older models are released but the flagship is closed. | | OpenAI-compat API | `openai_compatible` | capability | tristate | - | higher | 5 | Whether the provider serves a /v1/chat/completions endpoint the OpenAI SDKs can talk to unmodified; 'partial' means a compatibility shim exists but omits tools, streaming or structured output. | | TTFT p50 | `ttft_p50` | performance | duration | - | lower | 4 | Median time from request to first streamed token on a short prompt, as reported by third-party benchmarks; blank where no credible published figure exists. | | Output tok/s | `throughput_tps` | performance | number | tok/s | higher | 4 | Sustained single-stream output tokens per second on the named flagship model, community-measured; blank where unpublished. | | $/M input | `price_in` | pricing | currency | /M tok | lower | 8 | Pay-as-you-go list price per million input tokens for the named flagship model, uncached, at the standard context tier. | | $/M output | `price_out` | pricing | currency | /M tok | lower | 9 | Pay-as-you-go list price per million output tokens for the named flagship model, including reasoning or thinking tokens where those are billed as output. | | $/M cache read | `cached_input` | pricing | currency | /M tok | lower | 6 | Price per million input tokens served from a prompt cache hit; excludes any separate cache-write premium or per-hour cache storage fee. | | Batch discount | `batch_discount` | pricing | number | % | higher | 4 | Percentage off list price for asynchronous batch submission with a multi-hour completion window; 0 means no batch endpoint is offered. | | Tool use | `tool_use` | agentic | tristate | - | higher | 8 | Native function calling with parallel calls in a single assistant turn; 'partial' means tools work but serially, or degrade noticeably over a long agent loop. | | Schema output | `structured_output` | agentic | tristate | - | higher | 7 | Constrained decoding that guarantees the response validates against a supplied JSON Schema; 'partial' means JSON mode without schema enforcement. | | Effort control | `reasoning_effort` | agentic | tristate | - | higher | 6 | A request-level parameter that trades reasoning depth against cost and latency; 'partial' means thinking can only be switched on or off, with no graduated levels. | | Computer use | `computer_use` | agentic | tristate | - | higher | 3 | A screenshot-and-act tool for driving a GUI. 'yes' means the row's named flagship model drives it directly and returns coordinates itself, a beta header is fine, since the whole category ships this behind one. 'partial' means it is delivered through a separate specialised or preview model rather than the flagship, or is gated behind a restricted preview. | | MCP support | `mcp_support` | agentic | tristate | - | higher | 5 | Whether the API itself can connect to Model Context Protocol servers, rather than leaving MCP entirely to your client; 'partial' means SDK-side support only. | | Cache TTL | `prompt_cache_ttl` | agentic | text | - | n/a | 0 | How long a cached prompt prefix stays warm, and whether caching is automatic or requires explicit breakpoints in the request. | | Continuity policy | `continuity_policy` | governance | markdown | - | n/a | 0 | The killer field: how much notice you get before a model is retired, and how long a pinned version keeps serving after the alias moves on. | | Notice period | `deprecation_notice` | governance | number | days | higher | 7 | Typical days between a model being marked deprecated and the endpoint returning 404, from published policy or observed retirements; blank where the provider publishes nothing. | | Pinnable versions | `pinned_snapshots` | governance | tristate | - | higher | 7 | Whether you can address an immutable dated model version that will not change behaviour underneath you; 'partial' means some models are pinnable and the flagship is not. | | Zero retention | `zero_retention` | governance | tristate | - | higher | 6 | Whether prompts and completions can be excluded from all storage, including abuse-monitoring logs; 'partial' means available on request, on a higher tier, or with model-level exceptions. | | Trains on your data | `trains_on_data` | governance | tristate | - | lower | 7 | Whether API inputs and outputs are used to train models by default; 'partial' means opt-out is available but the default is on, or the terms are ambiguous. | | AU region | `au_region` | governance | tristate | - | higher | 4 | Whether inference can be pinned to Australian infrastructure; 'partial' means data residency controls exist for some regions but AU is unconfirmed or indirect. | | API since | `launch_year` | traction | number | - | lower | 1 | Year the provider first made a general-availability inference API public, as a rough proxy for operational maturity. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the provider positions itself in one line, paraphrased from its own homepage rather than quoted. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest per token | `cheapest-per-token` | Ranks on flagship list price, with cache and batch discounts weighted in. Rows that publish no flat per-token rate for a named flagship, the routers, the multi-model catalogues and the self-host baseline, are marked inapplicable rather than ranked, because 'cheapest' is not a question they answer. | price_in:10, price_out:10, cached_input:6, batch_discount:4, context_window:2, open_weights:2 | https://toolweight.com/compare/llm-apis?w=price_in:10,price_out:10,cached_input:6,batch_discount:4,context_window:2,open_weights:2 | | Fastest TTFT | `fastest-ttft` | Time to first token and sustained throughput. Deliberately sparse: only the providers whose entire pitch is speed have a credible published figure, so everyone else is marked inapplicable rather than flattered by having no number at all. | ttft_p50:10, throughput_tps:8, price_out:2, context_window:1 | https://toolweight.com/compare/llm-apis?w=ttft_p50:10,throughput_tps:8,price_out:2,context_window:1 | | Best tool use | `best-tool-use` | For agent harnesses: tool calling, schema-guaranteed output, effort control and MCP. | tool_use:10, structured_output:9, mcp_support:7, reasoning_effort:6, computer_use:4, context_window:3 | https://toolweight.com/compare/llm-apis?w=tool_use:10,structured_output:9,mcp_support:7,reasoning_effort:6,computer_use:4,context_window:3 | | Most privacy-preserving | `most-private` | Zero data retention, no training on your prompts, and the option to run the weights yourself. | zero_retention:10, trains_on_data:10, open_weights:6, au_region:5, pinned_snapshots:2 | https://toolweight.com/compare/llm-apis?w=zero_retention:10,trains_on_data:10,open_weights:6,au_region:5,pinned_snapshots:2 | | Longest continuity | `longest-continuity` | Will the app still work in eighteen months? Notice period, pinnable snapshots, escape hatches. | deprecation_notice:10, pinned_snapshots:10, open_weights:8, openai_compatible:6 | https://toolweight.com/compare/llm-apis?w=deprecation_notice:10,pinned_snapshots:10,open_weights:8,openai_compatible:6 | ## Verdict - Every provider quotes $/M tokens; almost none tell you how long the model lives - That continuity gap is the biggest hidden cost, so this page leads with it - **Anthropic** for agentic work: effort control, prompt caching and MCP are first-class - **OpenAI** for audio, image generation and text on one bill, or Responses API fluency - **Google** for cheap million-token context, native audio, or AU-resident Vertex deployment - Those three are not interchangeable; a tuned prompt lands differently on each - Chinese open-weight labs (DeepSeek, Moonshot, Qwen, Z.ai) reset the price floor - DeepSeek bills $0.42/M output vs $50 for Claude Fable 5, ~120x cheaper - Still ~35x cheaper than the volume tier most teams would actually use - For classification, extraction, summarisation and bulk rewriting, the quality gap is not worth the price gap - The catch is governance: permissive retention, no ZDR, rolling aliases that upgrade under you - For sensitive data, self-host the weights or route through a contractually clean host - **OpenRouter** is the cheapest insurance: one integration, hundreds of models, retired models often still reachable - **Groq** and **Cerebras** are latency instruments, not general-purpose substitutes - Worth an entire architecture for voice, autocomplete or interactive search; frustrating otherwise - Prices keep falling; context windows have stopped being the differentiator - The fight has moved to agentic fidelity: parallel tool calls, strict schema, durable caching - Assume today's model retires within two years - Build the abstraction layer now, keep a re-runnable eval set, treat every provider as replaceable ## The pricing traps nobody puts on the pricing page - Headline $/M is the least useful number here; four things distort it - **Output tokens dominate:** a reasoning model burns tens of thousands of thinking tokens, billed at the output rate - A cheap-input, expensive-output provider is dear for reasoning, cheap for RAG answering - Model your actual input:output ratio before comparing - **Cached input is where the money is:** cache reads bill at ~10% of input at Anthropic and OpenAI - An agent loop resending its history is mostly cache reads - Caching is a prefix match; a timestamp, non-deterministic JSON, or a per-user tool list destroys it silently - Watch the cache-read token counter, not the invoice - **Long-context surcharges:** Google charges more above 200K tokens; others meter cache storage per hour - A million-token window at the short-context rate is not what you pay - **Batch, but check the column first:** where an async endpoint exists the discount is usually a flat 50% - Anthropic, OpenAI, Google, Mistral, Qwen, Bedrock and Together all publish that rate - DeepSeek offers no batch endpoint; its list price already sits below most batch rates - OpenRouter offers none either, a real cost if half your workload tolerates async - xAI, Moonshot, Z.ai, Cohere, Fireworks and Cerebras publish nothing confirmable - Groq documents a batch discount without a percentage we could stand behind - Where the halving exists and latency is negotiable, no negotiation beats it; where it is not, no committed spend conjures it ## How to make a migration survivable - Assume an eighteen-month life for whatever you ship on - Providers that publish retirement dates help you; those that don't will break you - **Pin a dated snapshot** wherever offered, and record the pin in configuration, not code - This is getting harder: Anthropic's current line-up ships bare aliases, so you fall back on the retirement date - **Keep the provider behind one seam:** a per-provider module owning request construction, retries and parsing - Not an abstraction that pretends every model is the same; that fails on thinking blocks or tool-result shapes - Two implementations behind one interface is cheap insurance; a universal adapter is expensive fantasy - **Keep a re-runnable eval set:** 50-200 real inputs with graded expected outputs - Without it a forced migration is a multi-week vibe check; with it, a morning's work and a defensible number - **Know your escape hatch first:** for open weights it is total, vLLM serves them as long as you have GPUs - For closed models it is a router that may still have an upstream, or nothing at all ## Deciding: three workloads, three answers - **Bulk text processing** (classification, extraction, tagging, translation, firehose summarising): price dominates, capability barely registers - DeepSeek, Qwen, Moonshot and Z.ai are the rational choices - Or Groq and Together for open weights with a Western contract - Add the batch endpoint if latency is negotiable - Never send sensitive data through a provider whose retention terms you haven't read - **Agent harnesses** (plan, call tools, read results, iterate for minutes): this is where frontier labs earn their price - You need well-formed tool calls at depth, enforced schema output, effort control, and caching that survives the loop - Anthropic and OpenAI are credible; Google is close and cheaper on long context - Budget for a long agentic turn running for minutes on one request - **Interactive, latency-critical UI** (voice, live search, inline completion): time to first token is the product - Cerebras and Groq are an order of magnitude ahead of first-party endpoints on tok/s - The constraint: you take whichever open-weight models they host - Design the feature around the model menu, not the reverse ## Per-tool provenance, every cell, every source ### Mistral AI {#mistral-ai} European lab with an open-weight lineage and EU-resident hosting | | | | --- | --- | | Site | https://mistral.ai | | Docs | https://docs.mistral.ai | | Company | Mistral AI | | Founded | 2023 | | Funding | Late-stage private | | Open source | Yes (Apache-2.0 (selected models)) | | Profile | https://toolweight.com/tools/mistral-ai | | Score (default weights) | 76.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Mistral Large 3 (mistral-large-3-25-12) | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | Alias `mistral-large-latest`; released 2025-12-02, an MoE with 41B active of 675B total. Mistral Medium is the better price-performance pick for most workloads on this platform. | https://toolweight.com/compare/llm-apis#mistral-ai--flagship_model | | Context window | 256,000 tokens | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | - | https://toolweight.com/compare/llm-apis#mistral-ai--context_window | | Max output | - | Unknown | - | - | No separate max-output figure on the official model card. | https://toolweight.com/compare/llm-apis#mistral-ai--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | Multimodal with image understanding. | https://toolweight.com/compare/llm-apis#mistral-ai--vision | | Audio in/out | ◐ | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | The flagship is text and vision only; speech is the separate Voxtral model line, which this column grades as partial. | https://toolweight.com/compare/llm-apis#mistral-ai--audio_io | | Open weights | ● | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | Large 3 ships as an open-weight Apache 2.0 model. Licensing across the wider family is mixed, some models sit under a research licence, so check per model. | https://toolweight.com/compare/llm-apis#mistral-ai--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/api/ | - | https://toolweight.com/compare/llm-apis#mistral-ai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--throughput_tps | | $/M input | $0.5/M tok | Vendor-claimed | 2026-11-06 | https://mistral.ai/pricing | - | https://toolweight.com/compare/llm-apis#mistral-ai--price_in | | $/M output | $1.5/M tok | Vendor-claimed | 2026-11-06 | https://mistral.ai/pricing | - | https://toolweight.com/compare/llm-apis#mistral-ai--price_out | | $/M cache read | $0.05/M tok | Vendor-claimed | 2026-07-30 | https://mistral.ai/pricing/api | Cached prompt tokens bill at 10% of the standard input price. | https://toolweight.com/compare/llm-apis#mistral-ai--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-07-30 | https://mistral.ai/pricing/api | Batch inference is offered at half price on La Plateforme. | https://toolweight.com/compare/llm-apis#mistral-ai--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | - | https://toolweight.com/compare/llm-apis#mistral-ai--tool_use | | Schema output | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | Reasoning is a separate model line rather than a per-request effort dial. | https://toolweight.com/compare/llm-apis#mistral-ai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--computer_use | | MCP support | ◐ | Inferred | 2026-01-15 | - | Supported through the agents SDK rather than as a server-side connector. | https://toolweight.com/compare/llm-apis#mistral-ai--mcp_support | | Cache TTL | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--prompt_cache_ttl | | Continuity policy | Dated model IDs (the -2411 style suffix) are stable and documented, and Mistral maintains a legacy-model page listing deprecation and retirement dates. The stronger guarantee is structural: for the Apache-licensed models you can keep serving the same weights yourself after the endpoint goes away. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--continuity_policy | | Notice period | 180 days | Vendor-claimed | 2026-11-07 | https://docs.mistral.ai/inference/model-lifecycle | - | https://toolweight.com/compare/llm-apis#mistral-ai--deprecation_notice | | Pinnable versions | ● | Vendor-claimed | 2026-01-15 | https://docs.mistral.ai/getting-started/models/models_overview/ | - | https://toolweight.com/compare/llm-apis#mistral-ai--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Enterprise and on-premise deployments give full control; the hosted platform's defaults are the usual abuse-monitoring retention. | https://toolweight.com/compare/llm-apis#mistral-ai--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | EU-resident by design; AU residency only via self-deployment of the open-weight models. | https://toolweight.com/compare/llm-apis#mistral-ai--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--launch_year | | Positioning | European models with open weights and deployable anywhere | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#mistral-ai--positioning | **Verdict.** Rarely the capability leader, consistently the answer when jurisdiction is the blocker; check licences per model. **Pick it when** - EU data-residency requirements that rule out US-hosted inference - On-premise deployment with a commercial support contract - Teams that want an open-weight escape hatch under the hosted API ### Google Gemini {#google-gemini} Gemini via AI Studio for prototyping or Vertex AI for production | | | | --- | --- | | Site | https://ai.google.dev | | Docs | https://ai.google.dev/gemini-api/docs | | Company | Google | | Founded | 1998 | | Open source | No | | Profile | https://toolweight.com/tools/google-gemini | | Score (default weights) | 76.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Gemini 3.1 Pro Preview (gemini-3.1-pro-preview) | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | Current flagship general-purpose Pro model; Gemini 3 Pro Preview was shut down 2026-03-09. | https://toolweight.com/compare/llm-apis#google-gemini--flagship_model | | Context window | 1,048,576 tokens | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | Input window (1M). Google publishes a separate, much smaller output cap alongside it. | https://toolweight.com/compare/llm-apis#google-gemini--context_window | | Max output | 65,536 tokens | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | Output cap, well below the million-token input window. | https://toolweight.com/compare/llm-apis#google-gemini--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | Accepts text, image, video, audio and PDF input. | https://toolweight.com/compare/llm-apis#google-gemini--vision | | Audio in/out | ◐ | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | The flagship gemini-3.1-pro-preview takes audio in but outputs text only; native audio out is a separate Live API model, graded on the same flagship basis as the other rows. | https://toolweight.com/compare/llm-apis#google-gemini--audio_io | | Open weights | ◐ | Vendor-claimed | 2026-01-15 | https://ai.google.dev/gemma | The Gemma family is downloadable; Gemini itself is not. | https://toolweight.com/compare/llm-apis#google-gemini--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://ai.google.dev/gemini-api/docs/openai | A chat-completions compatibility endpoint is documented for both AI Studio and Vertex. | https://toolweight.com/compare/llm-apis#google-gemini--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#google-gemini--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#google-gemini--throughput_tps | | $/M input | $2/M tok | Vendor-claimed | 2026-11-06 | https://aistudio.google.com/docs/pricing | - | https://toolweight.com/compare/llm-apis#google-gemini--price_in | | $/M output | $12/M tok | Vendor-claimed | 2026-11-06 | https://aistudio.google.com/docs/pricing | - | https://toolweight.com/compare/llm-apis#google-gemini--price_out | | $/M cache read | $0.2/M tok | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/pricing | Cache read at the ≤200K tier ($0.40 above it). Google also charges cache storage at $4.50 per 1M tokens/hour, which can dominate for small caches held a long time. | https://toolweight.com/compare/llm-apis#google-gemini--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/pricing | - | https://toolweight.com/compare/llm-apis#google-gemini--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | - | https://toolweight.com/compare/llm-apis#google-gemini--tool_use | | Schema output | ● | Vendor-claimed | 2026-01-15 | https://ai.google.dev/gemini-api/docs/structured-output | responseSchema constrains decoding to a supplied schema. | https://toolweight.com/compare/llm-apis#google-gemini--structured_output | | Effort control | ● | Vendor-claimed | 2026-01-15 | https://ai.google.dev/gemini-api/docs/thinking | Thinking level / thinking budget controls reasoning depth per request. | https://toolweight.com/compare/llm-apis#google-gemini--reasoning_effort | | Computer use | ◐ | Inferred | 2026-01-15 | https://ai.google.dev/gemini-api/docs/computer-use | A dedicated computer-use model rather than a tool on the flagship, which is this column's definition of partial, so it is now graded that way rather than as a yes. | https://toolweight.com/compare/llm-apis#google-gemini--computer_use | | MCP support | ◐ | Vendor-claimed | 2026-07-30 | https://ai.google.dev/gemini-api/docs/function-calling | Connects to remote MCP servers (Streamable HTTP only, no SSE) via the Interactions API — a client/remote integration, not a built-in native connector. | https://toolweight.com/compare/llm-apis#google-gemini--mcp_support | | Cache TTL | Explicit caches, default 1 h TTL; implicit caching too | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#google-gemini--prompt_cache_ttl | | Continuity policy | Stable versions carry dated suffixes you can pin, and Google publishes a retirement date per version. In practice this is the fastest-moving line-up here: preview models are withdrawn with weeks of notice, and the 1.5 generation was retired roughly a year after GA. Vertex adds contractual predictability that AI Studio does not. | Community-reported | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#google-gemini--continuity_policy | | Notice period | - | Unknown | - | - | Google publishes per-version retirement dates but no single guaranteed notice window; preview models get materially less than stable ones. | https://toolweight.com/compare/llm-apis#google-gemini--deprecation_notice | | Pinnable versions | ● | Vendor-claimed | 2026-01-15 | https://ai.google.dev/gemini-api/docs/models | - | https://toolweight.com/compare/llm-apis#google-gemini--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Tier-dependent, which is what this column calls partial: on Vertex, prompts are not stored and enterprise controls apply, but the free AI Studio tier is a different bargain, assume it is used to improve products. We have not confirmed exclusion from abuse-monitoring logs, which is the bar the column's definition actually sets. | https://toolweight.com/compare/llm-apis#google-gemini--zero_retention | | Trains on your data | ◐ | Inferred | 2026-01-15 | - | No for paid Vertex and paid AI Studio usage; the free tier explicitly is used to improve Google products. | https://toolweight.com/compare/llm-apis#google-gemini--trains_on_data | | AU region | ● | Inferred | 2026-01-15 | - | Vertex AI serves Gemini from australia-southeast1, with region pinning enforced at the project level. | https://toolweight.com/compare/llm-apis#google-gemini--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#google-gemini--launch_year | | Positioning | Long context and native multimodality across Google's cloud | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#google-gemini--positioning | **Verdict.** The cheapest million-token window and only genuinely native audio, but the fastest-churning line-up here, so expect yearly migrations. **Pick it when** - Workloads that genuinely need 500K+ tokens of context per request - Voice and video products wanting one model rather than a pipeline - Australian or regulated deployments that must pin inference to a region ### OpenAI {#openai} GPT models plus audio, images and embeddings on one bill | | | | --- | --- | | Site | https://openai.com | | Docs | https://platform.openai.com/docs | | Company | OpenAI | | Founded | 2015 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/openai | | Score (default weights) | 74.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | GPT-5.6 Sol (gpt-5.6-sol) | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models | OpenAI's frontier model for complex professional work; alias `gpt-5.6`. Ships flagships faster than this page's cadence, so verify the current top model before quoting. | https://toolweight.com/compare/llm-apis#openai--flagship_model | | Context window | 1,050,000 tokens | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | Input context. Output is capped separately at 128K, so this column carries the input half to compare like for like against the input-only windows every other row publishes. | https://toolweight.com/compare/llm-apis#openai--context_window | | Max output | 128,000 tokens | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | Output cap on gpt-5.6-sol, separate from the 1.05M input window. | https://toolweight.com/compare/llm-apis#openai--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | gpt-5.6-sol input modalities are text and image. | https://toolweight.com/compare/llm-apis#openai--vision | | Audio in/out | ◐ | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | The flagship gpt-5.6-sol is text/image in, text out; audio is served by the separate Realtime API and transcription/TTS models. This column grades a capability delivered through a sibling model line as partial. | https://toolweight.com/compare/llm-apis#openai--audio_io | | Open weights | ◐ | Vendor-claimed | 2026-01-15 | https://openai.com/index/introducing-gpt-oss/ | gpt-oss-120b and gpt-oss-20b released under Apache 2.0 in August 2025. The flagship remains closed. | https://toolweight.com/compare/llm-apis#openai--open_weights | | OpenAI-compat API | ● | Inferred | 2026-01-15 | - | It is the reference implementation, though the newer Responses API is where the agentic features live. | https://toolweight.com/compare/llm-apis#openai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#openai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#openai--throughput_tps | | $/M input | $5/M tok | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/pricing | gpt-5.6-sol standard rate; the Batch API halves it to $2.50/M. | https://toolweight.com/compare/llm-apis#openai--price_in | | $/M output | $30/M tok | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/pricing | gpt-5.6-sol standard rate; Batch API $15/M. | https://toolweight.com/compare/llm-apis#openai--price_out | | $/M cache read | $0.5/M tok | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/pricing | Cache reads bill 10x cheaper than input; cache writes cost 1.25x. Automatic on repeated prefixes, no request-side configuration. | https://toolweight.com/compare/llm-apis#openai--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/pricing | - | https://toolweight.com/compare/llm-apis#openai--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | - | https://toolweight.com/compare/llm-apis#openai--tool_use | | Schema output | ● | Vendor-claimed | 2026-01-15 | https://platform.openai.com/docs/guides/structured-outputs | Strict JSON Schema enforcement on both responses and tool parameters. | https://toolweight.com/compare/llm-apis#openai--structured_output | | Effort control | ● | Vendor-claimed | 2026-01-15 | https://platform.openai.com/docs/guides/reasoning | reasoning_effort parameter with graduated levels. | https://toolweight.com/compare/llm-apis#openai--reasoning_effort | | Computer use | ◐ | Inferred | 2026-01-15 | https://platform.openai.com/docs/guides/tools-computer-use | The capability exists and is documented, but it is delivered through a separate computer-use preview model rather than by the flagship named on this row, the column's definition of partial. Graded on the same basis as Google's dedicated computer-use model. | https://toolweight.com/compare/llm-apis#openai--computer_use | | MCP support | ● | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/models/gpt-5.6-sol | Remote MCP servers can be attached as a tool on the Responses API. | https://toolweight.com/compare/llm-apis#openai--mcp_support | | Cache TTL | Automatic, ≥30 min, no configuration | Vendor-claimed | 2026-07-30 | https://developers.openai.com/api/docs/guides/prompt-caching | Prefixes stay eligible for reuse at least 30 minutes and may be retained longer; cache writes bill 1.25x input. | https://toolweight.com/compare/llm-apis#openai--prompt_cache_ttl | | Continuity policy | Dated snapshots are the norm and remain callable after the alias advances, which is the strongest routine protection in the category. Retirements are announced on a public deprecations page, but the notice window has historically been shorter than Anthropic's, closer to a quarter than half a year for API snapshots, and preview models have been pulled faster still. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openai--continuity_policy | | Notice period | 90 days | Inferred | - | - | Observed from past API snapshot retirements; not a published guarantee, and varies by model tier. | https://toolweight.com/compare/llm-apis#openai--deprecation_notice | | Pinnable versions | ● | Vendor-claimed | 2026-01-15 | https://platform.openai.com/docs/models | - | https://toolweight.com/compare/llm-apis#openai--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Default abuse-monitoring retention is 30 days; zero-retention is available to approved customers. | https://toolweight.com/compare/llm-apis#openai--zero_retention | | Trains on your data | ○ | Vendor-claimed | 2026-01-15 | https://platform.openai.com/docs/guides/your-data | API data has not been used for training by default since March 2023. | https://toolweight.com/compare/llm-apis#openai--trains_on_data | | AU region | ◐ | Vendor-claimed | 2026-11-07 | https://developers.openai.com/api/docs/guides/your-data | - | https://toolweight.com/compare/llm-apis#openai--au_region | | API since | 2020 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#openai--launch_year | | Positioning | One API for text, reasoning, audio, images and embeddings | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#openai--positioning | **Verdict.** The widest surface area, with audio, images and text on one bill; pinnable snapshots but shorter observed notice. **Pick it when** - Multimodal products that need speech and image generation alongside text - Teams standardising on one vendor for everything rather than best-of-breed - Anyone who wants a dated snapshot they can actually pin ### Amazon Bedrock {#amazon-bedrock} Multi-vendor model access inside your existing AWS account | | | | --- | --- | | Site | https://aws.amazon.com/bedrock/ | | Docs | https://docs.aws.amazon.com/bedrock/ | | Company | AWS | | Founded | 2006 | | Open source | No | | Profile | https://toolweight.com/tools/amazon-bedrock | | Score (default weights) | 73.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Multi-vendor, Claude Opus 4.8, Llama 4, Mistral, Nova Premier | Inferred | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html | Bedrock is a catalogue, not a model, so there is no vendor claim to make about a flagship. The models listed are a toolweight selection from the supported-models page, an editorial choice about what the catalogue is for, which is why this cell is graded inferred rather than vendor-claimed. Capability figures below describe Claude on Bedrock as the reference deployment except where a cell says otherwise. | https://toolweight.com/compare/llm-apis#amazon-bedrock--flagship_model | | Context window | 1,000,000 tokens | Inferred | 2026-06-24 | - | Input window for Claude on Bedrock; varies by model. | https://toolweight.com/compare/llm-apis#amazon-bedrock--context_window | | Max output | 128,000 tokens | Inferred | 2026-06-24 | - | For Claude on Bedrock, tracking the first-party output cap; varies by model across the catalogue. | https://toolweight.com/compare/llm-apis#amazon-bedrock--max_output | | Image input | ● | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-supported-models-features.html | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | Amazon's own Nova Sonic does speech-to-speech, but this row's reference deployment is Claude on Bedrock, which has no audio at all. Regraded to partial because the capability exists somewhere in the catalogue rather than on the model every other figure in this row describes, a catalogue capability, not a flagship one. | https://toolweight.com/compare/llm-apis#amazon-bedrock--audio_io | | Open weights | ◐ | Inferred | 2026-01-15 | - | Hosts open-weight models (Llama, Mistral) alongside closed ones; publishes none of its own. | https://toolweight.com/compare/llm-apis#amazon-bedrock--open_weights | | OpenAI-compat API | ○ | Inferred | 2026-06-24 | - | Uses the AWS SDK and SigV4 auth. Anthropic ships a dedicated Bedrock client rather than a base-URL swap. | https://toolweight.com/compare/llm-apis#amazon-bedrock--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--throughput_tps | | $/M input | $5/M tok | Vendor-claimed | 2026-11-07 | https://platform.claude.com/docs/en/models/opus-4-8/overview | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--price_in | | $/M output | $25/M tok | Vendor-claimed | 2026-11-07 | https://platform.claude.com/docs/en/models/opus-4-8/overview | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--price_out | | $/M cache read | $0.5/M tok | Vendor-claimed | 2026-11-07 | https://platform.claude.com/docs/en/models/opus-4-8/overview | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--cached_input | | Batch discount | 50% | Inferred | 2026-01-15 | - | Bedrock batch inference is offered at a reduced rate for supported models. | https://toolweight.com/compare/llm-apis#amazon-bedrock--batch_discount | | Tool use | ● | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--tool_use | | Schema output | ● | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/structured-output.html | Available for Claude on Bedrock; support varies by model. | https://toolweight.com/compare/llm-apis#amazon-bedrock--structured_output | | Effort control | ● | Inferred | 2026-06-24 | - | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--reasoning_effort | | Computer use | ● | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/computer-use.html | Beta for Claude on Bedrock, the same Claude computer-use beta the first-party row carries, driven by the same flagship model. Upgraded from partial so the two rows are graded on one rule: beta status alone does not make a yes into a partial, or Anthropic's own row would have to move too. | https://toolweight.com/compare/llm-apis#amazon-bedrock--computer_use | | MCP support | ○ | Inferred | 2026-06-24 | - | The MCP connector is not available on Bedrock; wire MCP up client-side instead. | https://toolweight.com/compare/llm-apis#amazon-bedrock--mcp_support | | Cache TTL | 5 min default, 1 h option; explicit breakpoints only | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html | Both TTLs are available, same as first-party, it is only the automatic top-level caching path that Bedrock does not offer, so every cache boundary here has to be placed by hand. | https://toolweight.com/compare/llm-apis#amazon-bedrock--prompt_cache_ttl | | Continuity policy | The most contractual answer in the category. Bedrock model IDs are versioned and move through a published Active to Legacy to end-of-life lifecycle with dated notices in the console and documentation, and legacy versions keep serving existing workloads after a successor lands. The cost of that stability is lag: new features reach Bedrock weeks to months after the first-party API, and some never do. | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--continuity_policy | | Notice period | 180 days | Vendor-claimed | 2026-11-07 | https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--deprecation_notice | | Pinnable versions | ● | Vendor-claimed | 2026-06-24 | https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html | Versioned model IDs and inference-profile ARNs. | https://toolweight.com/compare/llm-apis#amazon-bedrock--pinned_snapshots | | Zero retention | ● | Vendor-claimed | 2026-01-15 | https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html | AWS does not store prompts or completions; model invocation logging is opt-in and lands in your own account. This stays a yes where Google's and Cohere's moved to partial because it is a documented, unconditional vendor statement rather than a property of one tier or one deployment mode. | https://toolweight.com/compare/llm-apis#amazon-bedrock--zero_retention | | Trains on your data | ○ | Vendor-claimed | 2026-01-15 | https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--trains_on_data | | AU region | ● | Inferred | 2026-01-15 | - | ap-southeast-2 (Sydney) serves frontier models; check per-model availability as it is not uniform across regions. | https://toolweight.com/compare/llm-apis#amazon-bedrock--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--launch_year | | Positioning | Frontier models inside your existing AWS security perimeter | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#amazon-bedrock--positioning | **Verdict.** Choose Bedrock for procurement and governance, not capability; accept lagging features and no MCP connector or automatic caching. **Pick it when** - Regulated workloads that must stay inside an existing AWS perimeter - Australian data residency without self-hosting - Teams that need a documented model lifecycle to satisfy an auditor ### Qwen {#alibaba-qwen} Alibaba's model family, huge open-weight range, closed flagship | | | | --- | --- | | Site | https://qwen.ai | | Docs | https://www.alibabacloud.com/help/en/model-studio | | Company | Alibaba Cloud | | Founded | 2009 | | Open source | Yes (Apache-2.0 (most open models)) | | Profile | https://toolweight.com/tools/alibaba-qwen | | Score (default weights) | 67.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Qwen3.7-Max (qwen3.7-max) | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/text-generation-model/ | Snapshot qwen3.7-max-2026-05-20. The Max tier is API-only; the open-weight Qwen3 models sit a tier below. | https://toolweight.com/compare/llm-apis#alibaba-qwen--flagship_model | | Context window | 1,000,000 tokens | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/text-generation-model/ | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--context_window | | Max output | 131,072 tokens | Vendor-claimed | 2026-11-07 | https://help.aliyun.com/en/model-studio/qwen3-7-max | Qwen3.7-Max maximum output; the thinking-mode output limit is also 131072 tokens. | https://toolweight.com/compare/llm-apis#alibaba-qwen--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | Via the Qwen-VL line rather than the flagship text model, which is precisely what this column calls partial, and how Cohere and Z.ai are graded for the same arrangement. The note and the grade now agree. | https://toolweight.com/compare/llm-apis#alibaba-qwen--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | Qwen-Audio and Omni variants exist as separate models. | https://toolweight.com/compare/llm-apis#alibaba-qwen--audio_io | | Open weights | ◐ | Vendor-claimed | 2026-01-15 | https://github.com/QwenLM/Qwen3 | The most prolific open-weight release programme in the category, but the Max flagship is closed. | https://toolweight.com/compare/llm-apis#alibaba-qwen--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--throughput_tps | | $/M input | $2.5/M tok | Vendor-claimed | 2026-11-06 | https://www.alibabacloud.com/help/en/model-studio/model-pricing | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--price_in | | $/M output | $7.5/M tok | Vendor-claimed | 2026-11-06 | https://www.alibabacloud.com/help/en/model-studio/model-pricing | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--price_out | | $/M cache read | $0.25/M tok | Inferred | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/context-cache | Explicit-cache hits bill at 10% of the standard input price (implicit-cache hits at 20%); cache creation is 125% of input. Figure is 10% of the $2.50 list. | https://toolweight.com/compare/llm-apis#alibaba-qwen--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/model-pricing | Batch inference is half price; batch and context-caching discounts cannot be combined. | https://toolweight.com/compare/llm-apis#alibaba-qwen--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/text-generation-model/ | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | Thinking can be toggled on the hybrid models; no graduated levels. | https://toolweight.com/compare/llm-apis#alibaba-qwen--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--computer_use | | MCP support | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--mcp_support | | Cache TTL | Explicit cache 5 min (extends on hit); implicit cache no fixed TTL | Vendor-claimed | 2026-07-30 | https://www.alibabacloud.com/help/en/model-studio/context-cache | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--prompt_cache_ttl | | Continuity policy | Model Studio exposes dated snapshot IDs alongside rolling aliases, so pinning is possible if you use the dated form. Deprecation notices appear in the console rather than as a public policy page, and the cadence of new Qwen releases means aliases move quickly. Open-weight tiers remove the problem entirely. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--continuity_policy | | Notice period | 90 days | Vendor-claimed | 2026-11-07 | https://www.alibabacloud.com/help/en/model-studio/model-depreciation | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | Dated snapshot IDs are published for most models. | https://toolweight.com/compare/llm-apis#alibaba-qwen--pinned_snapshots | | Zero retention | ◐ | Vendor-claimed | 2026-11-07 | https://www.alibabacloud.com/help/en/model-studio/data-retention-policy | Optional enterprise ZDR for supported models in non-mainland regions. The listed Qwen3.7-Max flagship is excluded: qwen-max coverage starts at qwen3.8-max. Default prompts/responses retained up to 30 days, with legal/security exceptions; stateful paths and transient cache have separate rules. | https://toolweight.com/compare/llm-apis#alibaba-qwen--zero_retention | | Trains on your data | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--trains_on_data | | AU region | ◐ | Inferred | 2026-01-15 | - | Alibaba Cloud operates a Sydney region, but Model Studio availability there should be confirmed before relying on it. | https://toolweight.com/compare/llm-apis#alibaba-qwen--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--launch_year | | Positioning | The widest open-weight family, plus a closed flagship tier | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#alibaba-qwen--positioning | **Verdict.** The best open-weight range, a model at nearly every size and modality; the hosted Max tier is rarely the reason to be here. **Pick it when** - Finding an open-weight model at a specific size or modality - Fine-tuning where a permissive licence and a model-size ladder both matter - Asia-Pacific deployments already on Alibaba Cloud ### Fireworks AI {#fireworks-ai} Fast open-weight inference with strong structured-output support | | | | --- | --- | | Site | https://fireworks.ai | | Docs | https://docs.fireworks.ai | | Company | Fireworks AI | | Founded | 2022 | | Funding | Venture-backed | | Open source | No | | Profile | https://toolweight.com/tools/fireworks-ai | | Score (default weights) | 66.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Open-weight catalogue, DeepSeek, Kimi K2, Qwen3, Llama 4 | Vendor-claimed | 2026-01-15 | https://docs.fireworks.ai/models/overview | - | https://toolweight.com/compare/llm-apis#fireworks-ai--flagship_model | | Context window | - | Unknown | - | - | Per-model. | https://toolweight.com/compare/llm-apis#fireworks-ai--context_window | | Max output | - | Unknown | - | - | Per-model. | https://toolweight.com/compare/llm-apis#fireworks-ai--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | Transcription models are offered; no native speech output. | https://toolweight.com/compare/llm-apis#fireworks-ai--audio_io | | Open weights | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://docs.fireworks.ai/tools-sdks/openai-compatibility | - | https://toolweight.com/compare/llm-apis#fireworks-ai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--throughput_tps | | $/M input | $0.1/M tok | Vendor-claimed | 2026-11-07 | https://fireworks.ai/pricing | - | https://toolweight.com/compare/llm-apis#fireworks-ai--price_in | | $/M output | $0.05/M tok | Vendor-claimed | 2026-11-07 | https://fireworks.ai/pricing | - | https://toolweight.com/compare/llm-apis#fireworks-ai--price_out | | $/M cache read | $0.05/M tok | Vendor-claimed | 2026-11-07 | https://fireworks.ai/pricing | - | https://toolweight.com/compare/llm-apis#fireworks-ai--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-11-07 | https://docs.fireworks.ai/guides/batch-inference | - | https://toolweight.com/compare/llm-apis#fireworks-ai--batch_discount | | Tool use | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--tool_use | | Schema output | ● | Vendor-claimed | 2026-01-15 | https://docs.fireworks.ai/structured-responses/structured-response-formatting | Grammar-based and JSON-schema constrained decoding, more reliable than most open-weight hosts. | https://toolweight.com/compare/llm-apis#fireworks-ai--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--mcp_support | | Cache TTL | Automatic; cached prompts stay at least several minutes, up to several hours depending on model and load; oldest evicted first | Vendor-claimed | 2026-11-07 | https://docs.fireworks.ai/guides/prompt-caching | - | https://toolweight.com/compare/llm-apis#fireworks-ai--prompt_cache_ttl | | Continuity policy | Same shape as Together: a published deprecations list, serverless models retired on weeks of notice when demand falls, and dedicated deployments as the stable option. Open weights throughout mean no retirement is terminal, only inconvenient. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--continuity_policy | | Notice period | 14 days | Vendor-claimed | 2026-11-07 | https://docs.fireworks.ai/faq-new/deployment-infrastructure/do-you-provide-notice-before-removing-model-availability | - | https://toolweight.com/compare/llm-apis#fireworks-ai--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--pinned_snapshots | | Zero retention | ● | Vendor-claimed | 2026-11-07 | https://docs.fireworks.ai/guides/security_compliance/data_handling | Open models only; Response API conversations stored up to 30 days by default. | https://toolweight.com/compare/llm-apis#fireworks-ai--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--launch_year | | Positioning | Low-latency open-weight inference with strict structured output | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#fireworks-ai--positioning | **Verdict.** Hard to separate from Together, but stronger on constrained decoding and latency; pick it when output must parse every time. **Pick it when** - Open-weight workloads where output must validate against a schema every time - Latency-sensitive serving without moving to custom silicon - Fine-tuned open models served on managed infrastructure ### xAI {#xai} Grok models with an OpenAI-shaped API and live X data access | | | | --- | --- | | Site | https://x.ai | | Docs | https://docs.x.ai | | Company | xAI | | Founded | 2023 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/xai | | Score (default weights) | 64.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Grok 4.5 (grok-4.5) | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/models | xAI's most intelligent and fastest model, recommended for code and chat; knowledge cutoff 2026-02-01. xAI ships fast and renames tiers often, so confirm the current model list before quoting. | https://toolweight.com/compare/llm-apis#xai--flagship_model | | Context window | 500,000 tokens | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/grok-4-5 | - | https://toolweight.com/compare/llm-apis#xai--context_window | | Max output | Unlimited | Vendor-claimed | 2026-11-07 | https://docs.x.ai/developers/grok-4-7.md | - | https://toolweight.com/compare/llm-apis#xai--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/models | Text and image input (images up to 20 MiB, jpg/png). | https://toolweight.com/compare/llm-apis#xai--vision | | Audio in/out | ◐ | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/models | grok-4.5 is text/image in, text out; audio is the separate Grok Voice API — a sibling model line, which this column grades as partial. | https://toolweight.com/compare/llm-apis#xai--audio_io | | Open weights | ◐ | Community-reported | 2026-01-15 | - | Older Grok generations have been released publicly; current models are closed. | https://toolweight.com/compare/llm-apis#xai--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://docs.x.ai/overview | Deliberately shaped as a drop-in for the OpenAI SDKs: point the OpenAI client at api.x.ai/v1. | https://toolweight.com/compare/llm-apis#xai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#xai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#xai--throughput_tps | | $/M input | $2/M tok | Vendor-claimed | 2026-11-06 | https://docs.x.ai/docs/models | - | https://toolweight.com/compare/llm-apis#xai--price_in | | $/M output | $6/M tok | Vendor-claimed | 2026-11-06 | https://docs.x.ai/docs/models | - | https://toolweight.com/compare/llm-apis#xai--price_out | | $/M cache read | $0.3/M tok | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/pricing | Automatic caching; $0.60/M at the ≥200K tier. | https://toolweight.com/compare/llm-apis#xai--cached_input | | Batch discount | 20% | Vendor-claimed | 2026-11-07 | https://docs.x.ai/developers/pricing.md | - | https://toolweight.com/compare/llm-apis#xai--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://docs.x.ai/developers/models | Custom tools with parallel calling by default, plus built-in web and X search. | https://toolweight.com/compare/llm-apis#xai--tool_use | | Schema output | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | Reasoning is exposed on specific model variants rather than as a graduated per-request control across the line-up. | https://toolweight.com/compare/llm-apis#xai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--mcp_support | | Cache TTL | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#xai--prompt_cache_ttl | | Continuity policy | Dated model IDs exist and are the recommended way to address a model, but xAI publishes no formal deprecation policy or notice window, and model naming has changed repeatedly between generations. The shortest track record of any first-party lab here. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--continuity_policy | | Notice period | - | Unknown | - | - | No published policy located. | https://toolweight.com/compare/llm-apis#xai--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--pinned_snapshots | | Zero retention | ◐ | Vendor-claimed | 2026-11-07 | https://docs.x.ai/developers/faq/security | - | https://toolweight.com/compare/llm-apis#xai--zero_retention | | Trains on your data | ◐ | Inferred | 2026-01-15 | - | Consumer terms are permissive; API terms are stricter but read them rather than assuming parity with OpenAI or Anthropic. | https://toolweight.com/compare/llm-apis#xai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#xai--au_region | | API since | 2024 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#xai--launch_year | | Positioning | Fast, cheap frontier models with live access to X | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#xai--positioning | **Verdict.** Easy to try and strong on price-performance, but the thinnest governance here, so fine for consumer, hard for regulated work. **Pick it when** - Products that want real-time X/Twitter context in the model - Cheap evaluation of a frontier alternative with a one-line base-URL change - Consumer applications where governance requirements are light ### Meta Llama {#meta-llama} Open-weight Llama models, hosted almost everywhere but Meta | | | | --- | --- | | Site | https://www.llama.com | | Docs | https://www.llama.com/docs | | Company | Meta | | Founded | 2004 | | Open source | Yes (Llama Community License) | | Profile | https://toolweight.com/tools/meta-llama | | Score (default weights) | 64.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Llama 4 Maverick | Inferred | 2026-01-15 | - | Meta's own hosted API has never been the main distribution channel; most consumption is via routers and clouds. | https://toolweight.com/compare/llm-apis#meta-llama--flagship_model | | Context window | 1,000,000 tokens | Vendor-claimed | 2026-01-15 | https://www.llama.com/models/llama-4/ | Advertised input window; usable context depends entirely on how your host has deployed it, and few hosts serve anything close to the full figure. | https://toolweight.com/compare/llm-apis#meta-llama--context_window | | Max output | - | Unknown | - | - | Host-dependent, there is no vendor endpoint to set one. Whatever your serving stack is configured for is the answer. | https://toolweight.com/compare/llm-apis#meta-llama--max_output | | Image input | ● | Vendor-claimed | 2026-01-15 | https://www.llama.com/models/llama-4/ | - | https://toolweight.com/compare/llm-apis#meta-llama--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--audio_io | | Open weights | ● | Vendor-claimed | 2026-01-15 | https://www.llama.com/llama-downloads/ | Llama Community License, permissive for most commercial use but with an acceptable-use policy and a large-scale-user clause, so not OSI open source. | https://toolweight.com/compare/llm-apis#meta-llama--open_weights | | OpenAI-compat API | ● | Inferred | 2026-01-15 | - | True of essentially every host that serves Llama, rather than a property of Meta's own endpoint. | https://toolweight.com/compare/llm-apis#meta-llama--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--throughput_tps | | $/M input | - | Unknown | - | - | Meta's first-party API pricing is not the reference point; compare Groq, Together, Fireworks or Bedrock rates for the same weights. | https://toolweight.com/compare/llm-apis#meta-llama--price_in | | $/M output | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--price_out | | $/M cache read | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--cached_input | | Batch discount | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--batch_discount | | Tool use | ◐ | Community-reported | 2026-01-15 | - | The models are trained for tool calling, but reliability at depth trails the closed frontier and varies by host implementation. | https://toolweight.com/compare/llm-apis#meta-llama--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | Depends on the serving stack, most open-weight hosts add grammar-constrained decoding. | https://toolweight.com/compare/llm-apis#meta-llama--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--mcp_support | | Cache TTL | Host-dependent | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--prompt_cache_ttl | | Continuity policy | Effectively unlimited, and the reason Llama matters strategically. The weights are downloadable and mirrored, so no vendor can retire the model out from under you, if a host drops it, three others still serve it, or you run it yourself. Meta may stop releasing new generations, but nothing already published disappears. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--continuity_policy | | Notice period | - | Unknown | - | - | Not applicable in the usual sense, retirement is a per-host decision, not a vendor one. | https://toolweight.com/compare/llm-apis#meta-llama--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | You can pin a checkpoint hash. | https://toolweight.com/compare/llm-apis#meta-llama--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Conditional on how you run it: total if you self-host, and entirely that host's policy if you do not. Regraded from yes because the weights alone guarantee nothing, the self-host baseline row is where an unconditional yes belongs. | https://toolweight.com/compare/llm-apis#meta-llama--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#meta-llama--trains_on_data | | AU region | ● | Inferred | 2026-01-15 | - | Deployable anywhere, including Bedrock ap-southeast-2 and your own Australian hardware. | https://toolweight.com/compare/llm-apis#meta-llama--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--launch_year | | Positioning | Open-weight models you can host anywhere, forever | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#meta-llama--positioning | **Verdict.** A model family, not a serious first-party endpoint; its value is continuity insurance, a model that cannot be deprecated. **Pick it when** - Workloads that must survive any single vendor disappearing - On-premise or air-gapped deployments with a recognisable licence - Fine-tuning on your own data without a vendor in the loop ### Cohere {#cohere} Enterprise-focused models built for RAG and private deployment | | | | --- | --- | | Site | https://cohere.com | | Docs | https://docs.cohere.com | | Company | Cohere | | Founded | 2019 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/cohere | | Score (default weights) | 63.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Command A+ (command-a-plus-05-2026) | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/models | Cohere's newest flagship, its first MoE at 218B total / 25B active. It supersedes Command A (command-a-03-2025), now off the pricing page. | https://toolweight.com/compare/llm-apis#cohere--flagship_model | | Context window | 128,000 tokens | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/models | - | https://toolweight.com/compare/llm-apis#cohere--context_window | | Max output | 64,000 tokens | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/models | - | https://toolweight.com/compare/llm-apis#cohere--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/command-a-plus | Command A+ accepts text and image input. | https://toolweight.com/compare/llm-apis#cohere--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--audio_io | | Open weights | ● | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/command-a-plus | Command A+ ships under Apache 2.0 on Hugging Face (CohereLabs/command-a-plus-05-2026-w4a4); a shift from the older non-commercial research licence. | https://toolweight.com/compare/llm-apis#cohere--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/compatibility-api | A documented Compatibility API works with the OpenAI SDK at api.cohere.ai/compatibility/v1, excluding Cohere-specific params. | https://toolweight.com/compare/llm-apis#cohere--openai_compatible | | TTFT p50 | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--ttft_p50 | | Output tok/s | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--throughput_tps | | $/M input | - | Unknown | 2026-11-07 | https://cohere.com/pricing | The flagship Command A+ is published as a free open-weight download, not a metered per-token API SKU, so there is no first-party input price to rank — self-host or use a third-party host. The metered Command R line is $0.15/M in, $0.60/M out for reference. | https://toolweight.com/compare/llm-apis#cohere--price_in | | $/M output | - | Unknown | 2026-11-07 | https://cohere.com/pricing | No metered first-party output price for the open-weight Command A+; Command R is $0.60/M for reference. | https://toolweight.com/compare/llm-apis#cohere--price_out | | $/M cache read | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--cached_input | | Batch discount | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://docs.cohere.com/docs/command-a-plus | - | https://toolweight.com/compare/llm-apis#cohere--tool_use | | Schema output | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--mcp_support | | Cache TTL | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--prompt_cache_ttl | | Continuity policy | Dated model names are the default (command-a-03-2025), and Cohere publishes deprecation notices with replacement guidance. The strongest guarantee is deployment-shaped rather than policy-shaped: a private VPC or on-premise deployment continues running whatever version you licensed regardless of what the hosted platform does. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cohere--continuity_policy | | Notice period | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/llm-apis#cohere--deprecation_notice | | Pinnable versions | ● | Vendor-claimed | 2026-01-15 | https://docs.cohere.com/docs/models | - | https://toolweight.com/compare/llm-apis#cohere--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Private deployment is the primary answer, and enterprise terms cover the hosted platform, both of which are 'available on request or on a higher tier', which is what this column calls partial. Regraded down from yes: a deployment mode you have to buy is not the same as retention being off by default. | https://toolweight.com/compare/llm-apis#cohere--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | Not on the paid platform; the free trial tier is a different agreement. | https://toolweight.com/compare/llm-apis#cohere--trains_on_data | | AU region | ◐ | Inferred | 2026-01-15 | - | Deployable into any cloud region you control, including AU; the hosted endpoint is not AU-resident. | https://toolweight.com/compare/llm-apis#cohere--au_region | | API since | 2021 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#cohere--launch_year | | Positioning | Enterprise RAG models you can deploy inside your own network | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#cohere--positioning | **Verdict.** Competes on retrieval, private deployment and contracts; its rerank and embeddings are the real draw, the chat API overpriced. **Pick it when** - RAG pipelines where rerank quality drives the result - Deployments that must run inside your own VPC or data centre - Enterprises whose procurement needs a vendor agreement, not a credit card ### Self-hosted (vLLM) {#self-hosted-vllm} Run open weights on your own GPUs behind an OpenAI-shaped API | | | | --- | --- | | Site | https://docs.vllm.ai | | Repo | https://github.com/vllm-project/vllm | | Company | Self-hosted (vLLM) | | Founded | 2023 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/self-hosted-vllm | | Score (default weights) | 63.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Whatever you deploy, DeepSeek-V3.x, Qwen3, Kimi K2, Llama 4 | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--flagship_model | | Context window | - | Unknown | - | - | Set by the checkpoint and by how much KV cache your VRAM budget allows. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--context_window | | Max output | - | Unknown | - | - | Whatever you configure the server for, bounded by the same VRAM budget as the input window. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--audio_io | | Open weights | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html | vLLM serves /v1/chat/completions natively, so client code written against OpenAI works unchanged. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--openai_compatible | | TTFT p50 | - | Unknown | - | - | Entirely determined by your hardware, batch size and prefix-cache hit rate. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--throughput_tps | | $/M input | N/A | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--price_in | | $/M output | N/A | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--price_out | | $/M cache read | N/A | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--cached_input | | Batch discount | 0% | Inferred | - | - | Not applicable, continuous batching is how the server works, not a pricing tier. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--batch_discount | | Tool use | ◐ | Inferred | 2026-01-15 | - | Tool-call parsing depends on a per-model parser plugin and is noticeably more fragile than a hosted API. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--tool_use | | Schema output | ● | Vendor-claimed | 2026-01-15 | https://docs.vllm.ai/en/latest/features/structured_outputs.html | Guided decoding with JSON Schema, regex or grammar backends. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--mcp_support | | Cache TTL | Automatic prefix cache in VRAM, no TTL | Vendor-claimed | 2026-01-15 | https://docs.vllm.ai/en/latest/features/automatic_prefix_caching.html | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--prompt_cache_ttl | | Continuity policy | Permanent, and this is the whole point of the baseline. The checkpoint sits on your disk. Nobody can deprecate it, re-price it, silently upgrade it, or change its behaviour between releases. The obligation transfers to you: you own the GPUs, the upgrades, the security patches and the on-call roster. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--continuity_policy | | Notice period | N/A | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | Pin the checkpoint hash and it is byte-identical forever. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--pinned_snapshots | | Zero retention | ● | Inferred | 2026-01-15 | - | The one unconditional yes in this column: there is no vendor to retain anything, and no abuse-monitoring log you did not write yourself. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--trains_on_data | | AU region | ● | Inferred | 2026-01-15 | - | The only unambiguous answer to an AU-residency requirement. | https://toolweight.com/compare/llm-apis#self-hosted-vllm--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--launch_year | | Positioning | Your weights, your GPUs, your OpenAI-compatible endpoint | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#self-hosted-vllm--positioning | **Verdict.** A reference point, not a recommendation; it wins on cost only at high steady load, so choose it for sovereignty or permanence. **Pick it when** - Data that legally cannot leave your infrastructure - Sustained high-utilisation inference where GPU-hours beat per-token billing - Guaranteeing a model version survives indefinitely ### Together AI {#together-ai} Serverless and dedicated hosting for open-weight models | | | | --- | --- | | Site | https://www.together.ai | | Docs | https://docs.together.ai | | Company | Together AI | | Founded | 2022 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/together-ai | | Score (default weights) | 61.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Open-weight catalogue, DeepSeek-V3.x, Kimi K2, Qwen3, Llama 4 | Vendor-claimed | 2026-01-15 | https://docs.together.ai/docs/serverless-models | Priced per model by size class rather than as a single flagship rate. | https://toolweight.com/compare/llm-apis#together-ai--flagship_model | | Context window | - | Unknown | - | - | Per-model. | https://toolweight.com/compare/llm-apis#together-ai--context_window | | Max output | - | Unknown | - | - | Per-model. | https://toolweight.com/compare/llm-apis#together-ai--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--audio_io | | Open weights | ● | Inferred | 2026-01-15 | - | Serves only open-weight models, so anything you build on here can be lifted onto your own hardware. | https://toolweight.com/compare/llm-apis#together-ai--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://docs.together.ai/docs/openai-api-compatibility | - | https://toolweight.com/compare/llm-apis#together-ai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--throughput_tps | | $/M input | - | Unknown | - | - | Per-model tiers roughly tracking parameter count; sub-$1/M for 70B-class models, low single digits for the largest MoE models. | https://toolweight.com/compare/llm-apis#together-ai--price_in | | $/M output | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--price_out | | $/M cache read | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--cached_input | | Batch discount | 50% | Inferred | 2026-01-15 | - | A discounted batch endpoint is offered for supported models. | https://toolweight.com/compare/llm-apis#together-ai--batch_discount | | Tool use | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--tool_use | | Schema output | ● | Inferred | 2026-01-15 | - | JSON-schema constrained decoding is supported on most served models. | https://toolweight.com/compare/llm-apis#together-ai--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--mcp_support | | Cache TTL | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--prompt_cache_ttl | | Continuity policy | Serverless models are rotated off when demand drops, typically with a deprecations page and short notice measured in weeks. Because everything served is open-weight, the mitigation is always available: move to a dedicated endpoint on the same platform, to another host, or onto your own GPUs with the same checkpoint. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--continuity_policy | | Notice period | 14 days | Vendor-claimed | 2026-11-07 | https://docs.together.ai/docs/deprecations | - | https://toolweight.com/compare/llm-apis#together-ai--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--pinned_snapshots | | Zero retention | ● | Vendor-claimed | 2026-11-07 | https://docs.together.ai/docs/zero-data-retention | Opt-in org setting, applies to requests after enabling. Uploaded fine-tuning/batch files remain stored until deleted. | https://toolweight.com/compare/llm-apis#together-ai--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#together-ai--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--launch_year | | Positioning | Open-weight models with a Western contract and dedicated capacity | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#together-ai--positioning | **Verdict.** The pragmatic way to run Chinese open weights on US infrastructure under a recognisable contract; dedicated endpoints shine at steady load. **Pick it when** - Running DeepSeek or Kimi weights under a Western contract - Steady high-volume load that justifies a dedicated GPU endpoint - Fine-tuning open-weight models without owning hardware ### Anthropic {#anthropic} Claude models, built around long agentic runs and tool use | | | | --- | --- | | Site | https://www.anthropic.com | | Docs | https://platform.claude.com/docs | | Company | Anthropic | | Founded | 2021 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/anthropic | | Score (default weights) | 61.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Claude Fable 5 (claude-fable-5) | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/about-claude/models/overview | Opus 4.8 at $5/$25 is the practical default for most builds; Sonnet 5 at $3/$15 list and Haiku 4.5 at $1/$5 cover volume and latency. Two Fable 5 properties do not generalise from the rest of the family: thinking is always on and cannot be disabled, and a request can come back HTTP 200 with stop_reason 'refusal' and empty or partial content, so client code must branch on stop_reason before it reads content. A server-side fallbacks parameter re-runs the same request on another model when that happens, budget for that path rather than discovering it in production. | https://toolweight.com/compare/llm-apis#anthropic--flagship_model | | Context window | 1,000,000 tokens | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/about-claude/models/overview | Input window. Output is capped separately at 128K. | https://toolweight.com/compare/llm-apis#anthropic--context_window | | Max output | 128,000 tokens | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/about-claude/models/overview | 128K on Fable 5, Opus 4.8 and Sonnet 5; Haiku 4.5 caps at 64K. Streaming is required in practice for anything near the ceiling. | https://toolweight.com/compare/llm-apis#anthropic--max_output | | Image input | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/build-with-claude/vision | High-resolution input up to 2576px on the long edge since Opus 4.7; coordinates map 1:1 to image pixels. | https://toolweight.com/compare/llm-apis#anthropic--vision | | Audio in/out | ○ | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs | No speech input or output on the Messages API. Pair with a separate ASR/TTS vendor. | https://toolweight.com/compare/llm-apis#anthropic--audio_io | | Open weights | ○ | Inferred | 2026-06-24 | - | - | https://toolweight.com/compare/llm-apis#anthropic--open_weights | | OpenAI-compat API | ◐ | Inferred | 2026-06-24 | - | A chat-completions compatibility layer exists for porting, but tool use, thinking blocks, effort and caching all require the native API. | https://toolweight.com/compare/llm-apis#anthropic--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#anthropic--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#anthropic--throughput_tps | | $/M input | $10/M tok | Vendor-claimed | 2026-11-06 | https://platform.claude.com/docs/en/about-claude/pricing | - | https://toolweight.com/compare/llm-apis#anthropic--price_in | | $/M output | $50/M tok | Vendor-claimed | 2026-11-06 | https://platform.claude.com/docs/en/about-claude/pricing | - | https://toolweight.com/compare/llm-apis#anthropic--price_out | | $/M cache read | $1/M tok | Vendor-claimed | 2026-11-06 | https://platform.claude.com/docs/en/about-claude/pricing | - | https://toolweight.com/compare/llm-apis#anthropic--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/build-with-claude/batch-processing | - | https://toolweight.com/compare/llm-apis#anthropic--batch_discount | | Tool use | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview | Parallel calls on by default; SDK tool runners drive the loop with per-turn approval hooks. | https://toolweight.com/compare/llm-apis#anthropic--tool_use | | Schema output | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/build-with-claude/structured-outputs | output_config.format enforces a JSON Schema; strict:true does the same for tool parameters. Recursive schemas and numeric bounds are unsupported. | https://toolweight.com/compare/llm-apis#anthropic--structured_output | | Effort control | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/build-with-claude/effort | Five levels, low, medium, high, xhigh, max, plus adaptive thinking. Fixed token budgets were removed on the current generation. | https://toolweight.com/compare/llm-apis#anthropic--reasoning_effort | | Computer use | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use | Graded yes because the flagship drives it directly and returns coordinates itself. Still a beta, and it needs a beta header, but so does every implementation in this column, so beta status is not what separates yes from partial here. Self-hosted or Anthropic-hosted environments. | https://toolweight.com/compare/llm-apis#anthropic--computer_use | | MCP support | ● | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/agents-and-tools/mcp-connector | Anthropic authored MCP. Server connections are available on the Messages API and first-class in Managed Agents. | https://toolweight.com/compare/llm-apis#anthropic--mcp_support | | Cache TTL | 5 min default, 1 h option; automatic or explicit breakpoints | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/build-with-claude/prompt-caching | Two paths: a top-level automatic setting that caches the last cacheable block, or up to 4 explicit breakpoints when you need to choose the boundary yourself. The minimum cacheable prefix is model-dependent and silently applied, 2048 tokens on the Fable 5 flagship, 4096 on the Opus tier and Haiku 4.5. A prefix under the threshold does not error; it simply never caches. | https://toolweight.com/compare/llm-apis#anthropic--prompt_cache_ttl | | Continuity policy | Published deprecation page lists a retirement date per model, typically months ahead, Opus 3 went on 2026-01-05, Sonnet 3.7 and Haiku 3.5 on 2026-02-19. Older models carried dated snapshot IDs you could pin, but the current generation ships as bare aliases with no dated ID behind them, so the retirement date is your only guarantee. | Inferred | 2026-06-24 | https://platform.claude.com/docs/en/about-claude/model-deprecations | The retirement dates and the alias-only model IDs come straight from Anthropic's deprecation and models pages. The closing sentence, that the date is therefore your only guarantee, is toolweight's reading, not a vendor statement, which is why this cell is graded inferred rather than vendor-claimed. | https://toolweight.com/compare/llm-apis#anthropic--continuity_policy | | Notice period | 180 days | Inferred | - | - | Observed from published retirement dates rather than a contractual guarantee; recent retirements have run six months or more from announcement. | https://toolweight.com/compare/llm-apis#anthropic--deprecation_notice | | Pinnable versions | ◐ | Vendor-claimed | 2026-06-24 | https://platform.claude.com/docs/en/about-claude/models/overview | Haiku 4.5 and older models expose dated IDs. Fable 5, Opus 4.8 and Sonnet 5 are alias-only. | https://toolweight.com/compare/llm-apis#anthropic--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-06-24 | - | Zero data retention is available to eligible organisations, but Fable 5 requires 30-day retention and rejects requests from ZDR orgs outright. | https://toolweight.com/compare/llm-apis#anthropic--zero_retention | | Trains on your data | ○ | Inferred | 2026-06-24 | - | API inputs and outputs are not used to train models by default. | https://toolweight.com/compare/llm-apis#anthropic--trains_on_data | | AU region | ◐ | Inferred | 2026-06-24 | - | First-party inference_geo covers US and EU residency. AU-resident serving is via Bedrock ap-southeast-2 or Vertex australia-southeast1, not the first-party endpoint. | https://toolweight.com/compare/llm-apis#anthropic--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#anthropic--launch_year | | Positioning | Frontier models for long-horizon agentic work and code | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#anthropic--positioning | **Verdict.** The best platform for long tool loops, but continuity regressed to retirement dates and Fable 5 can refuse outright. **Pick it when** - Agent harnesses that call tools for minutes at a time - Code generation and review where first-try correctness pays for the token price - Teams that want cost tuned per route via graduated effort levels ### Moonshot AI {#moonshot-ai} Kimi models, open-weight agentic performance at low cost | | | | --- | --- | | Site | https://www.moonshot.ai | | Docs | https://platform.moonshot.ai/docs | | Company | Moonshot AI | | Founded | 2023 | | Open source | Yes (Modified MIT) | | Profile | https://toolweight.com/tools/moonshot-ai | | Score (default weights) | 59.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Kimi K3 (kimi-k3) | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/introduction | Moonshot's flagship, 2.8T params. platform.moonshot.ai now redirects to platform.kimi.ai. | https://toolweight.com/compare/llm-apis#moonshot-ai--flagship_model | | Context window | 1,048,576 tokens | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/pricing/chat-k3 | - | https://toolweight.com/compare/llm-apis#moonshot-ai--context_window | | Max output | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--max_output | | Image input | ● | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/introduction | Native visual understanding on K3. | https://toolweight.com/compare/llm-apis#moonshot-ai--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--audio_io | | Open weights | ● | Vendor-claimed | 2026-01-15 | https://github.com/MoonshotAI/Kimi-K2 | Modified MIT licence with an attribution condition for very large deployments. | https://toolweight.com/compare/llm-apis#moonshot-ai--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/guide/migrating-from-openai-to-kimi | Compatible with OpenAI's interface; swap base_url and api_key. | https://toolweight.com/compare/llm-apis#moonshot-ai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--ttft_p50 | | Output tok/s | - | Unknown | - | - | Slow on the first-party endpoint by most community reports; Groq and Cerebras serve the same weights far faster. | https://toolweight.com/compare/llm-apis#moonshot-ai--throughput_tps | | $/M input | $3/M tok | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/pricing/chat-k3 | K3 cache-miss rate; a cache hit bills $0.30/M. Note the jump from the far cheaper K2 generation. | https://toolweight.com/compare/llm-apis#moonshot-ai--price_in | | $/M output | $15/M tok | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/pricing/chat-k3 | - | https://toolweight.com/compare/llm-apis#moonshot-ai--price_out | | $/M cache read | $0.3/M tok | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/pricing/chat-k3 | Cache-hit input rate; automatic context caching. | https://toolweight.com/compare/llm-apis#moonshot-ai--cached_input | | Batch discount | 40% | Vendor-claimed | 2026-11-07 | https://platform.kimi.ai/docs/pricing/chat | - | https://toolweight.com/compare/llm-apis#moonshot-ai--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/guide/migrating-from-openai-to-kimi | Fully supports the modern tool-call API (the deprecated functions param is not). | https://toolweight.com/compare/llm-apis#moonshot-ai--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--mcp_support | | Cache TTL | Automatic, no fixed TTL | Vendor-claimed | 2026-07-30 | https://platform.kimi.ai/docs/guide/use-context-caching-feature-of-kimi-api | Cache lifecycle is managed automatically with no manual intervention; no explicit duration published. | https://toolweight.com/compare/llm-apis#moonshot-ai--prompt_cache_ttl | | Continuity policy | Dated model IDs (the -0905 style suffix) are used and remain addressable, which is better than DeepSeek's rolling aliases. No published deprecation policy or notice window. As with the other open-weight labs, the real guarantee is the licence, download the checkpoint and continuity is your problem, not theirs. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--continuity_policy | | Notice period | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--pinned_snapshots | | Zero retention | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--zero_retention | | Trains on your data | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--launch_year | | Positioning | Open-weight agentic performance at open-weight prices | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#moonshot-ai--positioning | **Verdict.** Kimi K2 is the strongest case that open weights caught up on agentic work; reach it through Groq, Fireworks or Together. **Pick it when** - Agent loops on an open-weight budget - Self-hosting a tool-use-capable model under a permissive licence - Replacing a frontier model on the cheaper half of a mixed workload ### OpenRouter {#openrouter} One OpenAI-shaped key in front of hundreds of models | | | | --- | --- | | Site | https://openrouter.ai | | Docs | https://openrouter.ai/docs | | Company | OpenRouter | | Founded | 2023 | | Open source | No | | Profile | https://toolweight.com/tools/openrouter | | Score (default weights) | 59.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Whichever upstream model you route to (400+ available) | Vendor-claimed | 2026-01-15 | https://openrouter.ai/models | - | https://toolweight.com/compare/llm-apis#openrouter--flagship_model | | Context window | - | Unknown | - | - | Per-model; the router exposes each upstream's window unchanged. | https://toolweight.com/compare/llm-apis#openrouter--context_window | | Max output | - | Unknown | - | - | Per-model, passed through from the upstream. | https://toolweight.com/compare/llm-apis#openrouter--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | Available on models that support it. | https://toolweight.com/compare/llm-apis#openrouter--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--audio_io | | Open weights | ◐ | Inferred | 2026-01-15 | - | Routes to both open and closed models; publishes none. | https://toolweight.com/compare/llm-apis#openrouter--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://openrouter.ai/docs/api-reference/overview | A single OpenAI-shaped endpoint in front of every upstream is the entire product. | https://toolweight.com/compare/llm-apis#openrouter--openai_compatible | | TTFT p50 | - | Unknown | - | - | OpenRouter publishes live per-model latency and throughput in its own console, better data than this column can hold. | https://toolweight.com/compare/llm-apis#openrouter--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#openrouter--throughput_tps | | $/M input | - | Unknown | - | - | Upstream list price passed through, plus a fee on credit purchases (around 5%). No inference markup. | https://toolweight.com/compare/llm-apis#openrouter--price_in | | $/M output | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#openrouter--price_out | | $/M cache read | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#openrouter--cached_input | | Batch discount | 0% | Inferred | 2026-01-15 | - | No batch endpoint, a real cost if half your workload could tolerate async. | https://toolweight.com/compare/llm-apis#openrouter--batch_discount | | Tool use | ● | Inferred | 2026-01-15 | - | Passed through where the upstream supports it. | https://toolweight.com/compare/llm-apis#openrouter--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | A normalised reasoning parameter is mapped onto each upstream's equivalent where one exists. | https://toolweight.com/compare/llm-apis#openrouter--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--mcp_support | | Cache TTL | Passed through where the upstream supports caching | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--prompt_cache_ttl | | Continuity policy | Structurally the best hedge on this page and formally the weakest promise. OpenRouter guarantees nothing itself, a closed model vanishes the moment its lab retires it. But for open-weight models the same ID stays routable because several independent hosts serve it, and automatic failover means a single host going dark is invisible to your application. Buy it as insurance against host failure, not against model retirement. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--continuity_policy | | Notice period | - | Unknown | - | - | Inherits each upstream's policy; OpenRouter publishes none of its own. | https://toolweight.com/compare/llm-apis#openrouter--deprecation_notice | | Pinnable versions | ◐ | Inferred | 2026-01-15 | - | Model IDs are stable but resolve to whichever upstream host is available, so serving behaviour can vary between identical requests. | https://toolweight.com/compare/llm-apis#openrouter--pinned_snapshots | | Zero retention | ◐ | Inferred | 2026-01-15 | - | Logging is off by default at the router and provider policies can be filtered so requests never reach a host that trains on prompts, but the router cannot make a promise on behalf of an upstream's abuse-monitoring logs, which is the bar this column sets. Regraded down from yes: you are buying a filter over other people's retention terms, not zero retention. | https://toolweight.com/compare/llm-apis#openrouter--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#openrouter--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#openrouter--launch_year | | Positioning | One key, one API shape, every model worth calling | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#openrouter--positioning | **Verdict.** The highest-leverage integration: one endpoint, hundreds of models, failover; the trade is intersection features, not the union. **Pick it when** - Keeping model choice a runtime decision rather than an architectural one - Benchmarking a dozen models without a dozen accounts - Failover when a single upstream host goes down ### Z.ai (GLM) {#zhipu-zai} GLM models with an unusually cheap flat-rate coding plan | | | | --- | --- | | Site | https://z.ai | | Docs | https://docs.z.ai | | Company | Zhipu AI | | Founded | 2019 | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/zhipu-zai | | Score (default weights) | 58.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | GLM-4.6 | Inferred | 2026-01-15 | - | A newer GLM generation may have shipped since; verify before quoting. | https://toolweight.com/compare/llm-apis#zhipu-zai--flagship_model | | Context window | 200,000 tokens | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--context_window | | Max output | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | Via the separate GLM-V line. | https://toolweight.com/compare/llm-apis#zhipu-zai--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--audio_io | | Open weights | ● | Vendor-claimed | 2026-01-15 | https://huggingface.co/zai-org/GLM-4.6 | GLM-4.6 weights released under MIT. | https://toolweight.com/compare/llm-apis#zhipu-zai--open_weights | | OpenAI-compat API | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--throughput_tps | | $/M input | $0.6/M tok | Vendor-claimed | 2026-11-06 | https://docs.z.ai/guides/overview/pricing | - | https://toolweight.com/compare/llm-apis#zhipu-zai--price_in | | $/M output | $2.2/M tok | Vendor-claimed | 2026-11-06 | https://docs.z.ai/guides/overview/pricing | - | https://toolweight.com/compare/llm-apis#zhipu-zai--price_out | | $/M cache read | $0.11/M tok | Vendor-claimed | 2026-11-07 | https://docs.z.ai/guides/overview/pricing | - | https://toolweight.com/compare/llm-apis#zhipu-zai--cached_input | | Batch discount | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--batch_discount | | Tool use | ● | Community-reported | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--mcp_support | | Cache TTL | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--prompt_cache_ttl | | Continuity policy | Versioned model names (GLM-4.5, 4.6) stay addressable after a successor ships, but there is no published deprecation policy or notice period. MIT-licensed weights are the fallback: every flagship generation so far has been released publicly, so a retired endpoint does not strand the model. | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--continuity_policy | | Notice period | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--deprecation_notice | | Pinnable versions | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--pinned_snapshots | | Zero retention | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--zero_retention | | Trains on your data | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--launch_year | | Positioning | Coding-focused GLM models with a flat-rate subscription | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#zhipu-zai--positioning | **Verdict.** The flat-rate coding plan is genuinely disruptive, turning all-day agent use into a fixed cost; quality trails only on hard reasoning. **Pick it when** - Driving a coding agent all day on a predictable monthly cost - Cheap high-volume code completion and refactoring - Self-hosting an MIT-licensed coding model ### Groq {#groq} Custom LPU silicon serving open-weight models at extreme speed | | | | --- | --- | | Site | https://groq.com | | Docs | https://console.groq.com/docs | | Company | Groq | | Founded | 2016 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/groq | | Score (default weights) | 58.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Curated open-weight models (Kimi K2, Llama 4, Qwen3, GPT-OSS) | Vendor-claimed | 2026-01-15 | https://console.groq.com/docs/models | The menu is short and rotates; check the models page before designing around one. | https://toolweight.com/compare/llm-apis#groq--flagship_model | | Context window | 131,072 tokens | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/models | - | https://toolweight.com/compare/llm-apis#groq--context_window | | Max output | 8,192 tokens | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/models | - | https://toolweight.com/compare/llm-apis#groq--max_output | | Image input | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--vision | | Audio in/out | ◐ | Inferred | 2026-01-15 | - | Whisper-class transcription is served fast; no native speech output. | https://toolweight.com/compare/llm-apis#groq--audio_io | | Open weights | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://console.groq.com/docs/openai | - | https://toolweight.com/compare/llm-apis#groq--openai_compatible | | TTFT p50 | 250ms | Community-reported | 2026-01-15 | - | Community-measured on short prompts from third-party benchmarks; varies by model and region. Not measured by toolweight. | https://toolweight.com/compare/llm-apis#groq--ttft_p50 | | Output tok/s | 400 tok/s | Community-reported | 2026-01-15 | - | Order-of-magnitude figure for mid-sized models, roughly 5-10x a general-purpose GPU host. Smaller models run considerably faster. | https://toolweight.com/compare/llm-apis#groq--throughput_tps | | $/M input | $0.05/M tok | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/models | - | https://toolweight.com/compare/llm-apis#groq--price_in | | $/M output | $0.08/M tok | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/models | - | https://toolweight.com/compare/llm-apis#groq--price_out | | $/M cache read | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#groq--cached_input | | Batch discount | 50% | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/batch | - | https://toolweight.com/compare/llm-apis#groq--batch_discount | | Tool use | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--mcp_support | | Cache TTL | Automatic, no code changes; cached prefixes expire after 2 hours without use | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/prompt-caching | - | https://toolweight.com/compare/llm-apis#groq--prompt_cache_ttl | | Continuity policy | The weakest continuity of any host here. Models are added and removed from the console on a short cycle as Groq re-allocates LPU capacity, deprecations are announced with weeks rather than months of notice, and there is no dedicated-endpoint escape hatch for a model that gets pulled. Design for substitution: keep two model IDs configured and an eval you can rerun. | Community-reported | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--continuity_policy | | Notice period | - | Unknown | - | - | Deprecations are announced but the window is short and not published as a guaranteed minimum. | https://toolweight.com/compare/llm-apis#groq--deprecation_notice | | Pinnable versions | ◐ | Inferred | 2026-01-15 | - | You can name a specific model, but it only exists while Groq chooses to host it. | https://toolweight.com/compare/llm-apis#groq--pinned_snapshots | | Zero retention | ● | Vendor-claimed | 2026-11-07 | https://console.groq.com/docs/your-data | - | https://toolweight.com/compare/llm-apis#groq--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#groq--au_region | | API since | 2024 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#groq--launch_year | | Positioning | Custom LPU silicon for open-weight models at very low latency | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#groq--positioning | **Verdict.** When instant responses are the product, Groq changes what you can build; not general-purpose, with a short, rotating menu. **Pick it when** - Voice agents and any interface where perceived latency is the feature - High-volume cheap inference on well-known open-weight models - Fast transcription alongside text generation on one key ### Cerebras {#cerebras} Wafer-scale inference, the fastest tokens per second available | | | | --- | --- | | Site | https://cerebras.ai | | Docs | https://inference-docs.cerebras.ai | | Company | Cerebras | | Founded | 2016 | | Funding | Late-stage private | | Open source | No | | Profile | https://toolweight.com/tools/cerebras | | Score (default weights) | 56.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | Curated open-weight models (Qwen3, GLM, Llama, GPT-OSS) | Vendor-claimed | 2026-01-15 | https://inference-docs.cerebras.ai/models/overview | - | https://toolweight.com/compare/llm-apis#cerebras--flagship_model | | Context window | 131,072 tokens | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/models/openai-oss.md | Per-model; paid tier GPT OSS 120B. | https://toolweight.com/compare/llm-apis#cerebras--context_window | | Max output | 40,000 tokens | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/models/openai-oss.md | Per-model; paid tier GPT OSS 120B. | https://toolweight.com/compare/llm-apis#cerebras--max_output | | Image input | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--vision | | Audio in/out | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--audio_io | | Open weights | ● | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-01-15 | https://inference-docs.cerebras.ai/resources/openai | - | https://toolweight.com/compare/llm-apis#cerebras--openai_compatible | | TTFT p50 | 200ms | Community-reported | 2026-01-15 | - | Community-measured on short prompts; not measured by toolweight. | https://toolweight.com/compare/llm-apis#cerebras--ttft_p50 | | Output tok/s | 2,000 tok/s | Community-reported | 2026-01-15 | - | Order-of-magnitude figure, third-party benchmarks routinely report 1,500-3,000 tok/s on large MoE models where GPU hosts manage a few hundred. | https://toolweight.com/compare/llm-apis#cerebras--throughput_tps | | $/M input | $0.35/M tok | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/models/openai-oss.md | GPT OSS 120B Developer pricing; per-model rates vary. | https://toolweight.com/compare/llm-apis#cerebras--price_in | | $/M output | $0.75/M tok | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/models/openai-oss.md | - | https://toolweight.com/compare/llm-apis#cerebras--price_out | | $/M cache read | $0.35/M tok | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/capabilities/prompt-caching.md | - | https://toolweight.com/compare/llm-apis#cerebras--cached_input | | Batch discount | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#cerebras--batch_discount | | Tool use | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--structured_output | | Effort control | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--mcp_support | | Cache TTL | Automatic, no code changes; guaranteed TTL of 5 minutes, may persist up to 1 hour depending on load | Vendor-claimed | 2026-11-07 | https://inference-docs.cerebras.ai/capabilities/prompt-caching | - | https://toolweight.com/compare/llm-apis#cerebras--prompt_cache_ttl | | Continuity policy | Same fragility as Groq, from the same cause: a small curated menu sized to available wafer-scale capacity, with models added and removed as demand shifts. No published notice window. The models themselves are open-weight, so a removal costs you a re-benchmark and a host change rather than a rewrite. | Community-reported | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--continuity_policy | | Notice period | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#cerebras--deprecation_notice | | Pinnable versions | ◐ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--pinned_snapshots | | Zero retention | ● | Vendor-claimed | 2026-11-07 | https://cerebras-inference.help.usepylon.com/articles/1811589793-does-cerebras-retain-my-data | - | https://toolweight.com/compare/llm-apis#cerebras--zero_retention | | Trains on your data | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#cerebras--au_region | | API since | 2024 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#cerebras--launch_year | | Positioning | Wafer-scale inference, the highest tokens per second available | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#cerebras--positioning | **Verdict.** The fastest single-stream generation you can buy, by a qualitative margin; the catch is Groq's: short menu, no continuity guarantees. **Pick it when** - Reasoning models where thinking-token latency is the bottleneck - Interactive tools that feel broken at 50 tokens per second - Benchmarking how much of your UX problem is actually latency ### DeepSeek {#deepseek} Frontier-adjacent models at a small fraction of Western prices | | | | --- | --- | | Site | https://www.deepseek.com | | Docs | https://api-docs.deepseek.com | | Company | DeepSeek | | Founded | 2023 | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/deepseek | | Score (default weights) | 52.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Flagship model | DeepSeek-V4-Flash (deepseek-v4-flash) | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | The `deepseek-chat` / `deepseek-reasoner` aliases were deprecated 2026-07-24 and now route to v4-flash (non-thinking and thinking modes); `deepseek-v4-pro` is the higher-capability tier. Aliases still change the model behind them without a version bump. | https://toolweight.com/compare/llm-apis#deepseek--flagship_model | | Context window | 1,000,000 tokens | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news260424/ | 1M context is now the default across all official DeepSeek services. | https://toolweight.com/compare/llm-apis#deepseek--context_window | | Max output | 384,000 tokens | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | - | https://toolweight.com/compare/llm-apis#deepseek--max_output | | Image input | ○ | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news260424/ | The V4 models are text-only; vision needs the separate DeepSeek-VL models. | https://toolweight.com/compare/llm-apis#deepseek--vision | | Audio in/out | ○ | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news260424/ | V4 is text in, text out. | https://toolweight.com/compare/llm-apis#deepseek--audio_io | | Open weights | ● | Vendor-claimed | 2026-01-15 | https://github.com/deepseek-ai/DeepSeek-V3 | V3 line released under MIT, among the most permissive licences of any frontier-adjacent model. | https://toolweight.com/compare/llm-apis#deepseek--open_weights | | OpenAI-compat API | ● | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news260424/ | Supports the OpenAI ChatCompletions and Anthropic APIs. | https://toolweight.com/compare/llm-apis#deepseek--openai_compatible | | TTFT p50 | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#deepseek--ttft_p50 | | Output tok/s | - | Unknown | - | - | - | https://toolweight.com/compare/llm-apis#deepseek--throughput_tps | | $/M input | $0.14/M tok | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | v4-flash cache-miss rate; a cache hit bills $0.0028/M. The higher-capability v4-pro is $0.435/M miss. | https://toolweight.com/compare/llm-apis#deepseek--price_in | | $/M output | $0.28/M tok | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | v4-flash output rate; v4-pro is $0.87/M. Still a small fraction of the frontier volume tiers — which ratio is the honest one depends on which model you would otherwise have used. | https://toolweight.com/compare/llm-apis#deepseek--price_out | | $/M cache read | $0.0028/M tok | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | Cache hits bill at a fiftieth of the v4-flash miss rate, applied automatically. | https://toolweight.com/compare/llm-apis#deepseek--cached_input | | Batch discount | 0% | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/quick_start/pricing | No batch endpoint on the official pricing page; the list price is already below most competitors' batch rates. | https://toolweight.com/compare/llm-apis#deepseek--batch_discount | | Tool use | ● | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news260424/ | Function calling with dedicated agent-capability optimisations in V4; multi-step reliability has historically been reported as weaker than the closed frontier. | https://toolweight.com/compare/llm-apis#deepseek--tool_use | | Schema output | ◐ | Inferred | 2026-01-15 | - | JSON mode rather than full schema-constrained decoding. | https://toolweight.com/compare/llm-apis#deepseek--structured_output | | Effort control | ◐ | Inferred | 2026-01-15 | - | A separate reasoner model rather than a per-request effort level. | https://toolweight.com/compare/llm-apis#deepseek--reasoning_effort | | Computer use | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#deepseek--computer_use | | MCP support | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#deepseek--mcp_support | | Cache TTL | Automatic disk cache, no fixed TTL | Vendor-claimed | 2026-07-30 | https://api-docs.deepseek.com/news/news0802/ | Context caching on disk; unused entries are cleared automatically, typically within a few hours to days, with no user configuration. | https://toolweight.com/compare/llm-apis#deepseek--prompt_cache_ttl | | Continuity policy | The worst on this page for a closed endpoint, and the best if you self-host. The API offers only rolling aliases, deepseek-chat silently points at whatever the current model is, so behaviour can change with no version to pin and no deprecation notice. The mitigation is the MIT licence: download the checkpoint and the version is yours permanently. | Community-reported | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#deepseek--continuity_policy | | Notice period | - | Unknown | - | - | No published deprecation policy; aliases are updated in place. | https://toolweight.com/compare/llm-apis#deepseek--deprecation_notice | | Pinnable versions | ○ | Community-reported | 2026-01-15 | - | Only rolling aliases are exposed on the first-party API. | https://toolweight.com/compare/llm-apis#deepseek--pinned_snapshots | | Zero retention | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#deepseek--zero_retention | | Trains on your data | ● | Community-reported | 2026-01-15 | - | Terms permit using inputs to improve services. Assume prompts are retained and read them before sending anything sensitive. | https://toolweight.com/compare/llm-apis#deepseek--trains_on_data | | AU region | ○ | Inferred | 2026-01-15 | - | - | https://toolweight.com/compare/llm-apis#deepseek--au_region | | API since | 2023 | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#deepseek--launch_year | | Positioning | Near-frontier quality at a fraction of the token price | Inferred | - | - | - | https://toolweight.com/compare/llm-apis#deepseek--positioning | **Verdict.** The category's price floor with unmatched quality-per-dollar for bulk work; for regulated data, use the MIT weights via a Western host. **Pick it when** - High-volume classification, extraction and summarisation - Cost-sensitive workloads where a 35x output-price gap against a volume-tier frontier model outweighs a small quality gap - Self-hosting a capable model under a genuinely permissive licence ## Methodology - Pricing here is stale within a fortnight; this category re-prices faster than any other on Toolweight - Seven-day verification cadence, every price cell dated - Treat any cell dated more than a month ago as indicative; click through to the vendor first - Figures are pay-as-you-go list rates in USD per million tokens - Before batch, cache or committed-spend discounts, and before long-context surcharges - Where a vendor runs an unexpired introductory rate, the column carries list price and the note carries the intro rate and expiry - An introductory rate is what you actually pay today, so read the note before modelling a bill - Entries are providers, not models - Every price, context and capability figure describes that provider's current flagship, named in the Flagship model column - A cheaper flagship often sits beside a cheaper mid-tier that would serve you better - The killer column records notice before retirement, and whether you can pin a dated snapshot - Continuity is judged from published deprecation pages and observed retirements, not marketing - Where a provider publishes no policy, we say so rather than guess - Latency figures are community-reported; Toolweight has not run its own TTFT harness, so most of that column is blank ## FAQ ### What actually happens when a model I depend on is deprecated? - The alias stops resolving and requests 404 - A pinned dated snapshot keeps serving until its published retirement date - A bare alias means you migrate today - Anthropic and OpenAI publish retirement dates months ahead; several providers publish nothing - Rolling aliases can change behaviour with no version bump ### Is DeepSeek or Kimi really good enough to replace Claude or GPT? - For extraction, classification, summarisation, translation and bulk rewriting: yes - Roughly 1/35th the output cost of Anthropic's volume model, or 1/120th of its flagship - The honest bulk-work comparison is against the volume tier, not the flagship - For long agentic runs, sustained instruction following and first-try code, frontier labs stay ahead - Split the workload rather than picking one provider for everything ### Does an OpenAI-compatible endpoint actually make switching easy? - It makes the transport identical and the semantics different - Chat completions port cleanly - Tool-call formats, effort parameters, cache accounting, thinking blocks and schema enforcement do not - Prompts tuned on one model regress on another - Budget a re-evaluation, not a config change ### How much does prompt caching really save on an agent loop? - More than any other lever - Cache reads typically bill at 10-25% of the input rate - An agent loop resends the whole conversation each turn, so a long run is 80-90% cache reads - The trap: caching is a prefix match, so a timestamp or reordered tool list invalidates everything after it ### Which providers can serve inference from an Australian region? - Amazon Bedrock (ap-southeast-2) and Google Vertex AI (australia-southeast1) serve frontier models in-country - First-party Anthropic, OpenAI and xAI endpoints route to US or EU by default - Residency controls vary by plan - Self-hosting is the only unambiguously AU-resident answer ### Should I go through a router like OpenRouter instead of direct? - Use a router when model choice is a runtime decision, for outage fallback, or while benchmarking - Go direct when you depend on provider-specific features - That means cache breakpoints, computer use, batch endpoints, enterprise retention terms - Routers expose the intersection of upstream features, not the union ### Why is the time-to-first-token column mostly empty? - Almost nobody publishes it - Self-reported latency is meaningless without a stated prompt length, region and concurrency - Figures shown are community measurements for speed-focused providers - Toolweight will fill it only after running its own harness with published methodology ## Sources | Source | Last verified | | --- | --- | | https://platform.claude.com/docs/en/about-claude/models/overview | 2026-06-24 | | https://platform.claude.com/docs/en/build-with-claude/vision | 2026-06-24 | | https://platform.claude.com/docs | 2026-06-24 | | https://platform.claude.com/docs/en/about-claude/pricing | 2026-11-06 | | https://platform.claude.com/docs/en/build-with-claude/batch-processing | 2026-06-24 | | https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview | 2026-06-24 | | https://platform.claude.com/docs/en/build-with-claude/structured-outputs | 2026-06-24 | | https://platform.claude.com/docs/en/build-with-claude/effort | 2026-06-24 | | https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use | 2026-06-24 | | https://platform.claude.com/docs/en/agents-and-tools/mcp-connector | 2026-06-24 | | https://platform.claude.com/docs/en/build-with-claude/prompt-caching | 2026-06-24 | | https://platform.claude.com/docs/en/about-claude/model-deprecations | 2026-06-24 | | https://developers.openai.com/api/docs/models | 2026-07-30 | | https://developers.openai.com/api/docs/models/gpt-5.6-sol | 2026-07-30 | | https://openai.com/index/introducing-gpt-oss/ | 2026-01-15 | | https://developers.openai.com/api/docs/pricing | 2026-07-30 | | https://platform.openai.com/docs/guides/structured-outputs | 2026-01-15 | | https://platform.openai.com/docs/guides/reasoning | 2026-01-15 | | https://platform.openai.com/docs/guides/tools-computer-use | 2026-01-15 | | https://developers.openai.com/api/docs/guides/prompt-caching | 2026-07-30 | | https://platform.openai.com/docs/models | 2026-01-15 | | https://platform.openai.com/docs/guides/your-data | 2026-01-15 | | https://developers.openai.com/api/docs/guides/your-data | 2026-11-07 | | https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview | 2026-07-30 | | https://ai.google.dev/gemma | 2026-01-15 | | https://ai.google.dev/gemini-api/docs/openai | 2026-01-15 | | https://aistudio.google.com/docs/pricing | 2026-11-06 | | https://ai.google.dev/gemini-api/docs/pricing | 2026-07-30 | | https://ai.google.dev/gemini-api/docs/structured-output | 2026-01-15 | | https://ai.google.dev/gemini-api/docs/thinking | 2026-01-15 | | https://ai.google.dev/gemini-api/docs/computer-use | 2026-01-15 | | https://ai.google.dev/gemini-api/docs/function-calling | 2026-07-30 | | https://ai.google.dev/gemini-api/docs/models | 2026-01-15 | | https://docs.x.ai/developers/models | 2026-07-30 | | https://docs.x.ai/developers/grok-4-5 | 2026-07-30 | | https://docs.x.ai/developers/grok-4-7.md | 2026-11-07 | | https://docs.x.ai/overview | 2026-07-30 | | https://docs.x.ai/docs/models | 2026-11-06 | | https://docs.x.ai/developers/pricing | 2026-07-30 | | https://docs.x.ai/developers/pricing.md | 2026-11-07 | | https://docs.x.ai/developers/faq/security | 2026-11-07 | | https://www.llama.com/models/llama-4/ | 2026-01-15 | | https://www.llama.com/llama-downloads/ | 2026-01-15 | | https://docs.mistral.ai/models/model-cards/mistral-large-3-25-12 | 2026-07-30 | | https://docs.mistral.ai/api/ | 2026-07-30 | | https://mistral.ai/pricing | 2026-11-06 | | https://mistral.ai/pricing/api | 2026-07-30 | | https://docs.mistral.ai/inference/model-lifecycle | 2026-11-07 | | https://docs.mistral.ai/getting-started/models/models_overview/ | 2026-01-15 | | https://api-docs.deepseek.com/quick_start/pricing | 2026-07-30 | | https://api-docs.deepseek.com/news/news260424/ | 2026-07-30 | | https://github.com/deepseek-ai/DeepSeek-V3 | 2026-01-15 | | https://api-docs.deepseek.com/news/news0802/ | 2026-07-30 | | https://www.alibabacloud.com/help/en/model-studio/text-generation-model/ | 2026-07-30 | | https://help.aliyun.com/en/model-studio/qwen3-7-max | 2026-11-07 | | https://github.com/QwenLM/Qwen3 | 2026-01-15 | | https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope | 2026-07-30 | | https://www.alibabacloud.com/help/en/model-studio/model-pricing | 2026-11-06 | | https://www.alibabacloud.com/help/en/model-studio/context-cache | 2026-07-30 | | https://www.alibabacloud.com/help/en/model-studio/model-depreciation | 2026-11-07 | | https://www.alibabacloud.com/help/en/model-studio/data-retention-policy | 2026-11-07 | | https://platform.kimi.ai/docs/introduction | 2026-07-30 | | https://platform.kimi.ai/docs/pricing/chat-k3 | 2026-07-30 | | https://github.com/MoonshotAI/Kimi-K2 | 2026-01-15 | | https://platform.kimi.ai/docs/guide/migrating-from-openai-to-kimi | 2026-07-30 | | https://platform.kimi.ai/docs/pricing/chat | 2026-11-07 | | https://platform.kimi.ai/docs/guide/use-context-caching-feature-of-kimi-api | 2026-07-30 | | https://huggingface.co/zai-org/GLM-4.6 | 2026-01-15 | | https://docs.z.ai/guides/overview/pricing | 2026-11-06 | | https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference-supported-models-features.html | 2026-06-24 | | https://platform.claude.com/docs/en/models/opus-4-8/overview | 2026-11-07 | | https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/structured-output.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/computer-use.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/model-lifecycle.html | 2026-06-24 | | https://docs.aws.amazon.com/bedrock/latest/userguide/data-protection.html | 2026-01-15 | | https://docs.cohere.com/docs/models | 2026-07-30 | | https://docs.cohere.com/docs/command-a-plus | 2026-07-30 | | https://docs.cohere.com/docs/compatibility-api | 2026-07-30 | | https://cohere.com/pricing | 2026-11-07 | | https://openrouter.ai/models | 2026-01-15 | | https://openrouter.ai/docs/api-reference/overview | 2026-01-15 | | https://docs.together.ai/docs/serverless-models | 2026-01-15 | | https://docs.together.ai/docs/openai-api-compatibility | 2026-01-15 | | https://docs.together.ai/docs/deprecations | 2026-11-07 | | https://docs.together.ai/docs/zero-data-retention | 2026-11-07 | | https://docs.fireworks.ai/models/overview | 2026-01-15 | | https://docs.fireworks.ai/tools-sdks/openai-compatibility | 2026-01-15 | | https://fireworks.ai/pricing | 2026-11-07 | | https://docs.fireworks.ai/guides/batch-inference | 2026-11-07 | | https://docs.fireworks.ai/structured-responses/structured-response-formatting | 2026-01-15 | | https://docs.fireworks.ai/guides/prompt-caching | 2026-11-07 | | https://docs.fireworks.ai/faq-new/deployment-infrastructure/do-you-provide-notice-before-removing-model-availability | 2026-11-07 | | https://docs.fireworks.ai/guides/security_compliance/data_handling | 2026-11-07 | | https://console.groq.com/docs/models | 2026-01-15 | | https://console.groq.com/docs/openai | 2026-01-15 | | https://console.groq.com/docs/batch | 2026-11-07 | | https://console.groq.com/docs/prompt-caching | 2026-11-07 | | https://console.groq.com/docs/your-data | 2026-11-07 | | https://inference-docs.cerebras.ai/models/overview | 2026-01-15 | | https://inference-docs.cerebras.ai/models/openai-oss.md | 2026-11-07 | | https://inference-docs.cerebras.ai/resources/openai | 2026-01-15 | | https://inference-docs.cerebras.ai/capabilities/prompt-caching.md | 2026-11-07 | | https://inference-docs.cerebras.ai/capabilities/prompt-caching | 2026-11-07 | | https://cerebras-inference.help.usepylon.com/articles/1811589793-does-cerebras-retain-my-data | 2026-11-07 | | https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html | 2026-01-15 | | https://raw.githubusercontent.com/vllm-project/vllm/main/README.md | 2026-11-07 | | https://docs.vllm.ai/en/latest/features/structured_outputs.html | 2026-01-15 | | https://docs.vllm.ai/en/latest/features/automatic_prefix_caching.html | 2026-01-15 | ## Cite this page > Anthropic, OpenAI and Google lead on capability, cheaper Chinese labs win on price, routers trade features for reach; pick on continuity, not headline price. > > — Toolweight, https://toolweight.com/compare/llm-apis, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Coding agents](https://toolweight.com/compare/coding-agents), Which AI coding agent should I use in 2026? - [Sandbox providers](https://toolweight.com/compare/sandbox-providers), Which sandbox provider should I run untrusted or agent-generated code on? - [Browser APIs](https://toolweight.com/compare/browser-automation-apis), Which hosted browser automation API should I use for AI agents and scraping? - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/llm-apis - Machine-readable: https://toolweight.com/compare/llm-apis.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Browser automation APIs compared (2026) slug: browser-automation-apis url: "https://toolweight.com/compare/browser-automation-apis" question: Which hosted browser automation API should I use for AI agents and scraping? tools: 14 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-07-01 median_verified: 2026-07-01 stale_values: 76 conflicting_values: 1 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 42% verify_cadence: 30d license: CC-BY-4.0 --- # Browser automation APIs > **Which hosted browser automation API should I use for AI agents and scraping?** > > Browserbase is the safe agent default, Bright Data wins hard anti-bot targets, Cloudflare is cheapest for benign screenshotting, and self-hosted Playwright suits cooperative targets. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/browser-automation-apis | | Tools compared | 14 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 147 of 364 values have a verification date, checked between 2026-07-01 and 2026-11-07 (median 2026-07-01), 76 due for re-check, 1 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 42% (mean cell confidence, not age) | | Killer field | antibot_success | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Browser Use](https://toolweight.com/tools/browser-use) | 94.8 | 92% | The open-source browser agent library, with stealth cloud browsers and a hosted agent API | | 2 | [Anchor Browser](https://toolweight.com/tools/anchor-browser) | 88.5 | 83% | Cloud browsers built around authenticated sessions and human takeover | | 3 | [Browserbase](https://toolweight.com/tools/browserbase) | 87.9 | 96% | Managed headless browsers for AI agents, with Stagehand as the SDK | | 4 | [Hyperbrowser](https://toolweight.com/tools/hyperbrowser) | 87.8 | 100% | Agent-first browsers with hosted scrape, crawl and CUA endpoints | | 5 | [Kernel](https://toolweight.com/tools/kernel) | 86.6 | 96% | Fast-starting browsers plus a runtime for deploying browser agents | | 6 | [Steel.dev](https://toolweight.com/tools/steel-dev) | 84.8 | 92% | Open-source browser API for AI agents, hosted or self-run | | 7 | [Browserless](https://toolweight.com/tools/browserless) | 83.9 | 88% | Self-hostable headless Chrome service; BrowserQL for bot-heavy sites | | 8 | [Airtop](https://toolweight.com/tools/airtop) | 83.6 | 79% | Natural-language browser API, describe the page, skip the selectors | | 9 | [Bright Data Browser API](https://toolweight.com/tools/bright-data-browser-api) | 73.9 | 83% | CDP browsers on a 70M+ residential IP network with challenge handling built in | | 10 | [ZenRows](https://toolweight.com/tools/zenrows) | 65.9 | 88% | Scraper API plus a CDP scraping browser on a shared residential pool | | 11 | [Apify](https://toolweight.com/tools/apify) | 65.6 | 88% | Actor platform for scraping and agents, with Crawlee as the open-source core | | 12 | [Self-hosted Playwright](https://toolweight.com/tools/playwright-self-hosted) | 63.7 | 92% | The baseline: run Chromium in your own container and own everything | | 13 | [Cloudflare Browser Rendering](https://toolweight.com/tools/cloudflare-browser-rendering) | 45.1 | 92% | Puppeteer and Playwright bindings for Workers, plus REST render endpoints | | 14 | [ScrapingBee](https://toolweight.com/tools/scrapingbee) | 39.3 | 88% | One-call HTML API with JavaScript rendering and premium proxy tiers | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Reliability & anti-bot | Tool | Anti-bot pass rate (%) | Stealth mode | CAPTCHA solving | Residential proxy | Cold start | | --- | --- | --- | --- | --- | --- | | Browser Use | - | ● | ● | metered-extra | - | | Anchor Browser | - | ● | ● | metered-extra | - | | Browserbase | - | ● | ● | metered-extra | 1s | | Hyperbrowser | 99% | ● | ● | metered-extra | 500ms | | Kernel | - | ● | ◐ | metered-extra | 30ms | | Steel.dev | - | ● | ◐ | metered-extra | - | | Browserless | - | ● | ● | metered-extra | - | | Airtop | - | ● | ● | included | - | | Bright Data Browser API | - | ● | ● | included | - | | ZenRows | 99.9% | ● | ● | included | - | | Apify | - | ● | ◐ | metered-extra | - | | Self-hosted Playwright | - | ○ | ○ | byo-only | 2s | | Cloudflare Browser Rendering | - | ○ | ○ | none | - | | ScrapingBee | 99% | ● | ◐ | metered-extra | - | ### Features | Tool | CDP endpoint | Playwright | Puppeteer | Session persistence | Live view | Session replay | Max concurrency (sessions) | File downloads | Chrome extensions | Browser regions | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Browser Use | ● | ● | ● | ● | ● | ● | 1,000 sessions | ● | ● | us-east, eu-central | | Anchor Browser | ● | ● | ● | ● | ● | ● | 200 sessions | ● | ● | - | | Browserbase | ● | ● | ● | ● | ● | ● | 250 sessions | ● | ● | us-east, us-west, eu-central, uk | | Hyperbrowser | ● | ● | ● | ● | ● | ◐ | 100 sessions | ● | ● | us-central, us-east, us-west, europe-west, asia-south | | Kernel | ● | ● | ● | ● | ● | ● | 150 sessions | ● | ● | us-east, eu-west, ap-southeast | | Steel.dev | ● | ● | ● | ● | ● | ◐ | 100 sessions | ● | ● | us-east | | Browserless | ● | ● | ● | ◐ | ● | ◐ | 100 sessions | ● | ◐ | us-west, eu-west, eu-central | | Airtop | ◐ | ● | ● | ● | ● | ◐ | 30 sessions | ◐ | ◐ | - | | Bright Data Browser API | ● | ● | ● | ◐ | ● | ◐ | Unlimited | ◐ | - | global | | ZenRows | ● | ● | ● | ◐ | ○ | ○ | 1,000 sessions | ◐ | - | global | | Apify | ○ | ● | ● | ◐ | ● | ○ | 5 sessions | ● | ◐ | us-east, eu-central | | Self-hosted Playwright | ● | ● | ● | ● | ○ | ● | - | ● | ● | self-hosted | | Cloudflare Browser Rendering | ◐ | ● | ● | ◐ | ○ | ○ | 30 sessions | ◐ | ○ | global-edge | | ScrapingBee | ○ | ○ | ○ | ○ | ○ | ○ | 100 sessions | ○ | ○ | global | ### Agentic | Tool | Agent API | MCP server | Human handoff | | --- | --- | --- | --- | | Browser Use | ● | ● | ● | | Anchor Browser | ◐ | ● | ● | | Browserbase | ◐ | ● | ◐ | | Hyperbrowser | ● | ● | ◐ | | Kernel | ◐ | ● | ◐ | | Steel.dev | ◐ | ● | ◐ | | Browserless | ○ | ● | ● | | Airtop | ● | ● | ● | | Bright Data Browser API | ○ | ● | ○ | | ZenRows | ○ | ● | ○ | | Apify | ◐ | ● | ○ | | Self-hosted Playwright | ○ | ● | ○ | | Cloudflare Browser Rendering | ○ | ● | ○ | | ScrapingBee | ○ | ● | ○ | ### Pricing | Tool | Pricing model | Per browser-hour (/browser-hour) | Free tier | | --- | --- | --- | --- | | Browser Use | per-hour | $0.02/browser-hour | ● | | Anchor Browser | per-hour | $0.05/browser-hour | ● | | Browserbase | per-hour | $0.1/browser-hour | ● | | Hyperbrowser | per-hour | $0.1/browser-hour | ● | | Kernel | per-hour | $0.06/browser-hour | ● | | Steel.dev | per-hour | $0.1/browser-hour | ● | | Browserless | per-hour | - | ● | | Airtop | per-hour | - | ● | | Bright Data Browser API | per-gb | - | ◐ | | ZenRows | per-credit | $0/browser-hour | ◐ | | Apify | per-credit | - | ● | | Self-hosted Playwright | infrastructure | $0.03/browser-hour | ● | | Cloudflare Browser Rendering | per-hour | $0.09/browser-hour | ● | | ScrapingBee | per-credit | N/A | ◐ | ### Traction | Tool | GitHub stars | Funding stage | Open-source core | | --- | --- | --- | --- | | Browser Use | 120,216 | seed | ● | | Anchor Browser | - | seed | ○ | | Browserbase | 15,000 | series-b | ○ | | Hyperbrowser | 1,600 | seed | ○ | | Kernel | 1,128 | seed | ◐ | | Steel.dev | 5,000 | seed | ● | | Browserless | 10,000 | bootstrapped | ● | | Airtop | - | seed | ○ | | Bright Data Browser API | 2,700 | later-stage | ○ | | ZenRows | - | seed | ○ | | Apify | 17,000 | series-a | ◐ | | Self-hosted Playwright | 73,000 | open-source | ● | | Cloudflare Browser Rendering | 380 | public | ○ | | ScrapingBee | - | bootstrapped | ○ | ### Positioning | Tool | Positioning | Launched | | --- | --- | --- | | Browser Use | Open-source browser agent library with stealth cloud browsers and a hosted agent API | 2024 | | Anchor Browser | Cloud browser that keeps your agent logged in | 2024 | | Browserbase | Browser infrastructure for AI agents and automations | 2024 | | Hyperbrowser | Browser infrastructure and hosted web agents in one API | 2024 | | Kernel | Browsers and a runtime for deploying browser agents | 2024 | | Steel.dev | Open-source browser API purpose-built for AI agents | 2024 | | Browserless | Headless browser automation you can host yourself | 2018 | | Airtop | Give an AI agent a browser it can use in plain English | 2024 | | Bright Data Browser API | A CDP browser sitting on the largest residential proxy network | 2023 | | ZenRows | Anti-bot scraping API with a CDP browser attached | 2021 | | Apify | Cloud platform for web scraping and browser automation Actors | 2015 | | Self-hosted Playwright | The reference point every hosted browser is priced against | 2020 | | Cloudflare Browser Rendering | Headless Chromium as a Workers binding and REST API | 2023 | | ScrapingBee | Scraping API that handles proxies and headless browsers for you | 2018 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | `antibot_success` | reliability | number | % | higher | 10 | Measured share of successful loads across a fixed ten-site anti-bot panel (Cloudflare, Akamai, DataDome, HUMAN, Imperva, Kasada, F5 Shape, reCAPTCHA Enterprise plus two controls): 50 cold attempts per site per provider, default stealth settings, success = named DOM assertion reached within 30s. Not yet run, every cell is unknown by design. | | Stealth mode | `stealth_mode` | reliability | tristate | - | higher | 8 | Ships fingerprint spoofing and patched automation artefacts as a first-class, documented mode. Yes = on by default or one flag; partial = a thin flag or a plugin you configure yourself; no = stock Chromium. | | CAPTCHA solving | `captcha_solving` | reliability | tristate | - | higher | 7 | Challenges are solved inside the product without you wiring a third-party solver. Yes = automatic for common challenge types; partial = some types, beta, or extra cost; no = bring your own solver. | | Residential proxy | `residential_proxy` | reliability | enum | - | higher | 8 | How residential egress is supplied. Included = part of the headline price; metered-extra = available from the vendor but billed per GB on top; byo-only = you attach your own provider; none = datacentre IPs only. | | Cold start | `cold_start` | reliability | duration | - | lower | 5 | Time from session-create call to a usable CDP connection on an unwarmed pool, as claimed by the vendor. Null where no figure is published, we have not timed these ourselves. | | CDP endpoint | `cdp_endpoint` | features | tristate | - | higher | 8 | Exposes a raw Chrome DevTools Protocol websocket URL any CDP client can connect to. Yes = documented wss:// URL; partial = only through a vendor SDK, platform binding or restricted subset; no = REST endpoints only. | | Playwright | `playwright_support` | features | tristate | - | higher | 7 | Documented path to drive the hosted browser from Playwright. Yes = official connect/connectOverCDP example in the vendor's docs; partial = works but undocumented or via a fork; no = unsupported. | | Puppeteer | `puppeteer_support` | features | tristate | - | higher | 5 | Documented path to drive the hosted browser from Puppeteer, including any vendor fork. Same yes/partial/no ladder as the Playwright column. | | Session persistence | `session_persistence` | features | tristate | - | higher | 8 | Named profiles or contexts that survive session end and restore cookies, localStorage and auth state on the next run. Yes = first-class API; partial = manual cookie export/import; no = every session is fresh. | | Live view | `live_view` | features | tristate | - | higher | 7 | An embeddable URL or iframe showing the running browser, with input forwarded so a human can click. Yes = interactive and embeddable; partial = read-only stream or dashboard-only debugger; no = none. | | Session replay | `session_replay` | features | tristate | - | higher | 6 | Post-hoc recording of a finished session, video, rrweb or trace, retrievable via API or dashboard. Yes = retained and retrievable by default; partial = opt-in, short retention or logs only; no = nothing to replay. | | Max concurrency | `concurrency_ceiling` | features | number | sessions | higher | 4 | Concurrent browser sessions on the highest self-serve plan, before talking to sales. Null where the vendor publishes no cap, or where concurrency is governed by a RAM quota rather than a session count. | | File downloads | `file_downloads` | features | tristate | - | higher | 5 | Files a page downloads are captured and retrievable afterwards via API or storage. Yes = documented download API; partial = works but you must stream it out yourself; no = downloads are lost with the container. | | Chrome extensions | `extension_support` | features | tristate | - | higher | 4 | Load an unpacked or uploaded Chrome extension into a hosted session, the usual path for password managers, ad blockers and wallets. Yes = documented upload; partial = self-host only or restricted; no. | | Browser regions | `regions` | features | region-list | - | n/a | 3 | Geographies where the browser itself runs, not proxy exit countries. Australia is called out where present, because almost nobody offers it. | | Agent API | `computer_use_api` | agentic | tristate | - | higher | 7 | A vendor-hosted loop that takes a natural-language goal and drives the browser itself (own agent endpoint, or hosted Claude/OpenAI computer-use). Yes = hosted endpoint; partial = open-source framework or templates you run; no = bring your own loop. | | MCP server | `mcp_server` | agentic | tristate | - | higher | 5 | First-party Model Context Protocol server published and maintained by the vendor. Yes = official and documented; partial = community-maintained or unofficial; no. | | Human handoff | `human_handoff` | agentic | tristate | - | higher | 6 | A documented pause-for-human path, hand a person a takeover URL for a login or 2FA prompt, then resume the automation in the same session. Yes = explicit primitive; partial = live view exists but no resume semantics; no. | | Pricing model | `pricing_model` | pricing | enum | - | n/a | 3 | The unit you are actually billed in. Ranked by how predictable it is for long agent sessions, not by cost, per-hour is easy to forecast, per-GB depends entirely on page weight. | | Per browser-hour | `price_per_hour` | pricing | currency | /browser-hour | lower | 7 | Effective USD cost of one browser running for one hour on the cheapest paid self-serve plan, including bundled hours. Null where the product is not billed by time and a conversion would be fiction. Excludes proxy bandwidth. | | Free tier | `free_tier` | pricing | tristate | - | higher | 3 | An ongoing free allowance you can build against without a card. Yes = recurring free usage; partial = one-off trial credit or time-limited trial; no. | | GitHub stars | `github_stars` | traction | number | - | higher | 2 | Stars on the vendor's flagship public repo, the self-hostable core or the official SDK, as a rough mindshare proxy. Null where the vendor has no significant public repo. Figures are approximate. | | Funding stage | `funding_stage` | traction | enum | - | higher | 2 | Latest publicly known funding stage, as a survival proxy. Ranked by how likely the product is to still exist in three years, which is why bootstrapped-and-profitable ranks alongside Series B. | | Open-source core | `open_source_core` | traction | tristate | - | higher | 4 | A self-hostable core under a public licence, so you can leave. Yes = the browser service itself is runnable from source; partial = SDK or container images open, platform closed; no. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor positions itself in one line, paraphrased from its own homepage, useful for spotting which of the three sub-categories a product actually belongs to. | | Launched | `launch_year` | marketing | number | - | n/a | 0 | Year this specific product became publicly usable, not the year the company was founded. Cloudflare Browser Rendering and Bright Data's Browser API are both much younger than their parents. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Best for AI agents | `ai-agents` | Weighted for long-running autonomous sessions: persistence, takeover, agent surfaces. | computer_use_api:9, mcp_server:8, human_handoff:8, session_persistence:9, live_view:8, antibot_success:6, cdp_endpoint:6, extension_support:5, cold_start:5, price_per_hour:3, concurrency_ceiling:3 | https://toolweight.com/compare/browser-automation-apis?w=computer_use_api:9,mcp_server:8,human_handoff:8,session_persistence:9,live_view:8,antibot_success:6,cdp_endpoint:6,extension_support:5,cold_start:5,price_per_hour:3,concurrency_ceiling:3 | | Best anti-bot | `anti-bot` | Weighted for reaching protected targets at all; everything else is secondary. | antibot_success:10, stealth_mode:9, residential_proxy:9, captcha_solving:8, regions:4, session_persistence:3, price_per_hour:2 | https://toolweight.com/compare/browser-automation-apis?w=antibot_success:10,stealth_mode:9,residential_proxy:9,captcha_solving:8,regions:4,session_persistence:3,price_per_hour:2 | | Cheapest per hour | `cheapest` | Weighted for cost per browser-hour on self-serve plans, with free tiers counted. | price_per_hour:10, free_tier:6, pricing_model:5, concurrency_ceiling:4, cold_start:3, antibot_success:2 | https://toolweight.com/compare/browser-automation-apis?w=price_per_hour:10,free_tier:6,pricing_model:5,concurrency_ceiling:4,cold_start:3,antibot_success:2 | | Best debugging | `debugging` | Weighted for seeing what the browser actually did when the run failed at 3am. | live_view:9, session_replay:10, cdp_endpoint:7, playwright_support:6, human_handoff:6, file_downloads:4, cold_start:3 | https://toolweight.com/compare/browser-automation-apis?w=live_view:9,session_replay:10,cdp_endpoint:7,playwright_support:6,human_handoff:6,file_downloads:4,cold_start:3 | ## Verdict - The category has split into three products that share a name - Agent infrastructure (Browserbase, Steel, Hyperbrowser, Anchor, Browser Use, Kernel, Airtop): a browser with live view, profiles and MCP, priced per browser-hour - Unblocking infrastructure (Bright Data, ZenRows, ScrapingBee): a residential IP pool with a browser bolted on, priced per gigabyte or request - Platform infrastructure (Apify, Cloudflare): somewhere to run code that happens to include Chromium - Most common mistake: point a per-hour agent host at a DataDome site, then conclude "browser APIs don't work" - For agents, Browserbase is still the one to beat - Not because the browsers are faster, nobody has shown that, but because the surface area is finished - Browserbase: session-surviving contexts, an embeddable live view, extension loading, fetchable downloads, and Stagehand - Anchor Browser is the sharpest alternative if your agent's real problem is logging in - Airtop goes furthest the other way: a natural-language extraction API, until you need a selector - Kernel and Hyperbrowser are both credible and cheaper-feeling, with less track record - For unblocking, ignore the agent features entirely and buy IP quality - Bright Data's Browser API is expensive per gigabyte and worth it - CDP-over-residential-proxy with automatic challenge handling is genuinely hard to operate - ZenRows is the value pick and has closed most of the gap - ScrapingBee is not a browser API: an HTML endpoint with JavaScript rendering, no CDP, no session - ScrapingBee is priced and documented honestly, fine for one-shot fetches, terrible for multi-step flows - MCP servers went from differentiator to table stakes in about nine months - By mid-2026 a vendor without one looks abandoned, and the servers are thin wrappers - The pricing units are drifting apart on purpose - Per-hour, per-session, per-request, per-gigabyte and per-credit cannot be compared without knowing your traffic shape - Every vendor picks the unit that flatters it - Run a week of your own workload against two providers before signing anything annual - Nobody in this category will tell you their real block rate, us included, yet - The success-rate column is empty because we have not run the panel, not because vendors declined - Treat the anti-bot marketing as unfalsifiable until somebody publishes logs ## The pricing trap: per-hour looks cheap until the proxy bill lands - A browser-hour at ten cents sounds like nothing - A session that idles while an LLM thinks can burn twenty minutes to do ninety seconds of work - The real unit is not the hour, it is the hour times your model latency - Teams routinely find the browser costs less than the tokens and more than they budgeted, at once - The bigger surprise is traffic - Every agent-oriented provider prices residential proxy bandwidth separately, near Bright Data's direct rate - Most of them resell the same pools - A scraping workload pulling images and fonts can move a gigabyte in an afternoon - Once you pay for proxy gigabytes anyway, compare Browserbase plus proxy gigabytes versus Bright Data all-in - That comparison is much closer than the sticker prices suggest - Watch the concurrency cliff: several vendors gate concurrency by plan tier - The constraint that forces an upgrade is parallelism, not usage - Three sessions on the entry plan is fine for development, useless for a crawl - Check the concurrency number before the hourly rate ## Anti-bot is a moving target and every published number is marketing - Bot detection vendors ship changes weekly - A provider that passes Kasada in March can fail it in April because a signal moved - Neither party will announce it - Vendor "99% success rate" and "unblockable" claims are unfalsifiable: no date, target list, sample size or definition - A single number is the wrong shape for the truth - Pass rates vary by detection vendor, target configuration, geography, and cold-versus-cookie sessions - A provider can be excellent against Cloudflare and hopeless against DataDome - Our panel reports per-site rates alongside the headline - While the column is empty: shortlist on capability, then run your own two-week bake-off against your actual targets - Log every failure with the challenge type, and re-run it quarterly - Nobody's benchmark, ours included, substitutes for testing against the specific site paying your bills ## How to actually decide - Start with the target - Site you control, an internal tool, or a documentation crawl: use Cloudflare Browser Rendering or self-hosted Playwright - You are buying screenshots and PDFs, not evasion; the agent features are dead weight - Authenticated third-party site your agent must log into and stay in: buy persistence and takeover - Anchor Browser or Browserbase, with a human-in-the-loop path for the 2FA prompt that will appear - The failure mode is not blocking, it is a session dying at 2am with no visibility - Session replay should carry as much weight as pass rate - Protected commercial site you never control: buy the network, Bright Data or ZenRows, priced per gigabyte - Design for retries rather than perfection - Do not put an agent framework on top until the fetch layer is reliable - If unsure, connect over raw CDP with Playwright from day one - That keeps every option here open for the price of an environment variable ## Per-tool provenance, every cell, every source ### Browser Use {#browser-use} The open-source browser agent library, with stealth cloud browsers and a hosted agent API | | | | --- | --- | | Site | https://browser-use.com | | Docs | https://docs.browser-use.com | | Repo | https://github.com/browser-use/browser-use | | Company | Browser Use | | Founded | 2024 | | Funding | Seed | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/browser-use | | Score (default weights) | 94.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#browser-use--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/cloud/browser/stealth.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/cloud/browser/stealth.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--captcha_solving | | Residential proxy | metered-extra | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#browser-use--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--session_persistence | | Live view | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--live_view | | Session replay | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--session_replay | | Max concurrency | 1,000 sessions | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | Self-serve ceiling by total paid; Enterprise is 1,000+. | https://toolweight.com/compare/browser-automation-apis#browser-use--concurrency_ceiling | | File downloads | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--file_downloads | | Chrome extensions | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--extension_support | | Browser regions | us-east, eu-central | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/cloud/eu-deployment.md | Frankfurt is documented; the US default region is not named, us-east is assumed. | https://toolweight.com/compare/browser-automation-apis#browser-use--regions | | Agent API | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--mcp_server | | Human handoff | ● | Vendor-claimed | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--human_handoff | | Pricing model | per-hour | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | Credits are dollar-denominated; traffic is billed separately. | https://toolweight.com/compare/browser-automation-apis#browser-use--pricing_model | | Per browser-hour | $0.02/browser-hour | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--price_per_hour | | Free tier | ● | Vendor-claimed | 2026-11-07 | https://browser-use.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#browser-use--free_tier | | GitHub stars | 120,216 | Measured by Toolweight | 2026-11-07 | https://api.github.com/repos/browser-use/browser-use | Read from the GitHub API on 2026-11-07. | https://toolweight.com/compare/browser-automation-apis#browser-use--github_stars | | Funding stage | seed | Community-reported | 2026-11-07 | https://www.felicis.com/insight/investing-in-browser-use | $17M seed led by Felicis, March 2025. | https://toolweight.com/compare/browser-automation-apis#browser-use--funding_stage | | Open-source core | ● | Vendor-claimed | 2026-11-07 | https://api.github.com/repos/browser-use/browser-use | MIT-licensed library; the cloud is separate. | https://toolweight.com/compare/browser-automation-apis#browser-use--open_source_core | | Positioning | Open-source browser agent library with stealth cloud browsers and a hosted agent API | Inferred | 2026-11-07 | https://docs.browser-use.com/llms.txt | - | https://toolweight.com/compare/browser-automation-apis#browser-use--positioning | | Launched | 2024 | Measured by Toolweight | 2026-11-07 | https://api.github.com/repos/browser-use/browser-use | Repository creation date. | https://toolweight.com/compare/browser-automation-apis#browser-use--launch_year | **Verdict.** The cheapest hosted browser-hour here and the library most agents already import, with a shorter track record as infrastructure. **Pick it when** - Agents already built on the browser-use library - Teams that want a browser, a proxy and model tokens on one credit balance - Cheap, bursty browser time with no subscription ### Anchor Browser {#anchor-browser} Cloud browsers built around authenticated sessions and human takeover | | | | --- | --- | | Site | https://anchorbrowser.io | | Docs | https://docs.anchorbrowser.io | | Company | Anchor Browser | | Founded | 2024 | | Funding | Seed | | Open source | No | | Profile | https://toolweight.com/tools/anchor-browser | | Score (default weights) | 88.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#anchor-browser--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-11-06 | https://docs.anchorbrowser.io/essentials/stealth | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--stealth_mode | | CAPTCHA solving | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--captcha_solving | | Residential proxy | metered-extra | Inferred | - | - | Proxy egress available from the vendor and billed separately. | https://toolweight.com/compare/browser-automation-apis#anchor-browser--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/integrations/open-source/playwright | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/integrations/open-source/puppeteer | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/essentials/managed-authentication | Identity profiles are the core product, not a feature flag. | https://toolweight.com/compare/browser-automation-apis#anchor-browser--session_persistence | | Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/advanced/browser-live-view | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--live_view | | Session replay | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--session_replay | | Max concurrency | 200 sessions | Vendor-claimed | 2026-11-06 | https://www.anchorbrowser.io/pricing | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--concurrency_ceiling | | File downloads | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--file_downloads | | Chrome extensions | ● | Vendor-claimed | 2026-11-07 | https://docs.anchorbrowser.io/advanced/extensions | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--extension_support | | Browser regions | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--regions | | Agent API | ◐ | Inferred | - | - | Task-style endpoints exist but the browser, not the agent loop, is the product. | https://toolweight.com/compare/browser-automation-apis#anchor-browser--computer_use_api | | MCP server | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--mcp_server | | Human handoff | ● | Vendor-claimed | 2026-07-01 | https://docs.anchorbrowser.io/agentic-browser-control/human-in-the-loop | Designed around a human clearing 2FA mid-session and handing control back. | https://toolweight.com/compare/browser-automation-apis#anchor-browser--human_handoff | | Pricing model | per-hour | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--pricing_model | | Per browser-hour | $0.05/browser-hour | Vendor-claimed | 2026-11-07 | https://docs.anchorbrowser.io/pricing | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--price_per_hour | | Free tier | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--free_tier | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--github_stars | | Funding stage | seed | Community-reported | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--open_source_core | | Positioning | Cloud browser that keeps your agent logged in | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#anchor-browser--launch_year | **Verdict.** The best answer when your agent's blocker is a login wall rather than a bot wall. **Pick it when** - Agents operating inside authenticated SaaS dashboards - Workflows that hit 2FA and need a human for ten seconds - Running password-manager extensions inside a hosted browser ### Browserbase {#browserbase} Managed headless browsers for AI agents, with Stagehand as the SDK | | | | --- | --- | | Site | https://www.browserbase.com | | Docs | https://docs.browserbase.com | | Repo | https://github.com/browserbase/stagehand | | Company | Browserbase, Inc. | | Founded | 2024 | | Funding | Series B | | Open source | No | | Profile | https://toolweight.com/tools/browserbase | | Score (default weights) | 87.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#browserbase--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/features/stealth-mode | - | https://toolweight.com/compare/browser-automation-apis#browserbase--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-11-06 | https://docs.browserbase.com/features/stealth-mode | - | https://toolweight.com/compare/browser-automation-apis#browserbase--captcha_solving | | Residential proxy | metered-extra | Inferred | - | - | Vendor-managed residential egress billed per GB on top of browser-hours. | https://toolweight.com/compare/browser-automation-apis#browserbase--residential_proxy | | Cold start | 1s | Inferred | - | - | Vendor markets sub-second starts; not independently timed. | https://toolweight.com/compare/browser-automation-apis#browserbase--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/introduction | - | https://toolweight.com/compare/browser-automation-apis#browserbase--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/welcome/quickstarts/playwright | - | https://toolweight.com/compare/browser-automation-apis#browserbase--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/welcome/quickstarts/puppeteer | - | https://toolweight.com/compare/browser-automation-apis#browserbase--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/features/contexts | Contexts persist cookies and localStorage across sessions. | https://toolweight.com/compare/browser-automation-apis#browserbase--session_persistence | | Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/observability/session-live-view | - | https://toolweight.com/compare/browser-automation-apis#browserbase--live_view | | Session replay | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/observability/session-replay | - | https://toolweight.com/compare/browser-automation-apis#browserbase--session_replay | | Max concurrency | 250 sessions | Vendor-claimed | 2026-11-06 | https://www.browserbase.com/pricing | - | https://toolweight.com/compare/browser-automation-apis#browserbase--concurrency_ceiling | | File downloads | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/files/downloads | - | https://toolweight.com/compare/browser-automation-apis#browserbase--file_downloads | | Chrome extensions | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/platform/browser/core-features/browser-extensions | - | https://toolweight.com/compare/browser-automation-apis#browserbase--extension_support | | Browser regions | us-east, us-west, eu-central, uk | Vendor-claimed | 2026-11-06 | https://www.browserbase.com/pricing | No Australian region; Asia Pacific on request for enterprise only. | https://toolweight.com/compare/browser-automation-apis#browserbase--regions | | Agent API | ◐ | Inferred | - | - | Stagehand and Director are the agent layer; Stagehand runs in your process, not theirs. | https://toolweight.com/compare/browser-automation-apis#browserbase--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://docs.browserbase.com/integrations/mcp/introduction | - | https://toolweight.com/compare/browser-automation-apis#browserbase--mcp_server | | Human handoff | ◐ | Inferred | - | - | Live view supports takeover, but there is no formal pause/resume primitive. | https://toolweight.com/compare/browser-automation-apis#browserbase--human_handoff | | Pricing model | per-hour | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserbase--pricing_model | | Per browser-hour | $0.1/browser-hour | Vendor-claimed | 2026-11-06 | https://www.browserbase.com/pricing | - | https://toolweight.com/compare/browser-automation-apis#browserbase--price_per_hour | | Free tier | ● | Vendor-claimed | 2026-11-06 | https://www.browserbase.com/pricing | - | https://toolweight.com/compare/browser-automation-apis#browserbase--free_tier | | GitHub stars | 15,000 | Inferred | - | - | Stagehand repo, rounded. | https://toolweight.com/compare/browser-automation-apis#browserbase--github_stars | | Funding stage | series-b | Community-reported | - | - | US$40M round reported mid-2025. | https://toolweight.com/compare/browser-automation-apis#browserbase--funding_stage | | Open-source core | ○ | Inferred | - | - | Stagehand is open source; the browser infrastructure is not. | https://toolweight.com/compare/browser-automation-apis#browserbase--open_source_core | | Positioning | Browser infrastructure for AI agents and automations | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserbase--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserbase--launch_year | **Verdict.** The most complete developer surface for agent work, and the one to beat, but you pay a premium. **Pick it when** - Agents that need to stay logged in across runs - Teams that want Stagehand's act/extract without losing raw Playwright - Anyone who will need a human to take over a stuck session ### Hyperbrowser {#hyperbrowser} Agent-first browsers with hosted scrape, crawl and CUA endpoints | | | | --- | --- | | Site | https://www.hyperbrowser.ai | | Docs | https://docs.hyperbrowser.ai | | Company | Hyperbrowser | | Founded | 2024 | | Funding | Seed | | Open source | No | | Profile | https://toolweight.com/tools/hyperbrowser | | Score (default weights) | 87.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | 99% | Vendor-claimed | 2026-11-07 | https://www.hyperbrowser.ai/scraping | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.hyperbrowser.ai | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/captcha-solving | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--captcha_solving | | Residential proxy | metered-extra | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--residential_proxy | | Cold start | 500ms | Vendor-claimed | 2026-11-07 | https://www.hyperbrowser.ai/ | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/create | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/playwright | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/puppeteer | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/profiles | Named profiles carry auth state between sessions. | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--session_persistence | | Live view | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/sessions/live-view | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--live_view | | Session replay | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--session_replay | | Max concurrency | 100 sessions | Vendor-claimed | 2026-11-07 | https://www.hyperbrowser.ai/pricing | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--concurrency_ceiling | | File downloads | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--file_downloads | | Chrome extensions | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--extension_support | | Browser regions | us-central, us-east, us-west, europe-west, asia-south | Vendor-claimed | 2026-11-07 | https://www.hyperbrowser.ai/docs/sessions/regions | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--regions | | Agent API | ● | Vendor-claimed | 2026-07-01 | https://hyperbrowser.ai/docs/agents/overview | Hosted agent endpoints wrapping browser-use and frontier computer-use models. | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/hyperbrowserai/mcp | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--mcp_server | | Human handoff | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--human_handoff | | Pricing model | per-hour | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--pricing_model | | Per browser-hour | $0.1/browser-hour | Vendor-claimed | 2026-11-07 | https://www.hyperbrowser.ai/pricing | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--price_per_hour | | Free tier | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--free_tier | | GitHub stars | 1,600 | Inferred | 2026-11-07 | https://github.com/hyperbrowserai/HyperAgent | HyperAgent repo, rounded. | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--github_stars | | Funding stage | seed | Community-reported | - | - | YC-backed. | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--open_source_core | | Positioning | Browser infrastructure and hosted web agents in one API | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#hyperbrowser--launch_year | **Verdict.** Does more per API call than anyone here; great for shipping fast, wrong for a stable primitive. **Pick it when** - Shipping an agent this week without wiring five services - Mixed workloads that need both crawling and interactive sessions - Trying hosted computer-use loops before building your own ### Kernel {#kernel} Fast-starting browsers plus a runtime for deploying browser agents | | | | --- | --- | | Site | https://www.onkernel.com | | Docs | https://docs.onkernel.com | | Repo | https://github.com/onkernel/kernel-images | | Company | Kernel (onkernel.com) | | Founded | 2024 | | Funding | Seed | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/kernel | | Score (default weights) | 86.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#kernel--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/bot-detection/stealth | - | https://toolweight.com/compare/browser-automation-apis#kernel--stealth_mode | | CAPTCHA solving | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--captcha_solving | | Residential proxy | metered-extra | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--residential_proxy | | Cold start | 30ms | Vendor-claimed | 2026-11-07 | https://www.kernel.sh/docs/browsers/performance.md | - | https://toolweight.com/compare/browser-automation-apis#kernel--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.onkernel.com | - | https://toolweight.com/compare/browser-automation-apis#kernel--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/introduction/control | - | https://toolweight.com/compare/browser-automation-apis#kernel--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/introduction/control | - | https://toolweight.com/compare/browser-automation-apis#kernel--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/auth/profiles | - | https://toolweight.com/compare/browser-automation-apis#kernel--session_persistence | | Live view | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/live-view | - | https://toolweight.com/compare/browser-automation-apis#kernel--live_view | | Session replay | ● | Vendor-claimed | 2026-07-01 | https://kernel.sh/docs/browsers/replays | Replays are a headline feature rather than an afterthought. | https://toolweight.com/compare/browser-automation-apis#kernel--session_replay | | Max concurrency | 150 sessions | Vendor-claimed | 2026-11-07 | https://www.kernel.sh/docs/browsers/concurrency-and-limits.md | - | https://toolweight.com/compare/browser-automation-apis#kernel--concurrency_ceiling | | File downloads | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--file_downloads | | Chrome extensions | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--extension_support | | Browser regions | us-east, eu-west, ap-southeast | Vendor-claimed | 2026-11-07 | https://www.kernel.sh/docs/browsers/regions.md | - | https://toolweight.com/compare/browser-automation-apis#kernel--regions | | Agent API | ◐ | Inferred | - | - | You deploy your agent onto Kernel rather than calling a hosted agent endpoint. | https://toolweight.com/compare/browser-automation-apis#kernel--computer_use_api | | MCP server | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--mcp_server | | Human handoff | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--human_handoff | | Pricing model | per-hour | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--pricing_model | | Per browser-hour | $0.06/browser-hour | Vendor-claimed | 2026-11-07 | https://www.kernel.sh/docs/info/pricing | Headless rate; headful is $0.48/hr. | https://toolweight.com/compare/browser-automation-apis#kernel--price_per_hour | | Free tier | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--free_tier | | GitHub stars | 1,128 | Community-reported | 2026-11-07 | https://github.com/kernel/kernel-images | - | https://toolweight.com/compare/browser-automation-apis#kernel--github_stars | | Funding stage | seed | Community-reported | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--funding_stage | | Open-source core | ◐ | Inferred | - | - | Browser container images are open; the orchestration platform is not. | https://toolweight.com/compare/browser-automation-apis#kernel--open_source_core | | Positioning | Browsers and a runtime for deploying browser agents | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#kernel--launch_year | **Verdict.** Collapses the network hop by running your agent next to the browser, but you adopt their deployment model. **Pick it when** - Latency-sensitive agent loops with chatty CDP traffic - Teams happy to deploy agent code onto the vendor's runtime - Debugging-heavy workloads that lean on replays ### Steel.dev {#steel-dev} Open-source browser API for AI agents, hosted or self-run | | | | --- | --- | | Site | https://steel.dev | | Docs | https://docs.steel.dev | | Repo | https://github.com/steel-dev/steel-browser | | Company | Steel.dev | | Founded | 2024 | | Funding | Seed | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/steel-dev | | Score (default weights) | 84.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#steel-dev--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--stealth_mode | | CAPTCHA solving | ◐ | Inferred | - | - | Auto-solving offered on hosted sessions; less mature than the unblocking specialists. | https://toolweight.com/compare/browser-automation-apis#steel-dev--captcha_solving | | Residential proxy | metered-extra | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--residential_proxy | | Cold start | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/integrations/playwright | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/integrations/puppeteer | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/overview/profiles-api/overview | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--session_persistence | | Live view | ● | Vendor-claimed | 2026-07-01 | https://docs.steel.dev/overview/sessions-api/embed-sessions/live-sessions | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--live_view | | Session replay | ◐ | Inferred | - | - | Session viewer covers live and recent sessions; long retention is unclear. | https://toolweight.com/compare/browser-automation-apis#steel-dev--session_replay | | Max concurrency | 100 sessions | Vendor-claimed | 2026-11-07 | https://docs.steel.dev/overview/pricinglimits | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--concurrency_ceiling | | File downloads | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--file_downloads | | Chrome extensions | ● | Vendor-claimed | 2026-11-07 | https://docs.steel.dev/overview/extensions-api/overview | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--extension_support | | Browser regions | us-east | Inferred | - | - | Hosted service is US-centric; self-host anywhere. | https://toolweight.com/compare/browser-automation-apis#steel-dev--regions | | Agent API | ◐ | Inferred | - | - | Cookbook integrations with browser-use and CUA loops, not a hosted agent endpoint. | https://toolweight.com/compare/browser-automation-apis#steel-dev--computer_use_api | | MCP server | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--mcp_server | | Human handoff | ◐ | Inferred | - | - | Session viewer allows interaction; no documented pause/resume contract. | https://toolweight.com/compare/browser-automation-apis#steel-dev--human_handoff | | Pricing model | per-hour | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--pricing_model | | Per browser-hour | $0.1/browser-hour | Vendor-claimed | 2026-11-07 | https://docs.steel.dev/overview/pricinglimits | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--price_per_hour | | Free tier | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--free_tier | | GitHub stars | 5,000 | Inferred | - | - | steel-browser repo, rounded. | https://toolweight.com/compare/browser-automation-apis#steel-dev--github_stars | | Funding stage | seed | Community-reported | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--funding_stage | | Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/steel-dev/steel-browser | Apache-2.0; the hosted service is the same core plus scaling. | https://toolweight.com/compare/browser-automation-apis#steel-dev--open_source_core | | Positioning | Open-source browser API purpose-built for AI agents | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#steel-dev--launch_year | **Verdict.** The only option that removes vendor risk entirely, thinner than Browserbase but a good trade on cooperative sites. **Pick it when** - Teams with a hard self-host requirement - Prototyping agents you may later run on your own hardware - Avoiding lock-in without writing your own session manager ### Browserless {#browserless} Self-hostable headless Chrome service; BrowserQL for bot-heavy sites | | | | --- | --- | | Site | https://www.browserless.io | | Docs | https://docs.browserless.io | | Repo | https://github.com/browserless/browserless | | Company | Browserless | | Founded | 2018 | | Open source | Yes | | Profile | https://toolweight.com/tools/browserless | | Score (default weights) | 83.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#browserless--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/browserql/start | BrowserQL is the stealth-first API; the classic REST endpoints are weaker. | https://toolweight.com/compare/browser-automation-apis#browserless--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-11-06 | https://docs.browserless.io/browserql/bot-detection/solving-captchas | - | https://toolweight.com/compare/browser-automation-apis#browserless--captcha_solving | | Residential proxy | metered-extra | Vendor-claimed | 2026-11-06 | https://www.browserless.io/pricing | - | https://toolweight.com/compare/browser-automation-apis#browserless--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserless--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io | - | https://toolweight.com/compare/browser-automation-apis#browserless--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/examples/playwright-connection | - | https://toolweight.com/compare/browser-automation-apis#browserless--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/examples/puppeteer-connection | - | https://toolweight.com/compare/browser-automation-apis#browserless--puppeteer_support | | Session persistence | ◐ | Inferred | - | - | Reconnect and keep-alive hold a session open; durable named profiles are a self-host concern. | https://toolweight.com/compare/browser-automation-apis#browserless--session_persistence | | Live view | ● | Inferred | - | - | BrowserQL exposes a live URL you can embed for takeover. | https://toolweight.com/compare/browser-automation-apis#browserless--live_view | | Session replay | ◐ | Inferred | - | - | Recording is possible via the function API rather than retained automatically. | https://toolweight.com/compare/browser-automation-apis#browserless--session_replay | | Max concurrency | 100 sessions | Vendor-claimed | 2026-11-07 | https://www.browserless.io/pricing | Scale plan self-serve ceiling; Enterprise higher. | https://toolweight.com/compare/browser-automation-apis#browserless--concurrency_ceiling | | File downloads | ● | Vendor-claimed | 2026-07-01 | https://docs.browserless.io/baas/features/file-transfers | - | https://toolweight.com/compare/browser-automation-apis#browserless--file_downloads | | Chrome extensions | ◐ | Inferred | - | - | Straightforward when self-hosting; constrained on the shared cloud. | https://toolweight.com/compare/browser-automation-apis#browserless--extension_support | | Browser regions | us-west, eu-west, eu-central | Vendor-claimed | 2026-11-06 | https://www.browserless.io/pricing | - | https://toolweight.com/compare/browser-automation-apis#browserless--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserless--computer_use_api | | MCP server | ● | Inferred | - | - | Vendor MCP server exists; confirm the package before relying on it. | https://toolweight.com/compare/browser-automation-apis#browserless--mcp_server | | Human handoff | ● | Inferred | - | - | Live URL hands control to a person mid-script and returns it. | https://toolweight.com/compare/browser-automation-apis#browserless--human_handoff | | Pricing model | per-hour | Inferred | - | - | Billed in short time units rather than whole hours. | https://toolweight.com/compare/browser-automation-apis#browserless--pricing_model | | Per browser-hour | - | Unknown | - | - | Unit-based pricing varies enough by plan that a single hourly figure would mislead. | https://toolweight.com/compare/browser-automation-apis#browserless--price_per_hour | | Free tier | ● | Vendor-claimed | 2026-11-06 | https://www.browserless.io/pricing | Free plan: 1k units/month, 2 min max session, 2 concurrent browsers. | https://toolweight.com/compare/browser-automation-apis#browserless--free_tier | | GitHub stars | 10,000 | Inferred | - | - | Rounded. | https://toolweight.com/compare/browser-automation-apis#browserless--github_stars | | Funding stage | bootstrapped | Inferred | - | - | No publicly reported venture round. | https://toolweight.com/compare/browser-automation-apis#browserless--funding_stage | | Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/browserless/browserless | Docker image is the same service the cloud runs; check the current licence terms before commercial self-hosting. | https://toolweight.com/compare/browser-automation-apis#browserless--open_source_core | | Positioning | Headless browser automation you can host yourself | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserless--positioning | | Launched | 2018 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#browserless--launch_year | **Verdict.** The pragmatic choice when you may bring everything in-house later, though BrowserQL and the classic API diverge. **Pick it when** - Teams that expect to self-host eventually - Screenshot and PDF pipelines at steady volume - Declarative unblocking without adopting an agent framework ### Airtop {#airtop} Natural-language browser API, describe the page, skip the selectors | | | | --- | --- | | Site | https://www.airtop.ai | | Docs | https://docs.airtop.ai | | Company | Airtop | | Founded | 2024 | | Funding | Seed | | Open source | No | | Profile | https://toolweight.com/tools/airtop | | Score (default weights) | 83.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#airtop--antibot_success | | Stealth mode | ● | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-11-06 | https://docs.airtop.ai/guides/how-to/solving-captchas | - | https://toolweight.com/compare/browser-automation-apis#airtop--captcha_solving | | Residential proxy | included | Inferred | - | - | Proxy egress is bundled into session pricing rather than sold by the GB. | https://toolweight.com/compare/browser-automation-apis#airtop--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--cold_start | | CDP endpoint | ◐ | Inferred | - | - | Playwright/Puppeteer attachment is documented, but the natural-language API is the intended interface. | https://toolweight.com/compare/browser-automation-apis#airtop--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/automation-frameworks/playwright | - | https://toolweight.com/compare/browser-automation-apis#airtop--playwright_support | | Puppeteer | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--puppeteer_support | | Session persistence | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/saving-a-profile | - | https://toolweight.com/compare/browser-automation-apis#airtop--session_persistence | | Live view | ● | Vendor-claimed | 2026-11-06 | https://docs.airtop.ai/guides/how-to/creating-a-live-view | - | https://toolweight.com/compare/browser-automation-apis#airtop--live_view | | Session replay | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--session_replay | | Max concurrency | 30 sessions | Vendor-claimed | 2026-11-07 | https://www.airtop.ai/pricing | - | https://toolweight.com/compare/browser-automation-apis#airtop--concurrency_ceiling | | File downloads | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--file_downloads | | Chrome extensions | ◐ | Vendor-claimed | 2026-11-07 | https://docs.airtop.ai/guides/how-to/using-chrome-extensions | - | https://toolweight.com/compare/browser-automation-apis#airtop--extension_support | | Browser regions | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--regions | | Agent API | ● | Vendor-claimed | 2026-07-01 | https://docs.airtop.ai/guides/how-to/ai/page-interactions | Page-query and act calls are the primary API; you describe intent, not selectors. | https://toolweight.com/compare/browser-automation-apis#airtop--computer_use_api | | MCP server | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--mcp_server | | Human handoff | ● | Inferred | 2026-07-01 | - | Live view is explicitly positioned for human sign-in during a run. | https://toolweight.com/compare/browser-automation-apis#airtop--human_handoff | | Pricing model | per-hour | Inferred | - | - | Metered per browser-minute in practice. | https://toolweight.com/compare/browser-automation-apis#airtop--pricing_model | | Per browser-hour | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--price_per_hour | | Free tier | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--free_tier | | GitHub stars | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--github_stars | | Funding stage | seed | Community-reported | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--open_source_core | | Positioning | Give an AI agent a browser it can use in plain English | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--positioning | | Launched | 2024 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#airtop--launch_year | **Verdict.** The highest-level abstraction here: structured data without selectors, a real productivity gain and a real lock-in. **Pick it when** - Extraction from sites whose DOM changes constantly - Teams without Playwright expertise - Authenticated research and monitoring workflows ### Bright Data Browser API {#bright-data-browser-api} CDP browsers on a 70M+ residential IP network with challenge handling built in | | | | --- | --- | | Site | https://brightdata.com/products/scraping-browser | | Docs | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | | Company | Bright Data | | Founded | 2014 | | Open source | No | | Profile | https://toolweight.com/tools/bright-data-browser-api | | Score (default weights) | 73.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-11-06 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--stealth_mode | | CAPTCHA solving | ● | Vendor-claimed | 2026-11-06 | https://docs.brightdata.com/scraping-automation/scraping-browser/features/captcha-solver | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--captcha_solving | | Residential proxy | included | Inferred | 2026-07-01 | - | Bundled into the per-GB price rather than free, the network is what you are buying. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-11-06 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-11-06 | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--puppeteer_support | | Session persistence | ◐ | Inferred | - | - | Sticky sessions exist for proxy continuity; there is no durable profile store. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--session_persistence | | Live view | ● | Inferred | - | - | Debugger shows the live session and attaches DevTools. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--live_view | | Session replay | ◐ | Inferred | - | - | Session logs rather than video. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--session_replay | | Max concurrency | Unlimited | Vendor-claimed | 2026-11-07 | https://docs.brightdata.com/products/scraping-browser/introduction | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--concurrency_ceiling | | File downloads | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--file_downloads | | Chrome extensions | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--extension_support | | Browser regions | global | Inferred | - | - | Exit geography is selectable across most countries including Australia; browser location is not exposed. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/brightdata/brightdata-mcp | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--human_handoff | | Pricing model | per-gb | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--pricing_model | | Per browser-hour | - | Unknown | - | - | Billed per GB of traffic; an hourly equivalent depends entirely on page weight, so we do not convert. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--price_per_hour | | Free tier | ◐ | Inferred | - | - | Trial credit, not an ongoing allowance. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--free_tier | | GitHub stars | 2,700 | Inferred | 2026-11-07 | https://github.com/brightdata/brightdata-mcp | brightdata-mcp repo, rounded. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--github_stars | | Funding stage | later-stage | Inferred | - | - | Private-equity owned; not venture-staged. | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--open_source_core | | Positioning | A CDP browser sitting on the largest residential proxy network | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--positioning | | Launched | 2023 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#bright-data-browser-api--launch_year | **Verdict.** When the target genuinely fights back, this keeps working, but the developer experience is bare and per-GB punishes. **Pick it when** - Hard commercial targets behind enterprise bot management - Country-specific access including Australian exits - Scraping teams that already buy proxy bandwidth ### ZenRows {#zenrows} Scraper API plus a CDP scraping browser on a shared residential pool | | | | --- | --- | | Site | https://www.zenrows.com | | Docs | https://docs.zenrows.com | | Company | ZenRows | | Founded | 2021 | | Funding | Seed | | Open source | No | | Profile | https://toolweight.com/tools/zenrows | | Score (default weights) | 65.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | 99.9% | Vendor-claimed | 2026-11-07 | https://docs.zenrows.com/browser-sessions/introduction.md | - | https://toolweight.com/compare/browser-automation-apis#zenrows--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com | - | https://toolweight.com/compare/browser-automation-apis#zenrows--stealth_mode | | CAPTCHA solving | ● | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--captcha_solving | | Residential proxy | included | Inferred | - | - | Residential rotation is bundled into the scraper tiers; the standalone proxy product is priced separately. | https://toolweight.com/compare/browser-automation-apis#zenrows--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--cold_start | | CDP endpoint | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/introduction | Via the Scraping Browser product, not the classic scraper API. | https://toolweight.com/compare/browser-automation-apis#zenrows--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/get-started/playwright | - | https://toolweight.com/compare/browser-automation-apis#zenrows--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.zenrows.com/scraping-browser/get-started/puppeteer | - | https://toolweight.com/compare/browser-automation-apis#zenrows--puppeteer_support | | Session persistence | ◐ | Inferred | - | - | Sticky sessions, no profile store. | https://toolweight.com/compare/browser-automation-apis#zenrows--session_persistence | | Live view | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--live_view | | Session replay | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--session_replay | | Max concurrency | 1,000 sessions | Vendor-claimed | 2026-11-07 | https://docs.zenrows.com/first-steps/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#zenrows--concurrency_ceiling | | File downloads | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--file_downloads | | Chrome extensions | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--extension_support | | Browser regions | global | Inferred | - | - | Country targeting including Australia via proxy geography. | https://toolweight.com/compare/browser-automation-apis#zenrows--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://docs.zenrows.com/mcp/overview | - | https://toolweight.com/compare/browser-automation-apis#zenrows--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--human_handoff | | Pricing model | per-credit | Inferred | - | - | Scraper API bills credits per request; the Scraping Browser is metered separately. | https://toolweight.com/compare/browser-automation-apis#zenrows--pricing_model | | Per browser-hour | $0/browser-hour | Vendor-claimed | 2026-11-07 | https://docs.zenrows.com/browser-sessions/introduction.md | - | https://toolweight.com/compare/browser-automation-apis#zenrows--price_per_hour | | Free tier | ◐ | Inferred | - | - | Trial credits. | https://toolweight.com/compare/browser-automation-apis#zenrows--free_tier | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--github_stars | | Funding stage | seed | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--open_source_core | | Positioning | Anti-bot scraping API with a CDP browser attached | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--positioning | | Launched | 2021 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#zenrows--launch_year | **Verdict.** The value pick for unblocking: most of Bright Data at a lower price, minus the largest IP pool. **Pick it when** - Cost-sensitive scraping against moderately protected sites - Teams wanting one vendor for both fetch-and-parse and stateful sessions - Migrating off a per-request API without changing pricing shape ### Apify {#apify} Actor platform for scraping and agents, with Crawlee as the open-source core | | | | --- | --- | | Site | https://apify.com | | Docs | https://docs.apify.com | | Repo | https://github.com/apify/crawlee | | Company | Apify Technologies | | Founded | 2015 | | Funding | Series A | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/apify | | Score (default weights) | 65.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. | https://toolweight.com/compare/browser-automation-apis#apify--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com | Crawlee's fingerprint suite and session pool, plus stealth-oriented Actors. | https://toolweight.com/compare/browser-automation-apis#apify--stealth_mode | | CAPTCHA solving | ◐ | Inferred | - | - | Community Actors and third-party integrations rather than a platform primitive. | https://toolweight.com/compare/browser-automation-apis#apify--captcha_solving | | Residential proxy | metered-extra | Vendor-claimed | 2026-07-01 | https://docs.apify.com/proxy/residential-proxy | Apify Proxy residential tier billed per GB. | https://toolweight.com/compare/browser-automation-apis#apify--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--cold_start | | CDP endpoint | ○ | Inferred | - | - | You deploy code that runs browsers inside Actors; there is no external CDP URL to attach to. | https://toolweight.com/compare/browser-automation-apis#apify--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com/sdk/js/docs/guides/playwright-crawler | - | https://toolweight.com/compare/browser-automation-apis#apify--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://docs.apify.com/sdk/js/docs/guides/puppeteer-crawler | - | https://toolweight.com/compare/browser-automation-apis#apify--puppeteer_support | | Session persistence | ◐ | Inferred | - | - | Session pool plus key-value stores; you build the persistence yourself. | https://toolweight.com/compare/browser-automation-apis#apify--session_persistence | | Live view | ● | Inferred | - | - | Actor runs expose a live view tab while running. | https://toolweight.com/compare/browser-automation-apis#apify--live_view | | Session replay | ○ | Inferred | - | - | Logs and datasets, not replays. | https://toolweight.com/compare/browser-automation-apis#apify--session_replay | | Max concurrency | 5 sessions | Vendor-claimed | 2026-11-07 | https://apify.com/pricing.md | - | https://toolweight.com/compare/browser-automation-apis#apify--concurrency_ceiling | | File downloads | ● | Inferred | - | - | Land in the key-value store. | https://toolweight.com/compare/browser-automation-apis#apify--file_downloads | | Chrome extensions | ◐ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--extension_support | | Browser regions | us-east, eu-central | Inferred | - | - | US and EU platform regions; no AU. | https://toolweight.com/compare/browser-automation-apis#apify--regions | | Agent API | ◐ | Inferred | - | - | Agent Actors exist in the store; the platform itself is not an agent loop. | https://toolweight.com/compare/browser-automation-apis#apify--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/apify/apify-mcp-server | Exposes the Actor store to MCP clients. | https://toolweight.com/compare/browser-automation-apis#apify--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--human_handoff | | Pricing model | per-credit | Inferred | - | - | Monthly plan floor plus compute units; from roughly US$49/mo on the entry tier. | https://toolweight.com/compare/browser-automation-apis#apify--pricing_model | | Per browser-hour | - | Unknown | - | - | Compute units bundle CPU and RAM, so an hourly browser rate depends on your Actor's memory setting. | https://toolweight.com/compare/browser-automation-apis#apify--price_per_hour | | Free tier | ● | Vendor-claimed | 2026-07-01 | https://apify.com/pricing | Small monthly usage credit. | https://toolweight.com/compare/browser-automation-apis#apify--free_tier | | GitHub stars | 17,000 | Inferred | - | - | Crawlee repo, rounded. | https://toolweight.com/compare/browser-automation-apis#apify--github_stars | | Funding stage | series-a | Community-reported | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--funding_stage | | Open-source core | ◐ | Inferred | - | - | Crawlee is Apache-2.0; the platform is not self-hostable. | https://toolweight.com/compare/browser-automation-apis#apify--open_source_core | | Positioning | Cloud platform for web scraping and browser automation Actors | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--positioning | | Launched | 2015 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#apify--launch_year | **Verdict.** Not really a browser API but a place to run scraping code, with Crawlee excellent and free. **Pick it when** - Scheduled crawls that need storage, queues and monitoring - Reusing an existing Actor instead of writing a scraper - Teams standardising on Crawlee ### Self-hosted Playwright {#playwright-self-hosted} The baseline: run Chromium in your own container and own everything | | | | --- | --- | | Site | https://playwright.dev | | Docs | https://playwright.dev/docs/docker | | Repo | https://github.com/microsoft/playwright | | Company | Self-hosted Playwright | | Founded | 2020 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/playwright-self-hosted | | Score (default weights) | 63.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run. Stock Playwright is trivially detectable; the baseline exists to show the gap. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--antibot_success | | Stealth mode | ○ | Inferred | - | - | Community patches exist but you own the maintenance forever. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--stealth_mode | | CAPTCHA solving | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--captcha_solving | | Residential proxy | byo-only | Inferred | - | - | Bring a proxy vendor and wire it yourself. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--residential_proxy | | Cold start | 2s | Inferred | - | - | Rough figure for launching Chromium in a warm container; entirely dependent on your image and host. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--cold_start | | CDP endpoint | ● | Inferred | - | - | It is your browser; the protocol is fully exposed. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--cdp_endpoint | | Playwright | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--playwright_support | | Puppeteer | ● | Inferred | - | - | You are running the libraries directly, so both work. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--puppeteer_support | | Session persistence | ● | Inferred | - | - | Persistent contexts on your own disk, durable as long as you manage the volume. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--session_persistence | | Live view | ○ | Inferred | - | - | Trace Viewer is post-hoc; a live view is a project of its own. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--live_view | | Session replay | ● | Inferred | - | - | Trace Viewer and video recording are better than any hosted replay here. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--session_replay | | Max concurrency | - | Unknown | - | - | Whatever your cluster tolerates, roughly one browser per GB of RAM. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--concurrency_ceiling | | File downloads | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--file_downloads | | Chrome extensions | ● | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--extension_support | | Browser regions | self-hosted | Inferred | - | - | Anywhere you can run a container, including ap-southeast-2, the only reliable way to get an AU browser. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/microsoft/playwright-mcp | Microsoft's official Playwright MCP server runs locally. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--human_handoff | | Pricing model | infrastructure | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--pricing_model | | Per browser-hour | $0.03/browser-hour | Inferred | - | - | Approximate cost of a 2 vCPU / 4 GB container on a commodity cloud. Excludes proxies, storage and your engineering time. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--price_per_hour | | Free tier | ● | Inferred | - | - | The software is free; the servers are not. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--free_tier | | GitHub stars | 73,000 | Inferred | - | - | microsoft/playwright, rounded. | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--github_stars | | Funding stage | open-source | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--funding_stage | | Open-source core | ● | Vendor-claimed | 2026-07-01 | https://github.com/microsoft/playwright | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--open_source_core | | Positioning | The reference point every hosted browser is priced against | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--positioning | | Launched | 2020 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#playwright-self-hosted--launch_year | **Verdict.** Cheapest on compute with the best debugging, and completely defenceless against modern bot detection. **Pick it when** - Internal tools, tests and sites you control - Steady, predictable volume where compute cost dominates - Anyone needing a browser physically in Australia ### Cloudflare Browser Rendering {#cloudflare-browser-rendering} Puppeteer and Playwright bindings for Workers, plus REST render endpoints | | | | --- | --- | | Site | https://developers.cloudflare.com/browser-rendering/ | | Docs | https://developers.cloudflare.com/browser-rendering/ | | Company | Cloudflare | | Founded | 2023 | | Open source | No | | Profile | https://toolweight.com/tools/cloudflare-browser-rendering | | Score (default weights) | 45.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | - | Unknown | - | - | Panel not yet run; expect a low score, this product does not attempt evasion. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--antibot_success | | Stealth mode | ○ | Inferred | - | - | Deliberately absent. Cloudflare sells bot detection on the other side of the same fence. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--stealth_mode | | CAPTCHA solving | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--captcha_solving | | Residential proxy | none | Inferred | - | - | Traffic exits Cloudflare's own network. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--cold_start | | CDP endpoint | ◐ | Inferred | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/ | Sessions are reached through a Workers binding or REST endpoints, not an open wss:// URL. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--cdp_endpoint | | Playwright | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/platform/playwright/ | Via the @cloudflare/playwright fork. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--playwright_support | | Puppeteer | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-rendering/platform/puppeteer/ | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--puppeteer_support | | Session persistence | ◐ | Inferred | - | - | Sessions can be kept alive and reconnected across Worker invocations; no named profile store. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--session_persistence | | Live view | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--live_view | | Session replay | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--session_replay | | Max concurrency | 30 sessions | Inferred | - | - | Approximate paid-plan default; raisable on request. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--concurrency_ceiling | | File downloads | ◐ | Inferred | - | - | Awkward inside the Workers runtime; fine for generated PDFs and screenshots. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--file_downloads | | Chrome extensions | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--extension_support | | Browser regions | global-edge | Inferred | - | - | Runs across Cloudflare's network, which includes Australian PoPs, but exposes no region pinning. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-07-01 | https://github.com/cloudflare/mcp-server-cloudflare | Part of Cloudflare's first-party MCP server set. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--human_handoff | | Pricing model | per-hour | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-run/pricing/ | Dual-metered: browser hours plus request count, on top of the Workers Paid plan. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--pricing_model | | Per browser-hour | $0.09/browser-hour | Inferred | - | - | Approximate per-browser-hour rate after the included allowance; verify against current pricing. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--price_per_hour | | Free tier | ● | Vendor-claimed | 2026-07-01 | https://developers.cloudflare.com/browser-run/limits/ | Small daily free allowance on the free plan. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--free_tier | | GitHub stars | 380 | Inferred | 2026-11-07 | https://github.com/cloudflare/puppeteer | cloudflare/puppeteer fork. | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--github_stars | | Funding stage | public | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--open_source_core | | Positioning | Headless Chromium as a Workers binding and REST API | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--positioning | | Launched | 2023 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#cloudflare-browser-rendering--launch_year | **Verdict.** Unbeatable for rendering pages that aren't fighting you, especially on Workers, but never an unblocking product. **Pick it when** - Screenshots, PDFs and markdown extraction at scale - Teams already on Workers who want zero new vendors - Rendering your own properties and public documentation ### ScrapingBee {#scrapingbee} One-call HTML API with JavaScript rendering and premium proxy tiers | | | | --- | --- | | Site | https://www.scrapingbee.com | | Docs | https://www.scrapingbee.com/documentation/ | | Company | ScrapingBee | | Founded | 2018 | | Open source | No | | Profile | https://toolweight.com/tools/scrapingbee | | Score (default weights) | 39.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Anti-bot pass rate | 99% | Vendor-claimed | 2026-11-07 | https://www.scrapingbee.com/ | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--antibot_success | | Stealth mode | ● | Vendor-claimed | 2026-07-01 | https://www.scrapingbee.com/documentation/ | Delivered by paying more credits for premium/stealth proxy tiers. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--stealth_mode | | CAPTCHA solving | ◐ | Inferred | - | - | Some challenges handled transparently; no general solver. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--captcha_solving | | Residential proxy | metered-extra | Inferred | 2026-07-01 | - | Premium proxies cost a multiple of the base credit price per request. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--residential_proxy | | Cold start | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--cold_start | | CDP endpoint | ○ | Inferred | - | - | There is no session to connect to, it is a request/response API. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--cdp_endpoint | | Playwright | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--playwright_support | | Puppeteer | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--puppeteer_support | | Session persistence | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--session_persistence | | Live view | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--live_view | | Session replay | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--session_replay | | Max concurrency | 100 sessions | Inferred | - | - | Approximate ceiling on the top self-serve plan; entry plans are much lower. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--concurrency_ceiling | | File downloads | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--file_downloads | | Chrome extensions | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--extension_support | | Browser regions | global | Inferred | - | - | Country targeting including Australia; you do not choose where the browser runs. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--regions | | Agent API | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--computer_use_api | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://www.scrapingbee.com/documentation/remote-mcp/ | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--mcp_server | | Human handoff | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--human_handoff | | Pricing model | per-credit | Vendor-claimed | 2026-07-01 | https://www.scrapingbee.com/pricing/ | Credits per request, multiplied by proxy tier and JS rendering. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--pricing_model | | Per browser-hour | N/A | Vendor-claimed | 2026-11-07 | https://www.scrapingbee.com/pricing/ | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--price_per_hour | | Free tier | ◐ | Inferred | - | - | One-off trial credits. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--free_tier | | GitHub stars | - | Unknown | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--github_stars | | Funding stage | bootstrapped | Community-reported | - | - | Long-running independent product with no reported raise. | https://toolweight.com/compare/browser-automation-apis#scrapingbee--funding_stage | | Open-source core | ○ | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--open_source_core | | Positioning | Scraping API that handles proxies and headless browsers for you | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--positioning | | Launched | 2018 | Inferred | - | - | - | https://toolweight.com/compare/browser-automation-apis#scrapingbee--launch_year | **Verdict.** Honest, boring and predictable, until your workflow needs three steps and a cookie jar. **Pick it when** - One-shot fetches with rendered JavaScript - Predictable per-request budgeting - Teams that want no session state to manage ## Methodology - Capability fields were read off vendor documentation - Marked `vendor-claimed` with the doc URL where the docs are unambiguous - Marked `inferred` where a feature exists but the docs hedge - Marked `unknown` where we could not establish it without an account - Pricing uses the cheapest paid self-serve tier - Where a product is not billed by time (Bright Data per gigabyte, Apify per compute unit, ScrapingBee per credit), the per-browser-hour column is null - We do not convert, because it depends entirely on how heavy your pages are - The killer field, **anti-bot pass rate**, is deliberately empty - Planned panel: ten publicly reachable sites, plus two commodity storefronts as a control - One site each behind Cloudflare managed challenge, Akamai Bot Manager, DataDome, HUMAN/PerimeterX, Imperva, Kasada, F5 Shape and reCAPTCHA Enterprise - Fifty attempts per provider per site, cold sessions, no cookie reuse, from three geographies - Each provider's own default stealth configuration, nothing hand-tuned - Success means reaching a named DOM assertion within 30 seconds - A challenge that resolves itself counts; a challenge that stalls does not - We publish the pass rate with a 95% confidence interval, the raw logs, and the exact harness commit, and rerun monthly - Until that runs, every cell reads unknown - We will not print vendor-claimed success rates: that number is marketing everywhere it appears ## FAQ ### Why is the anti-bot success rate column empty? - We have not run the panel yet - Every published number in this category is the vendor's own - Filling the column with vendor claims would look complete and be worthless - Results ship once the harness has run fifty attempts per provider per site and we can publish the logs ### Is a hosted browser API cheaper than self-hosting Playwright? - Rarely on raw compute: a Chromium container costs a few cents an hour, hosted browsers start around ten - You are buying fingerprint maintenance, the proxy pool, the session viewer and the on-call - If targets do not block you and volume is steady, self-hosting wins on cost - It loses on the week you spend rebuilding a live view ### Do I need residential proxies, or is stealth mode enough? - Stealth mode fixes the browser fingerprint - It does nothing about IP reputation, and datacentre ranges are the cheapest signal to block - Against Cloudflare managed challenge, a patched browser on a clean residential IP usually passes; on an AWS IP usually does not - Budget for gigabytes, not just hours ### What is the difference between Browserbase and Bright Data's Browser API? - Browserbase sells developer experience: contexts, live view, extensions, downloads, Stagehand, billed per browser-hour - Bright Data sells network access: seventy-odd million residential IPs with automatic challenge handling, billed per gigabyte - Agent teams pick Browserbase and add proxies when blocked - Scraping teams pick Bright Data and accept a thinner developer surface ### Which of these run browsers in Australia? - Almost none pin a browser to an Australian region - Cloudflare Browser Rendering runs across its edge, including Sydney and Melbourne, but exposes no region control - Most agent hosts offer US and EU, with Singapore as the nearest Asia-Pacific option - For an Australian exit, use an AU residential proxy in front of a US browser, or self-host in ap-southeast-2 ### Does an MCP server actually matter when choosing? - Less than the marketing implies - Nearly every vendor shipped one during 2025, and they are thin wrappers over the same REST API - An MCP server tells you the vendor is paying attention, not that the browser is good - It matters if your agent framework speaks MCP natively; otherwise weight it low ### Can I move between providers without rewriting? - Over raw CDP with Playwright or Puppeteer, yes: swapping the websocket URL is usually the whole migration - On a vendor's proprietary act/extract API, Airtop's natural-language calls or Apify's Actor model, expect a rewrite - Keeping automation in plain Playwright and treating the provider as a connection string is cheap insurance ## Sources | Source | Last verified | | --- | --- | | https://docs.browserbase.com/features/stealth-mode | 2026-07-01 | | https://docs.browserbase.com/introduction | 2026-07-01 | | https://docs.browserbase.com/welcome/quickstarts/playwright | 2026-07-01 | | https://docs.browserbase.com/welcome/quickstarts/puppeteer | 2026-07-01 | | https://docs.browserbase.com/features/contexts | 2026-07-01 | | https://docs.browserbase.com/platform/browser/observability/session-live-view | 2026-07-01 | | https://docs.browserbase.com/platform/browser/observability/session-replay | 2026-07-01 | | https://www.browserbase.com/pricing | 2026-11-06 | | https://docs.browserbase.com/platform/browser/files/downloads | 2026-07-01 | | https://docs.browserbase.com/platform/browser/core-features/browser-extensions | 2026-07-01 | | https://docs.browserbase.com/integrations/mcp/introduction | 2026-07-01 | | https://docs.browserless.io/browserql/start | 2026-07-01 | | https://docs.browserless.io/browserql/bot-detection/solving-captchas | 2026-11-06 | | https://www.browserless.io/pricing | 2026-11-06 | | https://docs.browserless.io | 2026-07-01 | | https://docs.browserless.io/examples/playwright-connection | 2026-07-01 | | https://docs.browserless.io/examples/puppeteer-connection | 2026-07-01 | | https://docs.browserless.io/baas/features/file-transfers | 2026-07-01 | | https://github.com/browserless/browserless | 2026-07-01 | | https://docs.steel.dev | 2026-07-01 | | https://docs.steel.dev/integrations/playwright | 2026-07-01 | | https://docs.steel.dev/integrations/puppeteer | 2026-07-01 | | https://docs.steel.dev/overview/profiles-api/overview | 2026-07-01 | | https://docs.steel.dev/overview/sessions-api/embed-sessions/live-sessions | 2026-07-01 | | https://docs.steel.dev/overview/pricinglimits | 2026-11-07 | | https://docs.steel.dev/overview/extensions-api/overview | 2026-11-07 | | https://github.com/steel-dev/steel-browser | 2026-07-01 | | https://www.hyperbrowser.ai/scraping | 2026-11-07 | | https://docs.hyperbrowser.ai | 2026-07-01 | | https://hyperbrowser.ai/docs/sessions/captcha-solving | 2026-07-01 | | https://www.hyperbrowser.ai/ | 2026-11-07 | | https://hyperbrowser.ai/docs/sessions/create | 2026-07-01 | | https://hyperbrowser.ai/docs/sessions/playwright | 2026-07-01 | | https://hyperbrowser.ai/docs/sessions/puppeteer | 2026-07-01 | | https://hyperbrowser.ai/docs/sessions/profiles | 2026-07-01 | | https://hyperbrowser.ai/docs/sessions/live-view | 2026-07-01 | | https://www.hyperbrowser.ai/pricing | 2026-11-07 | | https://www.hyperbrowser.ai/docs/sessions/regions | 2026-11-07 | | https://hyperbrowser.ai/docs/agents/overview | 2026-07-01 | | https://github.com/hyperbrowserai/mcp | 2026-07-01 | | https://github.com/hyperbrowserai/HyperAgent | 2026-11-07 | | https://docs.anchorbrowser.io/essentials/stealth | 2026-11-06 | | https://docs.anchorbrowser.io | 2026-07-01 | | https://docs.anchorbrowser.io/integrations/open-source/playwright | 2026-07-01 | | https://docs.anchorbrowser.io/integrations/open-source/puppeteer | 2026-07-01 | | https://docs.anchorbrowser.io/essentials/managed-authentication | 2026-07-01 | | https://docs.anchorbrowser.io/advanced/browser-live-view | 2026-07-01 | | https://www.anchorbrowser.io/pricing | 2026-11-06 | | https://docs.anchorbrowser.io/advanced/extensions | 2026-11-07 | | https://docs.anchorbrowser.io/agentic-browser-control/human-in-the-loop | 2026-07-01 | | https://docs.anchorbrowser.io/pricing | 2026-11-07 | | https://docs.browser-use.com/cloud/browser/stealth.md | 2026-11-07 | | https://browser-use.com/pricing.md | 2026-11-07 | | https://docs.browser-use.com/llms.txt | 2026-11-07 | | https://docs.browser-use.com/cloud/eu-deployment.md | 2026-11-07 | | https://api.github.com/repos/browser-use/browser-use | 2026-11-07 | | https://www.felicis.com/insight/investing-in-browser-use | 2026-11-07 | | https://kernel.sh/docs/browsers/bot-detection/stealth | 2026-07-01 | | https://www.kernel.sh/docs/browsers/performance.md | 2026-11-07 | | https://docs.onkernel.com | 2026-07-01 | | https://kernel.sh/docs/introduction/control | 2026-07-01 | | https://kernel.sh/docs/auth/profiles | 2026-07-01 | | https://kernel.sh/docs/browsers/live-view | 2026-07-01 | | https://kernel.sh/docs/browsers/replays | 2026-07-01 | | https://www.kernel.sh/docs/browsers/concurrency-and-limits.md | 2026-11-07 | | https://www.kernel.sh/docs/browsers/regions.md | 2026-11-07 | | https://www.kernel.sh/docs/info/pricing | 2026-11-07 | | https://github.com/kernel/kernel-images | 2026-11-07 | | https://docs.airtop.ai/guides/how-to/solving-captchas | 2026-11-06 | | https://docs.airtop.ai/guides/how-to/automation-frameworks/playwright | 2026-07-01 | | https://docs.airtop.ai/guides/how-to/saving-a-profile | 2026-07-01 | | https://docs.airtop.ai/guides/how-to/creating-a-live-view | 2026-11-06 | | https://www.airtop.ai/pricing | 2026-11-07 | | https://docs.airtop.ai/guides/how-to/using-chrome-extensions | 2026-11-07 | | https://docs.airtop.ai/guides/how-to/ai/page-interactions | 2026-07-01 | | https://developers.cloudflare.com/browser-rendering/ | 2026-07-01 | | https://developers.cloudflare.com/browser-rendering/platform/playwright/ | 2026-07-01 | | https://developers.cloudflare.com/browser-rendering/platform/puppeteer/ | 2026-07-01 | | https://github.com/cloudflare/mcp-server-cloudflare | 2026-07-01 | | https://developers.cloudflare.com/browser-run/pricing/ | 2026-07-01 | | https://developers.cloudflare.com/browser-run/limits/ | 2026-07-01 | | https://github.com/cloudflare/puppeteer | 2026-11-07 | | https://docs.brightdata.com/scraping-automation/scraping-browser/introduction | 2026-11-06 | | https://docs.brightdata.com/scraping-automation/scraping-browser/features/captcha-solver | 2026-11-06 | | https://docs.brightdata.com/products/scraping-browser/introduction | 2026-11-07 | | https://github.com/brightdata/brightdata-mcp | 2026-07-01 | | https://www.scrapingbee.com/ | 2026-11-07 | | https://www.scrapingbee.com/documentation/ | 2026-07-01 | | https://www.scrapingbee.com/documentation/remote-mcp/ | 2026-11-07 | | https://www.scrapingbee.com/pricing/ | 2026-07-01 | | https://docs.zenrows.com/browser-sessions/introduction.md | 2026-11-07 | | https://docs.zenrows.com | 2026-07-01 | | https://docs.zenrows.com/scraping-browser/introduction | 2026-07-01 | | https://docs.zenrows.com/scraping-browser/get-started/playwright | 2026-07-01 | | https://docs.zenrows.com/scraping-browser/get-started/puppeteer | 2026-07-01 | | https://docs.zenrows.com/first-steps/pricing.md | 2026-11-07 | | https://docs.zenrows.com/mcp/overview | 2026-11-07 | | https://docs.apify.com | 2026-07-01 | | https://docs.apify.com/proxy/residential-proxy | 2026-07-01 | | https://docs.apify.com/sdk/js/docs/guides/playwright-crawler | 2026-07-01 | | https://docs.apify.com/sdk/js/docs/guides/puppeteer-crawler | 2026-07-01 | | https://apify.com/pricing.md | 2026-11-07 | | https://github.com/apify/apify-mcp-server | 2026-07-01 | | https://apify.com/pricing | 2026-07-01 | | https://github.com/microsoft/playwright-mcp | 2026-07-01 | | https://github.com/microsoft/playwright | 2026-07-01 | ## Cite this page > Browserbase is the safe agent default, Bright Data wins hard anti-bot targets, Cloudflare is cheapest for benign screenshotting, and self-hosted Playwright suits cooperative targets. > > — Toolweight, https://toolweight.com/compare/browser-automation-apis, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Sandbox providers](https://toolweight.com/compare/sandbox-providers), Which sandbox provider should I run untrusted or agent-generated code on? - [Coding agents](https://toolweight.com/compare/coding-agents), Which AI coding agent should I use in 2026? - [LLM APIs](https://toolweight.com/compare/llm-apis), Which frontier LLM API should I build on? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/browser-automation-apis - Machine-readable: https://toolweight.com/compare/browser-automation-apis.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: "S3-compatible storage compared: true cost at 1 TB + 5 TB egress" slug: s3-compatible-storage url: "https://toolweight.com/compare/s3-compatible-storage" question: Which S3-compatible object storage provider is actually cheapest once egress is counted? tools: 12 fields: 28 last_verified: 2026-11-07 oldest_verified: 2026-07-23 median_verified: 2026-11-06 stale_values: 75 conflicting_values: 0 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 38% verify_cadence: 30d license: CC-BY-4.0 --- # S3-compatible object storage providers > **Which S3-compatible object storage provider is actually cheapest once egress is counted?** > > Hetzner Object Storage is cheapest at USD 12.47/mo, then Cloudflare R2 at 22.74 and Backblaze B2 at 26.95, while AWS S3 costs 472.60. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/s3-compatible-storage | | Tools compared | 12 | | Fields compared | 28 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 159 of 336 values have a verification date, checked between 2026-07-23 and 2026-11-07 (median 2026-11-06), 75 due for re-check. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 38% (mean cell confidence, not age) | | Killer field | true_cost_usd | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [MinIO](https://toolweight.com/tools/minio) | 86.9 | 68% | The self-hosted S3 reference implementation, your hardware, your bandwidth, your SLA. | | 2 | [Tigris](https://toolweight.com/tools/tigris) | 81.5 | 92% | Globally distributed S3-compatible storage that caches objects near readers. | | 3 | [Cloudflare R2](https://toolweight.com/tools/cloudflare-r2) | 77.8 | 100% | S3-compatible object storage with zero egress fees, on Cloudflare's network. | | 4 | [Backblaze B2](https://toolweight.com/tools/backblaze-b2) | 77.2 | 100% | Cheap US and EU object storage with free egress up to three times stored volume. | | 5 | [Storj](https://toolweight.com/tools/storj) | 77.1 | 96% | Decentralised erasure-coded storage: USD 4/TB stored, USD 7/TB egress, no regions. | | 6 | [Wasabi](https://toolweight.com/tools/wasabi) | 75.0 | 92% | Flat-rate hot storage with no egress or API fees, bounded by a fair-use cap. | | 7 | [iDrive e2](https://toolweight.com/tools/idrive-e2) | 74.4 | 84% | USD 4/TB S3-compatible storage with zero-egress marketing and a fair-use cap. | | 8 | [Scaleway Object Storage](https://toolweight.com/tools/scaleway-object-storage) | 70.8 | 96% | European-sovereign S3 storage with multi-AZ classes and a real IAM system. | | 9 | [DigitalOcean Spaces](https://toolweight.com/tools/digitalocean-spaces) | 70.6 | 92% | Bundled object storage plus free CDN, priced as a flat base fee with overages. | | 10 | [Hetzner Object Storage](https://toolweight.com/tools/hetzner-object-storage) | 68.0 | 92% | The cheapest credible S3 endpoint in Europe, with a deliberately thin feature set. | | 11 | [AWS S3](https://toolweight.com/tools/aws-s3) | 65.9 | 96% | The API everything else copies, and by far the most expensive egress in this roster. | | 12 | [Bunny Storage](https://toolweight.com/tools/bunny-storage) | 63.5 | 92% | Edge storage built as a CDN origin, with its own API rather than a faithful S3 one. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Pricing | Tool | True cost /mo (USD) (/mo) | True cost /mo (AUD) (/mo) | True cost from Sydney (AUD) (/mo) | Storage $/TB/mo (/TB/mo) | Egress $/TB (/TB) | Egress cap (x stored) (x stored) | Class A $/M ops (/M ops) | Class B $/M ops (/M ops) | Min retention | Min billed object | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | MinIO | N/A | N/A | N/A | N/A | N/A | N/A | $0/M ops | $0/M ops | 0ms | 0 B | | Tigris | $29.5/mo | A$44.84/mo | A$44.84/mo | $20/TB/mo | $0/TB | - | $5/M ops | $0.5/M ops | 0ms | 0 B | | Cloudflare R2 | $22.74/mo | A$34.56/mo | A$34.56/mo | $15/TB/mo | $0/TB | Unlimited | $4.5/M ops | $0.36/M ops | 0ms | 0 B | | Backblaze B2 | $26.95/mo | A$40.96/mo | N/A | $6.95/TB/mo | $10/TB | 3x stored | $0/M ops | $0/M ops | 0ms | 0 B | | Storj | $39/mo | A$59.28/mo | A$59.28/mo | $7/TB/mo | $7/TB | - | $0/M ops | $0/M ops | 0ms | 0 B | | Wasabi | - | - | - | $7.99/TB/mo | $0/TB | 1x stored | $0/M ops | $0/M ops | 90d | 4 KB | | iDrive e2 | - | - | - | $6/TB/mo | $0/TB | 3x stored | $0/M ops | $0/M ops | 0ms | 0 B | | Scaleway Object Storage | $72.8/mo | A$110.66/mo | - | $16.94/TB/mo | $11.6/TB | - | $0/M ops | $0/M ops | 0ms | 0 B | | DigitalOcean Spaces | $60/mo | A$91.2/mo | A$91.2/mo | $20/TB/mo | $10/TB | N/A | $0/M ops | $0/M ops | 0ms | 0 B | | Hetzner Object Storage | $12.47/mo | A$18.95/mo | - | $7.53/TB/mo | $1.38/TB | - | $0/M ops | $0/M ops | 0ms | 0 B | | AWS S3 | $472.6/mo | A$718.35/mo | A$900.14/mo | $23/TB/mo | $90/TB | - | $5/M ops | $0.4/M ops | 0ms | 0 B | | Bunny Storage | $60/mo | A$91.2/mo | A$243.2/mo | $10/TB/mo | $10/TB | - | $0/M ops | $0/M ops | 0ms | 0 B | ### Features & API | Tool | S3 API coverage (%) | Presigned URLs | Multipart upload | Versioning | Lifecycle rules | Event notifications | CDN integration | Max object size | IAM granularity | Sydney region | TTFB from Sydney | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | MinIO | 98% | ● | ● | ● | ● | ● | diy | 5 TB | 5 | ● | - | | Tigris | 90% | ● | ● | ● | ● | ● | free-bundled | 5 TB | 3 | ● | 60ms | | Cloudflare R2 | 82% | ● | ● | ○ | ● | ● | free-bundled | 5 TB | 3 | ◐ | 45ms | | Backblaze B2 | 85% | ● | ● | ● | ● | ● | partner | 9.1 TB | 3 | ○ | 180ms | | Storj | 80% | ● | ● | ● | ○ | ○ | partner | 5 TB | 4 | ◐ | 150ms | | Wasabi | 90% | ● | ● | ● | ◐ | ○ | partner | 5 TB | 4 | ● | 30ms | | iDrive e2 | 80% | ● | ● | ● | ◐ | ○ | none | 5 TB | 3 | - | - | | Scaleway Object Storage | 85% | ● | ● | ● | ● | ○ | first-party-paid | 5 TB | 4 | ○ | 300ms | | DigitalOcean Spaces | 78% | ● | ● | ○ | ◐ | ○ | free-bundled | 5 TB | 3 | ● | 25ms | | Hetzner Object Storage | 70% | ● | ● | ● | ◐ | ○ | diy | 5 TB | 2 | ○ | 300ms | | AWS S3 | 100% | ● | ● | ● | ● | ● | first-party-paid | 45.5 TB | 5 | ● | 25ms | | Bunny Storage | 30% | ◐ | ○ | ○ | ○ | ○ | free-bundled | - | 2 | ● | 20ms | ### Durability & Retention | Tool | Durability (nines) ( nines) | Uptime SLA (%) | Object lock / WORM | Replication model | | --- | --- | --- | --- | --- | | MinIO | - | - | ● | erasure-coded | | Tigris | 11 nines | 99.99% | - | multi-region | | Cloudflare R2 | 11 nines | 99.9% | ◐ | multi-az | | Backblaze B2 | 11 nines | 99.9% | ● | single-az | | Storj | 11 nines | 99.95% | ● | erasure-coded | | Wasabi | 11 nines | 99.9% | ● | single-az | | iDrive e2 | 11 nines | 99.9% | ● | single-az | | Scaleway Object Storage | 11 nines | 99.9% | ● | multi-az | | DigitalOcean Spaces | - | 99.9% | ○ | single-az | | Hetzner Object Storage | - | 99.9% | ● | single-az | | AWS S3 | 11 nines | 99.9% | ● | multi-az | | Bunny Storage | 11 nines | 99.99% | ○ | multi-region | ### Agentic | Tool | Official MCP server | | --- | --- | | MinIO | ● | | Tigris | ○ | | Cloudflare R2 | ● | | Backblaze B2 | ○ | | Storj | ○ | | Wasabi | ○ | | iDrive e2 | ○ | | Scaleway Object Storage | ○ | | DigitalOcean Spaces | ◐ | | Hetzner Object Storage | ○ | | AWS S3 | ● | | Bunny Storage | ○ | ### Traction | Tool | GA year | | --- | --- | | MinIO | 2,015 | | Tigris | 2,024 | | Cloudflare R2 | 2,022 | | Backblaze B2 | 2,015 | | Storj | 2,020 | | Wasabi | 2,017 | | iDrive e2 | 2,021 | | Scaleway Object Storage | 2,019 | | DigitalOcean Spaces | 2,017 | | Hetzner Object Storage | 2,024 | | AWS S3 | 2,006 | | Bunny Storage | 2,019 | ### Positioning | Tool | Positioning | | --- | --- | | MinIO | The self-hosted S3 baseline, full API fidelity in exchange for operating it. | | Tigris | Object storage that behaves like a CDN, for globally distributed apps. | | Cloudflare R2 | Zero-egress object storage for teams already on Cloudflare's edge. | | Backblaze B2 | Commodity bulk storage for backup targets and media archives. | | Storj | Decentralised storage sold on price and on surviving whole-facility failure. | | Wasabi | Flat-rate hot storage sold against S3's egress bill, for steady archives. | | iDrive e2 | Lowest headline storage price, sold into the backup and MSP market. | | Scaleway Object Storage | EU-sovereign object storage with AWS-shaped IAM, priced in euros. | | DigitalOcean Spaces | Predictable bundled storage plus CDN for teams already on DigitalOcean. | | Hetzner Object Storage | European bulk storage at hardware-vendor prices, with hardware-vendor features. | | AWS S3 | The reference implementation, priced for customers who are not leaving. | | Bunny Storage | A CDN company's origin store, sold on edge delivery rather than API fidelity. | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | `true_cost_usd` | pricing | currency | /mo | lower | 10 | Computed by Toolweight, not vendor-quoted: published pay-as-you-go list price for 1 TB (1,000 GB) stored for a full month, plus 5 TB (5,000 GB) egressed to the public internet, plus 10 M requests split 1 M Class A (PUT/POST/LIST) and 9 M Class B (GET/HEAD). Base fees are included and rate-card allowances deducted before overage rates apply; separately branded free plans are not netted off. No committed-use discounts. Euro list prices are converted at 1 EUR = 1.16 USD, struck 2026-07-23. Null where the provider's model cannot serve this scenario at a list price, or where the rate that would price it is not published, an estimate dressed as a quote is worse than an empty cell. The arithmetic for each provider is in that cell's note and reconstructs from the other cells in the same row. | | True cost /mo (AUD) | `true_cost_aud` | pricing | currency | /mo | lower | 5 | The same computed scenario as the USD column, converted at a fixed 1 USD = 1.52 AUD, struck 2026-07-23. Providers listing in euros are converted to USD at 1 EUR = 1.16 USD first, struck the same day. Both rates are held fixed so the column is reproducible; check the dates before trusting the digits, because a stale euro rate is what previously understated Hetzner and Scaleway here. This is a currency conversion of a list price, not an AUD-denominated tariff, no provider in this roster publishes an AUD price list for object storage, and it is a conversion of the provider's cheapest region, not of what it costs to serve Australia. For that, read the next column. | | True cost from Sydney (AUD) | `sydney_cost_aud` | pricing | currency | /mo | lower | 0 | The same fixed scenario again, 1 TB stored, 5 TB egressed, 10 M requests, but priced at the provider's Australian or Oceania rates and served from its nearest Australian-capable location, then converted at 1 USD = 1.52 AUD. This is not the AUD column: it differs wherever a provider charges more for APAC transfer or runs a dearer Sydney region, which is Bunny (0.03/GB into Oceania rather than 0.01) and AWS (ap-southeast-2 rather than us-east-1). Null where the provider has no Australian or Oceania location, so the scenario cannot be served from Australia at any price, or where its cost is null in the USD column for the same reasons stated there. It is unweighted in the default profile and carries the cost weight in the Best from Australia preset, where it is the honest input. | | Storage $/TB/mo | `storage_price` | pricing | currency | /TB/mo | lower | 6 | Marginal list price to store one terabyte (1,000 GB) in the provider's standard or hot class for one month, at pay-as-you-go rates with no commitment. Where a provider sells a base bundle, this is the overage rate charged beyond the included capacity. Euro prices are converted at 1 EUR = 1.16 USD, struck 2026-07-23. | | Egress $/TB | `egress_price` | pricing | currency | /TB | lower | 9 | Marginal list price to transfer one terabyte (1,000 GB) out to the public internet, beyond any free allowance, excluding intra-provider and CDN origin-fetch transfer. Euro prices are converted at 1 EUR = 1.16 USD, struck 2026-07-23. Zero means the provider charges nothing per gigabyte, but two providers here advertise zero and enforce a ceiling behind it, read this column together with the egress cap column, which is the one that separates an open promise from a bounded one. | | Egress cap (x stored) | `egress_cap_multiple` | pricing | number | x stored | higher | 3 | How much you may download in a month, as a multiple of what you store, before the provider's free-egress arrangement stops applying, either because it starts billing an overage or because it reviews and restricts the account. It exists because a zero in the egress column with a 1x ceiling behind it and a zero with no ceiling at all are not the same product, and nothing else on this page tells them apart. No provider publishes an unlimited figure, so this column can only penalise a bounded promise, never reward an open one: a provider that simply meters egress per gigabyte has no ceiling to hit and is null here, as is a zero-egress provider that publishes no ceiling. It is scored against a 1-10x range, so a 3x allowance reads as only slightly better than a 1x one, and neither is what R2 and Tigris are offering. | | Class A $/M ops | `class_a_price` | pricing | currency | /M ops | lower | 3 | List price per million mutating or listing operations, PUT, POST, COPY, LIST and multipart part uploads. Zero means the provider does not meter requests at all. Vendors disagree on which verbs are Class A; where a provider uses its own taxonomy we map its most expensive metered request class here. | | Class B $/M ops | `class_b_price` | pricing | currency | /M ops | lower | 3 | List price per million read operations, GET, HEAD and equivalents, excluding the bandwidth those reads generate. Zero means requests are not metered. | | Min retention | `min_retention` | pricing | duration | - | lower | 5 | Shortest period an object is billed for regardless of when it is deleted, in the provider's standard class. Zero means true proration. A 90-day floor multiplies the effective storage price on any workload whose objects live for days rather than months. | | Min billed object | `min_billed_object` | pricing | bytes | - | lower | 2 | Smallest size an individual object is billed at in the standard class, regardless of its real size. Zero means objects are billed at actual bytes. Only matters when you store very large numbers of very small objects, thumbnails, map tiles, telemetry blobs. | | S3 API coverage | `s3_api_coverage` | features | number | % | higher | 8 | Our estimate of the share of commonly used S3 REST operations, and their AWS-documented semantics, that the provider implements faithfully, weighted toward what real applications call: object CRUD, multipart, presigned URLs, versioning, lifecycle, object lock, bucket notifications, CORS and policy handling. AWS S3 is 100 by definition. Estimated from documentation rather than by running a conformance suite, so treat it as an ordering, not a measurement. | | Presigned URLs | `presigned_urls` | features | tristate | - | higher | 4 | Whether AWS SigV4 presigned URLs work for both GET and PUT, generated by a standard AWS SDK without a provider-specific library. Partial means a proprietary token or signed-URL scheme exists but is not SigV4-compatible. | | Multipart upload | `multipart_upload` | features | tristate | - | higher | 3 | Whether the S3 multipart upload API (CreateMultipartUpload, UploadPart, CompleteMultipartUpload, including UploadPartCopy and abort) is implemented well enough for the AWS SDK's transfer manager to work unmodified. | | Versioning | `versioning` | features | tristate | - | higher | 5 | Whether bucket-level object versioning is available with S3 semantics, version IDs, delete markers and GET by version. Partial means versions exist but with a reduced API, no delete markers, or no per-bucket toggle. | | Lifecycle rules | `lifecycle_rules` | features | tristate | - | higher | 4 | Whether PutBucketLifecycleConfiguration is supported for prefix- and tag-scoped expiration, noncurrent-version expiration and abandoned-multipart cleanup. Partial means expiration works but storage-class transitions or tag filters do not. | | Event notifications | `event_notifications` | features | tristate | - | higher | 4 | Whether object create and delete events can be pushed to a queue, function or webhook without you polling the bucket. Partial means events exist but only into the provider's own proprietary sink, or only for a subset of event types. | | CDN integration | `cdn_integration` | features | enum | - | higher | 5 | How you get cached edge delivery in front of the bucket. free-bundled: the provider's own CDN sits in front at no extra transfer cost. first-party-paid: same vendor, metered separately. partner: a documented zero-cost or discounted origin-fetch arrangement with a third-party CDN. diy: point any CDN at it and pay full origin egress on misses. none: no practical caching layer. | | Max object size | `max_object_size` | features | bytes | - | higher | 2 | Largest single object the provider accepts, using multipart upload where required. Most of the roster still sits on the 5 TiB ceiling S3 itself once imposed; AWS has since raised its own limit to 50 TB and Backblaze allows 10 TB, so the ceiling every clone inherited is now the one place AWS is the outlier. Matters if you store disk images, database dumps or model checkpoints. Scoring is clamped at 5 TiB: past that the difference is real but almost never the reason anyone picks a provider, and left unclamped a single vendor's 50 TB ceiling would drag every other row's score down on a dimension nobody chose on. | | IAM granularity | `iam_granularity` | features | score | - | higher | 4 | 1-5 on how finely you can scope credentials. 1 = one account-wide key. 2 = per-bucket credentials with read/write only. 3 = per-bucket-and-prefix tokens with a fixed verb set and optional expiry. 4 = a real policy document matching on resources and actions. 5 = full policy language with condition keys, plus assumable roles or STS and external identity federation. | | Sydney region | `sydney_region` | features | tristate | - | higher | 7 | Whether you can pin bucket data to a named Sydney or Australian location at creation time and have it stay there. Partial means an Oceania or APAC hint, best-effort placement rather than a contractual region, or placement only available on higher plans. | | TTFB from Sydney | `ttfb_sydney` | features | duration | - | lower | 6 | Typical time to first byte for an uncached GET of a small object from a client in Sydney, using the provider's nearest available location. Inferred from network topology and community reports, not measured by Toolweight, read the buckets rather than the digits: under 50 ms is in-metro, 50-150 ms regional, over 150 ms transpacific or further. | | Durability (nines) | `durability_nines` | durability | number | nines | higher | 5 | Number of nines in the provider's published annual object durability figure, 11 means 99.999999999%. This is a design claim, not a warranty; almost nobody underwrites it financially. Null where the provider publishes no figure at all, which is itself informative for a backup target. | | Uptime SLA | `uptime_sla` | durability | number | % | higher | 4 | Contractual monthly availability target for the standard object storage tier, as published in the provider's SLA and backed by service credits. Marketing uptime claims with no credit remedy are not counted. Null where no object-storage-specific SLA is published. | | Object lock / WORM | `object_lock` | durability | tristate | - | higher | 5 | Whether S3 Object Lock is supported with both governance and compliance retention modes plus legal holds, such that a ransomware-resistant immutable backup target is possible. Partial means a bucket- or vendor-specific retention lock exists but not the full S3 Object Lock API surface. | | Replication model | `replication_model` | durability | enum | - | higher | 4 | The default failure domain a single bucket survives without you configuring cross-region replication. multi-region: copies in separate geographies by default. erasure-coded: shards spread across many independent hosts or operators. multi-az: separate facilities within one metro. single-az: one facility. single-node: whatever you built. | | Official MCP server | `mcp_server` | agentic | tristate | - | higher | 2 | Whether the vendor ships and maintains a Model Context Protocol server exposing bucket and object operations to coding agents. Partial means an MCP server exists for the vendor's wider platform but object storage coverage within it is incidental or read-only. | | GA year | `ga_year` | traction | number | - | n/a | 0 | Calendar year the object storage product reached general availability, not the year the company was founded or the private beta opened. Context only; it does not contribute to the score. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | Our one-line summary of who the vendor is actually selling to, paraphrased from its own marketing rather than quoted from it. Not scored. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest egress | `cheapest-egress` | For read-heavy workloads where bandwidth, not capacity, is the bill. Ranks only providers that publish a price for this scenario: a zero-egress promise you cannot buy five terabytes of is not the cheapest egress, it is no egress. | egress_price:10, true_cost_usd:9, egress_cap_multiple:7, cdn_integration:5, class_b_price:4, storage_price:2, ttfb_sydney:2 | https://toolweight.com/compare/s3-compatible-storage?w=egress_price:10,true_cost_usd:9,egress_cap_multiple:7,cdn_integration:5,class_b_price:4,storage_price:2,ttfb_sydney:2 | | Cheapest storage | `cheapest-storage` | For cold archives and backups written once and rarely read back. | storage_price:10, min_retention:7, min_billed_object:5, durability_nines:5, object_lock:4, true_cost_usd:4, egress_price:2 | https://toolweight.com/compare/s3-compatible-storage?w=storage_price:10,min_retention:7,min_billed_object:5,durability_nines:5,object_lock:4,true_cost_usd:4,egress_price:2 | | Most S3-faithful | `most-s3-faithful` | For lifting an existing AWS SDK codebase without touching application code. | s3_api_coverage:10, versioning:7, object_lock:7, iam_granularity:7, lifecycle_rules:6, event_notifications:6, presigned_urls:5, multipart_upload:5, egress_price:1 | https://toolweight.com/compare/s3-compatible-storage?w=s3_api_coverage:10,versioning:7,object_lock:7,iam_granularity:7,lifecycle_rules:6,event_notifications:6,presigned_urls:5,multipart_upload:5,egress_price:1 | | Best from Australia | `best-from-australia` | For serving Australian users, weighted on Sydney presence and the cost of delivering this scenario from Australia. It deliberately ignores the headline AUD column, which is a currency conversion of a Europe-or-US-priced bill: that column understates Bunny by nearly two-thirds and AWS by a fifth. Providers with no Australian location are ranked separately rather than scored, because there is no price at which they can serve this workload from Australia. | sydney_region:10, ttfb_sydney:9, sydney_cost_aud:8, egress_price:6, cdn_integration:5, s3_api_coverage:4, uptime_sla:3 | https://toolweight.com/compare/s3-compatible-storage?w=sydney_region:10,ttfb_sydney:9,sydney_cost_aud:8,true_cost_aud:0,egress_price:6,cdn_integration:5,s3_api_coverage:4,uptime_sla:3 | ## Which one should you pick? - **Are your users and your hot objects in Australia or the wider APAC region?** - _Yes — latency to AU actually matters_ - **Is this a user-facing asset pipeline, or backups and build caches?** - _User-facing, latency-sensitive_ - → **[Bunny Storage](https://toolweight.com/tools/bunny-storage)** — A Sydney edge beats a cheaper provider sitting 200–300 ms away; it is not an S3 clone, so treat it as a CDN-first store rather than a drop-in. - _Backups / build caches_ - → **[DigitalOcean Spaces](https://toolweight.com/tools/digitalocean-spaces)** — A real Sydney region and an S3 API, priced in AUD, without paying for edge delivery cold data never uses. - _No — global, or Cloudflare is already your edge_ - **Do you need object versioning to undo bad writes?** - _Yes, versioning is non-negotiable_ - → **[Backblaze B2](https://toolweight.com/tools/backblaze-b2)** — R2 has no object versioning at all; B2 keeps the boring S3 API with versioning, at 26.95/mo on this scenario. - _No, and egress is the bill_ - → **[Cloudflare R2](https://toolweight.com/tools/cloudflare-r2)** — Zero egress, no minimum retention, a Workers binding that skips the HTTP round trip — the answer for most read-heavy workloads, and it is not close. - _No, pure cold storage written once_ - → **[Hetzner Object Storage](https://toolweight.com/tools/hetzner-object-storage)** — Cheapest raw at 12.47/mo; fine for backups where its missing lifecycle, event notifications and APAC region never bite. ## Verdict - Egress is the only number that matters, and almost nobody puts it on the pricing page front - Storage is a commodity: every provider here is USD 4-23 per TB per month - Egress spans zero to ninety dollars per terabyte - On a workload serving five times what it stores, egress decides the bill by an order of magnitude - AWS S3 costs 472.60 a month here; 441 of that is bandwidth - For most teams the answer is Cloudflare R2, and it is not close - R2 gives zero egress, no minimum retention, no minimum billable object size, lifecycle rules - R2 also has event notifications into Queues and a Workers binding that skips the HTTP round trip - Catch one: R2's free egress is Cloudflare's network, best when Cloudflare is already your edge - Catch two: R2 tokens are bucket-and-verb scoped, not a policy language - Catch three: R2 has no object versioning at all (GetBucketVersioning and PutBucketVersioning unimplemented) - Without R2 versioning, undoing bad writes must move into your application or lifecycle policy - Hetzner wins the raw number but read the feature columns first - Hetzner is Ceph with a thin S3 face: no object lock, unclear versioning, partial lifecycle - Hetzner has no event notifications, no APAC location, roughly 300 ms round trip from Australia - Hetzner is fine for backups and build caches, dreadful for a user-facing asset pipeline - Bunny Storage is the opposite: superb Sydney edge delivery, but not an S3 clone - Wasabi is 6.99/TB with no egress fee, but its AUP caps monthly egress at roughly stored volume - 5 TB out of 1 TB stored is five times over, so there is no honest Wasabi price to quote - Wasabi's 90-day minimum retention and 4 KB minimum billable object make it bad for churny work - iDrive e2 sells the same zero-egress-with-cap promise, publishing neither the multiple nor the overage - MinIO is the self-host baseline; its price is your hardware - MinIO's community AGPL build lost its admin console in 2025 - For Australia, Wasabi, DigitalOcean Spaces, Bunny and AWS have Sydney presence - Tigris reaches Sydney through Fly.io - Backblaze, Hetzner and Scaleway have no Australian location, sitting 200-300 ms away - A CDN does not fully hide that latency on cache misses - R2's Oceania location hint is best-effort, not a contractual region - If your users are in Australia and objects are hot, price the Sydney-capable options in AUD ## Where the bodies are buried in object storage pricing - Four line items reliably cost more than the storage rate you were quoted - Egress is the obvious one: AWS charges USD 0.09/GB up to 10 TB, only the first 100 GB free - That AWS egress is 441 dollars of our 472.60 total - DigitalOcean charges 0.01/GB, Scaleway EUR 0.01 (about 0.0116), Storj 0.007/GB: better than AWS, not zero - On a 50 TB month that gap is real money - Only R2 and Tigris charge nothing with no ceiling attached - Wasabi and iDrive e2 also print a zero, but bound it with a fair-use multiple of what you store - The "egress cap" column is there so you can tell the two kinds of zero apart - Class A operations are the second: R2's 4.50 per million stings on list-loops or high write volume - AWS is 5.00 per million for the same class - Backblaze, DigitalOcean, Scaleway, Hetzner, Storj, Bunny and iDrive charge nothing per request at all - Backblaze went furthest, making Class A, B and C calls free, metering only outbound event callbacks - Minimum retention is the third, a storage price multiplier in disguise - Wasabi's 90 days means a seven-day object lifetime pays roughly thirteen times the headline rate - Minimum billable object size is the fourth: Wasabi bills every object at at least 4 KB - AWS applies a 128 KB floor on its infrequent-access classes, so the cheap tier costs more for thumbnails - Store ten million 1.5 KB objects behind a 4 KB floor and you pay for 40 GB where you stored 15 ## Migrating off AWS S3 without a rewrite - The application change is usually one line: a custom endpoint URL - Some providers also need path-style addressing forced on the S3 client - That part is genuinely easy, and it is what every provider's landing page shows you - The hard part is everything around the bucket - Bucket policies do not port: R2, Hetzner and Bunny have no IAM policy language - Any authorisation expressed as a condition on a principal must move into your application - Versioning does not port to R2 at all; GetBucketVersioning and PutBucketVersioning are unimplemented - If S3 versioning is how you recover from bad writes, budget for replacing it - Lifecycle transitions between storage classes mostly do not port, because most providers have one class - S3 event notifications become provider-specific: R2 fires into Cloudflare Queues, Backblaze uses its own payload - Anything wired to Lambda needs rebuilding rather than repointing - Object Lock compliance mode exists on Backblaze, Wasabi, Scaleway, iDrive, Storj, MinIO and AWS - It does not exist on Hetzner, DigitalOcean or Bunny at all - For the copy itself, do not pull data through your own machines - Cloudflare's Super Slurper, and rclone with server-side copy, will move a terabyte far faster - On AWS the one-time egress to leave is often the largest line on the migration budget - Getting 50 TB out of S3 costs roughly USD 4,300 in bandwidth before you store a byte elsewhere - Price that exit charge first, and consider draining gradually behind a read-through cache ## How to actually decide - Work out your egress-to-storage ratio first; it selects the shortlist before any feature comparison - Below about 1:1 (backups, archives, data lakes) storage price dominates - There the field is Storj (USD 4/TB), iDrive e2 (4), and Backblaze and Hetzner (6.95 each) - Check minimum retention and minimum billable object, and confirm object lock for a ransomware-resistant target - Above about 3:1 (public assets, media, model weights, package registries) egress dominates absolutely - The shortlist collapses to R2 and Tigris, the only two charging nothing per gigabyte with no ceiling - Hetzner is the value option if a European origin is acceptable - Bunny does not belong on this axis: its egress is 0.01/GB in Europe and North America, 0.03 into Oceania - Shortlist Bunny for its edge, not its bandwidth rate - At 10:1 nothing else is worth evaluating; the R2-to-AWS gap will not be closed by any feature - Then apply two filters - For Sydney, drop Backblaze, Hetzner and Scaleway, which have no Australian or Oceania location - For object lock, versioning and event notifications all with AWS semantics, only AWS, Backblaze and MinIO survive - Tigris has versioning and notifications but we could not confirm object lock - R2 has notifications but no versioning and only a bucket-level retention lock - Scaleway has the lock and versioning but we could not confirm notifications - Hetzner, DigitalOcean and Bunny fail on two of the three - What survives both filters is usually a two-horse race - At that point pick on the API surface you will touch, not a dollar figure under one engineer-hour a month ## Per-tool provenance, every cell, every source ### MinIO {#minio} The self-hosted S3 reference implementation, your hardware, your bandwidth, your SLA. | | | | --- | --- | | Site | https://min.io/ | | Docs | https://min.io/docs/minio/linux/index.html | | Repo | https://github.com/minio/minio | | Company | MinIO | | Founded | 2014 | | Open source | Yes (AGPL-3.0) | | Profile | https://toolweight.com/tools/minio | | Score (default weights) | 86.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | N/A | Inferred | 2026-11-07 | https://min.io/pricing | No comparable vendor monthly total; compute from the selected infrastructure. | https://toolweight.com/compare/s3-compatible-storage#minio--true_cost_usd | | True cost /mo (AUD) | N/A | Inferred | 2026-11-07 | https://min.io/pricing | No comparable vendor monthly total; compute from the selected infrastructure. | https://toolweight.com/compare/s3-compatible-storage#minio--true_cost_aud | | True cost from Sydney (AUD) | N/A | Vendor-claimed | 2026-11-07 | https://min.io/pricing | Local hardware and transit determine Sydney deployment costs. | https://toolweight.com/compare/s3-compatible-storage#minio--sydney_cost_aud | | Storage $/TB/mo | N/A | Vendor-claimed | 2026-11-07 | https://min.io/pricing | Hardware and storage capacity cost depend on the deployment. | https://toolweight.com/compare/s3-compatible-storage#minio--storage_price | | Egress $/TB | N/A | Vendor-claimed | 2026-11-07 | https://min.io/pricing | Transit is priced by the network provider. | https://toolweight.com/compare/s3-compatible-storage#minio--egress_price | | Egress cap (x stored) | N/A | Vendor-claimed | 2026-11-07 | https://min.io/pricing | Not a MinIO service allowance; network capacity depends on the deployment. | https://toolweight.com/compare/s3-compatible-storage#minio--egress_cap_multiple | | Class A $/M ops | $0/M ops | Inferred | - | - | Nobody is metering you. | https://toolweight.com/compare/s3-compatible-storage#minio--class_a_price | | Class B $/M ops | $0/M ops | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--class_b_price | | Min retention | 0ms | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--min_billed_object | | S3 API coverage | 98% | Inferred | - | - | The most faithful reimplementation of the S3 API that exists, and the thing other providers test against. The gaps are AWS-specific services rather than storage semantics. | https://toolweight.com/compare/s3-compatible-storage#minio--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--multipart_upload | | Versioning | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--versioning | | Lifecycle rules | ● | Inferred | - | - | Including tiering to a remote S3-compatible target, which is a neat way to run hot-local and cold-cloud. | https://toolweight.com/compare/s3-compatible-storage#minio--lifecycle_rules | | Event notifications | ● | Inferred | - | - | To Kafka, NATS, AMQP, Redis, Postgres, webhooks and more, a wider set of sinks than any managed provider here offers. | https://toolweight.com/compare/s3-compatible-storage#minio--event_notifications | | CDN integration | diy | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--max_object_size | | IAM granularity | 5 | Inferred | - | - | Full AWS-style policy documents with conditions, plus STS, service accounts, OIDC and LDAP federation. Nothing else here matches it except AWS itself. | https://toolweight.com/compare/s3-compatible-storage#minio--iam_granularity | | Sydney region | ● | Inferred | - | - | Any location you can rent a machine in, which for Australia means anywhere with a Sydney or Melbourne facility. | https://toolweight.com/compare/s3-compatible-storage#minio--sydney_region | | TTFB from Sydney | - | Unknown | - | - | Entirely a function of where you put it and how you network it. | https://toolweight.com/compare/s3-compatible-storage#minio--ttfb_sydney | | Durability (nines) | - | Unknown | - | - | Depends on your erasure set size, drive count and failure-domain layout. MinIO gives you the tools; the number is yours to earn. | https://toolweight.com/compare/s3-compatible-storage#minio--durability_nines | | Uptime SLA | - | Unknown | - | - | You are the SLA. | https://toolweight.com/compare/s3-compatible-storage#minio--uptime_sla | | Object lock / WORM | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--object_lock | | Replication model | erasure-coded | Inferred | - | - | Reed-Solomon erasure coding across drives and nodes, plus optional active-active site replication. | https://toolweight.com/compare/s3-compatible-storage#minio--replication_model | | Official MCP server | ● | Inferred | - | - | MinIO ships an MCP server for bucket and object administration. | https://toolweight.com/compare/s3-compatible-storage#minio--mcp_server | | GA year | 2,015 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--ga_year | | Positioning | The self-hosted S3 baseline, full API fidelity in exchange for operating it. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#minio--positioning | **Verdict.** The reference point, not a competitor; run it only if you already operate storage hardware. **Pick it when** - On-premises or air-gapped deployments where data cannot leave your control - Teams that need AWS-grade IAM semantics without AWS - A local development target that behaves like production S3 ### Tigris {#tigris} Globally distributed S3-compatible storage that caches objects near readers. | | | | --- | --- | | Site | https://www.tigrisdata.com/ | | Docs | https://www.tigrisdata.com/docs/ | | Company | Tigris Data | | Founded | 2022 | | Profile | https://toolweight.com/tools/tigris | | Score (default weights) | 81.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $29.5/mo | Inferred | 2026-07-23 | https://www.tigrisdata.com/docs/pricing/ | Storage 1,000 GB x $0.02 = $20.00. Class A 1 M x $5.00 = $5.00. Class B 9 M x $0.50 = $4.50. Egress $0. Total $29.50. The two operation rates are the least certain inputs on this row; if they are wrong the total still lands between $20 and $35. | https://toolweight.com/compare/s3-compatible-storage#tigris--true_cost_usd | | True cost /mo (AUD) | A$44.84/mo | Inferred | 2026-07-23 | - | $29.50 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#tigris--true_cost_aud | | True cost from Sydney (AUD) | A$44.84/mo | Inferred | 2026-07-23 | - | Unchanged from the headline figure: Tigris prices storage and operations the same in every region and charges nothing for transfer anywhere, so Sydney delivery through Fly.io's syd footprint costs what any other region costs. | https://toolweight.com/compare/s3-compatible-storage#tigris--sydney_cost_aud | | Storage $/TB/mo | $20/TB/mo | Vendor-claimed | 2026-07-23 | https://www.tigrisdata.com/docs/pricing/ | $0.02/GB-month for the standard tier. Infrequent-access and archive tiers are cheaper at rest. | https://toolweight.com/compare/s3-compatible-storage#tigris--storage_price | | Egress $/TB | $0/TB | Vendor-claimed | 2026-07-23 | https://www.tigrisdata.com/docs/pricing/ | No data-transfer charges, which is the point of the product alongside its automatic edge caching. | https://toolweight.com/compare/s3-compatible-storage#tigris--egress_price | | Egress cap (x stored) | - | Unknown | 2026-11-07 | https://www.tigrisdata.com/docs/pricing/ | No ceiling published on the zero-egress rate. Along with R2, this is the unbounded kind of zero. | https://toolweight.com/compare/s3-compatible-storage#tigris--egress_cap_multiple | | Class A $/M ops | $5/M ops | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--class_a_price | | Class B $/M ops | $0.5/M ops | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--class_b_price | | Min retention | 0ms | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--min_billed_object | | S3 API coverage | 90% | Inferred | - | - | Built S3-first: CRUD, multipart, presigning, versioning, conditional writes and lifecycle rules are all present. | https://toolweight.com/compare/s3-compatible-storage#tigris--s3_api_coverage | | Presigned URLs | ● | Vendor-claimed | 2026-07-23 | https://www.tigrisdata.com/docs/objects/presigned/ | - | https://toolweight.com/compare/s3-compatible-storage#tigris--presigned_urls | | Multipart upload | ● | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--multipart_upload | | Versioning | ● | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--versioning | | Lifecycle rules | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--lifecycle_rules | | Event notifications | ● | Inferred | - | - | Object notifications to a webhook are documented; the payload shape is Tigris-specific. | https://toolweight.com/compare/s3-compatible-storage#tigris--event_notifications | | CDN integration | free-bundled | Inferred | - | - | Caching and replication toward reading regions is default behaviour, not a separate CDN product you configure. | https://toolweight.com/compare/s3-compatible-storage#tigris--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--max_object_size | | IAM granularity | 3 | Inferred | - | - | Access keys scoped by bucket and permission, plus shareable presigned access. Not a full policy language. | https://toolweight.com/compare/s3-compatible-storage#tigris--iam_granularity | | Sydney region | ● | Inferred | - | - | Runs on Fly.io's footprint, which includes syd. Placement is expressed as a region constraint rather than a distinct endpoint hostname. | https://toolweight.com/compare/s3-compatible-storage#tigris--sydney_region | | TTFB from Sydney | 60ms | Inferred | - | - | Local once an object has been pulled into the Sydney region; the first uncached read of a globally-placed object is slower. | https://toolweight.com/compare/s3-compatible-storage#tigris--ttfb_sydney | | Durability (nines) | 11 nines | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--durability_nines | | Uptime SLA | 99.99% | Vendor-claimed | 2026-11-07 | https://www.tigrisdata.com/docs/llms-full.txt | Stated in Tigris migration docs; we found no separate SLA document with credit terms. | https://toolweight.com/compare/s3-compatible-storage#tigris--uptime_sla | | Object lock / WORM | - | Unknown | 2026-11-07 | - | We could not confirm S3 Object Lock support either way. Assume no until you have verified it. | https://toolweight.com/compare/s3-compatible-storage#tigris--object_lock | | Replication model | multi-region | Vendor-claimed | 2026-07-23 | https://www.tigrisdata.com/docs/overview/ | Objects replicate toward the regions reading them; this is the product's core design rather than an add-on. | https://toolweight.com/compare/s3-compatible-storage#tigris--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--mcp_server | | GA year | 2,024 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--ga_year | | Positioning | Object storage that behaves like a CDN, for globally distributed apps. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#tigris--positioning | **Verdict.** The most interesting design: data gravity handled, no egress, Sydney via Fly, but youngest vendor with no SLA. **Pick it when** - Apps already deployed on Fly.io, where the integration is native - Globally distributed reads without running a CDN yourself - Zero egress without committing to Cloudflare's ecosystem ### Cloudflare R2 {#cloudflare-r2} S3-compatible object storage with zero egress fees, on Cloudflare's network. | | | | --- | --- | | Site | https://www.cloudflare.com/developer-platform/products/r2/ | | Docs | https://developers.cloudflare.com/r2/ | | Company | Cloudflare | | Founded | 2009 | | Profile | https://toolweight.com/tools/cloudflare-r2 | | Score (default weights) | 77.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $22.74/mo | Inferred | 2026-07-23 | https://developers.cloudflare.com/r2/pricing/ | Storage 1,000 GB x $0.015 = $15.00. Class A 1 M x $4.50 = $4.50. Class B 9 M x $0.36 = $3.24. Egress $0. Total $22.74. R2's free tier (10 GB storage, 1 M Class A, 10 M Class B monthly) is deliberately not netted off, per the methodology's netting rule; applying it would zero the Class A and Class B lines entirely and take 10 GB off storage, giving $22.74 - $0.15 - $4.50 - $3.24 = $14.85. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--true_cost_usd | | True cost /mo (AUD) | A$34.56/mo | Inferred | 2026-07-23 | - | $22.74 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--true_cost_aud | | True cost from Sydney (AUD) | A$34.56/mo | Inferred | 2026-07-23 | - | Unchanged from the headline figure: R2's storage and operation rates are the same worldwide and egress is zero everywhere, so serving Australia costs what serving anywhere costs. The caveat is placement rather than price, 'Oceania' is a best-effort location hint, not a contractual region. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--sydney_cost_aud | | Storage $/TB/mo | $15/TB/mo | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--storage_price | | Egress $/TB | $0/TB | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--egress_price | | Egress cap (x stored) | Unlimited | Vendor-claimed | 2026-11-07 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--egress_cap_multiple | | Class A $/M ops | $4.5/M ops | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--class_a_price | | Class B $/M ops | $0.36/M ops | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--class_b_price | | Min retention | 0ms | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--min_retention | | Min billed object | 0 B | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--min_billed_object | | S3 API coverage | 82% | Inferred | 2026-07-23 | https://developers.cloudflare.com/r2/api/s3/api/ | Object CRUD, multipart, SigV4 presigning, PutBucketLifecycleConfiguration and CORS all behave. Marked down from the 90 this row previously carried because Cloudflare's own compatibility table lists GetBucketVersioning and PutBucketVersioning as unimplemented, versioning is absent, not partial, alongside bucket policies, ACLs, the S3 notification API and the object-lock configuration APIs. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--s3_api_coverage | | Presigned URLs | ● | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/api/s3/presigned-urls/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--presigned_urls | | Multipart upload | ● | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/objects/multipart-objects/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--multipart_upload | | Versioning | ○ | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/api/s3/api/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--versioning | | Lifecycle rules | ● | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/buckets/object-lifecycles/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--lifecycle_rules | | Event notifications | ● | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/buckets/event-notifications/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--event_notifications | | CDN integration | free-bundled | Inferred | - | - | Cloudflare's CDN sits natively in front and the transfer is free either way. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--cdn_integration | | Max object size | 5 TB | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/platform/limits/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--max_object_size | | IAM granularity | 3 | Inferred | - | - | API tokens scoped by bucket and permission set, with optional TTL and IP filters. No policy conditions, no assumable roles. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--iam_granularity | | Sydney region | ◐ | Inferred | - | - | The Oceania ('oc') location hint biases placement toward the region but is explicitly best-effort, not a contractual region. Hard jurisdictional restrictions exist for the EU, not for Australia. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--sydney_region | | TTFB from Sydney | 45ms | Inferred | - | - | Cloudflare has Sydney PoPs; a cold read against an Oceania-hinted bucket typically lands in the 30-60 ms band. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--ttfb_sydney | | Durability (nines) | 11 nines | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/r2/reference/durability/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--durability_nines | | Uptime SLA | 99.9% | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--uptime_sla | | Object lock / WORM | ◐ | Inferred | - | - | Bucket-level retention locks exist; the full S3 Object Lock surface including compliance mode and per-object legal holds is not equivalent. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--object_lock | | Replication model | multi-az | Inferred | - | - | Cloudflare does not publish its erasure-coding scheme or facility layout for R2, so this is an assumption from its durability claim. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--replication_model | | Official MCP server | ● | Inferred | - | - | Cloudflare ships a family of remote MCP servers covering the developer platform, including bucket operations. | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--mcp_server | | GA year | 2,022 | Vendor-claimed | 2026-11-06 | https://blog.cloudflare.com/r2-ga/ | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--ga_year | | Positioning | Zero-egress object storage for teams already on Cloudflare's edge. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#cloudflare-r2--positioning | **Verdict.** The default for read-heavy work, the only provider where egress stops being a line item. **Pick it when** - Public assets, media and package registries where egress dwarfs storage - Anything already fronted by Cloudflare Workers or the Cloudflare CDN - Escaping an AWS bill that is mostly bandwidth ### Backblaze B2 {#backblaze-b2} Cheap US and EU object storage with free egress up to three times stored volume. | | | | --- | --- | | Site | https://www.backblaze.com/cloud-storage | | Docs | https://www.backblaze.com/docs/cloud-storage | | Company | Backblaze | | Founded | 2007 | | Profile | https://toolweight.com/tools/backblaze-b2 | | Score (default weights) | 77.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $26.95/mo | Inferred | 2026-07-23 | https://www.backblaze.com/cloud-storage/pricing | Storage 1 TB x $6.95 = $6.95. Free egress allowance is 3x stored = 3 TB, so 2,000 GB billable x $0.01 = $20.00. Requests $0.00: B2 now makes Class A, B and C calls free on pay-as-you-go, which covers all 10 M of this scenario's uploads, downloads and listings. Total $26.95. Serving through Cloudflare instead would zero the $20 under the Bandwidth Alliance, leaving $6.95. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--true_cost_usd | | True cost /mo (AUD) | A$40.96/mo | Inferred | 2026-07-23 | - | $26.95 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--true_cost_aud | | True cost from Sydney (AUD) | N/A | Vendor-claimed | 2026-11-07 | https://www.backblaze.com/docs/cloud-storage-data-regions | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--sydney_cost_aud | | Storage $/TB/mo | $6.95/TB/mo | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--storage_price | | Egress $/TB | $10/TB | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--egress_price | | Egress cap (x stored) | 3x stored | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--class_b_price | | Min retention | 0ms | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--min_retention | | Min billed object | 0 B | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/cloud-storage/pricing | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--min_billed_object | | S3 API coverage | 85% | Inferred | - | - | The S3-compatible endpoint covers CRUD, multipart, presigned URLs, versioning, lifecycle and object lock. The native B2 API remains the fuller surface. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--multipart_upload | | Versioning | ● | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-file-versions | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--versioning | | Lifecycle rules | ● | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-lifecycle-rules | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--lifecycle_rules | | Event notifications | ● | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-event-notifications | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--event_notifications | | CDN integration | partner | Vendor-claimed | 2026-07-23 | https://www.backblaze.com/cloud-storage/integrations/cloudflare | Bandwidth Alliance: free origin egress to Cloudflare and Fastly, which effectively zeroes bandwidth if you already run one of those. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--cdn_integration | | Max object size | 9.1 TB | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-large-files | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--max_object_size | | IAM granularity | 3 | Inferred | - | - | Application keys scoped to a bucket and optionally a name prefix, with a fixed capability list and optional expiry. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--iam_granularity | | Sydney region | ○ | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-data-regions | Regions are US West, US East, EU Central (Amsterdam) and Canada East (Toronto). Nothing in APAC. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--sydney_region | | TTFB from Sydney | 180ms | Inferred | - | - | US West to Sydney is a transpacific round trip; 160-200 ms is typical for an uncached small-object GET. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--ttfb_sydney | | Durability (nines) | 11 nines | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/blog/cloud-storage-durability/ | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--durability_nines | | Uptime SLA | 99.9% | Inferred | - | - | Credit-backed SLAs are published for B2 Reserve; the pay-as-you-go tier's commitment is weaker. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-11-06 | https://www.backblaze.com/docs/cloud-storage-object-lock | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--object_lock | | Replication model | single-az | Inferred | - | - | One region per bucket. Cross-region cloud replication exists but is a separate, separately billed feature. | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--mcp_server | | GA year | 2,015 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--ga_year | | Positioning | Commodity bulk storage for backup targets and media archives. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#backblaze-b2--positioning | **Verdict.** The sensible cheap, feature-complete middle, but no APAC region rules it out for Australia. **Pick it when** - Backup and archive targets where object lock matters and latency does not - Anyone already serving through Cloudflare or Fastly, egress becomes free - Workloads whose egress genuinely stays under three times stored volume ### Storj {#storj} Decentralised erasure-coded storage: USD 4/TB stored, USD 7/TB egress, no regions. | | | | --- | --- | | Site | https://www.storj.io/ | | Docs | https://docs.storj.io/ | | Company | Storj Labs | | Founded | 2014 | | Profile | https://toolweight.com/tools/storj | | Score (default weights) | 77.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $39/mo | Inferred | 2026-07-23 | https://www.storj.io/pricing | Storage 1 TB x $4 = $4.00. Egress 5 TB x $7 = $35.00. No per-request charges. Total $39.00. Excludes Storj's per-segment fee (about $0.0000088 per segment per month), because it scales with object count and shape rather than with anything this scenario fixes, but do not read that as negligible: the scenario's 1 M writes, if they are roughly 1 MB objects, are about 1 M segments, which is around $8.80 a month, a fifth of the total again. | https://toolweight.com/compare/s3-compatible-storage#storj--true_cost_usd | | True cost /mo (AUD) | A$59.28/mo | Inferred | 2026-07-23 | - | $39.00 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#storj--true_cost_aud | | True cost from Sydney (AUD) | A$59.28/mo | Inferred | 2026-07-23 | - | Unchanged from the headline figure: Storj has one global price and no regions, so there is no Australian tariff to apply. Read it alongside the 150 ms first-byte figure, the price is the same from Sydney, the latency is not. | https://toolweight.com/compare/s3-compatible-storage#storj--sydney_cost_aud | | Storage $/TB/mo | $7/TB/mo | Vendor-claimed | 2026-11-06 | https://www.storj.io/pricing | - | https://toolweight.com/compare/s3-compatible-storage#storj--storage_price | | Egress $/TB | $7/TB | Vendor-claimed | 2026-11-06 | https://www.storj.io/pricing | - | https://toolweight.com/compare/s3-compatible-storage#storj--egress_price | | Egress cap (x stored) | - | Unknown | 2026-11-07 | https://www.storj.io/pricing | Not applicable: egress is metered at $0.007/GB from the first byte, so there is no free-egress ceiling to exceed. | https://toolweight.com/compare/s3-compatible-storage#storj--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.storj.io/pricing | - | https://toolweight.com/compare/s3-compatible-storage#storj--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.storj.io/pricing | - | https://toolweight.com/compare/s3-compatible-storage#storj--class_b_price | | Min retention | 0ms | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--min_retention | | Min billed object | 0 B | Inferred | - | - | No size floor, but the per-segment fee means very small objects carry disproportionate overhead. | https://toolweight.com/compare/s3-compatible-storage#storj--min_billed_object | | S3 API coverage | 80% | Inferred | - | - | Delivered through an S3 gateway rather than natively. CRUD, multipart, presigning, versioning and object lock work; the more exotic bucket-level APIs generally do not. | https://toolweight.com/compare/s3-compatible-storage#storj--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--multipart_upload | | Versioning | ● | Vendor-claimed | 2026-11-06 | https://storj.dev/dcs/api/s3/object-versioning | - | https://toolweight.com/compare/s3-compatible-storage#storj--versioning | | Lifecycle rules | ○ | Vendor-claimed | 2026-11-07 | https://storj.dev/dcs/api/s3/s3-compatibility | - | https://toolweight.com/compare/s3-compatible-storage#storj--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--event_notifications | | CDN integration | partner | Inferred | - | - | Linksharing serves objects publicly and there are documented CDN partnerships, but no bundled edge cache. | https://toolweight.com/compare/s3-compatible-storage#storj--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--max_object_size | | IAM granularity | 4 | Inferred | - | - | Access grants are macaroon-derived: scope by bucket, prefix, permission and expiry, and delegate further without contacting the server. Genuinely more granular than most vendors' key models, just shaped differently from IAM. | https://toolweight.com/compare/s3-compatible-storage#storj--iam_granularity | | Sydney region | ◐ | Inferred | - | - | Storj has no regions, objects are erasure-coded across globally distributed operator nodes. Geographic placement constraints exist for compliance use cases, but that is not a Sydney region in the ordinary sense. | https://toolweight.com/compare/s3-compatible-storage#storj--sydney_region | | TTFB from Sydney | 150ms | Inferred | - | - | Reads require fetching enough erasure shards from enough independent nodes to reconstruct the object, so first-byte latency is structurally higher and more variable than a conventional store. Throughput on large objects is good; small-object latency is not. | https://toolweight.com/compare/s3-compatible-storage#storj--ttfb_sydney | | Durability (nines) | 11 nines | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--durability_nines | | Uptime SLA | 99.95% | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-11-06 | https://storj.dev/dcs/api/s3/object-lock | - | https://toolweight.com/compare/s3-compatible-storage#storj--object_lock | | Replication model | erasure-coded | Vendor-claimed | 2026-11-06 | https://storj.dev/learn/concepts/data-structure | - | https://toolweight.com/compare/s3-compatible-storage#storj--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--mcp_server | | GA year | 2,020 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--ga_year | | Positioning | Decentralised storage sold on price and on surviving whole-facility failure. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#storj--positioning | **Verdict.** The cheapest storage with a different durability model, undercut by first-byte latency the architecture cannot fix. **Pick it when** - Large-object distribution, datasets, model weights, video masters - Backups where surviving a whole-region failure matters more than latency - Workloads that benefit from delegatable, expiring, prefix-scoped access grants ### Wasabi {#wasabi} Flat-rate hot storage with no egress or API fees, bounded by a fair-use cap. | | | | --- | --- | | Site | https://wasabi.com/cloud-object-storage | | Docs | https://docs.wasabi.com/ | | Company | Wasabi Technologies | | Founded | 2015 | | Profile | https://toolweight.com/tools/wasabi | | Score (default weights) | 75.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | - | Unknown | 2026-11-07 | https://wasabi.com/cloud-storage-pricing | No honest figure exists for this scenario. Wasabi charges no egress fee, but its acceptable-use policy limits monthly egress to roughly your stored volume; 5 TB out against 1 TB stored is five times over, and Wasabi's remedy is to review or restrict the account rather than bill an overage. Storage alone would be $6.99 (1 TB at the $6.99/TB list rate, which is also the account minimum). We have left this null rather than quote $6.99 for a workload Wasabi would not accept. | https://toolweight.com/compare/s3-compatible-storage#wasabi--true_cost_usd | | True cost /mo (AUD) | - | Unknown | 2026-11-07 | - | Null for the same reason as the USD figure. | https://toolweight.com/compare/s3-compatible-storage#wasabi--true_cost_aud | | True cost from Sydney (AUD) | - | Unknown | 2026-11-07 | - | Wasabi does run a Sydney region, so the geography is not the problem, the terms are. This scenario egresses five times stored volume, which is outside the acceptable-use policy in Sydney exactly as it is everywhere else, so there is no Australian list price either. | https://toolweight.com/compare/s3-compatible-storage#wasabi--sydney_cost_aud | | Storage $/TB/mo | $7.99/TB/mo | Vendor-claimed | 2026-11-06 | https://wasabi.com/pricing | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--storage_price | | Egress $/TB | $0/TB | Vendor-claimed | 2026-11-06 | https://www.wasabi.com/pricing | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--egress_price | | Egress cap (x stored) | 1x stored | Inferred | 2026-07-23 | - | Wasabi's acceptable-use policy expects monthly downloads not to exceed roughly the volume you store, and the remedy above it is account review or restriction rather than an overage invoice. The '1' is our reading of 'roughly your stored volume'; Wasabi publishes no exact multiple, which is itself the point. This cell is why Wasabi's zero in the egress column should not be read as R2's zero. | https://toolweight.com/compare/s3-compatible-storage#wasabi--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://wasabi.com/pricing | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://wasabi.com/pricing | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--class_b_price | | Min retention | 90d | Vendor-claimed | 2026-11-06 | https://wasabi.com/pricing | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--min_retention | | Min billed object | 4 KB | Inferred | 2026-07-23 | - | Every object bills at a minimum of 4 KB. Ten million 1.5 KB objects bill as 40 GB rather than 15 GB. | https://toolweight.com/compare/s3-compatible-storage#wasabi--min_billed_object | | S3 API coverage | 90% | Inferred | - | - | Close to a drop-in replacement for standard-class workloads; the gaps are storage-class transitions (there is only one class) and the notification and analytics APIs. | https://toolweight.com/compare/s3-compatible-storage#wasabi--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--multipart_upload | | Versioning | ● | Vendor-claimed | 2026-11-06 | https://docs.wasabi.com/docs/versioning | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--versioning | | Lifecycle rules | ◐ | Inferred | - | - | Expiration rules work; there are no storage classes to transition between. | https://toolweight.com/compare/s3-compatible-storage#wasabi--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | No S3-equivalent bucket notification API. Poll, or trigger from your own write path. | https://toolweight.com/compare/s3-compatible-storage#wasabi--event_notifications | | CDN integration | partner | Inferred | - | - | No first-party CDN; Wasabi promotes third-party partners and its own content-delivery bundles. | https://toolweight.com/compare/s3-compatible-storage#wasabi--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--max_object_size | | IAM granularity | 4 | Inferred | - | - | IAM users, groups and JSON policies closely modelled on AWS, without the condition-key depth or STS federation. | https://toolweight.com/compare/s3-compatible-storage#wasabi--iam_granularity | | Sydney region | ● | Inferred | 2026-07-23 | - | Wasabi operates an ap-southeast-2 Sydney region. Confirm current availability before committing, Wasabi's region list has changed more than once. | https://toolweight.com/compare/s3-compatible-storage#wasabi--sydney_region | | TTFB from Sydney | 30ms | Inferred | - | - | In-metro read from the Sydney region. | https://toolweight.com/compare/s3-compatible-storage#wasabi--ttfb_sydney | | Durability (nines) | 11 nines | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--durability_nines | | Uptime SLA | 99.9% | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--uptime_sla | | Object lock / WORM | ● | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--object_lock | | Replication model | single-az | Inferred | - | - | One region per bucket by default; cross-region replication is opt-in and billed as a second copy. | https://toolweight.com/compare/s3-compatible-storage#wasabi--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--mcp_server | | GA year | 2,017 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--ga_year | | Positioning | Flat-rate hot storage sold against S3's egress bill, for steady archives. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#wasabi--positioning | **Verdict.** Great for large, long-lived objects with low reads; 90-day retention and egress cap punish everything else. **Pick it when** - Media archives and backup vaults with predictable, low read volume - Australian workloads that need in-country storage at a flat rate - Teams that want AWS-shaped IAM policies without the AWS bill ### iDrive e2 {#idrive-e2} USD 4/TB S3-compatible storage with zero-egress marketing and a fair-use cap. | | | | --- | --- | | Site | https://www.idrive.com/e2/ | | Docs | https://www.idrive.com/e2/guides/ | | Company | iDrive | | Founded | 1995 | | Profile | https://toolweight.com/tools/idrive-e2 | | Score (default weights) | 74.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | - | Inferred | 2026-11-07 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--true_cost_usd | | True cost /mo (AUD) | - | Unknown | 2026-11-07 | - | Null for the same reason as the USD figure. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--true_cost_aud | | True cost from Sydney (AUD) | - | Unknown | 2026-07-23 | - | Null twice over: there is no price for this scenario, and we could not confirm that e2 has an Australian location to serve it from. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--sydney_cost_aud | | Storage $/TB/mo | $6/TB/mo | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--storage_price | | Egress $/TB | $0/TB | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--egress_price | | Egress cap (x stored) | 3x stored | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--class_b_price | | Min retention | 0ms | Vendor-claimed | 2026-11-06 | https://www.idrive.com/e2/pricing | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--min_billed_object | | S3 API coverage | 80% | Inferred | - | - | Standard operations plus versioning and object lock. Documentation is thinner than competitors', so edge-case behaviour is harder to predict without testing. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--multipart_upload | | Versioning | ● | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--versioning | | Lifecycle rules | ◐ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--event_notifications | | CDN integration | none | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--max_object_size | | IAM granularity | 3 | Inferred | - | - | Access keys scoped per bucket with read/write control. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--iam_granularity | | Sydney region | - | Unknown | - | - | e2 advertises a long region list and we could not confirm whether an Australian location is currently among them. Treat as no until you have seen the endpoint. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--sydney_region | | TTFB from Sydney | - | Unknown | - | - | Depends entirely on whether an APAC region is available to you. | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--ttfb_sydney | | Durability (nines) | 11 nines | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--durability_nines | | Uptime SLA | 99.9% | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-07-23 | https://www.idrive.com/e2/object-lock | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--object_lock | | Replication model | single-az | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--mcp_server | | GA year | 2,021 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--ga_year | | Positioning | Lowest headline storage price, sold into the backup and MSP market. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#idrive-e2--positioning | **Verdict.** Cheapest storage alongside Storj, object lock included, but egress terms too illegible to price; fine for backups. **Pick it when** - Backup and MSP workloads where storage volume dominates and reads are rare - Object-lock immutability at the lowest price on this page - Teams comfortable verifying terms directly with a vendor before committing ### Scaleway Object Storage {#scaleway-object-storage} European-sovereign S3 storage with multi-AZ classes and a real IAM system. | | | | --- | --- | | Site | https://www.scaleway.com/en/object-storage/ | | Docs | https://www.scaleway.com/en/docs/object-storage/ | | Company | Scaleway | | Founded | 1999 | | Profile | https://toolweight.com/tools/scaleway-object-storage | | Score (default weights) | 70.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $72.8/mo | Inferred | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | Storage (1,000 - 75 free) GB x EUR 0.0146 = EUR 13.505. Egress (5,000 - 75 free) GB x EUR 0.01 = EUR 49.25. Requests unmetered. Total EUR 62.755 x 1.16 = $72.80. Both of Scaleway's free 75 GB allowances are now netted; this row previously netted the egress one and not the storage one, which was the only inconsistent netting on the page. Sensitive to FX, at the 1.08 this page used to carry, the same bill is $67.78. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--true_cost_usd | | True cost /mo (AUD) | A$110.66/mo | Inferred | 2026-07-23 | - | $72.80 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--true_cost_aud | | True cost from Sydney (AUD) | - | Unknown | 2026-07-23 | - | Not priceable from Australia: Scaleway's regions are Paris, Amsterdam and Warsaw, so there is no location that can serve this scenario from Australia at any price. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--sydney_cost_aud | | Storage $/TB/mo | $16.94/TB/mo | Inferred | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | EUR 0.0146/GB-month for the Standard multi-AZ class, converted at 1.16. One Zone IA and Glacier are materially cheaper. The euro rate itself is the input we are least able to re-verify on this row, check it against the pricing page before budgeting. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--storage_price | | Egress $/TB | $11.6/TB | Inferred | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | EUR 0.01/GB after the first 75 GB each month, converted at 1.16. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--egress_price | | Egress cap (x stored) | - | Unknown | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | Not applicable: egress is metered per gigabyte beyond a flat 75 GB, not granted as a multiple of stored volume, so there is no fair-use ceiling to exceed. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/pricing/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--class_b_price | | Min retention | 0ms | Inferred | - | - | None on the Standard class. The Glacier tier has its own minimum. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--min_billed_object | | S3 API coverage | 85% | Inferred | - | - | Versioning, object lock, lifecycle, multipart and presigned URLs are all present, and transitions work between Scaleway's own storage classes. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--multipart_upload | | Versioning | ● | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/docs/object-storage/how-to/use-bucket-versioning/ | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--versioning | | Lifecycle rules | ● | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/docs/object-storage/how-to/manage-lifecycle-rules/ | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--lifecycle_rules | | Event notifications | ○ | Vendor-claimed | 2026-11-07 | https://www.scaleway.com/en/docs/object-storage/api-cli/using-api-call-list/ | Scaleway lists PutBucketNotification as in development in its supported-API table. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--event_notifications | | CDN integration | first-party-paid | Inferred | - | - | Scaleway's Edge Services can front an Object Storage bucket, billed separately. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--cdn_integration | | Max object size | 5 TB | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--max_object_size | | IAM granularity | 4 | Inferred | - | - | A real IAM system with applications, groups, policies and API keys, closer to AWS than anything else in the cheap tier. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--iam_granularity | | Sydney region | ○ | Inferred | 2026-07-23 | - | Paris, Amsterdam and Warsaw only. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--sydney_region | | TTFB from Sydney | 300ms | Inferred | - | - | Europe to Sydney; 280-320 ms is the realistic band for an uncached read. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--ttfb_sydney | | Durability (nines) | 11 nines | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--durability_nines | | Uptime SLA | 99.9% | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/docs/object-storage/how-to/use-object-lock/ | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--object_lock | | Replication model | multi-az | Vendor-claimed | 2026-07-23 | https://www.scaleway.com/en/docs/object-storage/concepts/ | The Standard class spreads across availability zones in the Paris region; One Zone IA does not. | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--mcp_server | | GA year | 2,019 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--ga_year | | Positioning | EU-sovereign object storage with AWS-shaped IAM, priced in euros. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#scaleway-object-storage--positioning | **Verdict.** The most feature-complete non-hyperscaler, but 300 ms away; pick it when EU data residency is required. **Pick it when** - EU data residency obligations with a European legal entity behind them - Workloads needing real IAM policies rather than scoped access keys - Multi-AZ durability without hyperscaler pricing ### DigitalOcean Spaces {#digitalocean-spaces} Bundled object storage plus free CDN, priced as a flat base fee with overages. | | | | --- | --- | | Site | https://www.digitalocean.com/products/spaces | | Docs | https://docs.digitalocean.com/products/spaces/ | | Company | DigitalOcean | | Founded | 2011 | | Profile | https://toolweight.com/tools/digitalocean-spaces | | Score (default weights) | 70.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $60/mo | Inferred | 2026-07-23 | https://www.digitalocean.com/pricing/spaces-object-storage | Base $5.00 includes 250 GB storage and 1 TB transfer. Extra storage 750 GB x $0.02 = $15.00. Extra transfer 4,000 GB x $0.01 = $40.00. Requests unmetered. Total $60.00. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--true_cost_usd | | True cost /mo (AUD) | A$91.2/mo | Inferred | 2026-07-23 | - | $60.00 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--true_cost_aud | | True cost from Sydney (AUD) | A$91.2/mo | Inferred | 2026-07-23 | - | Unchanged from the headline figure: Spaces is priced identically in every region including syd1, so the Sydney bill is the same $60.00 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--sydney_cost_aud | | Storage $/TB/mo | $20/TB/mo | Vendor-claimed | 2026-11-06 | https://www.digitalocean.com/pricing/spaces-object-storage | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--storage_price | | Egress $/TB | $10/TB | Vendor-claimed | 2026-11-06 | https://www.digitalocean.com/pricing/spaces-object-storage | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--egress_price | | Egress cap (x stored) | N/A | Inferred | 2026-11-07 | https://www.digitalocean.com/pricing/spaces-object-storage | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.digitalocean.com/pricing/spaces-object-storage | Spaces does not meter requests at all. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.digitalocean.com/pricing/spaces-object-storage | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--class_b_price | | Min retention | 0ms | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--min_retention | | Min billed object | 0 B | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--min_billed_object | | S3 API coverage | 78% | Inferred | - | - | Core operations are solid; the missing pieces are versioning, object lock, bucket notifications and storage classes. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--multipart_upload | | Versioning | ○ | Inferred | 2026-07-23 | - | No object versioning. This is the biggest functional gap versus every other managed provider in this roster. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--versioning | | Lifecycle rules | ◐ | Inferred | - | - | Expiration and incomplete-multipart cleanup only. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--event_notifications | | CDN integration | free-bundled | Vendor-claimed | 2026-11-06 | https://docs.digitalocean.com/products/spaces/how-to/enable-cdn/ | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--cdn_integration | | Max object size | 5 TB | Vendor-claimed | 2026-11-06 | https://docs.digitalocean.com/products/spaces/details/limits/ | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--max_object_size | | IAM granularity | 3 | Inferred | - | - | Per-bucket access keys with read/write or read-only scoping. No policy documents, no conditions. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--iam_granularity | | Sydney region | ● | Vendor-claimed | 2026-11-06 | https://docs.digitalocean.com/platform/regional-availability/ | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--sydney_region | | TTFB from Sydney | 25ms | Inferred | - | - | In-metro from syd1. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--ttfb_sydney | | Durability (nines) | - | Unknown | - | - | DigitalOcean publishes no annual durability figure for Spaces. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--durability_nines | | Uptime SLA | 99.9% | Vendor-claimed | 2026-11-07 | https://www.digitalocean.com/sla/spaces | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--uptime_sla | | Object lock / WORM | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--object_lock | | Replication model | single-az | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--replication_model | | Official MCP server | ◐ | Inferred | - | - | DigitalOcean ships an MCP server for its platform; Spaces coverage within it is incidental. | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--mcp_server | | GA year | 2,017 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--ga_year | | Positioning | Predictable bundled storage plus CDN for teams already on DigitalOcean. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#digitalocean-spaces--positioning | **Verdict.** Buy it for the bundling and Sydney region, not the feature set; no versioning or bucket events. **Pick it when** - Static assets and user uploads served from Sydney with a bundled CDN - Teams who want one predictable line item instead of five metered ones - Existing DigitalOcean deployments where traffic stays on the internal network ### Hetzner Object Storage {#hetzner-object-storage} The cheapest credible S3 endpoint in Europe, with a deliberately thin feature set. | | | | --- | --- | | Site | https://www.hetzner.com/storage/object-storage/ | | Docs | https://docs.hetzner.com/storage/object-storage/ | | Company | Hetzner Online | | Founded | 1997 | | Profile | https://toolweight.com/tools/hetzner-object-storage | | Score (default weights) | 68.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $12.47/mo | Inferred | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | Base EUR 5.99 includes 1 TB storage and 1 TB traffic, so the terabyte stored is covered by the subscription. Extra traffic 4 TB x EUR 1.19 = EUR 4.76. Requests unmetered. Total EUR 10.75 x 1.16 = $12.47, cheapest on this page by roughly half. This row read $11.61 while the page carried the euro at 1.08. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--true_cost_usd | | True cost /mo (AUD) | A$18.95/mo | Inferred | 2026-07-23 | - | $12.47 x 1.52. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--true_cost_aud | | True cost from Sydney (AUD) | - | Unknown | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | Not priceable from Australia: Germany and Finland only. The cheapest bill on this page is also the one you cannot buy for Australian users, which is the whole argument of the Best from Australia preset. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--sydney_cost_aud | | Storage $/TB/mo | $7.53/TB/mo | Inferred | 2026-11-06 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--storage_price | | Egress $/TB | $1.38/TB | Inferred | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | EUR 1.19 per TB beyond the 1 TB included, converted at 1.16. About one sixty-fifth of the AWS rate, and the single reason Hetzner tops this table. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--egress_price | | Egress cap (x stored) | - | Unknown | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | Not applicable: the 1 TB of traffic bundled into the base fee is an absolute allowance, not a multiple of stored volume, and traffic above it is billed at EUR 1.19/TB rather than restricted. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-07-23 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--class_b_price | | Min retention | 0ms | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--min_billed_object | | S3 API coverage | 70% | Inferred | - | - | A Ceph RADOS Gateway behind an S3 face. Object CRUD, multipart and presigned URLs work; the documented limitations list is long and includes object lock and several bucket-level APIs. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--s3_api_coverage | | Presigned URLs | ● | Inferred | 2026-07-23 | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--presigned_urls | | Multipart upload | ● | Vendor-claimed | 2026-07-23 | https://docs.hetzner.com/storage/object-storage/supported-actions | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--multipart_upload | | Versioning | ● | Vendor-claimed | 2026-11-06 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--versioning | | Lifecycle rules | ◐ | Inferred | - | - | Basic expiration is supported; the full lifecycle configuration surface is not. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--event_notifications | | CDN integration | diy | Inferred | - | - | No CDN product. Point your own at it and pay EUR 1.19/TB on cache misses, which is cheap enough that this hurts far less than usual. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--cdn_integration | | Max object size | 5 TB | Inferred | - | - | The Ceph-inherited multipart ceiling; not prominently documented. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--max_object_size | | IAM granularity | 2 | Inferred | - | - | Per-project S3 credentials. No meaningful per-bucket scoping, no policy language. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--iam_granularity | | Sydney region | ○ | Vendor-claimed | 2026-11-06 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--sydney_region | | TTFB from Sydney | 300ms | Inferred | - | - | Falkenstein or Helsinki to Sydney; around 280-320 ms uncached. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--ttfb_sydney | | Durability (nines) | - | Unknown | - | - | Hetzner publishes no annual durability figure. For a product widely used as a backup target, that omission is worth weighing. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--durability_nines | | Uptime SLA | 99.9% | Inferred | - | - | Hetzner Cloud's general availability commitment; there is no object-storage-specific SLA. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-11-06 | https://www.hetzner.com/storage/object-storage/ | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--object_lock | | Replication model | single-az | Inferred | - | - | Redundant within one datacentre location; no cross-location replication feature. | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--mcp_server | | GA year | 2,024 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--ga_year | | Positioning | European bulk storage at hardware-vendor prices, with hardware-vendor features. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#hetzner-object-storage--positioning | **Verdict.** Wins the headline number by a mile but loses on features; great for caches, wrong as a system of record. **Pick it when** - CI artefacts, build caches and cold backups where the bill is the point - European origins where EUR 1.19/TB egress changes what is economically possible - Anyone already running Hetzner dedicated or cloud servers ### AWS S3 {#aws-s3} The API everything else copies, and by far the most expensive egress in this roster. | | | | --- | --- | | Site | https://aws.amazon.com/s3/ | | Docs | https://docs.aws.amazon.com/s3/ | | Company | Amazon Web Services | | Founded | 2006 | | Profile | https://toolweight.com/tools/aws-s3 | | Score (default weights) | 65.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $472.6/mo | Inferred | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | us-east-1, S3 Standard. Storage 1,000 GB x $0.023 = $23.00. Egress (5,000 - 100 free) GB x $0.09 = $441.00. PUT/LIST 1 M at $0.005/1,000 = $5.00. GET 9 M at $0.0004/1,000 = $3.60. Total $472.60, of which 93% is bandwidth. Egress stays inside AWS's first 10 TB band at 5 TB, so no tiering applies. In ap-southeast-2 (Sydney) the same workload is $592.20, see the Sydney column for that arithmetic. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--true_cost_usd | | True cost /mo (AUD) | A$718.35/mo | Inferred | 2026-07-23 | - | $472.60 x 1.52, a conversion of the us-east-1 bill. Run from Sydney it is a quarter higher again; the Sydney column has it. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--true_cost_aud | | True cost from Sydney (AUD) | A$900.14/mo | Inferred | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | ap-southeast-2, S3 Standard. Storage 1,000 GB x $0.025 = $25.00. Egress (5,000 - 100 free) GB x $0.114 = $558.60. PUT/LIST 1 M at $0.005/1,000 = $5.00. GET 9 M at $0.0004/1,000 = $3.60. Total $592.20 x 1.52 = A$900.14. Sydney egress is 27% dearer per gigabyte than us-east-1, which on this workload is most of the difference. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--sydney_cost_aud | | Storage $/TB/mo | $23/TB/mo | Vendor-claimed | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | $0.023/GB-month for S3 Standard, first 50 TB, us-east-1. Sydney is $0.025. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--storage_price | | Egress $/TB | $90/TB | Vendor-claimed | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | $0.09/GB to the internet for the first 10 TB per month, with only the first 100 GB free across the whole account. Sydney is $0.114/GB. Origin fetch from S3 to CloudFront is free, which is the only real mitigation inside AWS. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--egress_price | | Egress cap (x stored) | - | Unknown | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | Not applicable: egress is metered per gigabyte beyond a flat 100 GB a month, not granted as a multiple of stored volume. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--egress_cap_multiple | | Class A $/M ops | $5/M ops | Vendor-claimed | 2026-07-23 | https://aws.amazon.com/s3/pricing/ | $0.005 per 1,000 PUT/COPY/POST/LIST. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--class_a_price | | Class B $/M ops | $0.4/M ops | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--class_b_price | | Min retention | 0ms | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--min_retention | | Min billed object | 0 B | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--min_billed_object | | S3 API coverage | 100% | Inferred | 2026-07-23 | - | By definition, this is the specification everything else is measured against. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--s3_api_coverage | | Presigned URLs | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--presigned_urls | | Multipart upload | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--multipart_upload | | Versioning | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--versioning | | Lifecycle rules | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--lifecycle_rules | | Event notifications | ● | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--event_notifications | | CDN integration | first-party-paid | Vendor-claimed | 2026-07-23 | https://aws.amazon.com/cloudfront/pricing/ | CloudFront, billed separately at around $0.085/GB, but origin fetch from S3 is free so it replaces S3 egress rather than stacking on it. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--cdn_integration | | Max object size | 45.5 TB | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/faqs/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--max_object_size | | IAM granularity | 5 | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html | Policy documents with condition keys, resource policies, assumable roles, STS, Access Points and Access Grants. Nothing else in this roster is close. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--iam_granularity | | Sydney region | ● | Vendor-claimed | 2026-07-23 | https://aws.amazon.com/about-aws/global-infrastructure/regions_az/ | ap-southeast-2, with three availability zones, and a Melbourne region alongside it. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--sydney_region | | TTFB from Sydney | 25ms | Inferred | - | - | In-metro from ap-southeast-2. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--ttfb_sydney | | Durability (nines) | 11 nines | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/storage-classes/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--durability_nines | | Uptime SLA | 99.9% | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/sla/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--uptime_sla | | Object lock / WORM | ● | Vendor-claimed | 2026-11-06 | https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--object_lock | | Replication model | multi-az | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/s3/storage-classes/ | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--replication_model | | Official MCP server | ● | Inferred | - | - | AWS maintains a set of official MCP servers covering its APIs, including S3 operations. | https://toolweight.com/compare/s3-compatible-storage#aws-s3--mcp_server | | GA year | 2,006 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--ga_year | | Positioning | The reference implementation, priced for customers who are not leaving. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#aws-s3--positioning | **Verdict.** Still the most capable object store, and thirty-eight times Hetzner's cost here, almost entirely bandwidth. **Pick it when** - Workloads already inside AWS where traffic stays on the internal network - Regulatory requirements needing Object Lock compliance mode with a real SLA - Anything depending on IAM condition keys, Access Points or S3 Tables ### Bunny Storage {#bunny-storage} Edge storage built as a CDN origin, with its own API rather than a faithful S3 one. | | | | --- | --- | | Site | https://bunny.net/storage/ | | Docs | https://docs.bunny.net/docs/storage-api | | Company | bunny.net | | Founded | 2014 | | Profile | https://toolweight.com/tools/bunny-storage | | Score (default weights) | 63.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | True cost /mo (USD) | $60/mo | Inferred | 2026-07-23 | https://bunny.net/pricing/ | Storage 1,000 GB x $0.01 = $10.00 (HDD tier, single region). Egress 5,000 GB x $0.01 = $50.00 at European and North American CDN rates. Requests unmetered. Total $60.00. Bunny is the only provider here whose egress rate depends on where your users are, so this figure is genuinely regional, for the Australian number, read the Sydney column, not this one converted. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--true_cost_usd | | True cost /mo (AUD) | A$91.2/mo | Inferred | 2026-07-23 | - | $60.00 x 1.52, a conversion of the Europe/North America bill, and therefore about a third of what serving Australian users actually costs. The Sydney column carries the real figure. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--true_cost_aud | | True cost from Sydney (AUD) | A$243.2/mo | Inferred | 2026-07-23 | https://bunny.net/pricing/ | Storage 1,000 GB x $0.01 = $10.00 in the Sydney storage region. Egress 5,000 GB x $0.03 = $150.00 at Oceania delivery rates. Requests unmetered. Total $160.00 x 1.52 = A$243.20, two and a half times the headline AUD figure, and the number to use if your users are Australian. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--sydney_cost_aud | | Storage $/TB/mo | $10/TB/mo | Vendor-claimed | 2026-11-06 | https://bunny.net/pricing/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--storage_price | | Egress $/TB | $10/TB | Vendor-claimed | 2026-11-06 | https://bunny.net/pricing/ | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--egress_price | | Egress cap (x stored) | - | Unknown | 2026-07-23 | https://bunny.net/pricing/ | Not applicable: transfer is metered per gigabyte at a regional rate, with no free-egress allowance to exceed. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--egress_cap_multiple | | Class A $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://bunny.net/pricing/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--class_a_price | | Class B $/M ops | $0/M ops | Vendor-claimed | 2026-11-06 | https://bunny.net/pricing/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--class_b_price | | Min retention | 0ms | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--min_retention | | Min billed object | 0 B | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--min_billed_object | | S3 API coverage | 30% | Inferred | - | - | Bunny Storage is not an S3 clone. Its native interface is a simple REST API plus FTP, and S3 compatibility has never been the design goal. Do not plan on pointing an AWS SDK at it without testing every call you make. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--s3_api_coverage | | Presigned URLs | ◐ | Inferred | - | - | Token-authenticated URLs with expiry exist, but they use Bunny's scheme, not SigV4 presigning. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--presigned_urls | | Multipart upload | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--multipart_upload | | Versioning | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--versioning | | Lifecycle rules | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--lifecycle_rules | | Event notifications | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--event_notifications | | CDN integration | free-bundled | Inferred | 2026-07-23 | - | The storage zone is designed as a pull zone origin; origin-to-edge transfer is not separately billed. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--cdn_integration | | Max object size | - | Unknown | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--max_object_size | | IAM granularity | 2 | Inferred | - | - | Storage zone passwords, with a separate read-only password. That is the whole model. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--iam_granularity | | Sydney region | ● | Vendor-claimed | 2026-11-06 | https://bunny.net/storage/ | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--sydney_region | | TTFB from Sydney | 20ms | Inferred | - | - | Bunny's edge performance from Sydney is the best in this roster; that is what the product is for. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--ttfb_sydney | | Durability (nines) | 11 nines | Vendor-claimed | 2026-11-07 | https://docs.bunny.net/storage/durability | 11 nines applies only with at least one additional replication region (billed per region); a single region has no stated figure. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--durability_nines | | Uptime SLA | 99.99% | Inferred | - | - | bunny.net advertises a very high availability commitment on the CDN; the storage-specific credit terms are less clear. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--uptime_sla | | Object lock / WORM | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--object_lock | | Replication model | multi-region | Inferred | 2026-07-23 | - | Opt-in geo-replication across chosen storage regions, billed as an additional copy per region. | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--replication_model | | Official MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--mcp_server | | GA year | 2,019 | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--ga_year | | Positioning | A CDN company's origin store, sold on edge delivery rather than API fidelity. | Inferred | - | - | - | https://toolweight.com/compare/s3-compatible-storage#bunny-storage--positioning | **Verdict.** A CDN origin with storage attached, not an object store; superb Sydney delivery, but no S3 semantics. **Pick it when** - Static sites, images and video served to a global audience through Bunny's CDN - Australian delivery where edge latency matters more than API compatibility - Replacing a CDN plus origin bucket with a single bill ## Methodology - Every price is the published pay-as-you-go rate, no committed-use discounts or enterprise agreements - The killer field, "true cost /mo", is computed by us against one fixed scenario - Scenario: 1 TB (1,000 GB) stored for a month, 5 TB (5,000 GB) egressed, 10 M requests - Requests split 1 M Class A (PUT, POST, COPY, LIST) and 9 M Class B (GET, HEAD) - Each provider's arithmetic is written in its own cell note so you can check us - A figure that cannot be reconstructed from its own row is null, not estimated - The same request split applies to everyone, so no-request-metering is a real advantage, not an artefact - One netting rule: an allowance that is part of the rate card is deducted before overage applies - That covers Hetzner's and DigitalOcean's bundled volumes, Backblaze's free egress up to 3x stored data - It also covers AWS's first 100 GB of egress and Scaleway's first 75 GB of storage and 75 GB of egress - A separately branded free plan is not deducted, because it is a different product tier - That affects only Cloudflare R2: its free tier would take the total from 22.74 to 14.85, noted in the cell - Non-USD prices convert at 1 EUR = 1.16 USD; the AUD column at 1 USD = 1.52 AUD, both struck 2026-07-23 - Refresh the rates if the spread moves; for Scaleway and Hetzner FX moves the answer more than pricing - This page previously carried the euro at 1.08, understating both providers by about seven per cent - Three rows are null: Wasabi's no-egress model is bounded by a ~1x fair-use cap, outside this scenario - iDrive e2 publishes neither its multiple nor its overage rate, so there is nothing to compute against - The earlier iDrive figure of 24.00 rested on assumed 3x and 0.01/GB terms and has been withdrawn - MinIO has no price because you buy servers and transit, not storage - Latency figures are inferred from network topology and community reports, not measured by Toolweight ## What has changed on this page | Date | Kind | What changed | Fields | Source | | --- | --- | --- | --- | --- | | 2026-07-23 | correction | Corrected the EUR→USD rate from a stale 1.08 to 1.16 and re-derived Hetzner and Scaleway, whose totals move more on FX than on their own pricing. | True cost /mo (USD), True cost /mo (AUD), Storage $/TB/mo | https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/eurofxref-graph-usd.en.html | | 2026-07-23 | removal | Withdrew the iDrive e2 true-cost figure of 24.00: it rested on an assumed 3× egress multiple and a 0.01/GB overage the vendor does not publish. The cell is null until the terms are public. | True cost /mo (USD), Egress cap (x stored) | - | | 2026-06-30 | change | Set Wasabi's true cost to null: its no-egress model is bounded by a ~1× fair-use cap, and this scenario egresses five times what it stores, outside any honest quote. | True cost /mo (USD), Egress cap (x stored) | - | ## FAQ ### Is Cloudflare R2 egress really free, with no catch? - Yes for standard object reads over the public internet, with no published fair-use bandwidth cap - R2 bills storage and operations only - Class A operations cost USD 4.50 per million, which stings on write- or list-heavy workloads - The free bandwidth is Cloudflare's network, and there is no contractual Sydney region, only an Oceania hint ### Why can't you price Wasabi on this page? - Wasabi charges no egress fee, but its AUP limits monthly downloads to roughly the volume you store - Our scenario egresses five times the stored volume, which is outside those terms - Wasabi reviews or restricts the account rather than sending a larger bill, so there is no list price - Storage alone would be USD 6.99 for the terabyte; the computed cell is left null ### Which S3-compatible providers have a Sydney region? - Wasabi (ap-southeast-2), DigitalOcean Spaces (syd1), Bunny Storage and AWS S3 all have Sydney presence - Tigris reaches Sydney through Fly.io's footprint - Cloudflare R2 offers a best-effort Oceania location hint rather than a guaranteed region - Backblaze B2, Hetzner Object Storage and Scaleway have no Australian or Oceania location, sitting 200-300 ms away ### What does a minimum retention period actually cost me? - An object deleted before the window is still billed for the full window - Wasabi's is 90 days, so a file written and deleted on day two costs 90 days of storage - On churny workloads (CI caches, temporary uploads, transcode intermediates) this multiplies the effective price - Check it before you compare per-terabyte numbers ### How S3-compatible is 'S3-compatible' in practice? - Core operations (PUT, GET, multipart, presigned URLs) work everywhere - Divergence starts at versioning, object lock, lifecycle transitions, bucket notifications and IAM semantics - MinIO and AWS are the reference points; Wasabi and Tigris sit around 90% - Cloudflare R2 is a little below them because it implements no versioning at all; Hetzner is closer to 70% - Bunny Storage is not really an S3 API, despite being shortlisted against these providers constantly ### Should I self-host MinIO to save money? - Only if you already operate storage hardware - Cheap managed providers land at USD 12-30 on our scenario - A dedicated box with erasure-coded terabyte capacity and traffic is more like USD 50-70, before your own time - You also take on erasure-coding config, upgrades and on-call, so it is a control decision, not a cost saving - MinIO's community build lost its admin console in 2025, so the free tier is less complete than it was ### Can I put a CDN in front and stop worrying about egress? - Partly: a CDN only helps on cache hits - Misses, range requests and large unique objects still pull from origin at origin egress rates - On AWS, S3 to CloudFront origin fetch is free, so CloudFront's ~USD 0.085/GB replaces S3's 0.09 - Backblaze gets the same effect free via the Bandwidth Alliance with Cloudflare and Fastly ## Sources | Source | Last verified | | --- | --- | | https://developers.cloudflare.com/r2/pricing/ | 2026-07-23 | | https://developers.cloudflare.com/r2/api/s3/api/ | 2026-07-23 | | https://developers.cloudflare.com/r2/api/s3/presigned-urls/ | 2026-11-06 | | https://developers.cloudflare.com/r2/objects/multipart-objects/ | 2026-11-06 | | https://developers.cloudflare.com/r2/buckets/object-lifecycles/ | 2026-11-06 | | https://developers.cloudflare.com/r2/buckets/event-notifications/ | 2026-11-06 | | https://developers.cloudflare.com/r2/platform/limits/ | 2026-11-06 | | https://developers.cloudflare.com/r2/reference/durability/ | 2026-11-06 | | https://blog.cloudflare.com/r2-ga/ | 2026-11-06 | | https://www.backblaze.com/cloud-storage/pricing | 2026-07-23 | | https://www.backblaze.com/docs/cloud-storage-data-regions | 2026-11-07 | | https://www.backblaze.com/docs/cloud-storage-file-versions | 2026-11-06 | | https://www.backblaze.com/docs/cloud-storage-lifecycle-rules | 2026-11-06 | | https://www.backblaze.com/docs/cloud-storage-event-notifications | 2026-11-06 | | https://www.backblaze.com/cloud-storage/integrations/cloudflare | 2026-07-23 | | https://www.backblaze.com/docs/cloud-storage-large-files | 2026-11-06 | | https://www.backblaze.com/blog/cloud-storage-durability/ | 2026-11-06 | | https://www.backblaze.com/docs/cloud-storage-object-lock | 2026-11-06 | | https://wasabi.com/cloud-storage-pricing | 2026-11-07 | | https://wasabi.com/pricing | 2026-11-06 | | https://www.wasabi.com/pricing | 2026-11-06 | | https://docs.wasabi.com/docs/versioning | 2026-11-06 | | https://www.tigrisdata.com/docs/pricing/ | 2026-07-23 | | https://www.tigrisdata.com/docs/objects/presigned/ | 2026-07-23 | | https://www.tigrisdata.com/docs/llms-full.txt | 2026-11-07 | | https://www.tigrisdata.com/docs/overview/ | 2026-07-23 | | https://www.digitalocean.com/pricing/spaces-object-storage | 2026-07-23 | | https://docs.digitalocean.com/products/spaces/how-to/enable-cdn/ | 2026-11-06 | | https://docs.digitalocean.com/products/spaces/details/limits/ | 2026-11-06 | | https://docs.digitalocean.com/platform/regional-availability/ | 2026-11-06 | | https://www.digitalocean.com/sla/spaces | 2026-11-07 | | https://www.scaleway.com/en/pricing/storage/ | 2026-07-23 | | https://www.scaleway.com/en/docs/object-storage/how-to/use-bucket-versioning/ | 2026-07-23 | | https://www.scaleway.com/en/docs/object-storage/how-to/manage-lifecycle-rules/ | 2026-07-23 | | https://www.scaleway.com/en/docs/object-storage/api-cli/using-api-call-list/ | 2026-11-07 | | https://www.scaleway.com/en/docs/object-storage/how-to/use-object-lock/ | 2026-07-23 | | https://www.scaleway.com/en/docs/object-storage/concepts/ | 2026-07-23 | | https://www.hetzner.com/storage/object-storage/ | 2026-07-23 | | https://docs.hetzner.com/storage/object-storage/supported-actions | 2026-07-23 | | https://www.storj.io/pricing | 2026-07-23 | | https://storj.dev/dcs/api/s3/object-versioning | 2026-11-06 | | https://storj.dev/dcs/api/s3/s3-compatibility | 2026-11-07 | | https://storj.dev/dcs/api/s3/object-lock | 2026-11-06 | | https://storj.dev/learn/concepts/data-structure | 2026-11-06 | | https://www.idrive.com/e2/pricing | 2026-11-07 | | https://www.idrive.com/e2/object-lock | 2026-07-23 | | https://bunny.net/pricing/ | 2026-07-23 | | https://bunny.net/pricing/storage/ | 2026-11-06 | | https://bunny.net/storage/ | 2026-11-06 | | https://docs.bunny.net/storage/durability | 2026-11-07 | | https://min.io/pricing | 2026-11-07 | | https://aws.amazon.com/s3/pricing/ | 2026-07-23 | | https://aws.amazon.com/cloudfront/pricing/ | 2026-07-23 | | https://aws.amazon.com/s3/faqs/ | 2026-11-06 | | https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html | 2026-07-23 | | https://aws.amazon.com/about-aws/global-infrastructure/regions_az/ | 2026-07-23 | | https://aws.amazon.com/s3/storage-classes/ | 2026-11-06 | | https://aws.amazon.com/s3/sla/ | 2026-11-06 | | https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html | 2026-11-06 | ## Cite this page > Hetzner Object Storage is cheapest at USD 12.47/mo, then Cloudflare R2 at 22.74 and Backblaze B2 at 26.95, while AWS S3 costs 472.60. > > — Toolweight, https://toolweight.com/compare/s3-compatible-storage, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql), Should I use SQLite, PostgreSQL or MySQL? - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [Sandbox providers](https://toolweight.com/compare/sandbox-providers), Which sandbox provider should I run untrusted or agent-generated code on? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/s3-compatible-storage - Machine-readable: https://toolweight.com/compare/s3-compatible-storage.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Vercel alternatives compared (2026) slug: vercel-alternatives url: "https://toolweight.com/compare/vercel-alternatives" question: Which Vercel alternative should I use, and what happens to my bill if my site goes viral? tools: 13 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-06-15 median_verified: 2026-06-15 stale_values: 43 conflicting_values: 1 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 35% verify_cadence: 30d license: CC-BY-4.0 --- # Vercel vs the alternatives > **Which Vercel alternative should I use, and what happens to my bill if my site goes viral?** > > Cloudflare Workers & Pages is the cheapest credible option at $5/month with no egress charge, though Vercel still wins on Next.js parity. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/vercel-alternatives | | Tools compared | 13 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 74 of 338 values have a verification date, checked between 2026-06-15 and 2026-11-07 (median 2026-06-15), 43 due for re-check, 1 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 35% (mean cell confidence, not age) | | Killer field | overage_behaviour | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Coolify](https://toolweight.com/tools/coolify) | 73.9 | 79% | Open-source self-hosted PaaS: git push to your own server, with previews and cron. | | 2 | [Dokploy](https://toolweight.com/tools/dokploy) | 73.9 | 79% | Open-source self-hosted PaaS on Docker Swarm, with multi-node clustering built in. | | 3 | [Cloudflare Workers & Pages](https://toolweight.com/tools/cloudflare-workers) | 72.2 | 100% | V8 isolates on 300+ PoPs, with zero egress charges and near-zero cold starts. | | 4 | [Vercel](https://toolweight.com/tools/vercel) | 70.9 | 100% | The frontend cloud that ships Next.js: best-in-class DX, metered everything. | | 5 | [Hetzner + Coolify](https://toolweight.com/tools/hetzner-coolify) | 65.8 | 88% | The DIY baseline: a €4 CX22 running Coolify, with 20 TB of traffic included. | | 6 | [Northflank](https://toolweight.com/tools/northflank) | 65.6 | 88% | Container platform with bring-your-own-cloud, GPUs and a sandbox-shaped API. | | 7 | [Netlify](https://toolweight.com/tools/netlify) | 63.9 | 100% | The original Jamstack host: strong build pipeline, punishing bandwidth overage. | | 8 | [Railway](https://toolweight.com/tools/railway) | 63.9 | 92% | Container PaaS with the best developer experience in the category and usage billing. | | 9 | [Fly.io](https://toolweight.com/tools/fly-io) | 63.0 | 92% | Firecracker microVMs in 35+ regions including Sydney, driven from the CLI. | | 10 | [Sevalla](https://toolweight.com/tools/sevalla) | 61.8 | 92% | Kinsta's developer platform: apps, static sites, databases and object storage on GCP. | | 11 | [Deno Deploy](https://toolweight.com/tools/deno-deploy) | 61.3 | 92% | Web-standard JavaScript at the edge, with built-in OpenTelemetry and a global KV. | | 12 | [Render](https://toolweight.com/tools/render) | 54.4 | 92% | Heroku-shaped container host with blueprints, managed Postgres and calm billing. | | 13 | [AWS Amplify Hosting](https://toolweight.com/tools/aws-amplify) | 50.9 | 96% | Managed Next.js and static hosting inside AWS, billed per GB with no spend cap. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Platform | Tool | Frameworks | Next.js parity | Runtime model | Fn timeout (ms) | Cold start (ms) | Cron jobs | Preview deploys | WAF & DDoS | Observability | Sydney region | Monorepo support | Rollback | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Coolify | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | N/A | 0ms | ● | ● | ○ | included-basic | ● | ● | redeploy | | Dokploy | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | - | 0ms | ● | ● | ○ | included-basic | ● | ● | redeploy | | Cloudflare Workers & Pages | nextjs, nuxt, sveltekit, astro, remix, static | most | edge-only | 30s | 5ms | ● | ● | ● | included-basic | ● | ◐ | instant | | Vercel | nextjs, nuxt, sveltekit, astro, remix, static | full | edge+node | 5min | 250ms | ● | ● | ● | included-basic | ● | ● | instant | | Hetzner + Coolify | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | N/A | 0ms | ● | ● | ◐ | included-basic | ○ | ● | redeploy | | Northflank | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | - | 0ms | ● | ● | ◐ | included-basic | ◐ | ● | instant | | Netlify | nextjs, nuxt, sveltekit, astro, remix, static | most | edge+node | 10s | 300ms | ● | ● | ◐ | included-basic | ◐ | ● | instant | | Railway | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | 15min | 0ms | ● | ● | ◐ | included-basic | ○ | ● | instant | | Fly.io | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | - | 400ms | ◐ | ◐ | ◐ | included-basic | ● | ● | redeploy | | Sevalla | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | 3.1min | 0ms | ● | ◐ | ● | included-basic | ● | ● | instant | | Deno Deploy | nextjs, nuxt, sveltekit, astro, static | basic | edge-only | - | 50ms | ● | ● | ◐ | included-full | ● | ◐ | instant | | Render | nextjs, nuxt, sveltekit, astro, dockerfile | self-managed | container | - | 0ms | ● | ● | ◐ | included-basic | ○ | ● | instant | | AWS Amplify Hosting | nextjs, nuxt, sveltekit, astro, static | most | node | 30s | 800ms | ○ | ● | ◐ | paid-addon | ● | ● | instant | ### Pricing & overage | Tool | Overage behaviour | Bandwidth price (/TB) | Price @ 1 TB (/mo) | Build minutes incl. (min/mo) | Image opt billing | Analytics cost (/mo) | Free tier | | --- | --- | --- | --- | --- | --- | --- | --- | | Coolify | throttle | N/A | N/A | N/A | byo | N/A | 5 | | Dokploy | throttle | - | - | - | byo | - | 5 | | Cloudflare Workers & Pages | bill | $0/TB | $5/mo | 3,000 min/mo | metered | $0/mo | 5 | | Vercel | bill | $150/TB | $20/mo | 24,000 min/mo | metered | $10/mo | 4 | | Hetzner + Coolify | bill | $1/TB | $5/mo | N/A | byo | N/A | 1 | | Northflank | bill | $100/TB | $120/mo | - | byo | - | 3 | | Netlify | bill | $550/TB | $19/mo | 25,000 min/mo | included | $9/mo | 3 | | Railway | bill | $50/TB | $60/mo | - | byo | - | 2 | | Fly.io | bill | $20/TB | $30/mo | - | byo | $0/mo | 2 | | Sevalla | bill | $100/TB | $110/mo | - | byo | - | 3 | | Deno Deploy | bill | $200/TB | $180/mo | - | none | $0/mo | 4 | | Render | bill | $300/TB | $280/mo | 500 min/mo | byo | - | 3 | | AWS Amplify Hosting | bill | $150/TB | $155/mo | 0 min/mo | metered | - | 2 | ### Portability | Tool | Self-hostable | Exit friction | | --- | --- | --- | | Coolify | ● | 1 | | Dokploy | ● | 1 | | Cloudflare Workers & Pages | ◐ | 4 | | Vercel | ○ | 4 | | Hetzner + Coolify | ● | 1 | | Northflank | ◐ | 2 | | Netlify | ○ | 3 | | Railway | ○ | 2 | | Fly.io | ○ | 2 | | Sevalla | ○ | 2 | | Deno Deploy | ○ | 2 | | Render | ○ | 2 | | AWS Amplify Hosting | ○ | 3 | ### Automation | Tool | CLI quality | Agent/CI deploy | | --- | --- | --- | | Coolify | 2 | ◐ | | Dokploy | 2 | ◐ | | Cloudflare Workers & Pages | 4 | ● | | Vercel | 5 | ● | | Hetzner + Coolify | 2 | ◐ | | Northflank | 4 | ● | | Netlify | 4 | ● | | Railway | 4 | ● | | Fly.io | 5 | ● | | Sevalla | 2 | ◐ | | Deno Deploy | 4 | ● | | Render | 3 | ● | | AWS Amplify Hosting | 2 | ● | ### Traction | Tool | GA year | Funding | | --- | --- | --- | | Coolify | 2021 | oss-community | | Dokploy | 2024 | oss-community | | Cloudflare Workers & Pages | 2017 | public | | Vercel | 2015 | late-stage | | Hetzner + Coolify | 2018 | bootstrapped | | Northflank | 2021 | growth | | Netlify | 2015 | late-stage | | Railway | 2020 | growth | | Fly.io | 2020 | growth | | Sevalla | 2024 | bootstrapped | | Deno Deploy | 2021 | growth | | Render | 2019 | growth | | AWS Amplify Hosting | 2018 | public | ### Positioning | Tool | Pricing clarity | | --- | --- | | Coolify | 5 | | Dokploy | 5 | | Cloudflare Workers & Pages | 4 | | Vercel | 2 | | Hetzner + Coolify | 5 | | Northflank | 3 | | Netlify | 3 | | Railway | 3 | | Fly.io | 3 | | Sevalla | 4 | | Deno Deploy | 3 | | Render | 4 | | AWS Amplify Hosting | 2 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Frameworks | `framework_support` | features | multi-enum | - | higher | 4 | Frameworks the platform detects and builds with zero configuration, from a git push and nothing else. Anything you could only run by writing your own Dockerfile counts as `dockerfile`, not as first-class support. | | Next.js parity | `nextjs_parity` | features | enum | - | higher | 8 | How much of ISR, PPR, middleware, streaming and next/image works as documented. `full` is Vercel's own runtime; `most` is a maintained adapter missing one or two features; `self-managed` means you run `next start` in a container, so every feature works but there is no CDN and no shared ISR cache; `basic` is static export plus a serverless shim. | | Runtime model | `runtime_model` | features | enum | - | n/a | 3 | What your code actually executes in. `edge+node` offers both a V8-isolate edge runtime and a Node runtime; `edge-only` offers isolates alone; `container` runs an OCI image you built. Not scored by default, because the right answer depends entirely on your dependencies. | | Fn timeout | `function_timeout` | features | duration | ms | higher | 4 | Maximum wall-clock duration of a single request handler on the lowest paid tier before the platform kills it. Blank means there is no platform-imposed limit because you are running a long-lived container. | | Cold start | `cold_start` | features | duration | ms | lower | 4 | Approximate p50 added latency on the first request after an idle period, for a trivial handler on the lowest paid tier. Zero means instances stay warm and do not scale to zero by default. | | Cron jobs | `cron_jobs` | features | tristate | - | higher | 4 | First-class scheduled invocation configured in the platform, without standing up a separate scheduler. `partial` means schedules exist but are coarse, per-machine, or require a dedicated always-on service. | | Preview deploys | `preview_deploys` | features | tristate | - | higher | 5 | A unique, automatically provisioned URL per pull request, torn down on merge, with no per-branch configuration. `partial` means it works but you wire it up yourself. | | WAF & DDoS | `waf_ddos` | features | tristate | - | higher | 4 | Layer 3/4 DDoS mitigation and a configurable application firewall, both included at the lowest paid tier. `partial` means volumetric protection is included but WAF rules are an add-on or an enterprise line item. | | Observability | `observability` | features | enum | - | higher | 4 | What you can see without buying a third-party tool. `included-full` is logs, metrics and distributed traces with usable retention; `included-basic` is logs and instance metrics only; `paid-addon` is a separately metered product; `byo` means you ship it somewhere yourself. | | Sydney region | `sydney_region` | features | tristate | - | higher | 5 | Whether compute, not just cached static assets, can be pinned to an Australian region. `partial` means Sydney is reachable only via bring-your-own-cloud, or only the CDN edge is present while functions execute offshore. | | Monorepo support | `monorepo_support` | features | tristate | - | higher | 3 | Multiple deployable apps from one repository, with per-app root directories, independent build commands and change-based build skipping. `partial` means it works but rebuilds everything regardless of what changed. | | Rollback | `rollback_speed` | features | enum | - | higher | 4 | How fast you get back to the previous good version. `instant` is an atomic alias swap in seconds; `redeploy` relaunches a retained image in a minute or two; `rebuild` re-runs the build from source; `manual` means SSH. | | Overage behaviour | `overage_behaviour` | pricing | enum | - | higher | 10 | What happens when you get on Hacker News and blow through the included quota on the lowest paid tier. `throttle` degrades service and sends no invoice; `hard-stop` takes the site down and sends no invoice; `bill` keeps the site up with an unbounded invoice; `bill-then-suspend` gives you the invoice and the outage. Ranked for bill predictability, not uptime, reweight if you would rather stay online. | | Bandwidth price | `bandwidth_price` | pricing | currency | /TB | lower | 8 | Published marginal cost of a terabyte of outbound transfer once the included allowance is gone, at the cheapest listed region. Where a vendor bills in fixed blocks, the block price is converted to a per-TB rate. | | Price @ 1 TB | `price_1tb_egress` | pricing | currency | /mo | lower | 9 | Estimated monthly invoice for one small production app on the cheapest commercially usable tier, serving 1 TB of transfer and about 1M requests: base or seat fee, plus one always-on instance where required, plus metered bandwidth. Excludes databases, heavy compute and image transformations. | | Build minutes incl. | `build_minutes` | pricing | number | min/mo | higher | 3 | CI build minutes included per month at the lowest paid tier. Zero means builds are metered from the first minute. Blank means builds are billed as ordinary compute with no separate allowance, or run on hardware you own. | | Image opt billing | `image_opt_billing` | pricing | enum | - | higher | 4 | How next/image-style optimisation is charged. `included` is bundled with the plan; `byo` means the platform does not offer it and you optimise on your own CPU at no extra charge; `metered` is billed per transformation or per source image; `none` means there is no practical path. Ranked for bill predictability rather than convenience. | | Analytics cost | `analytics_cost` | pricing | currency | /mo | lower | 2 | Additional monthly cost for first-party web analytics on top of the lowest paid tier. Zero means it is included. Blank means the platform does not offer analytics at all and you would self-host Plausible or Umami. | | Free tier | `free_tier` | pricing | score | - | higher | 4 | 1-5. 5 = a production-capable free tier with commercial use explicitly permitted. 4 = generous but restricted to non-commercial or hobby use. 3 = usable for staging and demos, with sleeping instances or tight quotas. 2 = trial credit only. 1 = no free tier at all. | | Self-hostable | `self_hostable` | portability | tristate | - | higher | 5 | Whether the platform itself, not just your app, can run on infrastructure you control. `partial` means a bring-your-own-cloud mode exists where the vendor's control plane drives your own accounts, or the runtime is open source while the platform is not. | | Exit friction | `lockin_score` | portability | score | - | lower | 6 | 1-5, lower is better. 1 = a Dockerfile and a DNS change. 2 = platform-specific config but a portable runtime. 3 = proprietary build output or storage primitives in the hot path. 4 = a non-standard runtime plus bindings with no drop-in equivalent. 5 = a rewrite. | | CLI quality | `cli_quality` | agentic | score | - | higher | 4 | 1-5. 5 = a first-class CLI that can create, deploy, tail logs, exec and roll back, with stable flags and machine-readable output. 3 = a CLI that deploys but pushes you to the dashboard for anything else. 1 = dashboard only, or an unofficial wrapper. | | Agent/CI deploy | `agent_deploy` | agentic | tristate | - | higher | 5 | Whether a headless agent or CI runner holding only an API token can provision, deploy and read logs with no interactive browser login anywhere in the flow. `partial` means deploys work but provisioning or teardown still needs a human in the dashboard. | | GA year | `launched` | traction | number | - | n/a | 0 | Year the hosting product became generally available in its current shape, not the year the parent company was founded. Not scored: older is neither better nor worse. | | Funding | `funding_stage` | traction | enum | - | n/a | 0 | Funding position of the company behind the platform, as a proxy for how likely the pricing is to change under you. Not scored, a listed company is not automatically a safer bet than a profitable bootstrapper. | | Pricing clarity | `pricing_clarity` | marketing | score | - | higher | 5 | 1-5, how accurately a competent engineer can predict next month's invoice from the public pricing page alone, with no calculator and no sales call. 5 = a fixed number. 3 = usage-based with a working estimator. 1 = several interacting meters and no worked example. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest at 1 TB | `cheapest-1tb` | Ranks purely on what a real production app costs once it is serving a terabyte a month. | price_1tb_egress:10, bandwidth_price:8, overage_behaviour:6, pricing_clarity:4, free_tier:2, build_minutes:2, analytics_cost:2, nextjs_parity:1 | https://toolweight.com/compare/vercel-alternatives?w=price_1tb_egress:10,bandwidth_price:8,overage_behaviour:6,pricing_clarity:4,free_tier:2,build_minutes:2,analytics_cost:2,nextjs_parity:1 | | Best Next.js parity | `nextjs-parity` | For teams who will not give up ISR, PPR, middleware or next/image to save money. | nextjs_parity:10, image_opt_billing:6, function_timeout:5, preview_deploys:4, rollback_speed:4, cold_start:3, framework_support:3, monorepo_support:3 | https://toolweight.com/compare/vercel-alternatives?w=nextjs_parity:10,image_opt_billing:6,function_timeout:5,preview_deploys:4,rollback_speed:4,cold_start:3,framework_support:3,monorepo_support:3 | | Most portable | `most-portable` | Weighted for how cheaply you can leave: self-hostability, container-native deploys, no proprietary runtime. | self_hostable:10, lockin_score:9, runtime_model:4, framework_support:3, pricing_clarity:2, nextjs_parity:1 | https://toolweight.com/compare/vercel-alternatives?w=self_hostable:10,lockin_score:9,runtime_model:4,framework_support:3,pricing_clarity:2,nextjs_parity:1 | | Best free tier | `best-free-tier` | What you can ship for nothing, and what happens the moment you exceed it. | free_tier:10, overage_behaviour:8, build_minutes:4, cold_start:3, preview_deploys:3, analytics_cost:2 | https://toolweight.com/compare/vercel-alternatives?w=free_tier:10,overage_behaviour:8,build_minutes:4,cold_start:3,preview_deploys:3,analytics_cost:2 | ## Verdict - Vercel is not overpriced at small scale. - Pro bundles 1 TB of transfer into the $20 seat price. - The cliff is the second terabyte: ~$0.15/GB is $150, more from Sydney. - That cliff, not the base price, sends people to this page. - Cloudflare Workers & Pages ends the bill argument: egress is free by policy. - A front-page spike costs requests and CPU-milliseconds, not bandwidth. - The price: a non-Node runtime, unique bindings, and OpenNext instead of the framework team. - Prefer containers? Railway and Render are the two grown-up options. - Fly.io is the pick when Sydney latency matters, the only host with a real `syd` region. - Railway has the better DX and cheaper compute since moving to its own hardware. - Render has calmer billing and a useful free tier for staging. - Northflank is underrated: previews, cron, and bring-your-own-cloud into your own Sydney account. - Netlify deserves a specific warning: overage is $55 per 100 GB. - That is roughly 3.5× Vercel and produced the canonical $104,000 DDoS invoice. - The bill was waived and protections improved, but the pricing shape is unchanged. - AWS Amplify has the same exposure with none of the polish. - No spend cap exists anywhere in AWS; Budgets only email while the meter runs. - Self-host rows are not a joke: a €4/month Hetzner box with Coolify includes 20 TB. - Overage is €1/TB, so a spike costing $450 on Netlify costs about one euro. - A managed host sells you the person who gets paged, not compute. - If nobody wants the pager, do not self-host, whatever the table says. - If you already run servers, Coolify or Dokploy delete most of the Vercel bill in an afternoon. - The only real loss is the global CDN, which Cloudflare restores for free. ## The bandwidth cliff, priced out - The interesting number is the marginal one, not the base price. - Cloudflare charges nothing per terabyte; Hetzner charges about €1. - Fly.io charges $20 in North America and Europe, roughly double into Asia-Pacific. - Railway charges $50; AWS Amplify and Vercel both land near $150. - Netlify charges around $550, because overage is sold in $55 blocks of 100 GB. - The ordering barely changes as you scale. - At 1 TB Vercel looks competitive because that terabyte is bundled. - At 5 TB it costs upwards of $600 while Cloudflare still costs $5. - So "is Vercel expensive?" has no answer without a traffic number. - Below a terabyte, the honest answer is no. - Above three or four on an image-heavy site, it becomes the largest infrastructure line item. - The mitigation nobody mentions: keep Vercel, put Cloudflare in front, cache aggressively. - That cuts most billable transfer. - More work than moving hosts, far less work than rewriting for a new runtime. ## How to actually decide - Start with the framework question: it constrains everything else. - Depend on Vercel-only features, PPR and cross-region ISR? Your choices narrow. - Realistically: Vercel, or a container running `next start` with a single-region cache. - Everything else here is a compromise between those two. - Apply the traffic test. - Under 500 GB a month, pick on developer experience: the spread is under $30. - Over 2 TB, pick on egress price, because nothing else on the invoice matters. - Apply the pager test. - Managed hosts sell you an on-call rotation more than compute. - Coolify and Dokploy are excellent software and do not answer the phone. - One backend engineer and a deadline is a decisive argument for Railway or Render over a VPS. - Finally, check the region. - AU and NZ teams should treat the Sydney column as a hard filter. - Singapore adds roughly 90 ms of round trip, visible on any multi-call page. ## Migration paths that actually work - Moving off Vercel is easy for static and SSR-only apps. - It is hard for anything touching the platform's own primitives. - An app using only `app/` routes, `next/image` and standard middleware moves in an afternoon. - Add a Dockerfile, set `output: "standalone"`, point DNS. - Friction starts with Vercel KV, Blob, Edge Config and cron routes. - Each needs a replacement service, not a config change. - Two migrations are consistently underestimated: image optimisation and ISR. - `next/image` on a container optimises on your own CPU with no CDN in front. - Fine at low volume, expensive at high volume. - Most teams end up adding Cloudflare Images or a third-party image CDN. - ISR across multiple instances revalidates per instance unless you configure a shared cache handler. - So stale pages behave differently than on Vercel, usually surfacing as a bug report. - The reverse migration, onto Vercel, is much easier. - Worth knowing: starting on Railway or Fly costs nothing in optionality; building against Vercel's primitives does. ## Per-tool provenance, every cell, every source ### Coolify {#coolify} Open-source self-hosted PaaS: git push to your own server, with previews and cron. | | | | --- | --- | | Site | https://coolify.io | | Docs | https://coolify.io/docs | | Repo | https://github.com/coollabsio/coolify | | Company | coolLabs | | Founded | 2021 | | Funding | Sponsorship-funded open source | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/coolify | | Score (default weights) | 73.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--framework_support | | Next.js parity | self-managed | Inferred | - | - | You run the framework's own server, so nothing is missing except a CDN and a shared ISR cache. | https://toolweight.com/compare/vercel-alternatives#coolify--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--runtime_model | | Fn timeout | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#coolify--function_timeout | | Cold start | 0ms | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-11-06 | https://github.com/coollabsio/coolify | - | https://toolweight.com/compare/vercel-alternatives#coolify--cron_jobs | | Preview deploys | ● | Inferred | - | - | Per-PR preview deployments with automatic subdomains, genuinely surprising for free software. | https://toolweight.com/compare/vercel-alternatives#coolify--preview_deploys | | WAF & DDoS | ○ | Inferred | - | - | Nothing sits in front of your box unless you put Cloudflare there yourself, which most people do. | https://toolweight.com/compare/vercel-alternatives#coolify--waf_ddos | | Observability | included-basic | Inferred | - | - | Container logs and host metrics, with no retention and no tracing. | https://toolweight.com/compare/vercel-alternatives#coolify--observability | | Sydney region | ● | Inferred | - | - | Trivially, you choose the server, so you choose the country. | https://toolweight.com/compare/vercel-alternatives#coolify--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--monorepo_support | | Rollback | redeploy | Inferred | - | - | Redeploy a previous commit; images are not always retained. | https://toolweight.com/compare/vercel-alternatives#coolify--rollback_speed | | Overage behaviour | throttle | Inferred | - | - | There is no meter to exceed. A traffic spike saturates the box and requests get slow or fail, you never receive an invoice for it. | https://toolweight.com/compare/vercel-alternatives#coolify--overage_behaviour | | Bandwidth price | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#coolify--bandwidth_price | | Price @ 1 TB | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#coolify--price_1tb_egress | | Build minutes incl. | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#coolify--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--image_opt_billing | | Analytics cost | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#coolify--analytics_cost | | Free tier | 5 | Inferred | - | - | The software is free forever; the hosted control plane is optional and cheap. | https://toolweight.com/compare/vercel-alternatives#coolify--free_tier | | Self-hostable | ● | Vendor-claimed | 2026-11-06 | https://github.com/coollabsio/coolify | - | https://toolweight.com/compare/vercel-alternatives#coolify--self_hostable | | Exit friction | 1 | Inferred | - | - | Docker Compose underneath. Moving means pointing DNS somewhere else. | https://toolweight.com/compare/vercel-alternatives#coolify--lockin_score | | CLI quality | 2 | Inferred | - | - | There is a REST API and webhook deploys, but the dashboard is the product. | https://toolweight.com/compare/vercel-alternatives#coolify--cli_quality | | Agent/CI deploy | ◐ | Inferred | - | - | API and deploy webhooks work headlessly; initial server setup expects a human. | https://toolweight.com/compare/vercel-alternatives#coolify--agent_deploy | | GA year | 2021 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--launched | | Funding | oss-community | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#coolify--funding_stage | | Pricing clarity | 5 | Inferred | - | - | Your invoice is a VPS invoice. It does not move. | https://toolweight.com/compare/vercel-alternatives#coolify--pricing_clarity | **Verdict.** Astonishingly complete for free software, in exchange for the pager, disk alerts and nobody helping at 3am. **Pick it when** - Teams that already run servers and resent the Vercel invoice - Internal tools and staging fleets where downtime is survivable - Workloads that must stay in a specific country or jurisdiction ### Dokploy {#dokploy} Open-source self-hosted PaaS on Docker Swarm, with multi-node clustering built in. | | | | --- | --- | | Site | https://dokploy.com | | Docs | https://docs.dokploy.com | | Repo | https://github.com/Dokploy/dokploy | | Company | Dokploy | | Founded | 2024 | | Funding | Sponsorship-funded open source | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/dokploy | | Score (default weights) | 73.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--framework_support | | Next.js parity | self-managed | Inferred | - | - | Same as any container host: everything works, nothing is cached at an edge. | https://toolweight.com/compare/vercel-alternatives#dokploy--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--runtime_model | | Fn timeout | - | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--function_timeout | | Cold start | 0ms | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--cold_start | | Cron jobs | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--cron_jobs | | Preview deploys | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--preview_deploys | | WAF & DDoS | ○ | Inferred | - | - | Bring your own edge. | https://toolweight.com/compare/vercel-alternatives#dokploy--waf_ddos | | Observability | included-basic | Inferred | - | - | Container logs and basic metrics; no retention. | https://toolweight.com/compare/vercel-alternatives#dokploy--observability | | Sydney region | ● | Inferred | - | - | You pick the server. | https://toolweight.com/compare/vercel-alternatives#dokploy--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--monorepo_support | | Rollback | redeploy | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--rollback_speed | | Overage behaviour | throttle | Inferred | - | - | No meter, no invoice, the box just saturates. Swarm makes adding a second box the mitigation. | https://toolweight.com/compare/vercel-alternatives#dokploy--overage_behaviour | | Bandwidth price | - | Inferred | - | - | Whatever your host charges. | https://toolweight.com/compare/vercel-alternatives#dokploy--bandwidth_price | | Price @ 1 TB | - | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--price_1tb_egress | | Build minutes incl. | - | Inferred | - | - | Builds run on your own nodes. | https://toolweight.com/compare/vercel-alternatives#dokploy--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--image_opt_billing | | Analytics cost | - | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--analytics_cost | | Free tier | 5 | Inferred | - | - | Apache-2.0 software; the hosted control plane is a few dollars per server. | https://toolweight.com/compare/vercel-alternatives#dokploy--free_tier | | Self-hostable | ● | Vendor-claimed | 2026-06-15 | https://github.com/Dokploy/dokploy | - | https://toolweight.com/compare/vercel-alternatives#dokploy--self_hostable | | Exit friction | 1 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--lockin_score | | CLI quality | 2 | Inferred | - | - | API-driven and dashboard-first; no substantial CLI. | https://toolweight.com/compare/vercel-alternatives#dokploy--cli_quality | | Agent/CI deploy | ◐ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--agent_deploy | | GA year | 2024 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--launched | | Funding | oss-community | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--funding_stage | | Pricing clarity | 5 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#dokploy--pricing_clarity | **Verdict.** Coolify with Docker Swarm underneath: pick it over Coolify when you expect to outgrow one server. **Pick it when** - Self-hosters who need more than one node from day one - Rolling deploys without standing up Kubernetes - Replacing a small Railway or Render bill with a fixed VPS cost ### Cloudflare Workers & Pages {#cloudflare-workers} V8 isolates on 300+ PoPs, with zero egress charges and near-zero cold starts. | | | | --- | --- | | Site | https://workers.cloudflare.com | | Docs | https://developers.cloudflare.com/workers/ | | Repo | https://github.com/cloudflare/workerd | | Company | Cloudflare, Inc. | | Founded | 2017 | | Funding | Public (NYSE: NET) | | Open source | No | | Profile | https://toolweight.com/tools/cloudflare-workers | | Score (default weights) | 72.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, remix, static | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--framework_support | | Next.js parity | most | Community-reported | 2026-06-15 | https://developers.cloudflare.com/workers/framework-guides/web-apps/nextjs/ | Via @opennextjs/cloudflare: ISR, middleware and the Node compatibility layer work; PPR does not. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--nextjs_parity | | Runtime model | edge-only | Vendor-claimed | 2026-06-15 | https://developers.cloudflare.com/workers/runtime-apis/nodejs/ | V8 isolates with a Node compatibility layer, good coverage now, but it is not Node. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--runtime_model | | Fn timeout | 30s | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/workers/platform/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--function_timeout | | Cold start | 5ms | Community-reported | - | - | Isolates start in single-digit milliseconds; there is effectively no cold-start problem here. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://developers.cloudflare.com/workers/configuration/cron-triggers/ | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--cron_jobs | | Preview deploys | ● | Inferred | - | - | Preview URLs per version, plus gradual deployments by percentage. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--preview_deploys | | WAF & DDoS | ● | Vendor-claimed | 2026-06-15 | https://developers.cloudflare.com/ddos-protection/ | Unmetered DDoS mitigation on every plan; managed WAF rulesets need a Pro zone at $20/mo. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--waf_ddos | | Observability | included-basic | Inferred | - | - | Workers Logs and analytics are included on the paid plan; retention is short. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--observability | | Sydney region | ● | Inferred | - | - | Sydney is a long-standing PoP; Smart Placement can instead pin execution near your data. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--sydney_region | | Monorepo support | ◐ | Inferred | - | - | Several Workers from one repo is normal; the build integration is less turnkey than Vercel's. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--monorepo_support | | Rollback | instant | Inferred | - | - | Versions and gradual deployments make rollback a percentage change. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/workers/platform/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--overage_behaviour | | Bandwidth price | $0/TB | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/workers/platform/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--bandwidth_price | | Price @ 1 TB | $5/mo | Inferred | - | - | The $5 Workers Paid plan plus roughly a dollar of request charges at 1M requests. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--price_1tb_egress | | Build minutes incl. | 3,000 min/mo | Inferred | - | - | Approximate, Workers Builds allowances have moved since launch. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--build_minutes | | Image opt billing | metered | Vendor-claimed | 2026-06-15 | https://developers.cloudflare.com/images/pricing/ | Cloudflare Images is a separate product billed per transformation. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--image_opt_billing | | Analytics cost | $0/mo | Vendor-claimed | 2026-06-15 | https://www.cloudflare.com/web-analytics/ | Web Analytics is free, cookieless and on every plan. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--analytics_cost | | Free tier | 5 | Vendor-claimed | 2026-11-06 | https://developers.cloudflare.com/workers/platform/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--free_tier | | Self-hostable | ◐ | Inferred | - | - | workerd and Miniflare run the runtime locally; the network, KV and Durable Objects do not come with them. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--self_hostable | | Exit friction | 4 | Inferred | - | - | Web-standard code ports fine. KV, D1, R2 bindings and Durable Objects have no drop-in equivalent anywhere. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--lockin_score | | CLI quality | 4 | Inferred | - | - | Wrangler is powerful and moves fast enough that third-party guides go stale. | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--agent_deploy | | GA year | 2017 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--launched | | Funding | public | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--funding_stage | | Pricing clarity | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#cloudflare-workers--pricing_clarity | **Verdict.** The correct answer when the bill is why you are here: free egress makes overage a footnote. **Pick it when** - Anything where a traffic spike must not produce a four-figure invoice - Latency-sensitive APIs and edge middleware - Teams already using R2, D1 or Durable Objects ### Vercel {#vercel} The frontend cloud that ships Next.js: best-in-class DX, metered everything. | | | | --- | --- | | Site | https://vercel.com | | Docs | https://vercel.com/docs | | Company | Vercel Inc. | | Founded | 2015 | | Funding | Series F, reported ~$9.3B valuation (2025) | | Open source | No | | Profile | https://toolweight.com/tools/vercel | | Score (default weights) | 70.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, remix, static | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--framework_support | | Next.js parity | full | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/frameworks/nextjs | The reference implementation, PPR and cross-region ISR revalidation ship here first. | https://toolweight.com/compare/vercel-alternatives#vercel--nextjs_parity | | Runtime model | edge+node | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/functions/runtimes | - | https://toolweight.com/compare/vercel-alternatives#vercel--runtime_model | | Fn timeout | 5min | Vendor-claimed | 2026-11-06 | https://vercel.com/docs/functions/limits | - | https://toolweight.com/compare/vercel-alternatives#vercel--function_timeout | | Cold start | 250ms | Inferred | - | - | Fluid compute reuses warm instances aggressively, so most requests never pay this. | https://toolweight.com/compare/vercel-alternatives#vercel--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-11-06 | https://vercel.com/docs/cron-jobs | - | https://toolweight.com/compare/vercel-alternatives#vercel--cron_jobs | | Preview deploys | ● | Vendor-claimed | 2026-11-06 | https://vercel.com/docs/deployments/environments | - | https://toolweight.com/compare/vercel-alternatives#vercel--preview_deploys | | WAF & DDoS | ● | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/security/vercel-waf | Firewall and DDoS mitigation included; managed bot rules cost extra. | https://toolweight.com/compare/vercel-alternatives#vercel--waf_ddos | | Observability | included-basic | Inferred | - | - | Runtime logs with short retention on Pro; Observability Plus is a paid add-on. | https://toolweight.com/compare/vercel-alternatives#vercel--observability | | Sydney region | ● | Vendor-claimed | 2026-11-06 | https://vercel.com/docs/edge-network/regions | - | https://toolweight.com/compare/vercel-alternatives#vercel--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--monorepo_support | | Rollback | instant | Inferred | - | - | Immutable deployments with an alias swap; rollback is one click. | https://toolweight.com/compare/vercel-alternatives#vercel--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/pricing | Spend Management can pause the project at a threshold you set, but it is opt-in. Turn it on before launch, not after. | https://toolweight.com/compare/vercel-alternatives#vercel--overage_behaviour | | Bandwidth price | $150/TB | Vendor-claimed | 2026-11-06 | https://vercel.com/pricing | - | https://toolweight.com/compare/vercel-alternatives#vercel--bandwidth_price | | Price @ 1 TB | $20/mo | Inferred | - | - | Pro bundles the first 1 TB into the $20 seat price. The second TB costs about $150. | https://toolweight.com/compare/vercel-alternatives#vercel--price_1tb_egress | | Build minutes incl. | 24,000 min/mo | Inferred | - | - | Approximate, Vercel has revised the Pro build allowance more than once. | https://toolweight.com/compare/vercel-alternatives#vercel--build_minutes | | Image opt billing | metered | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/image-optimization | Billed per source-image transformation beyond an included allowance. | https://toolweight.com/compare/vercel-alternatives#vercel--image_opt_billing | | Analytics cost | $10/mo | Inferred | - | - | Web Analytics ships with an event allowance on Pro; Speed Insights is the add-on that costs money. Approximate. | https://toolweight.com/compare/vercel-alternatives#vercel--analytics_cost | | Free tier | 4 | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/limits/fair-use-guidelines | Hobby is generous but explicitly non-commercial. | https://toolweight.com/compare/vercel-alternatives#vercel--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--self_hostable | | Exit friction | 4 | Inferred | - | - | Framework code moves easily; ISR behaviour, image optimisation, Edge Config and cron routes do not. | https://toolweight.com/compare/vercel-alternatives#vercel--lockin_score | | CLI quality | 5 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--cli_quality | | Agent/CI deploy | ● | Vendor-claimed | 2026-06-15 | https://vercel.com/docs/rest-api | - | https://toolweight.com/compare/vercel-alternatives#vercel--agent_deploy | | GA year | 2015 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--launched | | Funding | late-stage | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#vercel--funding_stage | | Pricing clarity | 2 | Inferred | - | - | Fluid compute, edge requests, transformations and transfer are four meters that interact. | https://toolweight.com/compare/vercel-alternatives#vercel--pricing_clarity | **Verdict.** Still the best place to run Next.js, and still the hardest bill to forecast past the first terabyte. **Pick it when** - Next.js apps using PPR, cross-region ISR or managed image optimisation - Teams where frontend velocity is worth more than $200 a month - Anything where preview URLs are part of the review process ### Hetzner + Coolify {#hetzner-coolify} The DIY baseline: a €4 CX22 running Coolify, with 20 TB of traffic included. | | | | --- | --- | | Site | https://www.hetzner.com/cloud | | Company | Hetzner Online GmbH | | Founded | 2018 | | Open source | Yes (Apache-2.0 (Coolify)) | | Profile | https://toolweight.com/tools/hetzner-coolify | | Score (default weights) | 65.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--framework_support | | Next.js parity | self-managed | Inferred | - | - | `next start` on one box. Every framework feature works; none of it is cached anywhere near your users. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--runtime_model | | Fn timeout | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--function_timeout | | Cold start | 0ms | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--cold_start | | Cron jobs | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--cron_jobs | | Preview deploys | ● | Inferred | - | - | Coolify handles per-PR environments; the constraint is RAM, not features. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--preview_deploys | | WAF & DDoS | ◐ | Vendor-claimed | 2026-06-15 | https://www.hetzner.com/cloud | Hetzner includes network-level DDoS protection. There is no WAF unless you front it with Cloudflare. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--waf_ddos | | Observability | included-basic | Inferred | - | - | Coolify's logs plus whatever you install. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--observability | | Sydney region | ○ | Vendor-claimed | 2026-06-15 | https://www.hetzner.com/cloud | Germany, Finland, two US locations and Singapore. No Australian region at all, the strongest argument against this baseline for AU-facing apps. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--monorepo_support | | Rollback | redeploy | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-06-15 | https://docs.hetzner.com/cloud/servers/pricing/ | 20 TB of traffic is included, then €1 per additional TB. The spike that costs $450 on Netlify costs about one euro here, which is why this row exists. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--overage_behaviour | | Bandwidth price | $1/TB | Vendor-claimed | 2026-06-15 | https://docs.hetzner.com/cloud/servers/pricing/ | €1.00 per TB beyond the 20 TB included on EU and US cloud servers, converted at par for comparability. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--bandwidth_price | | Price @ 1 TB | $5/mo | Inferred | - | - | A CX22 at just under €4 a month. The terabyte is free, it sits inside the 20 TB allowance. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--price_1tb_egress | | Build minutes incl. | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--image_opt_billing | | Analytics cost | N/A | Vendor-claimed | 2026-11-07 | https://coolify.io/pricing | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--analytics_cost | | Free tier | 1 | Inferred | - | - | None. But €4 buys 20 TB, which reframes the question. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--free_tier | | Self-hostable | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--self_hostable | | Exit friction | 1 | Inferred | - | - | It is a Linux box. There is nothing to be locked into. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--lockin_score | | CLI quality | 2 | Inferred | - | - | hcloud is decent for infrastructure; Coolify above it is dashboard-driven. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--cli_quality | | Agent/CI deploy | ◐ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--agent_deploy | | GA year | 2018 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--launched | | Funding | bootstrapped | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--funding_stage | | Pricing clarity | 5 | Inferred | - | - | Four euros. Every month. Forever. | https://toolweight.com/compare/vercel-alternatives#hetzner-coolify--pricing_clarity | **Verdict.** The number every managed host argues against: about $5/month with 20 TB included and €1/TB overage. **Pick it when** - Benchmarking whether a managed host is worth its markup - European or US workloads with high bandwidth and low ops needs - Side projects and internal tools where a single box is genuinely enough ### Northflank {#northflank} Container platform with bring-your-own-cloud, GPUs and a sandbox-shaped API. | | | | --- | --- | | Site | https://northflank.com | | Docs | https://northflank.com/docs | | Company | Northflank Ltd. | | Founded | 2019 | | Funding | Series A | | Open source | No | | Profile | https://toolweight.com/tools/northflank | | Score (default weights) | 65.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--framework_support | | Next.js parity | self-managed | Inferred | - | - | Containerised `next start`; the same trade-offs as any container host. | https://toolweight.com/compare/vercel-alternatives#northflank--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--runtime_model | | Fn timeout | - | Inferred | - | - | No platform-imposed request limit. | https://toolweight.com/compare/vercel-alternatives#northflank--function_timeout | | Cold start | 0ms | Inferred | - | - | Always-on containers. | https://toolweight.com/compare/vercel-alternatives#northflank--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://northflank.com/docs | Cron and one-off jobs are separate first-class resource types. | https://toolweight.com/compare/vercel-alternatives#northflank--cron_jobs | | Preview deploys | ● | Inferred | - | - | Preview environments clone the full service and database graph, among the best implementations in the category. | https://toolweight.com/compare/vercel-alternatives#northflank--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--waf_ddos | | Observability | included-basic | Inferred | - | - | Logs, metrics and alerting are built in; distributed tracing is not. | https://toolweight.com/compare/vercel-alternatives#northflank--observability | | Sydney region | ◐ | Inferred | - | - | Reachable through bring-your-own-cloud in an Australian AWS or GCP region; not a managed Northflank region. | https://toolweight.com/compare/vercel-alternatives#northflank--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--monorepo_support | | Rollback | instant | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--rollback_speed | | Overage behaviour | bill | Inferred | - | - | Usage-billed compute and egress with no published hard cap. | https://toolweight.com/compare/vercel-alternatives#northflank--overage_behaviour | | Bandwidth price | $100/TB | Inferred | - | - | Approximate: roughly $0.10/GB on top of compute. Confirm against the live pricing page before budgeting. | https://toolweight.com/compare/vercel-alternatives#northflank--bandwidth_price | | Price @ 1 TB | $120/mo | Inferred | - | - | Derived from the approximate egress rate plus a small always-on service. Order of magnitude only. | https://toolweight.com/compare/vercel-alternatives#northflank--price_1tb_egress | | Build minutes incl. | - | Inferred | - | - | Builds are billed as compute. | https://toolweight.com/compare/vercel-alternatives#northflank--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--image_opt_billing | | Analytics cost | - | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--analytics_cost | | Free tier | 3 | Inferred | - | - | A genuinely free developer tier, limited by service count rather than by time. | https://toolweight.com/compare/vercel-alternatives#northflank--free_tier | | Self-hostable | ◐ | Vendor-claimed | 2026-06-15 | https://northflank.com/bring-your-own-cloud | Bring-your-own-cloud runs the workloads in your account under Northflank's control plane, the closest thing to self-hosting among the managed vendors here. | https://toolweight.com/compare/vercel-alternatives#northflank--self_hostable | | Exit friction | 2 | Inferred | - | - | Containers plus declarative templates; with BYOC the workloads are already in your account. | https://toolweight.com/compare/vercel-alternatives#northflank--lockin_score | | CLI quality | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | Full REST API, CLI and templates-as-code; nothing requires the dashboard. | https://toolweight.com/compare/vercel-alternatives#northflank--agent_deploy | | GA year | 2021 | Inferred | - | - | Platform launch; the agent-sandbox positioning dates from 2025. | https://toolweight.com/compare/vercel-alternatives#northflank--launched | | Funding | growth | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--funding_stage | | Pricing clarity | 3 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#northflank--pricing_clarity | **Verdict.** The most capable platform nobody shortlists, let down mainly by its illegible published pricing. **Pick it when** - Teams that need workloads inside their own cloud account for compliance - Full-stack preview environments including databases - Batch jobs and cron alongside long-running services ### Netlify {#netlify} The original Jamstack host: strong build pipeline, punishing bandwidth overage. | | | | --- | --- | | Site | https://netlify.com | | Docs | https://docs.netlify.com | | Company | Netlify | | Founded | 2014 | | Funding | Series D, $105M (2021) | | Open source | No | | Profile | https://toolweight.com/tools/netlify | | Score (default weights) | 63.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, remix, static | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--framework_support | | Next.js parity | most | Vendor-claimed | 2026-06-15 | https://docs.netlify.com/frameworks/next-js/overview/ | ISR, middleware and image optimisation are covered by the maintained runtime; PPR is not. | https://toolweight.com/compare/vercel-alternatives#netlify--nextjs_parity | | Runtime model | edge+node | Inferred | - | - | Node functions on AWS Lambda plus Deno-based edge functions. | https://toolweight.com/compare/vercel-alternatives#netlify--runtime_model | | Fn timeout | 10s | Vendor-claimed | 2026-06-15 | https://docs.netlify.com/functions/overview/ | Synchronous functions; background functions run up to 15 minutes. | https://toolweight.com/compare/vercel-alternatives#netlify--function_timeout | | Cold start | 300ms | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://docs.netlify.com/functions/scheduled-functions/ | - | https://toolweight.com/compare/vercel-alternatives#netlify--cron_jobs | | Preview deploys | ● | Inferred | - | - | Deploy previews per PR plus branch deploys, the feature Netlify effectively invented. | https://toolweight.com/compare/vercel-alternatives#netlify--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Volumetric protection is included; the WAF is an enterprise-tier add-on. | https://toolweight.com/compare/vercel-alternatives#netlify--waf_ddos | | Observability | included-basic | Inferred | - | - | Function and deploy logs; log drains are enterprise. | https://toolweight.com/compare/vercel-alternatives#netlify--observability | | Sydney region | ◐ | Inferred | - | - | CDN edge covers Sydney; Node functions execute in a US AWS region by default. | https://toolweight.com/compare/vercel-alternatives#netlify--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--monorepo_support | | Rollback | instant | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--rollback_speed | | Overage behaviour | bill | Community-reported | 2026-06-15 | https://www.netlify.com/pricing/ | The platform that produced the canonical $104k DDoS invoice in 2024. That bill was waived and free-tier sites are now suspended rather than billed, but paid plans still meter with no hard cap. | https://toolweight.com/compare/vercel-alternatives#netlify--overage_behaviour | | Bandwidth price | $550/TB | Community-reported | 2026-06-15 | https://www.netlify.com/pricing/ | Sold as $55 per additional 100 GB, the most expensive egress in this roster by a factor of three. | https://toolweight.com/compare/vercel-alternatives#netlify--bandwidth_price | | Price @ 1 TB | $19/mo | Inferred | - | - | Pro bundles 1 TB into the $19 seat. The cliff is immediately after it. | https://toolweight.com/compare/vercel-alternatives#netlify--price_1tb_egress | | Build minutes incl. | 25,000 min/mo | Vendor-claimed | 2026-06-15 | https://www.netlify.com/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#netlify--build_minutes | | Image opt billing | included | Inferred | 2026-06-15 | https://docs.netlify.com/image-cdn/overview/ | Image CDN transformations are bundled rather than separately metered. | https://toolweight.com/compare/vercel-alternatives#netlify--image_opt_billing | | Analytics cost | $9/mo | Vendor-claimed | 2026-06-15 | https://www.netlify.com/pricing/ | Per site per month, it is not an account-wide fee. | https://toolweight.com/compare/vercel-alternatives#netlify--analytics_cost | | Free tier | 3 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--self_hostable | | Exit friction | 3 | Inferred | - | - | netlify.toml, redirects and Blobs need replacing, but the runtime is ordinary Node. | https://toolweight.com/compare/vercel-alternatives#netlify--lockin_score | | CLI quality | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--agent_deploy | | GA year | 2015 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--launched | | Funding | late-stage | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#netlify--funding_stage | | Pricing clarity | 3 | Inferred | - | - | The plan page is legible; the block overage pricing is the part people miss. | https://toolweight.com/compare/vercel-alternatives#netlify--pricing_clarity | **Verdict.** A very good build pipeline attached to the worst egress pricing in the category. **Pick it when** - Content sites with steady, forecastable traffic - Teams that lean on build plugins and deploy previews - Migrating off Vercel without changing the git-push workflow ### Railway {#railway} Container PaaS with the best developer experience in the category and usage billing. | | | | --- | --- | | Site | https://railway.com | | Docs | https://docs.railway.com | | Company | Railway Corp. | | Founded | 2020 | | Funding | Venture-backed, growth stage | | Open source | No | | Profile | https://toolweight.com/tools/railway | | Score (default weights) | 63.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--framework_support | | Next.js parity | self-managed | Inferred | - | - | You run `next start`, so every feature works, but ISR caches per instance and there is no CDN in front. | https://toolweight.com/compare/vercel-alternatives#railway--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--runtime_model | | Fn timeout | 15min | Vendor-claimed | 2026-11-07 | https://docs.railway.com/networking/public-networking/specs-and-limits | 15 minutes while data keeps flowing; closed earlier when idle. | https://toolweight.com/compare/vercel-alternatives#railway--function_timeout | | Cold start | 0ms | Inferred | - | - | Instances stay warm. There is no scale-to-zero by default, which is why you pay whether or not anyone visits. | https://toolweight.com/compare/vercel-alternatives#railway--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://docs.railway.com/reference/cron-jobs | - | https://toolweight.com/compare/vercel-alternatives#railway--cron_jobs | | Preview deploys | ● | Inferred | - | - | PR environments clone the whole service graph, not just the app. | https://toolweight.com/compare/vercel-alternatives#railway--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Edge DDoS protection is inherited from the network in front; there is no configurable WAF. | https://toolweight.com/compare/vercel-alternatives#railway--waf_ddos | | Observability | included-basic | Inferred | - | - | Structured logs and per-service metrics in the dashboard; no tracing. | https://toolweight.com/compare/vercel-alternatives#railway--observability | | Sydney region | ○ | Vendor-claimed | 2026-06-15 | https://docs.railway.com/reference/deployment-regions | Nearest is Singapore, roughly 90 ms further from Australian users. | https://toolweight.com/compare/vercel-alternatives#railway--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--monorepo_support | | Rollback | instant | Inferred | - | - | Previous builds are retained; rollback relaunches the existing image. | https://toolweight.com/compare/vercel-alternatives#railway--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-06-15 | https://docs.railway.com/reference/pricing/plans | Usage is billed, but Railway is one of very few hosts where a hard usage limit that actually suspends services is a single setting rather than an alert. | https://toolweight.com/compare/vercel-alternatives#railway--overage_behaviour | | Bandwidth price | $50/TB | Vendor-claimed | 2026-06-15 | https://railway.com/pricing | $0.05/GB network egress. | https://toolweight.com/compare/vercel-alternatives#railway--bandwidth_price | | Price @ 1 TB | $60/mo | Inferred | - | - | $5 plan, about $50 of egress, plus a small always-on instance. | https://toolweight.com/compare/vercel-alternatives#railway--price_1tb_egress | | Build minutes incl. | - | Inferred | - | - | Builds are billed as ordinary compute; there is no separate minute allowance. | https://toolweight.com/compare/vercel-alternatives#railway--build_minutes | | Image opt billing | byo | Inferred | - | - | next/image optimises on your own container CPU. | https://toolweight.com/compare/vercel-alternatives#railway--image_opt_billing | | Analytics cost | - | Inferred | - | - | No first-party web analytics, run Plausible or Umami as another service. | https://toolweight.com/compare/vercel-alternatives#railway--analytics_cost | | Free tier | 2 | Inferred | - | - | The free tier was retired in 2023; there is a trial credit and then a $5/mo minimum. | https://toolweight.com/compare/vercel-alternatives#railway--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--self_hostable | | Exit friction | 2 | Inferred | - | - | It is your Dockerfile. The config and the managed databases are the only things to redo. | https://toolweight.com/compare/vercel-alternatives#railway--lockin_score | | CLI quality | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--cli_quality | | Agent/CI deploy | ● | Vendor-claimed | 2026-06-15 | https://docs.railway.com/reference/public-api | Public GraphQL API plus token-based `railway up`. | https://toolweight.com/compare/vercel-alternatives#railway--agent_deploy | | GA year | 2020 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--launched | | Funding | growth | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--funding_stage | | Pricing clarity | 3 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#railway--pricing_clarity | **Verdict.** The nicest developer experience of any container host, disqualified for AU-facing apps only by its missing Sydney region. **Pick it when** - Multi-service apps where the database and the web app should live together - Teams that want containers without learning Kubernetes - Replacing a Heroku setup without rewriting anything ### Fly.io {#fly-io} Firecracker microVMs in 35+ regions including Sydney, driven from the CLI. | | | | --- | --- | | Site | https://fly.io | | Docs | https://fly.io/docs | | Company | Fly.io, Inc. | | Founded | 2017 | | Funding | Series C, ~$70M (2022) | | Open source | No | | Profile | https://toolweight.com/tools/fly-io | | Score (default weights) | 63.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--framework_support | | Next.js parity | self-managed | Inferred | - | - | `next start` in a microVM. Multi-region deployments make the per-instance ISR cache a real problem to solve. | https://toolweight.com/compare/vercel-alternatives#fly-io--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--runtime_model | | Fn timeout | - | Inferred | - | - | No platform-imposed request limit, Machines run as long as you keep them running. | https://toolweight.com/compare/vercel-alternatives#fly-io--function_timeout | | Cold start | 400ms | Community-reported | - | - | Auto-stopped Machines wake in a few hundred milliseconds, the closest a container host gets to scale-to-zero. | https://toolweight.com/compare/vercel-alternatives#fly-io--cold_start | | Cron jobs | ◐ | Inferred | - | - | Machines support simple schedules, but there is no first-class cron service, most people run a scheduler process. | https://toolweight.com/compare/vercel-alternatives#fly-io--cron_jobs | | Preview deploys | ◐ | Inferred | - | - | Review apps are a documented GitHub Action pattern rather than a built-in feature. | https://toolweight.com/compare/vercel-alternatives#fly-io--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Network-level protection at the anycast edge; no configurable WAF. | https://toolweight.com/compare/vercel-alternatives#fly-io--waf_ddos | | Observability | included-basic | Inferred | - | - | Managed Prometheus and Grafana are included; log retention is short unless you ship logs out. | https://toolweight.com/compare/vercel-alternatives#fly-io--observability | | Sydney region | ● | Vendor-claimed | 2026-06-15 | https://fly.io/docs/reference/regions/ | `syd`. The only container host in this roster with real Australian compute. | https://toolweight.com/compare/vercel-alternatives#fly-io--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--monorepo_support | | Rollback | redeploy | Inferred | - | - | `fly deploy --image` against a previous tag: a minute or two, not seconds. | https://toolweight.com/compare/vercel-alternatives#fly-io--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-06-15 | https://fly.io/docs/about/pricing/ | Pure pay-as-you-go with no hard cap. Egress is cheap enough that the exposure is far smaller than the managed hosts. | https://toolweight.com/compare/vercel-alternatives#fly-io--overage_behaviour | | Bandwidth price | $20/TB | Vendor-claimed | 2026-06-15 | https://fly.io/docs/about/pricing/ | $0.02/GB in North America and Europe. Asia-Pacific and Australia are roughly double, which matters if you deploy to syd. | https://toolweight.com/compare/vercel-alternatives#fly-io--bandwidth_price | | Price @ 1 TB | $30/mo | Inferred | - | - | About $20 of NA/EU egress plus a shared-CPU Machine. Deploying into syd pushes this closer to $50. | https://toolweight.com/compare/vercel-alternatives#fly-io--price_1tb_egress | | Build minutes incl. | - | Inferred | - | - | Builds run on a remote builder billed as ordinary compute. | https://toolweight.com/compare/vercel-alternatives#fly-io--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--image_opt_billing | | Analytics cost | $0/mo | Vendor-claimed | 2026-11-07 | https://fly.io/docs/monitoring/metrics/ | - | https://toolweight.com/compare/vercel-alternatives#fly-io--analytics_cost | | Free tier | 2 | Community-reported | - | - | The standing free allowance was withdrawn in late 2024; new accounts get trial credit. | https://toolweight.com/compare/vercel-alternatives#fly-io--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--self_hostable | | Exit friction | 2 | Inferred | - | - | fly.toml and Fly Postgres are the only things to replace; the image is yours. | https://toolweight.com/compare/vercel-alternatives#fly-io--lockin_score | | CLI quality | 5 | Inferred | - | - | flyctl is the best CLI here and, by design, close to the only interface. | https://toolweight.com/compare/vercel-alternatives#fly-io--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--agent_deploy | | GA year | 2020 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--launched | | Funding | growth | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--funding_stage | | Pricing clarity | 3 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#fly-io--pricing_clarity | **Verdict.** The right answer for Australian teams who want containers: real Sydney compute and cheap egress in one product. **Pick it when** - Australian or multi-region apps that need compute near users - Teams comfortable living in the terminal - Workloads that benefit from auto-stopping machines between bursts ### Sevalla {#sevalla} Kinsta's developer platform: apps, static sites, databases and object storage on GCP. | | | | --- | --- | | Site | https://sevalla.com | | Docs | https://sevalla.com/docs/ | | Company | Kinsta | | Founded | 2024 | | Funding | Bootstrapped (Kinsta) | | Open source | No | | Profile | https://toolweight.com/tools/sevalla | | Score (default weights) | 61.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--framework_support | | Next.js parity | self-managed | Inferred | - | - | Containerised Node process; standard container trade-offs apply. | https://toolweight.com/compare/vercel-alternatives#sevalla--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--runtime_model | | Fn timeout | 3.1min | Vendor-claimed | 2026-11-07 | https://docs.sevalla.com/platform/limits | - | https://toolweight.com/compare/vercel-alternatives#sevalla--function_timeout | | Cold start | 0ms | Inferred | - | - | Always-on containers. | https://toolweight.com/compare/vercel-alternatives#sevalla--cold_start | | Cron jobs | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--cron_jobs | | Preview deploys | ◐ | Inferred | - | - | Branch-based deployments exist; automatic per-PR environments are weaker than the specialists here. | https://toolweight.com/compare/vercel-alternatives#sevalla--preview_deploys | | WAF & DDoS | ● | Inferred | - | - | Inherits Kinsta's Cloudflare enterprise edge, including a managed firewall. | https://toolweight.com/compare/vercel-alternatives#sevalla--waf_ddos | | Observability | included-basic | Inferred | - | - | Runtime and build logs plus basic metrics in the dashboard. | https://toolweight.com/compare/vercel-alternatives#sevalla--observability | | Sydney region | ● | Inferred | - | - | Built on Google Cloud, whose region list includes australia-southeast1. Confirm it is selectable for your resource type. | https://toolweight.com/compare/vercel-alternatives#sevalla--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--monorepo_support | | Rollback | instant | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--rollback_speed | | Overage behaviour | bill | Inferred | - | - | Pay-as-you-go metering on top of the plan; we have not seen a documented hard cap. | https://toolweight.com/compare/vercel-alternatives#sevalla--overage_behaviour | | Bandwidth price | $100/TB | Vendor-claimed | 2026-11-07 | https://sevalla.com/application-hosting/pricing/ | External bandwidth $0.1/GB, converted at 1,000 GB per TB. | https://toolweight.com/compare/vercel-alternatives#sevalla--bandwidth_price | | Price @ 1 TB | $110/mo | Inferred | 2026-11-07 | https://docs.sevalla.com/billing/pricing | - | https://toolweight.com/compare/vercel-alternatives#sevalla--price_1tb_egress | | Build minutes incl. | - | Unknown | - | - | Build minutes are metered; the included allowance is not something we can state confidently. | https://toolweight.com/compare/vercel-alternatives#sevalla--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--image_opt_billing | | Analytics cost | - | Unknown | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--analytics_cost | | Free tier | 3 | Inferred | - | - | Free static site hosting plus trial credit for applications. | https://toolweight.com/compare/vercel-alternatives#sevalla--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--self_hostable | | Exit friction | 2 | Inferred | - | - | Standard containers on GCP; the dashboard is the only thing you would miss. | https://toolweight.com/compare/vercel-alternatives#sevalla--lockin_score | | CLI quality | 2 | Inferred | - | - | Dashboard-first. Automation is the weakest part of the product. | https://toolweight.com/compare/vercel-alternatives#sevalla--cli_quality | | Agent/CI deploy | ◐ | Inferred | - | - | Git-triggered deploys work headlessly; full provisioning still expects a human in the UI. | https://toolweight.com/compare/vercel-alternatives#sevalla--agent_deploy | | GA year | 2024 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--launched | | Funding | bootstrapped | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--funding_stage | | Pricing clarity | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#sevalla--pricing_clarity | **Verdict.** A tidy, well-priced platform from a profitable vendor, but the newest and least automatable option here. **Pick it when** - Teams already inside the Kinsta ecosystem - Static sites and simple apps that want a managed edge included - Anyone who prefers a bootstrapped vendor to a venture-funded one ### Deno Deploy {#deno-deploy} Web-standard JavaScript at the edge, with built-in OpenTelemetry and a global KV. | | | | --- | --- | | Site | https://deno.com/deploy | | Docs | https://docs.deno.com/deploy/ | | Repo | https://github.com/denoland/deno | | Company | Deno Land Inc. | | Founded | 2021 | | Funding | Series A, ~$21M (2022) | | Open source | No | | Profile | https://toolweight.com/tools/deno-deploy | | Score (default weights) | 61.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, static | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--framework_support | | Next.js parity | basic | Inferred | - | - | Next.js is supported by the newer generation of the platform, but this is not where you run a complex Next.js app. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--nextjs_parity | | Runtime model | edge-only | Inferred | - | - | V8 isolates running web-standard APIs, identical to the local Deno CLI. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--runtime_model | | Fn timeout | - | Unknown | - | - | Deploy limits CPU time per request rather than wall clock, and the published figures have moved between platform generations. Left blank rather than guessed. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--function_timeout | | Cold start | 50ms | Community-reported | - | - | Isolate startup: slower than Workers, far faster than anything Lambda-backed. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://docs.deno.com/deploy/ | Deno.cron is part of the runtime. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--cron_jobs | | Preview deploys | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Network-level protection only. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--waf_ddos | | Observability | included-full | Inferred | - | - | OpenTelemetry traces, logs and metrics ship without configuration, the only host here where that is true. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--observability | | Sydney region | ● | Inferred | - | - | Sydney is in the published region list; requests route to the nearest region automatically. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--sydney_region | | Monorepo support | ◐ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--monorepo_support | | Rollback | instant | Vendor-claimed | 2026-11-06 | https://docs.deno.com/deploy/ | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--rollback_speed | | Overage behaviour | bill | Inferred | - | - | Paid plans meter requests and transfer; the free tier stops serving rather than billing you. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--overage_behaviour | | Bandwidth price | $200/TB | Vendor-claimed | 2026-11-07 | https://deno.com/deploy/pricing | Listed as $0.20 per GiB over the included allowance; 1 TB taken as 1,000 GiB. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--bandwidth_price | | Price @ 1 TB | $180/mo | Inferred | 2026-11-07 | https://deno.com/deploy/pricing | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--price_1tb_egress | | Build minutes incl. | - | Unknown | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--build_minutes | | Image opt billing | none | Inferred | - | - | No managed image optimisation product. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--image_opt_billing | | Analytics cost | $0/mo | Inferred | - | - | Request analytics are part of the dashboard. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--analytics_cost | | Free tier | 4 | Inferred | - | - | Generous request and transfer allowance, but small enough that a real site outgrows it. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--free_tier | | Self-hostable | ○ | Inferred | - | - | The Deno runtime is MIT-licensed and self-hostable; the Deploy platform is not. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--self_hostable | | Exit friction | 2 | Inferred | - | - | Web-standard code moves anywhere. Deno KV and Queues are the parts that do not. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--lockin_score | | CLI quality | 4 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--agent_deploy | | GA year | 2021 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--launched | | Funding | growth | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#deno-deploy--funding_stage | | Pricing clarity | 3 | Inferred | - | - | Clear enough on its face, but the platform has changed shape often enough that the number you budgeted may not survive the year. | https://toolweight.com/compare/vercel-alternatives#deno-deploy--pricing_clarity | **Verdict.** The best out-of-the-box observability here, but the smallest platform with pricing rebuilt more than once. **Pick it when** - Web-standard TypeScript services and APIs - Teams that want tracing without wiring up an observability vendor - Fresh and Astro sites at the edge ### Render {#render} Heroku-shaped container host with blueprints, managed Postgres and calm billing. | | | | --- | --- | | Site | https://render.com | | Docs | https://render.com/docs | | Company | Render Services, Inc. | | Founded | 2019 | | Funding | Venture-backed, growth stage | | Open source | No | | Profile | https://toolweight.com/tools/render | | Score (default weights) | 54.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, dockerfile | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--framework_support | | Next.js parity | self-managed | Inferred | - | - | Standard `next start` in a container; ISR is per-instance unless you configure a shared cache handler. | https://toolweight.com/compare/vercel-alternatives#render--nextjs_parity | | Runtime model | container | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--runtime_model | | Fn timeout | - | Inferred | - | - | No platform-imposed request limit on web services. | https://toolweight.com/compare/vercel-alternatives#render--function_timeout | | Cold start | 0ms | Inferred | - | - | Paid instances stay warm. Free instances spin down after 15 minutes idle and take roughly 30 seconds to wake. | https://toolweight.com/compare/vercel-alternatives#render--cold_start | | Cron jobs | ● | Vendor-claimed | 2026-06-15 | https://render.com/docs/cronjobs | Cron is a first-class service type, not a hack layered on a web service. | https://toolweight.com/compare/vercel-alternatives#render--cron_jobs | | Preview deploys | ● | Vendor-claimed | 2026-06-15 | https://render.com/docs/preview-environments | - | https://toolweight.com/compare/vercel-alternatives#render--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Volumetric protection at the edge; no configurable application firewall. | https://toolweight.com/compare/vercel-alternatives#render--waf_ddos | | Observability | included-basic | Inferred | - | - | Logs and instance metrics included; an OpenTelemetry endpoint is available on paid plans. | https://toolweight.com/compare/vercel-alternatives#render--observability | | Sydney region | ○ | Vendor-claimed | 2026-06-15 | https://render.com/docs/regions | Oregon, Ohio, Virginia, Frankfurt and Singapore. Nothing in Australia. | https://toolweight.com/compare/vercel-alternatives#render--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--monorepo_support | | Rollback | instant | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--rollback_speed | | Overage behaviour | bill | Inferred | 2026-06-15 | https://render.com/pricing | Most of a Render invoice is fixed instance pricing, so the surface area for a surprise is small. Bandwidth is the exception. | https://toolweight.com/compare/vercel-alternatives#render--overage_behaviour | | Bandwidth price | $300/TB | Inferred | - | - | Approximate. Render bundles 100 GB and sells additional bandwidth in blocks; check the live pricing page before budgeting on this figure. | https://toolweight.com/compare/vercel-alternatives#render--bandwidth_price | | Price @ 1 TB | $280/mo | Inferred | - | - | Derived from the block bandwidth rate plus a Starter instance. Treat as an order of magnitude, not a quote. | https://toolweight.com/compare/vercel-alternatives#render--price_1tb_egress | | Build minutes incl. | 500 min/mo | Inferred | - | - | Approximate included pipeline minutes; overage is metered per minute. | https://toolweight.com/compare/vercel-alternatives#render--build_minutes | | Image opt billing | byo | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--image_opt_billing | | Analytics cost | - | Inferred | - | - | No first-party web analytics. | https://toolweight.com/compare/vercel-alternatives#render--analytics_cost | | Free tier | 3 | Inferred | - | - | Free static sites and free web services that sleep, good for staging, unusable for production. | https://toolweight.com/compare/vercel-alternatives#render--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--self_hostable | | Exit friction | 2 | Inferred | - | - | render.yaml is the only proprietary artefact and it is a hundred lines. | https://toolweight.com/compare/vercel-alternatives#render--lockin_score | | CLI quality | 3 | Inferred | - | - | The CLI arrived late; the platform is still blueprint- and dashboard-first. | https://toolweight.com/compare/vercel-alternatives#render--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--agent_deploy | | GA year | 2019 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--launched | | Funding | growth | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#render--funding_stage | | Pricing clarity | 4 | Inferred | - | - | Fixed instance prices make most of the bill knowable in advance. | https://toolweight.com/compare/vercel-alternatives#render--pricing_clarity | **Verdict.** The calmest billing in the category, undercut only by bandwidth overage and the missing Australian region. **Pick it when** - Heroku refugees who want fixed monthly prices - Apps that need background workers and cron alongside the web service - Teams that value predictable invoices over the lowest possible price ### AWS Amplify Hosting {#aws-amplify} Managed Next.js and static hosting inside AWS, billed per GB with no spend cap. | | | | --- | --- | | Site | https://aws.amazon.com/amplify/ | | Docs | https://docs.aws.amazon.com/amplify/ | | Company | Amazon Web Services | | Founded | 2018 | | Funding | Public (NASDAQ: AMZN) | | Open source | No | | Profile | https://toolweight.com/tools/aws-amplify | | Score (default weights) | 50.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Frameworks | nextjs, nuxt, sveltekit, astro, static | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--framework_support | | Next.js parity | most | Vendor-claimed | 2026-06-15 | https://docs.aws.amazon.com/amplify/latest/userguide/ssr-Amplify-support.html | SSR, ISR, middleware and image optimisation are supported by the managed compute tier. PPR is not. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--nextjs_parity | | Runtime model | node | Inferred | - | - | Lambda-backed compute behind CloudFront. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--runtime_model | | Fn timeout | 30s | Inferred | - | - | Approximate, Amplify's compute tier enforces a response timeout well below Lambda's own maximum. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--function_timeout | | Cold start | 800ms | Community-reported | - | - | Lambda-backed SSR; the worst cold starts in this roster. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--cold_start | | Cron jobs | ○ | Inferred | - | - | There is no cron in Amplify Hosting, you stand up EventBridge separately. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--cron_jobs | | Preview deploys | ● | Vendor-claimed | 2026-11-06 | https://docs.aws.amazon.com/amplify/latest/userguide/pr-previews.html | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--preview_deploys | | WAF & DDoS | ◐ | Inferred | - | - | Shield Standard is included; AWS WAF can be associated with the app but is billed separately. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--waf_ddos | | Observability | paid-addon | Inferred | - | - | Everything goes to CloudWatch, which is a separate meter with its own invoice. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--observability | | Sydney region | ● | Inferred | - | - | ap-southeast-2, and the CloudFront edge is everywhere regardless. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--sydney_region | | Monorepo support | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--monorepo_support | | Rollback | instant | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--rollback_speed | | Overage behaviour | bill | Vendor-claimed | 2026-06-15 | https://aws.amazon.com/amplify/pricing/ | The purest form of `bill` on this page: no spend cap exists anywhere in AWS. Budgets send an email while the meter keeps running. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--overage_behaviour | | Bandwidth price | $150/TB | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/amplify/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--bandwidth_price | | Price @ 1 TB | $155/mo | Inferred | - | - | 1 TB served at $0.15/GB plus modest SSR compute. There is no bundled allowance to absorb it. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--price_1tb_egress | | Build minutes incl. | 0 min/mo | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/amplify/pricing/ | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--build_minutes | | Image opt billing | metered | Inferred | - | - | Optimisation runs on the compute tier and is billed as requests and duration. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--image_opt_billing | | Analytics cost | - | Inferred | - | - | No first-party web analytics in Amplify Hosting; Pinpoint is a different product with a different bill. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--analytics_cost | | Free tier | 2 | Inferred | - | - | 12-month free tier only, after which everything meters. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--free_tier | | Self-hostable | ○ | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--self_hostable | | Exit friction | 3 | Inferred | - | - | The hosting itself is portable; the IAM, CloudFront and backend wiring around it is what keeps you. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--lockin_score | | CLI quality | 2 | Community-reported | - | - | The Amplify CLI has been rewritten more than once and guides go stale quickly. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--cli_quality | | Agent/CI deploy | ● | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--agent_deploy | | GA year | 2018 | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--launched | | Funding | public | Inferred | - | - | - | https://toolweight.com/compare/vercel-alternatives#aws-amplify--funding_stage | | Pricing clarity | 2 | Inferred | - | - | Legible per-unit rates, attached to an account where nothing ever stops spending. | https://toolweight.com/compare/vercel-alternatives#aws-amplify--pricing_clarity | **Verdict.** Only worth it when your stack already lives in AWS and needs data in ap-southeast-2. **Pick it when** - Apps whose data already lives in AWS, especially in Sydney - Organisations where procurement will only sign an AWS contract - Static sites that need CloudFront and IAM in the same account ## Methodology - Every price is the lowest paid tier a commercial project can ship on. - Not the free tier, not an enterprise quote. - "Price at 1 TB" is the estimated monthly invoice for one small production app. - It assumes 1 TB of transfer and about a million requests. - Components: seat or base fee, one always-on instance where required, plus metered bandwidth. - It ignores databases, heavy compute and image transformations, which diverge too far to compare. - Treat it as a shape, not a quote. - Overage behaviour is an enum, not a score: the four outcomes are different failure modes. - `throttle`: you get slower or serve errors, and no invoice arrives. - `hard-stop`: the site goes down, and no invoice arrives. - `bill`: the site stays up and the invoice is unbounded. - `bill-then-suspend`: you get both. - We rank in that order because a five-figure bill is harder to undo than an hour of downtime. - That is an editorial position: reweight the field and `bill` can become the best answer. - Cells marked "inferred" are our reasoning from adjacent published facts. - Blank cells are facts we could not stand behind; we prefer a dash to a wrong number. ## FAQ ### What actually happens if my Vercel site hits the Hacker News front page? - On the Pro plan, nothing breaks and you get billed. - The first terabyte of transfer is included. - Beyond that you pay roughly $0.15/GB, more out of Sydney. - Spend Management can pause the project at your chosen amount, but it is off by default. - Turn it on before you launch, not after. ### Is Cloudflare Workers really free bandwidth, or is there a catch? - It really is free: Cloudflare has never metered egress and treats it as a competitive position. - The catch is elsewhere: you pay per request and per CPU-millisecond. - The runtime is V8 isolates, not Node, and Next.js runs through the community OpenNext adapter. - PPR is not supported and probably will not be soon. ### Which of these have an Australian region? - Vercel (syd1), Cloudflare (Sydney PoP), Fly.io (syd), AWS Amplify (ap-southeast-2) and Deno Deploy all serve from Sydney. - Railway and Render do not: nearest is Singapore, roughly 90 ms further away. - Northflank reaches Sydney only through bring-your-own-cloud. - Hetzner has no Australian region, the main argument against the DIY baseline for AU apps. ### Can I run Next.js properly outside Vercel? - Yes, and better than the folklore suggests. - Running `next start` in a container on Railway, Render or Fly gives every feature including PPR. - What you lose is the CDN, shared ISR caching across instances, and managed image optimisation. - Netlify and AWS Amplify get closest to Vercel's managed behaviour; Cloudflare gets close via OpenNext. ### Is self-hosting with Coolify actually cheaper once you count your time? - Only if you already run servers. - A Hetzner CX22 with Coolify costs about €4/month including 20 TB, versus $20 plus overage on Vercel. - The savings are real but small until you serve several terabytes. - The genuine cost: TLS renewals, disk pressure and the 3am reboot become yours. ### Which platform has the best free tier for a real side project? - Cloudflare, by a distance: 100,000 requests a day, unmetered bandwidth, commercial use allowed. - Vercel's Hobby tier is more generous in features but forbids commercial use. - That catches people out when a side project starts taking money. - Render's free tier is fine for staging but sleeps instances after fifteen minutes idle. ### Does anything here throttle instead of billing me? - Almost nothing: free tiers generally hard-stop or suspend, paid tiers almost universally bill. - The self-host rows are the only ones that degrade gracefully. - A saturated box gets slow; it does not send an invoice. - For a hard ceiling on a managed host, Vercel's Spend Management and Railway's usage limits genuinely stop spending rather than just alert. ## Sources | Source | Last verified | | --- | --- | | https://vercel.com/docs/frameworks/nextjs | 2026-06-15 | | https://vercel.com/docs/functions/runtimes | 2026-06-15 | | https://vercel.com/docs/functions/limits | 2026-11-06 | | https://vercel.com/docs/cron-jobs | 2026-11-06 | | https://vercel.com/docs/deployments/environments | 2026-11-06 | | https://vercel.com/docs/security/vercel-waf | 2026-06-15 | | https://vercel.com/docs/edge-network/regions | 2026-11-06 | | https://vercel.com/docs/pricing | 2026-06-15 | | https://vercel.com/pricing | 2026-11-06 | | https://vercel.com/docs/image-optimization | 2026-06-15 | | https://vercel.com/docs/limits/fair-use-guidelines | 2026-06-15 | | https://vercel.com/docs/rest-api | 2026-06-15 | | https://docs.netlify.com/frameworks/next-js/overview/ | 2026-06-15 | | https://docs.netlify.com/functions/overview/ | 2026-06-15 | | https://docs.netlify.com/functions/scheduled-functions/ | 2026-06-15 | | https://www.netlify.com/pricing/ | 2026-06-15 | | https://docs.netlify.com/image-cdn/overview/ | 2026-06-15 | | https://developers.cloudflare.com/workers/framework-guides/web-apps/nextjs/ | 2026-06-15 | | https://developers.cloudflare.com/workers/runtime-apis/nodejs/ | 2026-06-15 | | https://developers.cloudflare.com/workers/platform/pricing/ | 2026-11-06 | | https://developers.cloudflare.com/workers/configuration/cron-triggers/ | 2026-06-15 | | https://developers.cloudflare.com/ddos-protection/ | 2026-06-15 | | https://developers.cloudflare.com/images/pricing/ | 2026-06-15 | | https://www.cloudflare.com/web-analytics/ | 2026-06-15 | | https://docs.railway.com/networking/public-networking/specs-and-limits | 2026-11-07 | | https://docs.railway.com/reference/cron-jobs | 2026-06-15 | | https://docs.railway.com/reference/deployment-regions | 2026-06-15 | | https://docs.railway.com/reference/pricing/plans | 2026-06-15 | | https://railway.com/pricing | 2026-06-15 | | https://docs.railway.com/reference/public-api | 2026-06-15 | | https://render.com/docs/cronjobs | 2026-06-15 | | https://render.com/docs/preview-environments | 2026-06-15 | | https://render.com/docs/regions | 2026-06-15 | | https://render.com/pricing | 2026-06-15 | | https://fly.io/docs/reference/regions/ | 2026-06-15 | | https://fly.io/docs/about/pricing/ | 2026-06-15 | | https://fly.io/docs/monitoring/metrics/ | 2026-11-07 | | https://docs.deno.com/deploy/ | 2026-06-15 | | https://deno.com/deploy/pricing | 2026-11-07 | | https://northflank.com/docs | 2026-06-15 | | https://northflank.com/bring-your-own-cloud | 2026-06-15 | | https://docs.sevalla.com/platform/limits | 2026-11-07 | | https://sevalla.com/application-hosting/pricing/ | 2026-11-07 | | https://docs.sevalla.com/billing/pricing | 2026-11-07 | | https://docs.aws.amazon.com/amplify/latest/userguide/ssr-Amplify-support.html | 2026-06-15 | | https://docs.aws.amazon.com/amplify/latest/userguide/pr-previews.html | 2026-11-06 | | https://aws.amazon.com/amplify/pricing/ | 2026-06-15 | | https://coolify.io/pricing | 2026-11-07 | | https://github.com/coollabsio/coolify | 2026-11-06 | | https://github.com/Dokploy/dokploy | 2026-06-15 | | https://www.hetzner.com/cloud | 2026-06-15 | | https://docs.hetzner.com/cloud/servers/pricing/ | 2026-06-15 | ## Cite this page > Cloudflare Workers & Pages is the cheapest credible option at $5/month with no egress charge, though Vercel still wins on Next.js parity. > > — Toolweight, https://toolweight.com/compare/vercel-alternatives, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? - [S3-compatible storage](https://toolweight.com/compare/s3-compatible-storage), Which S3-compatible object storage provider is actually cheapest once egress is counted? - [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql), Should I use SQLite, PostgreSQL or MySQL? - [Sandbox providers](https://toolweight.com/compare/sandbox-providers), Which sandbox provider should I run untrusted or agent-generated code on? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/vercel-alternatives - Machine-readable: https://toolweight.com/compare/vercel-alternatives.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: "Convex vs alternatives: reactive backend platforms compared" slug: convex-alternatives url: "https://toolweight.com/compare/convex-alternatives" question: What are the best alternatives to Convex, and how hard is each one to leave? tools: 11 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-07-20 median_verified: 2026-07-20 stale_values: 97 conflicting_values: 2 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 43% verify_cadence: 30d license: CC-BY-4.0 --- # Convex vs the alternatives > **What are the best alternatives to Convex, and how hard is each one to leave?** > > Convex ships fastest but is among the hardest to leave; Supabase, Nhost and Neon keep your data in ordinary Postgres. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/convex-alternatives | | Tools compared | 11 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 115 of 286 values have a verification date, checked between 2026-07-20 and 2026-11-07 (median 2026-07-20), 97 due for re-check, 2 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 43% (mean cell confidence, not age) | | Killer field | exit_cost | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Supabase](https://toolweight.com/tools/supabase) | 74.6 | 100% | Managed Postgres with auth, storage, realtime and edge functions around it. | | 2 | [Nhost](https://toolweight.com/tools/nhost) | 71.3 | 96% | Postgres plus Hasura GraphQL, auth, storage and serverless functions. | | 3 | [Zero](https://toolweight.com/tools/rocicorp-zero) | 70.8 | 91% | Sync engine that puts a queryable client cache in front of your own Postgres. | | 4 | [PocketBase](https://toolweight.com/tools/pocketbase) | 66.5 | 96% | One Go binary: SQLite database, auth, file storage, realtime and an admin UI. | | 5 | [Convex](https://toolweight.com/tools/convex) | 65.5 | 100% | Reactive TypeScript backend: database, functions and live queries in one project. | | 6 | [ElectricSQL](https://toolweight.com/tools/electricsql) | 64.5 | 91% | Postgres read-path sync: stream subsets of your own database to clients over HTTP. | | 7 | [Neon + Drizzle](https://toolweight.com/tools/neon-drizzle) | 63.6 | 96% | The DIY baseline: serverless Postgres, a typed SQL query builder, nothing else. | | 8 | [InstantDB](https://toolweight.com/tools/instantdb) | 57.7 | 87% | Client-side reactive database with a relational graph model and instant sync. | | 9 | [Appwrite](https://toolweight.com/tools/appwrite) | 56.3 | 100% | Open-source backend platform: databases, auth, storage, functions, self-hostable. | | 10 | [Firebase](https://toolweight.com/tools/firebase) | 51.2 | 96% | Google's app platform: Firestore documents, auth, functions, deep mobile SDKs. | | 11 | [Triplit](https://toolweight.com/tools/triplit) | 50.9 | 83% | Full-stack database that syncs: local cache, server, relational queries, offline. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Features | Tool | Reactivity | TS inference | Transactions | Local-first sync | Optimistic writes | Cron & scheduling | File storage | Vector search | Full-text search | Auth | Hard limits | Cold start (ms) | Function timeout (ms) | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Supabase | push | ◐ | mvcc | ○ | ○ | ● | ● | ● | ● | built-in | Postgres limits apply: about 1 GB per field, no vendor row cap. The real ceilings are connection count and the compute tier you pay for. | 250ms | 2.5min | | Nhost | push | ◐ | mvcc | ○ | ○ | ● | ● | ● | ● | built-in | Postgres limits, plus Hasura's own query-depth and rate limiting on the managed tiers. | - | 3min | | Zero | push | ● | mvcc | ● | ● | ○ | ○ | ◐ | ◐ | bring-your-own | Client cache size is the practical ceiling, the query set you sync has to fit on the device. | - | - | | PocketBase | push | ◐ | serialisable | ○ | ○ | ◐ | ● | ○ | ◐ | built-in | One machine. SQLite tops out near a billion bytes per value and a single concurrent writer; everything else is your disk and RAM. | 0ms | - | | Convex | push | ● | occ | ○ | ● | ● | ● | ● | ● | first-party-addon | 1 MiB per document; 32,000 documents or 16 MiB scanned per query; queries and mutations capped at 1s of user-code compute. | 0ms | 10min | | ElectricSQL | push | ◐ | mvcc | ◐ | ◐ | ○ | ○ | ◐ | ◐ | bring-your-own | Shape size, a shape has to be small enough to hold on the client and cheap enough to re-materialise on the server. | - | - | | Neon + Drizzle | manual | ● | mvcc | ○ | ○ | ○ | ○ | ● | ● | bring-your-own | Postgres limits. The operational ceiling is your compute size and connection count, both dials you control. | 500ms | - | | InstantDB | push | ● | occ | ● | ● | ○ | ● | ○ | ○ | built-in | - | - | - | | Appwrite | push | ◐ | batch-atomic | ○ | ○ | ● | ● | ○ | ◐ | built-in | Attribute count per collection is bounded by the underlying MariaDB row width, wide documents fail at creation time rather than at scale. | 1s | 15min | | Firebase | push | ○ | occ | ◐ | ● | ● | ● | ● | ○ | built-in | 1 MiB per document; about one sustained write per second per document; 500 operations per transaction; no joins. | 2s | 1h | | Triplit | push | ● | occ | ● | ● | ○ | ○ | ○ | ○ | bring-your-own | - | - | - | ### Portability & exit | Tool | Exit cost | Self-hostable | Bulk export | Raw SQL | Schema changes | | --- | --- | --- | --- | --- | --- | | Supabase | 2 | ● | ● | ● | sql-migrations | | Nhost | 2 | ● | ● | ● | sql-migrations | | Zero | 3 | ● | ● | ● | sql-migrations | | PocketBase | 3 | ● | ● | ● | declarative-push | | Convex | 4 | ● | ● | ○ | declarative-push | | ElectricSQL | 2 | ● | ● | ● | sql-migrations | | Neon + Drizzle | 1 | ◐ | ● | ● | sql-migrations | | InstantDB | 4 | ◐ | ◐ | ○ | declarative-push | | Appwrite | 3 | ● | ◐ | ○ | declarative-push | | Firebase | 5 | ○ | ◐ | ○ | schemaless | | Triplit | 4 | ● | ◐ | ○ | declarative-push | ### Agentic | Tool | MCP server | Agent fit | | --- | --- | --- | | Supabase | ● | 4 | | Nhost | ● | 3 | | Zero | ○ | 3 | | PocketBase | ○ | 3 | | Convex | ● | 5 | | ElectricSQL | ○ | 2 | | Neon + Drizzle | ● | 4 | | InstantDB | ● | 4 | | Appwrite | ● | 3 | | Firebase | ● | 2 | | Triplit | ○ | 3 | ### Pricing | Tool | Pricing model | Entry price (/mo) | Egress metered | | --- | --- | --- | --- | | Supabase | flat per org + compute + usage | $25/mo | ● | | Nhost | flat per project + usage | $25/mo | ● | | Zero | free (self-host) | $0/mo | ○ | | PocketBase | free (self-host only) | $0/mo | ○ | | Convex | per-seat + usage | $25/mo | ● | | ElectricSQL | free (self-host) + usage-based cloud | $0/mo | ◐ | | Neon + Drizzle | flat + compute-hours + storage | $0/mo | ◐ | | InstantDB | flat + usage | $30/mo | - | | Appwrite | per-seat + usage | $15/mo | ● | | Firebase | usage only (Blaze pay-as-you-go) | $0/mo | ● | | Triplit | - | - | - | ### Traction | Tool | GitHub stars | Backing | | --- | --- | --- | | Supabase | 90,000 | venture-backed | | Nhost | 8,000 | venture-backed | | Zero | 3,000 | venture-backed | | PocketBase | 48,000 | solo-maintainer | | Convex | 8,000 | venture-backed | | ElectricSQL | 8,000 | venture-backed | | Neon + Drizzle | 18,000 | big-tech | | InstantDB | 9,000 | venture-backed | | Appwrite | 52,000 | venture-backed | | Firebase | - | big-tech | | Triplit | 4,000 | venture-backed | ### Positioning | Tool | Positioning | | --- | --- | | Supabase | The Postgres development platform, the open-source Firebase alternative. | | Nhost | The open-source Firebase alternative, with GraphQL. | | Zero | A general-purpose sync engine for the web. | | PocketBase | Open-source backend in one file. | | Convex | The open-source reactive database for app developers. | | ElectricSQL | Postgres sync engine, sync little subsets of your data into local apps. | | Neon + Drizzle | Serverless Postgres with branching, paired with a typed SQL query builder. | | InstantDB | A modern Firebase, a client-side database that syncs. | | Appwrite | Build like a team of hundreds, an open-source backend platform. | | Firebase | Google's platform for building and running app backends. | | Triplit | The full-stack database that syncs. | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Reactivity | `reactivity_model` | features | enum | - | higher | 7 | How a client learns that a query result changed. push = the server invalidates and re-delivers results without the client asking; poll = the client re-fetches on an interval or on focus; manual = nothing happens until your code refetches. | | TS inference | `ts_inference` | features | tristate | - | higher | 6 | Whether a schema change flows to client-side types with no separate codegen step. yes = types inferred from the schema at compile time; partial = a CLI generates types you commit or regenerate; no = types are hand-written or absent. | | Transactions | `transaction_semantics` | features | enum | - | higher | 5 | The concurrency control the primary store exposes to application code. mvcc = Postgres-style multi-version snapshots; serialisable = single-writer serialised commits; occ = optimistic concurrency with conflict detection and retry; batch-atomic = all-or-nothing writes over a bounded set with no general isolation; none = no multi-record atomicity. | | Local-first sync | `local_first_sync` | features | tristate | - | higher | 5 | Whether the client keeps a queryable local store that serves reads offline and reconciles with the server on reconnect. yes = full local query engine plus write reconciliation; partial = offline cache and write queue, or read-path sync only; no = every read needs the network. | | Optimistic writes | `optimistic_updates` | features | tristate | - | higher | 4 | Whether the platform applies a pending write to local query results and rolls it back on failure, as a first-party API rather than something you assemble over a cache library. | | Cron & scheduling | `scheduled_functions` | features | tristate | - | higher | 4 | First-party cron and delayed-job scheduling that runs on the platform. yes = declarative crons plus one-off scheduling from application code; partial = one of the two, or a scheduler bolted on from elsewhere; no = bring your own worker. | | File storage | `file_storage` | features | tristate | - | higher | 3 | Blob storage included in the platform, with access control tied to the same auth and addressable from the same SDK. | | Vector search | `vector_search` | features | tristate | - | higher | 2 | First-party vector indexing and nearest-neighbour queries over stored records. partial = available through the underlying database but not a product feature the platform manages. | | Full-text search | `full_text_search` | features | tristate | - | higher | 3 | First-party text indexing with relevance ranking. partial = substring or LIKE filtering only, or an index without ranking; no = you attach an external search service. | | Auth | `auth_included` | features | enum | - | higher | 4 | Where user identity lives. built-in = the platform stores users and sessions and the database enforces rules against them; first-party-addon = an official library you install and wire up; bring-your-own = the platform verifies a JWT you issue elsewhere. | | Hard limits | `hard_limits` | features | text | - | n/a | 0 | The documented per-record and per-query ceilings a real application hits first. Not scored, it is here so you can check your data model against them before committing. | | Cold start | `cold_start` | features | duration | ms | lower | 3 | Added latency on the first request after an idle period, for the platform's own function runtime or compute. 0 means there is no user-visible cold path; null means there is no function runtime to cold-start. | | Function timeout | `function_timeout` | features | duration | ms | higher | 2 | Maximum wall-clock runtime for the longest-running server function the platform will execute, on the lowest paid tier. Read the note, several platforms cap database-touching functions far lower than this headline. | | Exit cost | `exit_cost` | portability | score | - | lower | 10 | 1-5 judgement score, lower is better, for how much application code must be rewritten to move off the platform, assuming the data is already extracted. 1 = standard SQL over the wire; leaving is a connection string. 2 = standard engine behind a vendor SDK; schema and queries port, but auth, storage and realtime call sites are rewritten. 3 = proprietary API over an open, self-hostable engine; data leaves cleanly but every read and write call site is vendor-shaped. 4 = proprietary query language plus a proprietary function runtime; queries, mutations, subscriptions and the reactive render model are all rewritten. 5 = as 4, plus no self-host and no self-serve bulk export, so extracting the data is itself a project. | | Self-hostable | `self_hostable` | portability | tristate | - | higher | 6 | Whether you can run the server yourself on your own infrastructure with a documented path. partial = possible but materially harder than the hosted product, or missing features the cloud version has. | | Bulk export | `bulk_export` | portability | tristate | - | higher | 5 | Whether you can pull every record out in an open format, self-serve, without a support ticket. partial = per-collection API pagination you script yourself, or an export format only the vendor's own importer reads. | | Raw SQL | `raw_sql` | portability | tristate | - | higher | 5 | Whether you can execute arbitrary SQL against the primary store, the thing that decides whether BI tools, analytics jobs, ad-hoc backfills and third-party ORMs can reach your data at all. | | Schema changes | `schema_migrations` | portability | enum | - | higher | 4 | How a schema change is expressed and applied. sql-migrations = versioned, reviewable migration files run in order; declarative-push = you edit a schema definition and the platform diffs and applies it, with data backfills written by hand; schemaless = no enforced schema, shape changes handled in application code; none = no schema concept. | | MCP server | `mcp_server` | agentic | tristate | - | higher | 4 | An official Model Context Protocol server, published by the vendor, that lets a coding agent inspect the schema and operate on a project. partial = community-maintained only. | | Agent fit | `agent_fit` | agentic | score | - | higher | 4 | 1-5 judgement score for how far a coding agent can take a feature end-to-end without human plumbing. Rewards schema, server logic and client types living in one typed repository, a local dev loop the agent can run, and errors that name the fix. Penalises console-only configuration, out-of-band dashboards and untyped string DSLs. | | Pricing model | `pricing_model` | pricing | price-model | - | n/a | 0 | The shape of the bill, which matters more than the headline number. Not scored, read it alongside entry price and metered egress. | | Entry price | `entry_price` | pricing | currency | /mo | lower | 5 | Monthly cost of the cheapest paid tier, excluding usage, in USD. 0 means the software is free and you pay only for the machine it runs on. Per-seat plans are shown at one seat, multiply by your team size. | | Egress metered | `egress_billing` | pricing | tristate | - | lower | 3 | Whether bandwidth out is metered and billed as a separate line beyond an included allowance. yes is worse. It bites reactive backends hardest, because a chatty subscription re-sends data on every change. | | GitHub stars | `github_stars` | traction | number | - | higher | 2 | Stars on the primary open-source repository, rounded to the nearest thousand. A popularity proxy, not a quality signal, and meaningless for closed products. | | Backing | `backing` | traction | enum | - | higher | 2 | Who pays for development. A crude survival proxy only: big-tech products get deprecated and solo-maintained projects outlive funding rounds. Weight it low unless you are betting a decade on the choice. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor describes itself, paraphrased from its own homepage. Useful mainly for spotting the gap between the pitch and the table above. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Fastest to ship | `fastest-to-ship` | End-to-end types, push reactivity, batteries included and agent legibility. Ignores exit cost almost entirely. | ts_inference:9, reactivity_model:8, auth_included:7, optimistic_updates:6, file_storage:6, agent_fit:6, scheduled_functions:5, mcp_server:4, schema_migrations:4, full_text_search:3, vector_search:3, exit_cost:1 | https://toolweight.com/compare/convex-alternatives?w=ts_inference:9,reactivity_model:8,auth_included:7,optimistic_updates:6,file_storage:6,agent_fit:6,scheduled_functions:5,mcp_server:4,schema_migrations:4,full_text_search:3,vector_search:3,exit_cost:1 | | Most portable | `most-portable` | Exit cost dominates, backed by raw SQL access, self-hosting and a self-serve bulk export. | exit_cost:10, raw_sql:9, bulk_export:8, self_hostable:8, schema_migrations:5, transaction_semantics:4, backing:3, ts_inference:2 | https://toolweight.com/compare/convex-alternatives?w=exit_cost:10,raw_sql:9,bulk_export:8,self_hostable:8,schema_migrations:5,transaction_semantics:4,backing:3,ts_inference:2 | | Best local-first | `best-local-first` | For apps that must work offline and feel instant: local sync, built-in optimistic writes, push reactivity. | local_first_sync:10, optimistic_updates:8, reactivity_model:7, ts_inference:5, transaction_semantics:4, exit_cost:3, github_stars:2 | https://toolweight.com/compare/convex-alternatives?w=local_first_sync:10,optimistic_updates:8,reactivity_model:7,ts_inference:5,transaction_semantics:4,exit_cost:3,github_stars:2 | | Cheapest at scale | `cheapest-at-scale` | Entry price, metered egress and the option to run it yourself on a box you already pay for. | entry_price:8, egress_billing:8, self_hostable:7, raw_sql:4, cold_start:3, exit_cost:2 | https://toolweight.com/compare/convex-alternatives?w=entry_price:8,egress_billing:8,self_hostable:7,raw_sql:4,cold_start:3,exit_cost:2 | ## Verdict - Convex wins the thing it claims: fastest path to a working realtime feature - One TypeScript project holds schema, server functions and client types - Queries reactive by default, no subscription plumbing - Mutations transactional, no connection pool to manage - Best fit for a coding agent: whole surface is typed and in-repo - Optimistic concurrency with automatic retries makes serialisable writes the boring default - The cost is not price or limits, it is total lock-in - Every read and write goes through Convex's query builder, runtime and reactivity - There is no SQL to port - Leaving means rewriting the data layer plus the render model on top - Self-hosting bounds vendor risk, not exit cost, self-hosted Convex is still Convex - Score the exit honestly before you start - Supabase gets most of the productivity for a fraction of the exit cost - Data is Postgres, queries are SQL or PostgREST, pg_dump is a complete escape hatch - Trade-off is coherence: auth, storage, realtime and edge functions are four stitched products - Realtime is a change feed, not a reactive query, and types come from a CLI step - Nhost is the same trade with Hasura GraphQL instead of PostgREST, worth a look if GraphQL is in your stack - The interesting movement is at the sync layer - ElectricSQL and Zero both refuse to own your database - Electric streams read shapes out of Postgres over HTTP, leaving writes to your API - Zero puts a query-shaped client cache in front of Postgres with server-side mutators - You adopt a sync engine, not a backend, so they score 2 and 3 on exit cost - They deliver local-first behaviour Convex lacks entirely - But they are younger, thinner on batteries (no storage, auth or cron) - Firebase is the cautionary tale at the other end - Only entry with no self-host path and a proprietary rules language - Export format only Firestore can read - Document model quietly shapes your schema around its query limits - Still the deepest mobile SDKs and Google's operational record - Defensible for a consumer mobile app that will never migrate - The worst deal for anything you expect to change in five years ## What exit cost actually measures - Every vendor says your data is yours; that is true and not the question - Data extraction is a weekend for nine of these eleven - Rewriting the two thousand call sites that read that data is not - The ladder is about code, not bytes - Rung 1: standard SQL over the wire, leaving is a connection string - Rung 2: standard engine behind a vendor SDK, schema and queries port but auth, storage and realtime call sites get rewritten - Rung 3: proprietary API over an open self-hostable engine, data leaves cleanly but every read and write is vendor-shaped - Rung 4: adds a proprietary function runtime, so queries, mutations, subscriptions and the render model all go - Rung 5: rung 4 with no self-host and no self-serve export, making even the data a project - Open source does not lower the score by itself - Appwrite, PocketBase and Convex are all open source and all sit at 3 or 4 - The licence governs who may run the server, not who rewrites the client - Sync engines score unusually well for their age, sitting beside a Postgres you already control ## Where the pricing hides - Sticker prices cluster between $15 and $30 a month and tell you almost nothing - Three mechanics decide the real bill - Per-seat pricing: Convex and Appwrite charge per member on top of usage - A five-person team starts at five times the headline before a function runs - Supabase charges per organisation; Firebase charges nothing up front - On small teams this is usually the largest line and does not shrink when you optimise - Bandwidth: Convex, Supabase, Firebase, Appwrite and Nhost meter egress separately - Reactive backends push on every change, so a chatty subscription is a bandwidth line, not a CPU one - Easy to miss when modelling costs against requests per second - Check what live queries re-send when one row changes - Idle: Firebase, Convex and Neon cost approximately nothing when unused - A Supabase Pro project bills compute by the hour regardless of traffic - Anything self-hosted bills you for the machine - For side projects and staging this dominates everything else ## Realistic migration paths - Convex to Postgres is the hard one, plan it before you need it - `npx convex export` gives a zip of JSONL per table that loads into Postgres cleanly enough - The work is in the application - Put a repository layer between your components and Convex early, so reactive queries become one seam not hundreds - Do it while the app is small; retrofitting later is most of the migration cost - Firebase to anything starts with the export format, the one genuinely closed artefact here - The managed Firestore export writes a format only Firestore imports - In practice you paginate collections through the Admin SDK and write your own JSON - Fine at gigabytes, painful at terabytes - Budget separately for translating security rules into row-level security or middleware - Supabase to plain Postgres is the easy case and the reference point - pg_dump, restore anywhere, replace supabase-js with your query builder, replace GoTrue with an auth provider - Weeks, not quarters, and that gap is the entire content of the exit-cost column - Adding a sync engine later is the underrated option - Electric and Zero sit beside Postgres rather than replacing it - "Start on Neon and Drizzle, add Zero when the UI needs to feel instant" is a real sequence, not a rewrite - None of the all-in-one platforms support that shape ## Per-tool provenance, every cell, every source ### Supabase {#supabase} Managed Postgres with auth, storage, realtime and edge functions around it. | | | | --- | --- | | Site | https://supabase.com | | Docs | https://supabase.com/docs | | Repo | https://github.com/supabase/supabase | | Company | Supabase | | Founded | 2020 | | Funding | Venture-backed | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/supabase | | Score (default weights) | 74.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/realtime | A Postgres change feed pushed over websockets, you subscribe to table changes, not to query results, so re-deriving state is your job. | https://toolweight.com/compare/convex-alternatives#supabase--reactivity_model | | TS inference | ◐ | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/api/rest/generating-types | CLI codegen from the live schema; you re-run it and commit the file. | https://toolweight.com/compare/convex-alternatives#supabase--ts_inference | | Transactions | mvcc | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/database | Plain Postgres, but PostgREST calls are one statement each, multi-step transactions need an RPC. | https://toolweight.com/compare/convex-alternatives#supabase--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#supabase--local_first_sync | | Optimistic writes | ○ | Inferred | - | - | No first-party API; teams use TanStack Query or similar. | https://toolweight.com/compare/convex-alternatives#supabase--optimistic_updates | | Cron & scheduling | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/cron | pg_cron plus scheduled edge functions. | https://toolweight.com/compare/convex-alternatives#supabase--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/storage | - | https://toolweight.com/compare/convex-alternatives#supabase--file_storage | | Vector search | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/ai | pgvector, managed. | https://toolweight.com/compare/convex-alternatives#supabase--vector_search | | Full-text search | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/database/full-text-search | - | https://toolweight.com/compare/convex-alternatives#supabase--full_text_search | | Auth | built-in | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/auth | - | https://toolweight.com/compare/convex-alternatives#supabase--auth_included | | Hard limits | Postgres limits apply: about 1 GB per field, no vendor row cap. The real ceilings are connection count and the compute tier you pay for. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#supabase--hard_limits | | Cold start | 250ms | Community-reported | - | - | Deno edge function isolate start. Separately, free-tier projects pause after a week idle and take about a minute to restore. | https://toolweight.com/compare/convex-alternatives#supabase--cold_start | | Function timeout | 2.5min | Inferred | - | - | Edge function wall clock; CPU time is capped far lower, on the order of a couple of seconds. | https://toolweight.com/compare/convex-alternatives#supabase--function_timeout | | Exit cost | 2 | Inferred | - | - | pg_dump takes the data and schema intact and SQL ports unchanged. You rewrite supabase-js call sites, swap GoTrue for another auth provider, and reimplement storage and realtime. Weeks, not quarters. | https://toolweight.com/compare/convex-alternatives#supabase--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/self-hosting | Docker Compose stack; feature parity with Cloud lags. | https://toolweight.com/compare/convex-alternatives#supabase--self_hostable | | Bulk export | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/database/connecting-to-postgres | Direct Postgres connection; pg_dump works. | https://toolweight.com/compare/convex-alternatives#supabase--bulk_export | | Raw SQL | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#supabase--raw_sql | | Schema changes | sql-migrations | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/deployment/database-migrations | - | https://toolweight.com/compare/convex-alternatives#supabase--schema_migrations | | MCP server | ● | Vendor-claimed | 2026-07-20 | https://supabase.com/docs/guides/getting-started/mcp | - | https://toolweight.com/compare/convex-alternatives#supabase--mcp_server | | Agent fit | 4 | Inferred | - | - | Strong CLI and local stack, but RLS policies and dashboard configuration sit outside the typed repo. | https://toolweight.com/compare/convex-alternatives#supabase--agent_fit | | Pricing model | flat per org + compute + usage | Vendor-claimed | 2026-07-20 | https://supabase.com/pricing | - | https://toolweight.com/compare/convex-alternatives#supabase--pricing_model | | Entry price | $25/mo | Vendor-claimed | 2026-11-06 | https://supabase.com/pricing | - | https://toolweight.com/compare/convex-alternatives#supabase--entry_price | | Egress metered | ● | Vendor-claimed | 2026-11-06 | https://supabase.com/pricing | - | https://toolweight.com/compare/convex-alternatives#supabase--egress_billing | | GitHub stars | 90,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#supabase--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#supabase--backing | | Positioning | The Postgres development platform, the open-source Firebase alternative. | Vendor-claimed | 2026-07-20 | https://supabase.com | - | https://toolweight.com/compare/convex-alternatives#supabase--positioning | **Verdict.** Managed convenience without giving up your database; the seams show, but pg_dump is a complete exit. **Pick it when** - Teams that need raw SQL, BI tooling or a third-party ORM against the same data - Anyone who wants a credible migration path off the platform from day one - Projects already comfortable with Postgres row-level security ### Nhost {#nhost} Postgres plus Hasura GraphQL, auth, storage and serverless functions. | | | | --- | --- | | Site | https://nhost.io | | Docs | https://docs.nhost.io | | Repo | https://github.com/nhost/nhost | | Company | Nhost | | Founded | 2020 | | Funding | Venture-backed | | Open source | Yes | | Profile | https://toolweight.com/tools/nhost | | Score (default weights) | 71.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://docs.nhost.io/products/database | Hasura GraphQL subscriptions, a server-side diff pushed to clients. | https://toolweight.com/compare/convex-alternatives#nhost--reactivity_model | | TS inference | ◐ | Inferred | - | - | GraphQL codegen from the schema; a build step, not inference. | https://toolweight.com/compare/convex-alternatives#nhost--ts_inference | | Transactions | mvcc | Inferred | - | - | Standard Postgres underneath. | https://toolweight.com/compare/convex-alternatives#nhost--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#nhost--local_first_sync | | Optimistic writes | ○ | Inferred | - | - | Whatever your GraphQL client offers. | https://toolweight.com/compare/convex-alternatives#nhost--optimistic_updates | | Cron & scheduling | ● | Inferred | - | - | Hasura scheduled and cron triggers. | https://toolweight.com/compare/convex-alternatives#nhost--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://docs.nhost.io/products/storage | - | https://toolweight.com/compare/convex-alternatives#nhost--file_storage | | Vector search | ● | Inferred | - | - | pgvector on the managed Postgres. | https://toolweight.com/compare/convex-alternatives#nhost--vector_search | | Full-text search | ● | Inferred | - | - | Postgres tsvector. | https://toolweight.com/compare/convex-alternatives#nhost--full_text_search | | Auth | built-in | Vendor-claimed | 2026-07-20 | https://docs.nhost.io/products/auth | - | https://toolweight.com/compare/convex-alternatives#nhost--auth_included | | Hard limits | Postgres limits, plus Hasura's own query-depth and rate limiting on the managed tiers. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#nhost--hard_limits | | Cold start | - | Unknown | - | - | Node function cold start not verified. | https://toolweight.com/compare/convex-alternatives#nhost--cold_start | | Function timeout | 3min | Vendor-claimed | 2026-11-07 | https://nhost.io/pricing | - | https://toolweight.com/compare/convex-alternatives#nhost--function_timeout | | Exit cost | 2 | Inferred | - | - | Postgres plus open-source Hasura. Lift the database with pg_dump and run Hasura yourself, and the GraphQL documents in your app keep working, a genuinely cheap exit that few people notice. | https://toolweight.com/compare/convex-alternatives#nhost--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://docs.nhost.io/platform/self-hosting | - | https://toolweight.com/compare/convex-alternatives#nhost--self_hostable | | Bulk export | ● | Inferred | - | - | Direct Postgres access. | https://toolweight.com/compare/convex-alternatives#nhost--bulk_export | | Raw SQL | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#nhost--raw_sql | | Schema changes | sql-migrations | Inferred | - | - | Hasura migrations plus metadata, both versioned in your repo. | https://toolweight.com/compare/convex-alternatives#nhost--schema_migrations | | MCP server | ● | Inferred | - | - | An MCP server is published; coverage not verified. | https://toolweight.com/compare/convex-alternatives#nhost--mcp_server | | Agent fit | 3 | Inferred | - | - | Schema and metadata live in the repo, which helps, but GraphQL codegen and Hasura permissions add moving parts an agent must keep in sync. | https://toolweight.com/compare/convex-alternatives#nhost--agent_fit | | Pricing model | flat per project + usage | Inferred | - | https://nhost.io/pricing | - | https://toolweight.com/compare/convex-alternatives#nhost--pricing_model | | Entry price | $25/mo | Inferred | - | https://nhost.io/pricing | Pro tier, per project. Verify, Nhost has re-cut its plans more than once. | https://toolweight.com/compare/convex-alternatives#nhost--entry_price | | Egress metered | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#nhost--egress_billing | | GitHub stars | 8,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#nhost--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#nhost--backing | | Positioning | The open-source Firebase alternative, with GraphQL. | Vendor-claimed | 2026-07-20 | https://nhost.io | - | https://toolweight.com/compare/convex-alternatives#nhost--positioning | **Verdict.** An underrated exit: Postgres plus open-source Hasura both survive leaving, if you like GraphQL and quiet projects. **Pick it when** - Teams already committed to GraphQL and Hasura - Projects wanting managed convenience with a fully open stack underneath - Anyone who wants Supabase's portability but prefers subscriptions to change feeds ### Zero {#rocicorp-zero} Sync engine that puts a queryable client cache in front of your own Postgres. | | | | --- | --- | | Site | https://zero.rocicorp.dev | | Docs | https://zero.rocicorp.dev/docs | | Repo | https://github.com/rocicorp/mono | | Company | Rocicorp | | Founded | 2019 | | Funding | Venture-backed | | Open source | Yes | | Profile | https://toolweight.com/tools/rocicorp-zero | | Score (default weights) | 70.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs | ZQL queries resolve from a client-side cache and update as zero-cache replicates changes out of Postgres. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--reactivity_model | | TS inference | ● | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs/zero-schema | Schema defined in TypeScript, inferred through ZQL results. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--ts_inference | | Transactions | mvcc | Inferred | - | - | Custom mutators run server-side inside a real Postgres transaction; the client applies a speculative version first. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--transaction_semantics | | Local-first sync | ● | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--local_first_sync | | Optimistic writes | ● | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs | Speculative mutations with server rebase, the core of the design, not an add-on. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--optimistic_updates | | Cron & scheduling | ○ | Inferred | - | - | Not a backend; bring your own. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--scheduled_functions | | File storage | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--file_storage | | Vector search | ◐ | Inferred | - | - | Whatever your own Postgres has; Zero does not sync it. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--vector_search | | Full-text search | ◐ | Inferred | - | - | Available in your Postgres, outside the sync path. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--full_text_search | | Auth | bring-your-own | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs/auth | Verifies your JWT; permissions are declared against its claims. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--auth_included | | Hard limits | Client cache size is the practical ceiling, the query set you sync has to fit on the device. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--hard_limits | | Cold start | - | Unknown | - | - | zero-cache is a long-running process you operate. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--cold_start | | Function timeout | - | Unknown | - | - | Mutators run on your own server. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--function_timeout | | Exit cost | 3 | Inferred | - | - | Your Postgres is never given up: schema, data and writes stay in SQL you own. Leaving means deleting the sync layer and rewriting the read path from ZQL back to queries, real work, but it never touches your data model. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev/docs/deployment | Self-hosting zero-cache is the primary deployment model. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--self_hostable | | Bulk export | ● | Inferred | - | - | It is your Postgres. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--bulk_export | | Raw SQL | ● | Inferred | - | - | Directly against your own database, though writes should go through mutators to stay consistent with connected clients. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--raw_sql | | Schema changes | sql-migrations | Inferred | - | - | Your own Postgres migrations, plus a Zero schema that has to be kept in step. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--schema_migrations | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--mcp_server | | Agent fit | 3 | Inferred | - | - | Typed and in-repo, but the operational surface, replication, cache deployment, is not something an agent finishes alone. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--agent_fit | | Pricing model | free (self-host) | Inferred | - | - | You pay for the machines running zero-cache and Postgres. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--pricing_model | | Entry price | $0/mo | Inferred | - | - | No hosted product priced at time of writing; costs are infrastructure. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--entry_price | | Egress metered | ○ | Inferred | - | - | Your infrastructure, your bandwidth bill. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--egress_billing | | GitHub stars | 3,000 | Inferred | - | - | rocicorp/mono, approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--backing | | Positioning | A general-purpose sync engine for the web. | Vendor-claimed | 2026-07-20 | https://zero.rocicorp.dev | - | https://toolweight.com/compare/convex-alternatives#rocicorp-zero--positioning | **Verdict.** Instant local reads without surrendering the database; a layer, not a platform, that you operate yourself. **Pick it when** - Teams with an existing Postgres who want a UI that feels local - Apps where snappy reads matter but ownership of the data model is non-negotiable - Adding sync incrementally rather than rewriting onto a backend platform ### PocketBase {#pocketbase} One Go binary: SQLite database, auth, file storage, realtime and an admin UI. | | | | --- | --- | | Site | https://pocketbase.io | | Docs | https://pocketbase.io/docs/ | | Repo | https://github.com/pocketbase/pocketbase | | Company | PocketBase | | Founded | 2022 | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/pocketbase | | Score (default weights) | 66.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://pocketbase.io/docs/api-realtime/ | Server-sent events on collection changes. | https://toolweight.com/compare/convex-alternatives#pocketbase--reactivity_model | | TS inference | ◐ | Community-reported | - | - | The SDK is typed; collection types come from community typegen tools, not first-party inference. | https://toolweight.com/compare/convex-alternatives#pocketbase--ts_inference | | Transactions | serialisable | Inferred | - | - | SQLite in WAL mode: one writer at a time, commits serialised. Fine until write concurrency is the bottleneck. | https://toolweight.com/compare/convex-alternatives#pocketbase--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#pocketbase--local_first_sync | | Optimistic writes | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#pocketbase--optimistic_updates | | Cron & scheduling | ◐ | Inferred | - | - | Cron jobs are available from Go or the embedded JS hooks; there is no managed scheduler product. | https://toolweight.com/compare/convex-alternatives#pocketbase--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://pocketbase.io/docs/files-handling/ | Local disk or any S3-compatible bucket. | https://toolweight.com/compare/convex-alternatives#pocketbase--file_storage | | Vector search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#pocketbase--vector_search | | Full-text search | ◐ | Inferred | - | - | Filter expressions with LIKE. SQLite FTS is reachable from hooks but not exposed through the collection API. | https://toolweight.com/compare/convex-alternatives#pocketbase--full_text_search | | Auth | built-in | Vendor-claimed | 2026-07-20 | https://pocketbase.io/docs/authentication/ | - | https://toolweight.com/compare/convex-alternatives#pocketbase--auth_included | | Hard limits | One machine. SQLite tops out near a billion bytes per value and a single concurrent writer; everything else is your disk and RAM. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#pocketbase--hard_limits | | Cold start | 0ms | Inferred | - | - | One always-on process; there is nothing to spin up. | https://toolweight.com/compare/convex-alternatives#pocketbase--cold_start | | Function timeout | - | Unknown | - | - | Hooks run in your own process, no platform-imposed ceiling. | https://toolweight.com/compare/convex-alternatives#pocketbase--function_timeout | | Exit cost | 3 | Inferred | - | - | The data is a SQLite file you already have, which is the cheapest extraction on this page. The rewrite is the client SDK and the collection rules DSL, which touch every call site. | https://toolweight.com/compare/convex-alternatives#pocketbase--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://pocketbase.io/docs/going-to-production/ | Self-hosting is the only option; there is no vendor cloud. | https://toolweight.com/compare/convex-alternatives#pocketbase--self_hostable | | Bulk export | ● | Inferred | - | - | Copy the SQLite file. | https://toolweight.com/compare/convex-alternatives#pocketbase--bulk_export | | Raw SQL | ● | Inferred | - | - | Available from Go and JS hooks, and directly against the file. | https://toolweight.com/compare/convex-alternatives#pocketbase--raw_sql | | Schema changes | declarative-push | Vendor-claimed | 2026-07-20 | https://pocketbase.io/docs/go-migrations/ | Console edits auto-generate migration files you commit. | https://toolweight.com/compare/convex-alternatives#pocketbase--schema_migrations | | MCP server | ○ | Inferred | - | - | No official server; community implementations exist. | https://toolweight.com/compare/convex-alternatives#pocketbase--mcp_server | | Agent fit | 3 | Inferred | - | - | A single binary and a local database are easy for an agent to drive, but the schema lives in the admin UI. | https://toolweight.com/compare/convex-alternatives#pocketbase--agent_fit | | Pricing model | free (self-host only) | Vendor-claimed | 2026-07-20 | https://pocketbase.io | - | https://toolweight.com/compare/convex-alternatives#pocketbase--pricing_model | | Entry price | $0/mo | Vendor-claimed | 2026-07-20 | https://pocketbase.io | MIT-licensed software; your only cost is the box, realistically a $5 VPS. | https://toolweight.com/compare/convex-alternatives#pocketbase--entry_price | | Egress metered | ○ | Inferred | - | - | Whatever your host charges you. | https://toolweight.com/compare/convex-alternatives#pocketbase--egress_billing | | GitHub stars | 48,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#pocketbase--github_stars | | Backing | solo-maintainer | Community-reported | - | - | Primarily one maintainer. So far that has been a stability advantage rather than a liability. | https://toolweight.com/compare/convex-alternatives#pocketbase--backing | | Positioning | Open-source backend in one file. | Vendor-claimed | 2026-07-20 | https://pocketbase.io | - | https://toolweight.com/compare/convex-alternatives#pocketbase--positioning | **Verdict.** Absurd value for single-machine workloads with the easiest extraction here; the ceiling is one writer, one box. **Pick it when** - Internal tools and side projects where one VPS is plenty - Anyone who wants the entire backend to be a file they can copy - Air-gapped or on-premises deployments ### Convex {#convex} Reactive TypeScript backend: database, functions and live queries in one project. | | | | --- | --- | | Site | https://www.convex.dev | | Docs | https://docs.convex.dev | | Repo | https://github.com/get-convex/convex-backend | | Company | Convex, Inc. | | Founded | 2021 | | Funding | Venture-backed | | Open source | Yes (FSL-1.1-Apache-2.0) | | Profile | https://toolweight.com/tools/convex | | Score (default weights) | 65.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/functions/query-functions | Query results are invalidated and re-pushed by the server when a dependent write commits; no subscription code. | https://toolweight.com/compare/convex-alternatives#convex--reactivity_model | | TS inference | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/database/schemas | - | https://toolweight.com/compare/convex-alternatives#convex--ts_inference | | Transactions | occ | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/database/advanced/occ | Optimistic concurrency with automatic retries; mutations are serialisable in effect. | https://toolweight.com/compare/convex-alternatives#convex--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | Optimistic updates and a live cache, but no offline query engine or write reconciliation. | https://toolweight.com/compare/convex-alternatives#convex--local_first_sync | | Optimistic writes | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/client/react/optimistic-updates | - | https://toolweight.com/compare/convex-alternatives#convex--optimistic_updates | | Cron & scheduling | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/scheduling | Declarative crons plus one-off scheduling from inside mutations. | https://toolweight.com/compare/convex-alternatives#convex--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/file-storage | - | https://toolweight.com/compare/convex-alternatives#convex--file_storage | | Vector search | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/search/vector-search | - | https://toolweight.com/compare/convex-alternatives#convex--vector_search | | Full-text search | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/search | - | https://toolweight.com/compare/convex-alternatives#convex--full_text_search | | Auth | first-party-addon | Inferred | - | - | Convex Auth is an official library you install; Clerk and Auth0 remain first-class integrations. | https://toolweight.com/compare/convex-alternatives#convex--auth_included | | Hard limits | 1 MiB per document; 32,000 documents or 16 MiB scanned per query; queries and mutations capped at 1s of user-code compute. | Vendor-claimed | 2026-11-06 | https://docs.convex.dev/production/state/limits | - | https://toolweight.com/compare/convex-alternatives#convex--hard_limits | | Cold start | 0ms | Inferred | - | - | Functions run in a warm V8 isolate pool; no user-visible cold path on paid tiers. | https://toolweight.com/compare/convex-alternatives#convex--cold_start | | Function timeout | 10min | Inferred | - | - | Actions get roughly 10 minutes. Queries and mutations are capped near 1 second, the headline does not apply to database work. | https://toolweight.com/compare/convex-alternatives#convex--function_timeout | | Exit cost | 4 | Inferred | - | - | Proprietary query builder plus proprietary runtime. Data exports cleanly via `npx convex export`, but every read, write, subscription and the reactive render model is rewritten. Self-hosting bounds vendor risk, not exit cost. | https://toolweight.com/compare/convex-alternatives#convex--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/self-hosting | convex-backend is FSL-1.1-Apache-2.0: the licence converts to Apache-2.0 on a delay and restricts running it as a competing service. | https://toolweight.com/compare/convex-alternatives#convex--self_hostable | | Bulk export | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/database/import-export/ | `npx convex export` produces a zip of JSONL per table, self-serve. | https://toolweight.com/compare/convex-alternatives#convex--bulk_export | | Raw SQL | ○ | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/database | - | https://toolweight.com/compare/convex-alternatives#convex--raw_sql | | Schema changes | declarative-push | Inferred | - | - | schema.ts is diffed and validated on deploy; data backfills are hand-written mutations. | https://toolweight.com/compare/convex-alternatives#convex--schema_migrations | | MCP server | ● | Vendor-claimed | 2026-07-20 | https://docs.convex.dev/ai/convex-mcp-server | - | https://toolweight.com/compare/convex-alternatives#convex--mcp_server | | Agent fit | 5 | Inferred | - | - | Schema, functions and client types in one repo, a local dev loop, and type errors that point at the fix. The best agent target on this page. | https://toolweight.com/compare/convex-alternatives#convex--agent_fit | | Pricing model | per-seat + usage | Vendor-claimed | 2026-07-20 | https://www.convex.dev/pricing | - | https://toolweight.com/compare/convex-alternatives#convex--pricing_model | | Entry price | $25/mo | Vendor-claimed | 2026-07-20 | https://www.convex.dev/pricing | Professional is priced per team member, so a five-person team starts at five times this before usage. | https://toolweight.com/compare/convex-alternatives#convex--entry_price | | Egress metered | ● | Vendor-claimed | 2026-11-06 | https://www.convex.dev/pricing | - | https://toolweight.com/compare/convex-alternatives#convex--egress_billing | | GitHub stars | 8,000 | Inferred | - | - | convex-backend, approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#convex--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#convex--backing | | Positioning | The open-source reactive database for app developers. | Vendor-claimed | 2026-07-20 | https://www.convex.dev | - | https://toolweight.com/compare/convex-alternatives#convex--positioning | **Verdict.** Fastest empty-repo-to-realtime path here, but a 4 on exit cost with no SQL escape hatch. **Pick it when** - Small teams shipping realtime-shaped product fast - Codebases where a coding agent does most of the plumbing - Apps whose lifespan is short enough that the exit never arrives ### ElectricSQL {#electricsql} Postgres read-path sync: stream subsets of your own database to clients over HTTP. | | | | --- | --- | | Site | https://electric-sql.com | | Docs | https://electric-sql.com/docs | | Repo | https://github.com/electric-sql/electric | | Company | ElectricSQL | | Founded | 2021 | | Funding | Venture-backed | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/electricsql | | Score (default weights) | 64.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://electric-sql.com/docs/guides/shapes | Shapes stream over HTTP with long-polling semantics and CDN caching. Reads only. | https://toolweight.com/compare/convex-alternatives#electricsql--reactivity_model | | TS inference | ◐ | Inferred | - | - | Shape results are typed if you type them; there is no schema-to-client inference. | https://toolweight.com/compare/convex-alternatives#electricsql--ts_inference | | Transactions | mvcc | Inferred | - | - | Your Postgres. Electric never handles writes. | https://toolweight.com/compare/convex-alternatives#electricsql--transaction_semantics | | Local-first sync | ◐ | Vendor-claimed | 2026-07-20 | https://electric-sql.com/docs | Read-path sync only, writes go through your existing API, and reconciling them is your design problem. | https://toolweight.com/compare/convex-alternatives#electricsql--local_first_sync | | Optimistic writes | ◐ | Inferred | - | - | Documented patterns rather than a first-party API. | https://toolweight.com/compare/convex-alternatives#electricsql--optimistic_updates | | Cron & scheduling | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--scheduled_functions | | File storage | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--file_storage | | Vector search | ◐ | Inferred | - | - | Available in your Postgres; not part of Electric. | https://toolweight.com/compare/convex-alternatives#electricsql--vector_search | | Full-text search | ◐ | Inferred | - | - | Available in your Postgres; not part of Electric. | https://toolweight.com/compare/convex-alternatives#electricsql--full_text_search | | Auth | bring-your-own | Vendor-claimed | 2026-11-06 | https://electric.ax/docs/guides/auth | - | https://toolweight.com/compare/convex-alternatives#electricsql--auth_included | | Hard limits | Shape size, a shape has to be small enough to hold on the client and cheap enough to re-materialise on the server. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--hard_limits | | Cold start | - | Unknown | - | - | Electric is a long-running sync service, not a function runtime. | https://toolweight.com/compare/convex-alternatives#electricsql--cold_start | | Function timeout | - | Unknown | - | - | No function runtime. | https://toolweight.com/compare/convex-alternatives#electricsql--function_timeout | | Exit cost | 2 | Inferred | - | - | The lightest commitment here. Your Postgres, schema, writes and API are untouched; removing Electric means replacing shape subscriptions with fetches. Nothing about your data model was ever Electric-shaped. | https://toolweight.com/compare/convex-alternatives#electricsql--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://electric-sql.com/docs/guides/deployment | Apache-2.0; a single service beside your Postgres. | https://toolweight.com/compare/convex-alternatives#electricsql--self_hostable | | Bulk export | ● | Inferred | - | - | It is your Postgres. | https://toolweight.com/compare/convex-alternatives#electricsql--bulk_export | | Raw SQL | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--raw_sql | | Schema changes | sql-migrations | Inferred | - | - | Your own migrations; Electric follows the logical replication stream. | https://toolweight.com/compare/convex-alternatives#electricsql--schema_migrations | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--mcp_server | | Agent fit | 2 | Inferred | - | - | A minimal surface, but the agent must still assemble the write path, auth proxy and client store, most of the app is not Electric. | https://toolweight.com/compare/convex-alternatives#electricsql--agent_fit | | Pricing model | free (self-host) + usage-based cloud | Vendor-claimed | 2026-11-06 | https://electric.ax/pricing | - | https://toolweight.com/compare/convex-alternatives#electricsql--pricing_model | | Entry price | $0/mo | Vendor-claimed | 2026-11-07 | https://electric.ax/pricing | Pay-as-you-go has no monthly fee, usage-billed (writes $1/million, retention $0.10/GB-month). Next fixed tier is Pro at $249/mo. | https://toolweight.com/compare/convex-alternatives#electricsql--entry_price | | Egress metered | ◐ | Inferred | - | - | Self-hosted, your own bandwidth. On the cloud, data transferred is a billed dimension. | https://toolweight.com/compare/convex-alternatives#electricsql--egress_billing | | GitHub stars | 8,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#electricsql--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#electricsql--backing | | Positioning | Postgres sync engine, sync little subsets of your data into local apps. | Vendor-claimed | 2026-07-20 | https://electric-sql.com | - | https://toolweight.com/compare/convex-alternatives#electricsql--positioning | **Verdict.** The narrowest, best-behaved tool: read-path sync over your own Postgres with an exit close to free. **Pick it when** - Existing Postgres apps that need live read data without a rewrite - Teams that already have a write API they are happy with - Anyone who wants sync without adopting a backend platform ### Neon + Drizzle {#neon-drizzle} The DIY baseline: serverless Postgres, a typed SQL query builder, nothing else. | | | | --- | --- | | Site | https://neon.com | | Docs | https://orm.drizzle.team/docs/overview | | Repo | https://github.com/drizzle-team/drizzle-orm | | Company | Neon (Databricks) / Drizzle Team | | Founded | 2021 | | Funding | Acquired by Databricks, 2025 | | Open source | Yes (Apache-2.0) | | Profile | https://toolweight.com/tools/neon-drizzle | | Score (default weights) | 63.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | manual | Inferred | - | - | Nothing is pushed. LISTEN/NOTIFY exists, but you build the delivery. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--reactivity_model | | TS inference | ● | Vendor-claimed | 2026-07-20 | https://orm.drizzle.team/docs/overview | Schema is TypeScript and query results are inferred, with no codegen step. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--ts_inference | | Transactions | mvcc | Vendor-claimed | 2026-07-20 | https://neon.com/docs | Postgres, with every isolation level available. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--local_first_sync | | Optimistic writes | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--optimistic_updates | | Cron & scheduling | ○ | Inferred | - | - | pg_cron on the database, but no application scheduler, you bring a worker. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--scheduled_functions | | File storage | ○ | Inferred | - | - | Pair it with object storage yourself. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--file_storage | | Vector search | ● | Vendor-claimed | 2026-07-20 | https://neon.com/docs/extensions/pgvector | pgvector. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--vector_search | | Full-text search | ● | Inferred | - | - | Postgres tsvector. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--full_text_search | | Auth | bring-your-own | Inferred | - | - | Neon has shipped auth adjacencies, but the baseline here assumes you supply it. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--auth_included | | Hard limits | Postgres limits. The operational ceiling is your compute size and connection count, both dials you control. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--hard_limits | | Cold start | 500ms | Vendor-claimed | 2026-07-20 | https://neon.com/docs/introduction/auto-suspend | Compute resume after auto-suspend; sub-second in practice. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--cold_start | | Function timeout | - | Unknown | - | - | No function runtime, you run your own server. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--function_timeout | | Exit cost | 1 | Inferred | - | - | The reference point. Standard Postgres over the wire and SQL you wrote yourself: leaving is a connection string and a pg_dump. Every other row on this page is scored against this one. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--exit_cost | | Self-hostable | ◐ | Inferred | - | - | Neon's storage engine is Apache-2.0 but running it is a project. In practice you self-host by running ordinary Postgres, which is rather the point. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--self_hostable | | Bulk export | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--bulk_export | | Raw SQL | ● | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--raw_sql | | Schema changes | sql-migrations | Vendor-claimed | 2026-07-20 | https://orm.drizzle.team/docs/kit-overview | drizzle-kit generates reviewable SQL files. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--schema_migrations | | MCP server | ● | Vendor-claimed | 2026-07-20 | https://neon.com/docs/ai/neon-mcp-server | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--mcp_server | | Agent fit | 4 | Inferred | - | - | Typed schema in-repo, real migration files, and a database branch per agent run. What it lacks is plumbing, the agent writes the API layer itself. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--agent_fit | | Pricing model | flat + compute-hours + storage | Vendor-claimed | 2026-07-20 | https://neon.com/pricing | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--pricing_model | | Entry price | $0/mo | Vendor-claimed | 2026-11-06 | https://neon.com/pricing | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--entry_price | | Egress metered | ◐ | Inferred | - | - | Generous allowances rather than a per-GB line at small scale; verify at volume. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--egress_billing | | GitHub stars | 18,000 | Inferred | - | - | neondatabase/neon, approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--github_stars | | Backing | big-tech | Vendor-claimed | 2026-07-20 | https://neon.com/blog/neon-and-databricks | Acquired by Databricks in 2025. | https://toolweight.com/compare/convex-alternatives#neon-drizzle--backing | | Positioning | Serverless Postgres with branching, paired with a typed SQL query builder. | Vendor-claimed | 2026-07-20 | https://neon.com | - | https://toolweight.com/compare/convex-alternatives#neon-drizzle--positioning | **Verdict.** Not a competitor, the yardstick: you build everything yourself, but nothing you build is owned by anyone else. **Pick it when** - Teams that already know what backend they want to build - Applications expected to outlive several vendor relationships - Anyone whose realtime requirement is smaller than it first appeared ### InstantDB {#instantdb} Client-side reactive database with a relational graph model and instant sync. | | | | --- | --- | | Site | https://www.instantdb.com | | Docs | https://www.instantdb.com/docs | | Repo | https://github.com/instantdb/instant | | Company | InstantDB | | Founded | 2022 | | Funding | Venture-backed | | Open source | Yes | | Profile | https://toolweight.com/tools/instantdb | | Score (default weights) | 57.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs | Queries resolve against a local store and update as the server syncs. | https://toolweight.com/compare/convex-alternatives#instantdb--reactivity_model | | TS inference | ● | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs/modeling-data | Schema defined in TypeScript, inferred through InstaQL results. | https://toolweight.com/compare/convex-alternatives#instantdb--ts_inference | | Transactions | occ | Inferred | - | - | Transaction chunks apply atomically with server-side conflict detection. | https://toolweight.com/compare/convex-alternatives#instantdb--transaction_semantics | | Local-first sync | ● | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs | - | https://toolweight.com/compare/convex-alternatives#instantdb--local_first_sync | | Optimistic writes | ● | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs | Writes apply locally first by design; the default path, not an opt-in helper. | https://toolweight.com/compare/convex-alternatives#instantdb--optimistic_updates | | Cron & scheduling | ○ | Inferred | - | - | No server-side function runtime at all. | https://toolweight.com/compare/convex-alternatives#instantdb--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs/storage | - | https://toolweight.com/compare/convex-alternatives#instantdb--file_storage | | Vector search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#instantdb--vector_search | | Full-text search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#instantdb--full_text_search | | Auth | built-in | Vendor-claimed | 2026-11-06 | https://www.instantdb.com/docs/auth | - | https://toolweight.com/compare/convex-alternatives#instantdb--auth_included | | Hard limits | - | Unknown | - | - | No published per-record or per-query ceilings found. | https://toolweight.com/compare/convex-alternatives#instantdb--hard_limits | | Cold start | - | Unknown | - | - | No user-supplied function runtime to cold-start. | https://toolweight.com/compare/convex-alternatives#instantdb--cold_start | | Function timeout | - | Unknown | - | - | No server functions. | https://toolweight.com/compare/convex-alternatives#instantdb--function_timeout | | Exit cost | 4 | Inferred | - | - | InstaQL is a proprietary graph query language over a triple store with no SQL surface, and the local-first behaviour your UI depends on has no drop-in replacement. Open source lowers vendor risk, not the rewrite. | https://toolweight.com/compare/convex-alternatives#instantdb--exit_cost | | Self-hostable | ◐ | Community-reported | 2026-11-06 | - | The server is open source, but running it yourself is materially harder than using the cloud. | https://toolweight.com/compare/convex-alternatives#instantdb--self_hostable | | Bulk export | ◐ | Inferred | - | - | Admin SDK queries can page everything out; there is no single self-serve dump. | https://toolweight.com/compare/convex-alternatives#instantdb--bulk_export | | Raw SQL | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#instantdb--raw_sql | | Schema changes | declarative-push | Vendor-claimed | 2026-07-20 | https://www.instantdb.com/docs/modeling-data | CLI pushes the TypeScript schema. | https://toolweight.com/compare/convex-alternatives#instantdb--schema_migrations | | MCP server | ● | Inferred | - | - | An official MCP server is published for agent-driven app creation. | https://toolweight.com/compare/convex-alternatives#instantdb--mcp_server | | Agent fit | 4 | Inferred | - | - | A tiny typed surface an agent can hold in context, but with no server-side logic to write, some features cannot be finished on the backend at all. | https://toolweight.com/compare/convex-alternatives#instantdb--agent_fit | | Pricing model | flat + usage | Inferred | - | https://www.instantdb.com/pricing | - | https://toolweight.com/compare/convex-alternatives#instantdb--pricing_model | | Entry price | $30/mo | Inferred | - | https://www.instantdb.com/pricing | Approximate, the Pro tier has moved; verify before budgeting. | https://toolweight.com/compare/convex-alternatives#instantdb--entry_price | | Egress metered | - | Unknown | - | - | - | https://toolweight.com/compare/convex-alternatives#instantdb--egress_billing | | GitHub stars | 9,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#instantdb--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#instantdb--backing | | Positioning | A modern Firebase, a client-side database that syncs. | Vendor-claimed | 2026-07-20 | https://www.instantdb.com | - | https://toolweight.com/compare/convex-alternatives#instantdb--positioning | **Verdict.** The most pleasant DX for instant collaborative UIs; the missing server-side runtime is the constraint people hit. **Pick it when** - Multiplayer or collaborative UIs where every interaction must feel local - Front-end-heavy teams with no appetite for backend infrastructure - Prototypes that need presence, cursors and live editing on day one ### Appwrite {#appwrite} Open-source backend platform: databases, auth, storage, functions, self-hostable. | | | | --- | --- | | Site | https://appwrite.io | | Docs | https://appwrite.io/docs | | Repo | https://github.com/appwrite/appwrite | | Company | Appwrite | | Founded | 2019 | | Funding | Venture-backed | | Open source | Yes (BSD-3-Clause) | | Profile | https://toolweight.com/tools/appwrite | | Score (default weights) | 56.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://appwrite.io/docs/apis/realtime | Websocket subscription to document and file events, not to query results. | https://toolweight.com/compare/convex-alternatives#appwrite--reactivity_model | | TS inference | ◐ | Inferred | - | - | SDKs are typed and the CLI can generate types from your collections, but the schema lives in the console rather than your repo. | https://toolweight.com/compare/convex-alternatives#appwrite--ts_inference | | Transactions | batch-atomic | Vendor-claimed | 2026-11-06 | https://appwrite.io/docs/products/databases/transactions | - | https://toolweight.com/compare/convex-alternatives#appwrite--transaction_semantics | | Local-first sync | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#appwrite--local_first_sync | | Optimistic writes | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#appwrite--optimistic_updates | | Cron & scheduling | ● | Vendor-claimed | 2026-07-20 | https://appwrite.io/docs/products/functions | Cron schedules attached to functions. | https://toolweight.com/compare/convex-alternatives#appwrite--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://appwrite.io/docs/products/storage | - | https://toolweight.com/compare/convex-alternatives#appwrite--file_storage | | Vector search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#appwrite--vector_search | | Full-text search | ◐ | Inferred | - | - | Fulltext indexes on string attributes via the underlying MariaDB; no meaningful relevance ranking. | https://toolweight.com/compare/convex-alternatives#appwrite--full_text_search | | Auth | built-in | Vendor-claimed | 2026-11-06 | https://appwrite.io/docs/products/auth | - | https://toolweight.com/compare/convex-alternatives#appwrite--auth_included | | Hard limits | Attribute count per collection is bounded by the underlying MariaDB row width, wide documents fail at creation time rather than at scale. | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#appwrite--hard_limits | | Cold start | 1s | Inferred | - | - | Function containers spin up per invocation unless kept warm; order of a second. | https://toolweight.com/compare/convex-alternatives#appwrite--cold_start | | Function timeout | 15min | Inferred | - | - | Cloud maximum; the default is far lower and set per function. | https://toolweight.com/compare/convex-alternatives#appwrite--function_timeout | | Exit cost | 3 | Inferred | - | - | Open source and self-hostable, and if you host it you own the MariaDB underneath. But every read and write goes through Appwrite's SDK and permissions model, so the client rewrite is total even though the data is free. | https://toolweight.com/compare/convex-alternatives#appwrite--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://appwrite.io/docs/advanced/self-hosting | - | https://toolweight.com/compare/convex-alternatives#appwrite--self_hostable | | Bulk export | ◐ | Inferred | - | - | Self-hosted, you dump MariaDB. On Cloud you paginate collections through the API yourself. | https://toolweight.com/compare/convex-alternatives#appwrite--bulk_export | | Raw SQL | ○ | Inferred | - | - | MariaDB is an implementation detail; the API does not expose it. | https://toolweight.com/compare/convex-alternatives#appwrite--raw_sql | | Schema changes | declarative-push | Inferred | - | - | appwrite.json plus CLI push, though the console remains the path of least resistance. | https://toolweight.com/compare/convex-alternatives#appwrite--schema_migrations | | MCP server | ● | Vendor-claimed | 2026-07-20 | https://appwrite.io/docs/tooling/mcp | - | https://toolweight.com/compare/convex-alternatives#appwrite--mcp_server | | Agent fit | 3 | Inferred | - | - | Good SDK coverage, but console-first configuration means an agent cannot see or change the schema from the repo alone. | https://toolweight.com/compare/convex-alternatives#appwrite--agent_fit | | Pricing model | per-seat + usage | Vendor-claimed | 2026-07-20 | https://appwrite.io/pricing | - | https://toolweight.com/compare/convex-alternatives#appwrite--pricing_model | | Entry price | $15/mo | Vendor-claimed | 2026-07-20 | https://appwrite.io/pricing | Pro is priced per member per month. | https://toolweight.com/compare/convex-alternatives#appwrite--entry_price | | Egress metered | ● | Vendor-claimed | 2026-07-20 | https://appwrite.io/pricing | Bandwidth metered beyond the plan allowance. | https://toolweight.com/compare/convex-alternatives#appwrite--egress_billing | | GitHub stars | 52,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#appwrite--github_stars | | Backing | venture-backed | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#appwrite--backing | | Positioning | Build like a team of hundreds, an open-source backend platform. | Vendor-claimed | 2026-07-20 | https://appwrite.io | - | https://toolweight.com/compare/convex-alternatives#appwrite--positioning | **Verdict.** The most complete self-hostable option, held back by console-first schema and the weakest transaction story here. **Pick it when** - Teams that must run the whole backend on their own infrastructure - Apps with many client platforms, the SDK matrix is the broadest here - Products where auth provider breadth matters more than query power ### Firebase {#firebase} Google's app platform: Firestore documents, auth, functions, deep mobile SDKs. | | | | --- | --- | | Site | https://firebase.google.com | | Docs | https://firebase.google.com/docs | | Company | Google | | Founded | 2011 | | Open source | No | | Profile | https://toolweight.com/tools/firebase | | Score (default weights) | 51.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/firestore/query-data/listen | Per-query snapshot listeners with delta updates, the original, and still very good. | https://toolweight.com/compare/convex-alternatives#firebase--reactivity_model | | TS inference | ○ | Inferred | - | - | Firestore is schemaless; converters are hand-written. | https://toolweight.com/compare/convex-alternatives#firebase--ts_inference | | Transactions | occ | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/firestore/manage-data/transactions | Client SDKs use optimistic concurrency with retries; server SDKs take pessimistic locks. Bounded to 500 writes per transaction. | https://toolweight.com/compare/convex-alternatives#firebase--transaction_semantics | | Local-first sync | ◐ | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/firestore/manage-data/enable-offline | Real offline persistence with local query evaluation and a write queue; conflict resolution is last-write-wins. | https://toolweight.com/compare/convex-alternatives#firebase--local_first_sync | | Optimistic writes | ● | Inferred | - | - | Local writes hit listeners immediately, before the server acknowledges. | https://toolweight.com/compare/convex-alternatives#firebase--optimistic_updates | | Cron & scheduling | ● | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/functions/schedule-functions | - | https://toolweight.com/compare/convex-alternatives#firebase--scheduled_functions | | File storage | ● | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/storage | - | https://toolweight.com/compare/convex-alternatives#firebase--file_storage | | Vector search | ● | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/firestore/vector-search | - | https://toolweight.com/compare/convex-alternatives#firebase--vector_search | | Full-text search | ○ | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/firestore/solutions/search | The documented answer is to attach Algolia or Elastic. | https://toolweight.com/compare/convex-alternatives#firebase--full_text_search | | Auth | built-in | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/auth | - | https://toolweight.com/compare/convex-alternatives#firebase--auth_included | | Hard limits | 1 MiB per document; about one sustained write per second per document; 500 operations per transaction; no joins. | Inferred | - | - | The write-per-document ceiling is the one that reshapes real schemas. | https://toolweight.com/compare/convex-alternatives#firebase--hard_limits | | Cold start | 2s | Community-reported | - | - | Node Cloud Functions cold start, commonly 1-3s. Minimum instances remove it for a fee. | https://toolweight.com/compare/convex-alternatives#firebase--cold_start | | Function timeout | 1h | Vendor-claimed | 2026-11-06 | https://firebase.google.com/docs/functions/quotas | - | https://toolweight.com/compare/convex-alternatives#firebase--function_timeout | | Exit cost | 5 | Inferred | - | - | Proprietary query API, proprietary runtime, a proprietary rules language, no self-host, and a managed export format only Firestore's importer reads. Getting the data out is its own project before the rewrite starts. | https://toolweight.com/compare/convex-alternatives#firebase--exit_cost | | Self-hostable | ○ | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs | The local emulator suite is for development only. | https://toolweight.com/compare/convex-alternatives#firebase--self_hostable | | Bulk export | ◐ | Inferred | - | - | Managed export writes a format only Firestore reads. An open dump means paginating collections through the Admin SDK yourself. | https://toolweight.com/compare/convex-alternatives#firebase--bulk_export | | Raw SQL | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#firebase--raw_sql | | Schema changes | schemaless | Inferred | - | - | No schema to migrate; shape changes are handled in application code and backfill scripts. | https://toolweight.com/compare/convex-alternatives#firebase--schema_migrations | | MCP server | ● | Vendor-claimed | 2026-07-20 | https://firebase.google.com/docs/cli/mcp-server | - | https://toolweight.com/compare/convex-alternatives#firebase--mcp_server | | Agent fit | 2 | Inferred | - | - | Untyped documents, console-configured indexes and a string rules DSL give an agent very little to check itself against. | https://toolweight.com/compare/convex-alternatives#firebase--agent_fit | | Pricing model | usage only (Blaze pay-as-you-go) | Vendor-claimed | 2026-11-06 | https://firebase.google.com/pricing | - | https://toolweight.com/compare/convex-alternatives#firebase--pricing_model | | Entry price | $0/mo | Vendor-claimed | 2026-07-20 | https://firebase.google.com/pricing | No base fee on Blaze; you pay per read, write, delete, GB stored and GB out. | https://toolweight.com/compare/convex-alternatives#firebase--entry_price | | Egress metered | ● | Vendor-claimed | 2026-11-06 | https://firebase.google.com/pricing | - | https://toolweight.com/compare/convex-alternatives#firebase--egress_billing | | GitHub stars | - | Unknown | - | - | Closed product; the JS SDK repository is not a meaningful proxy. | https://toolweight.com/compare/convex-alternatives#firebase--github_stars | | Backing | big-tech | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#firebase--backing | | Positioning | Google's platform for building and running app backends. | Vendor-claimed | 2026-07-20 | https://firebase.google.com | - | https://toolweight.com/compare/convex-alternatives#firebase--positioning | **Verdict.** Best offline story and mobile SDKs, worst exit on the page; fine only if you never migrate. **Pick it when** - Consumer mobile apps where offline behaviour is the product - Teams already inside Google Cloud with the operational habits to match - Prototypes that will be thrown away rather than migrated ### Triplit {#triplit} Full-stack database that syncs: local cache, server, relational queries, offline. | | | | --- | --- | | Site | https://www.triplit.dev | | Docs | https://www.triplit.dev/docs | | Repo | https://github.com/aspen-cloud/triplit | | Company | Triplit | | Founded | 2023 | | Open source | Yes | | Profile | https://toolweight.com/tools/triplit | | Score (default weights) | 50.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Reactivity | push | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs | Subscriptions to relational queries, resolved against the local cache first. | https://toolweight.com/compare/convex-alternatives#triplit--reactivity_model | | TS inference | ● | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs/schemas | Schema in TypeScript, inferred through the query builder. | https://toolweight.com/compare/convex-alternatives#triplit--ts_inference | | Transactions | occ | Inferred | - | - | Client transactions apply locally then reconcile server-side. | https://toolweight.com/compare/convex-alternatives#triplit--transaction_semantics | | Local-first sync | ● | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs | Offline-capable local store with partial replication. | https://toolweight.com/compare/convex-alternatives#triplit--local_first_sync | | Optimistic writes | ● | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs | - | https://toolweight.com/compare/convex-alternatives#triplit--optimistic_updates | | Cron & scheduling | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--scheduled_functions | | File storage | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--file_storage | | Vector search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--vector_search | | Full-text search | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--full_text_search | | Auth | bring-your-own | Inferred | - | - | Verifies a JWT you issue elsewhere; rules are written against its claims. | https://toolweight.com/compare/convex-alternatives#triplit--auth_included | | Hard limits | - | Unknown | - | - | No published record or query ceilings found. | https://toolweight.com/compare/convex-alternatives#triplit--hard_limits | | Cold start | - | Unknown | - | - | No user function runtime. | https://toolweight.com/compare/convex-alternatives#triplit--cold_start | | Function timeout | - | Unknown | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--function_timeout | | Exit cost | 4 | Inferred | - | - | A triple store with its own query builder and no SQL surface, and the offline sync your UI relies on has no equivalent to swap in. Self-hostable, which caps vendor risk, but the client rewrite is complete. | https://toolweight.com/compare/convex-alternatives#triplit--exit_cost | | Self-hostable | ● | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs/self-hosting | - | https://toolweight.com/compare/convex-alternatives#triplit--self_hostable | | Bulk export | ◐ | Inferred | - | - | Scriptable through the admin API; no documented one-shot dump. | https://toolweight.com/compare/convex-alternatives#triplit--bulk_export | | Raw SQL | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--raw_sql | | Schema changes | declarative-push | Vendor-claimed | 2026-07-20 | https://www.triplit.dev/docs/schemas | - | https://toolweight.com/compare/convex-alternatives#triplit--schema_migrations | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--mcp_server | | Agent fit | 3 | Inferred | - | - | Fully typed and in-repo, which agents like; a thin documentation corpus, which they do not. | https://toolweight.com/compare/convex-alternatives#triplit--agent_fit | | Pricing model | - | Unknown | - | - | Hosted pricing not verified. | https://toolweight.com/compare/convex-alternatives#triplit--pricing_model | | Entry price | - | Unknown | - | - | Self-hosting is free; the hosted tier's current price was not confirmed. | https://toolweight.com/compare/convex-alternatives#triplit--entry_price | | Egress metered | - | Unknown | - | - | - | https://toolweight.com/compare/convex-alternatives#triplit--egress_billing | | GitHub stars | 4,000 | Inferred | - | - | Approximate as of mid-2026. | https://toolweight.com/compare/convex-alternatives#triplit--github_stars | | Backing | venture-backed | Inferred | - | - | Small team; treat continuity as a real risk factor. | https://toolweight.com/compare/convex-alternatives#triplit--backing | | Positioning | The full-stack database that syncs. | Vendor-claimed | 2026-07-20 | https://www.triplit.dev | - | https://toolweight.com/compare/convex-alternatives#triplit--positioning | **Verdict.** The most elegant local-first model here, but the smallest team, with no storage, auth or functions. **Pick it when** - Offline-first apps that need relational queries rather than document blobs - Teams happy to supply their own auth and file handling - Projects where sync correctness matters more than ecosystem size ## Methodology - Every cell written from vendor docs, pricing pages and hands-on SDK knowledge, then tagged with provenance - vendor-claimed cells come off a specific docs or pricing URL, dated to when last plausibly true - inferred cells are judgement calls or values reasoned from adjacent facts - Where a fact is genuinely unpublished, the cell is null and renders as an em dash rather than a guess - Prices are the lowest paid tier, monthly, in USD, excluding usage - Exit cost is the field this page exists for - A 1-5 judgement score, lower is better - Measures one thing: how much application code you rewrite to leave, assuming data is already extracted - Deliberately ignores how good, how cheap, or how likely to survive the platform is - A high score is not a verdict against a tool, it is the size of the bet you are placing - The five rungs are defined in the column tooltip; each score's reasoning sits in that tool's cell note ## FAQ ### Is Convex a good idea if I might need to leave later? - Only if you price the exit now - No SQL surface, so every query, mutation and subscription is rewritten on the way out - The reactive render model has no drop-in equivalent - Scores 4 of 5 on our exit-cost ladder - If the codebase may outlive the decision and you are unsure, start on Postgres ### Does self-hosting Convex remove the lock-in? - No, it removes vendor risk, a different problem - convex-backend is open under FSL-1.1-Apache-2.0 with documented self-hosting, so Convex disappearing cannot strand you - But self-hosted Convex still speaks the Convex query API - The cost of moving to something that is not Convex is unchanged - Exit cost and vendor risk are separate columns for a reason ### Supabase or Convex for a new TypeScript app? - Convex if the app is realtime-shaped and the team is small: faster first version, no subscription plumbing - Supabase if you want data in Postgres, need raw SQL, or expect BI tools to read the same database - The productivity gap is real but narrowing - The portability gap is not narrowing at all ### What is the actual difference between Zero and ElectricSQL? - Direction and scope - Electric streams read-only shapes out of Postgres over HTTP, says nothing about writes, you keep your own API - Zero syncs queries into a client cache and handles writes through custom mutators against your Postgres - Zero owns more of the loop - Electric is the smaller commitment; Zero gives more in return ### Is Firebase still a reasonable default in 2026? - For consumer mobile apps that will never migrate, yes: SDKs, offline persistence and Google's operations are hard to beat - For anything else it is the worst exit on this page - No self-host, a proprietary rules language, an export format only Firestore reads - A document model that shapes your schema around its query engine - Choose it deliberately, not by habit ### Which of these is genuinely local-first? - InstantDB, Triplit and Zero, with ElectricSQL covering the read half - All four keep a real client-side store, resolve queries locally and reconcile with the server - Firebase's offline persistence gets close for simple cases - Convex and Supabase are not local-first: fast realtime backends with optimistic-update helpers - That is a different guarantee once the network is gone ### How should a small team weight exit cost against speed? - By expected lifespan - Under twelve months and pre-product-market-fit, exit cost is nearly free and speed is everything: take Convex or Instant - Past that, rewriting a data layer costs engineer-months and the Postgres options claw it back - Convex charges its fee at the end, in one payment, and you cannot pay it early ## Sources | Source | Last verified | | --- | --- | | https://docs.convex.dev/functions/query-functions | 2026-07-20 | | https://docs.convex.dev/database/schemas | 2026-07-20 | | https://docs.convex.dev/database/advanced/occ | 2026-07-20 | | https://docs.convex.dev/client/react/optimistic-updates | 2026-07-20 | | https://docs.convex.dev/scheduling | 2026-07-20 | | https://docs.convex.dev/file-storage | 2026-07-20 | | https://docs.convex.dev/search/vector-search | 2026-07-20 | | https://docs.convex.dev/search | 2026-07-20 | | https://docs.convex.dev/production/state/limits | 2026-11-06 | | https://docs.convex.dev/self-hosting | 2026-07-20 | | https://docs.convex.dev/database/import-export/ | 2026-07-20 | | https://docs.convex.dev/database | 2026-07-20 | | https://docs.convex.dev/ai/convex-mcp-server | 2026-07-20 | | https://www.convex.dev/pricing | 2026-07-20 | | https://www.convex.dev | 2026-07-20 | | https://supabase.com/docs/guides/realtime | 2026-07-20 | | https://supabase.com/docs/guides/api/rest/generating-types | 2026-07-20 | | https://supabase.com/docs/guides/database | 2026-07-20 | | https://supabase.com/docs/guides/cron | 2026-07-20 | | https://supabase.com/docs/guides/storage | 2026-07-20 | | https://supabase.com/docs/guides/ai | 2026-07-20 | | https://supabase.com/docs/guides/database/full-text-search | 2026-07-20 | | https://supabase.com/docs/guides/auth | 2026-07-20 | | https://supabase.com/docs/guides/self-hosting | 2026-07-20 | | https://supabase.com/docs/guides/database/connecting-to-postgres | 2026-07-20 | | https://supabase.com/docs/guides/deployment/database-migrations | 2026-07-20 | | https://supabase.com/docs/guides/getting-started/mcp | 2026-07-20 | | https://supabase.com/pricing | 2026-07-20 | | https://supabase.com | 2026-07-20 | | https://firebase.google.com/docs/firestore/query-data/listen | 2026-07-20 | | https://firebase.google.com/docs/firestore/manage-data/transactions | 2026-07-20 | | https://firebase.google.com/docs/firestore/manage-data/enable-offline | 2026-07-20 | | https://firebase.google.com/docs/functions/schedule-functions | 2026-07-20 | | https://firebase.google.com/docs/storage | 2026-07-20 | | https://firebase.google.com/docs/firestore/vector-search | 2026-07-20 | | https://firebase.google.com/docs/firestore/solutions/search | 2026-07-20 | | https://firebase.google.com/docs/auth | 2026-07-20 | | https://firebase.google.com/docs/functions/quotas | 2026-11-06 | | https://firebase.google.com/docs | 2026-07-20 | | https://firebase.google.com/docs/cli/mcp-server | 2026-07-20 | | https://firebase.google.com/pricing | 2026-11-06 | | https://firebase.google.com | 2026-07-20 | | https://appwrite.io/docs/apis/realtime | 2026-07-20 | | https://appwrite.io/docs/products/databases/transactions | 2026-11-06 | | https://appwrite.io/docs/products/functions | 2026-07-20 | | https://appwrite.io/docs/products/storage | 2026-07-20 | | https://appwrite.io/docs/products/auth | 2026-11-06 | | https://appwrite.io/docs/advanced/self-hosting | 2026-07-20 | | https://appwrite.io/docs/tooling/mcp | 2026-07-20 | | https://appwrite.io/pricing | 2026-07-20 | | https://appwrite.io | 2026-07-20 | | https://pocketbase.io/docs/api-realtime/ | 2026-07-20 | | https://pocketbase.io/docs/files-handling/ | 2026-07-20 | | https://pocketbase.io/docs/authentication/ | 2026-07-20 | | https://pocketbase.io/docs/going-to-production/ | 2026-07-20 | | https://pocketbase.io/docs/go-migrations/ | 2026-07-20 | | https://pocketbase.io | 2026-07-20 | | https://www.instantdb.com/docs | 2026-07-20 | | https://www.instantdb.com/docs/modeling-data | 2026-07-20 | | https://www.instantdb.com/docs/storage | 2026-07-20 | | https://www.instantdb.com/docs/auth | 2026-11-06 | | https://www.instantdb.com/pricing | - | | https://www.instantdb.com | 2026-07-20 | | https://docs.nhost.io/products/database | 2026-07-20 | | https://docs.nhost.io/products/storage | 2026-07-20 | | https://docs.nhost.io/products/auth | 2026-07-20 | | https://nhost.io/pricing | 2026-11-07 | | https://docs.nhost.io/platform/self-hosting | 2026-07-20 | | https://nhost.io | 2026-07-20 | | https://www.triplit.dev/docs | 2026-07-20 | | https://www.triplit.dev/docs/schemas | 2026-07-20 | | https://www.triplit.dev/docs/self-hosting | 2026-07-20 | | https://www.triplit.dev | 2026-07-20 | | https://zero.rocicorp.dev/docs | 2026-07-20 | | https://zero.rocicorp.dev/docs/zero-schema | 2026-07-20 | | https://zero.rocicorp.dev/docs/auth | 2026-07-20 | | https://zero.rocicorp.dev/docs/deployment | 2026-07-20 | | https://zero.rocicorp.dev | 2026-07-20 | | https://electric-sql.com/docs/guides/shapes | 2026-07-20 | | https://electric-sql.com/docs | 2026-07-20 | | https://electric.ax/docs/guides/auth | 2026-11-06 | | https://electric-sql.com/docs/guides/deployment | 2026-07-20 | | https://electric.ax/pricing | 2026-11-06 | | https://electric-sql.com | 2026-07-20 | | https://orm.drizzle.team/docs/overview | 2026-07-20 | | https://neon.com/docs | 2026-07-20 | | https://neon.com/docs/extensions/pgvector | 2026-07-20 | | https://neon.com/docs/introduction/auto-suspend | 2026-07-20 | | https://orm.drizzle.team/docs/kit-overview | 2026-07-20 | | https://neon.com/docs/ai/neon-mcp-server | 2026-07-20 | | https://neon.com/pricing | 2026-07-20 | | https://neon.com/blog/neon-and-databricks | 2026-07-20 | | https://neon.com | 2026-07-20 | ## Cite this page > Convex ships fastest but is among the hardest to leave; Supabase, Nhost and Neon keep your data in ordinary Postgres. > > — Toolweight, https://toolweight.com/compare/convex-alternatives, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Database engines](https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql), Should I use SQLite, PostgreSQL or MySQL? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [S3-compatible storage](https://toolweight.com/compare/s3-compatible-storage), Which S3-compatible object storage provider is actually cheapest once egress is counted? - [Coding agents](https://toolweight.com/compare/coding-agents), Which AI coding agent should I use in 2026? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/convex-alternatives - Machine-readable: https://toolweight.com/compare/convex-alternatives.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Email sending API providers compared slug: email-sending-apis url: "https://toolweight.com/compare/email-sending-apis" question: Which email sending API is best for developers? tools: 13 fields: 25 last_verified: 2026-11-07 oldest_verified: 2026-05-10 median_verified: 2026-11-06 stale_values: 22 conflicting_values: 1 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 33% verify_cadence: 30d license: CC-BY-4.0 --- # Email sending APIs, ranked by time to first send > **Which email sending API is best for developers?** > > Resend, AhaSend and Loops deliver a first email in about ten minutes; Amazon SES is cheapest at $0.10 per thousand; Postmark polices its pool best. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/email-sending-apis | | Tools compared | 13 | | Fields compared | 25 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 54 of 325 values have a verification date, checked between 2026-05-10 and 2026-11-07 (median 2026-11-06), 22 due for re-check, 1 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 33% (mean cell confidence, not age) | | Killer field | time_to_first_send | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Postmark](https://toolweight.com/tools/postmark) | 76.5 | 95% | Transactional-only sender with the best-policed shared IP pool in the category. | | 2 | [Resend](https://toolweight.com/tools/resend) | 73.7 | 100% | Developer-first email API built around React Email components. | | 3 | [MailerSend](https://toolweight.com/tools/mailersend) | 66.8 | 95% | Transactional sibling of MailerLite, bootstrapped and cheap at mid volume. | | 4 | [AhaSend](https://toolweight.com/tools/ahasend) | 66.6 | 86% | Small indie transactional API competing on price and instant signup. | | 5 | [SendGrid](https://toolweight.com/tools/sendgrid) | 63.5 | 95% | The incumbent: enormous scale, enormous shared pool, everything bolted on. | | 6 | [Brevo](https://toolweight.com/tools/brevo) | 62.0 | 95% | EU-hosted marketing platform with a competent transactional API attached. | | 7 | [Mailgun](https://toolweight.com/tools/mailgun) | 60.9 | 95% | Long-running transactional API with strong routing and inbound handling. | | 8 | [Mailtrap](https://toolweight.com/tools/mailtrap) | 58.5 | 95% | Email testing sandbox that grew a production sending product. | | 9 | [Loops](https://toolweight.com/tools/loops) | 56.4 | 81% | Lifecycle and marketing email for SaaS, priced on contacts rather than sends. | | 10 | [Amazon SES](https://toolweight.com/tools/amazon-ses) | 56.2 | 100% | The cheapest way to send email at scale, and the least finished product. | | 11 | [SparkPost](https://toolweight.com/tools/sparkpost) | 52.5 | 90% | High-volume sender with deep analytics, now folded into Bird's platform. | | 12 | [Plunk](https://toolweight.com/tools/plunk) | 45.0 | 90% | Open-source email console you self-host on top of your own AWS SES account. | | 13 | [Scaleway TEM](https://toolweight.com/tools/scaleway-tem) | 38.6 | 86% | EU-sovereign transactional email from Scaleway, deliberately minimal. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Features | Tool | Time to first send | Product scope | Inbound parsing | Event webhooks | Hosted templates | React Email / MJML | Log retention | Throughput ceiling (emails/hr) | Multi-domain sending | Data residency | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Postmark | 4h | transactional-first | ● | delivered, opened, clicked, bounced, complained, unsubscribed, inbound | visual-editor | mjml, handlebars | 45d | - | ● | us | | Resend | 10min | both | ◐ | delivered, opened, clicked, bounced, complained, deferred | code-editor | react-email, mjml | 3d | 7,200 emails/hr | ● | us, eu, apac, sa | | MailerSend | 24h | both | ● | delivered, opened, clicked, bounced, complained, unsubscribed, inbound | visual-editor | handlebars, mjml | 30d | - | ◐ | us, eu | | AhaSend | 15min | transactional-only | ● | delivered, opened, clicked, bounced, complained | none | mjml | 14d | - | ● | eu | | SendGrid | 1h | both | ● | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | visual-editor | handlebars | 3d | - | ◐ | us, eu | | Brevo | 4h | marketing-first | ● | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | visual-editor | liquid | 30d | - | ● | eu | | Mailgun | 30min | transactional-first | ● | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | visual-editor | handlebars | 24h | - | ◐ | us, eu | | Mailtrap | 2h | transactional-first | ○ | delivered, opened, clicked, bounced, complained, unsubscribed | visual-editor | handlebars | 30d | 150 emails/hr | ◐ | us, eu | | Loops | 15min | marketing-first | ○ | delivered, opened, clicked, bounced, complained, unsubscribed | visual-editor | - | - | 36,000 emails/hr | ○ | us | | Amazon SES | 2d | transactional-only | ● | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | api-only | handlebars | 0ms | 50,400 emails/hr | ● | us, eu, au, apac, sa, ca | | SparkPost | 2d | transactional-first | ● | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | code-editor | handlebars | 10d | - | ● | us, eu | | Plunk | 30min | both | ○ | delivered, opened, clicked, bounced, unsubscribed | code-editor | - | - | 50,400 emails/hr | ● | us, eu, au | | Scaleway TEM | 24h | transactional-only | ○ | delivered, bounced, complained | none | - | - | - | ● | eu | ### Deliverability | Tool | Shared pool quality | IP warmup | DKIM/DMARC friction | BIMI | Suppression list | Bounce handling | | --- | --- | --- | --- | --- | --- | --- | | Postmark | 5 | ● | 2 | ● | ● | ● | | Resend | 4 | ◐ | 1 | ◐ | ● | ● | | MailerSend | 3 | ● | 2 | ● | ● | ● | | AhaSend | 3 | ● | 2 | - | ● | ● | | SendGrid | 2 | ● | 3 | ● | ● | ● | | Brevo | 2 | ◐ | 3 | ◐ | ● | ● | | Mailgun | 3 | ● | 3 | ◐ | ● | ● | | Mailtrap | 3 | ● | 2 | ◐ | ● | ● | | Loops | 4 | ○ | 2 | - | ● | ● | | Amazon SES | 3 | ● | 4 | ◐ | ● | ◐ | | SparkPost | 3 | ● | 3 | ◐ | ● | ● | | Plunk | 3 | ○ | 3 | ○ | ◐ | ◐ | | Scaleway TEM | 3 | ○ | 3 | ○ | ◐ | ◐ | ### Pricing | Tool | Price / 1k emails (/1k) | Free tier (emails/mo) | Dedicated IP (/mo) | Pricing model | | --- | --- | --- | --- | --- | | Postmark | $1.5/1k | 100 emails/mo | $50/mo | volume-tiers | | Resend | $0.4/1k | 3,000 emails/mo | $30/mo | volume-tiers | | MailerSend | $0.56/1k | 500 emails/mo | $50/mo | volume-tiers | | AhaSend | $0.4/1k | 1,000 emails/mo | - | pay-as-you-go | | SendGrid | $0.4/1k | 3,000 emails/mo | $30/mo | volume-tiers | | Brevo | $1.8/1k | 9,000 emails/mo | $40/mo | volume-tiers | | Mailgun | $1.5/1k | 3,000 emails/mo | $59/mo | volume-tiers | | Mailtrap | $1.5/1k | 1,000 emails/mo | - | volume-tiers | | Loops | - | 4,000 emails/mo | - | contact-based | | Amazon SES | $0.1/1k | 3,000 emails/mo | $24.95/mo | pay-as-you-go | | SparkPost | $0.4/1k | 1,000 emails/mo | - | volume-tiers | | Plunk | $1/1k | 1,000 emails/mo | - | pay-as-you-go | | Scaleway TEM | $0.3/1k | 300 emails/mo | - | pay-as-you-go | ### Agentic | Tool | MCP server | llms.txt docs | | --- | --- | --- | | Postmark | ◐ | ● | | Resend | ● | ● | | MailerSend | ● | ○ | | AhaSend | ● | ● | | SendGrid | ◐ | ○ | | Brevo | ● | ○ | | Mailgun | ● | ○ | | Mailtrap | ● | ○ | | Loops | ● | ● | | Amazon SES | ◐ | ○ | | SparkPost | ○ | ○ | | Plunk | ○ | ○ | | Scaleway TEM | ◐ | ◐ | ### Traction | Tool | Funding | | --- | --- | | Postmark | acquired | | Resend | series-a | | MailerSend | bootstrapped | | AhaSend | bootstrapped | | SendGrid | subsidiary | | Brevo | series-b+ | | Mailgun | subsidiary | | Mailtrap | bootstrapped | | Loops | seed | | Amazon SES | subsidiary | | SparkPost | acquired | | Plunk | bootstrapped | | Scaleway TEM | subsidiary | ### Positioning | Tool | Positioning | | --- | --- | | Postmark | "Your emails, delivered." Sells discipline rather than features, and unusually, the claim matches the product. | | Resend | "Email for developers." React Email is the hook; the API is deliberately small and the docs carry most of the product. | | MailerSend | "Transactional email for developers and marketers." Positions on the template builder, which is genuinely its strongest feature. | | AhaSend | "Transactional email without the bloat." Competes on price and on not having a marketing product. | | SendGrid | "Trusted for more than a decade." Sells scale and incumbency; the surface is wide, and the free-tier pool is the hidden cost. | | Brevo | "All your marketing in one place." A CRM suite that also sends transactional mail; the API is real but it is not the product. | | Mailgun | "Email API for developers." Was the developer-first option a decade before that was a category; the deliverability add-ons are where the real pricing lives. | | Mailtrap | "Email delivery platform", but the reason people arrive is still the staging sandbox, which remains the best in the category. | | Loops | "Email for modern SaaS." Sells taste and speed of setup rather than deliverability engineering. | | Amazon SES | Barely marketed at all, SES is sold as an AWS primitive and the pricing page does the work. | | SparkPost | "Predictable email delivery at scale." The engineering is real; the product is increasingly a feature of Bird rather than a thing you buy. | | Plunk | "The open-source email platform." Sells ownership: your data, your infrastructure, SES's price. | | Scaleway TEM | "Sovereign European cloud." The pitch is jurisdiction, not features, and the feature set reflects that honestly. | ### Timeline | Tool | GA year | | --- | --- | | Postmark | 2010 | | Resend | 2023 | | MailerSend | 2020 | | AhaSend | 2023 | | SendGrid | 2009 | | Brevo | 2012 | | Mailgun | 2010 | | Mailtrap | 2013 | | Loops | 2023 | | Amazon SES | 2011 | | SparkPost | 2014 | | Plunk | 2023 | | Scaleway TEM | 2023 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Time to first send | `time_to_first_send` | features | duration | - | lower | 10 | Wall-clock from starting signup on a clean account to a message delivered to a Gmail inbox that is NOT a verified address on the account. Includes manual review, compliance holds and sandbox-exit tickets; excludes DNS propagation beyond 10 minutes. | | Product scope | `product_scope` | features | enum | - | n/a | 0 | What the product is actually built for. transactional-only = no campaign tooling at all; both = first-class transactional and broadcast products; marketing-first = campaign tooling with a transactional API bolted on. | | Inbound parsing | `inbound_parsing` | features | tristate | - | higher | 4 | Can you receive mail at a domain and have it POSTed to your app as parsed JSON? partial = available but region-limited, in beta, or without routing rules. | | Event webhooks | `event_webhooks` | features | multi-enum | - | higher | 6 | Which message events the provider will POST to your endpoint. Events reachable only by wiring up a separate queue product still count, but are noted. | | Hosted templates | `hosted_templates` | features | enum | - | higher | 3 | Server-side templates stored at the provider. api-only = create and render via API with no UI; code-editor = HTML editing in the dashboard; visual-editor = drag-and-drop builder a non-engineer can use. | | React Email / MJML | `react_email_mjml` | features | multi-enum | - | higher | 5 | Markup and templating systems with first-party support, a documented integration or native handling in the SDK. React Email renders to plain HTML and technically works everywhere, so this measures integration, not possibility. | | Log retention | `log_retention` | features | duration | - | higher | 5 | How long per-message events and content stay searchable in the dashboard on the cheapest paid plan. 0 means the provider stores nothing and you must build it yourself. | | Throughput ceiling | `throughput_ceiling` | features | number | emails/hr | higher | 3 | Documented default sending rate for a new account, expressed as emails per hour, before requesting a limit increase. Blank where the provider publishes no figure. | | Multi-domain sending | `multi_domain` | features | tristate | - | higher | 3 | Can the cheapest paid plan verify and send from more than one sending domain? partial = capped at a low number or charged per extra domain. | | Data residency | `data_residency` | features | region-list | - | n/a | 4 | Regions where message content and event data can be stored and processed, chosen at account or project level. Sending IPs may sit elsewhere; this is about where the data rests. | | Shared pool quality | `shared_pool_quality` | deliverability | score | - | higher | 8 | Judgement, 1-5, of the reputation you inherit on shared IPs. 5 = tightly vetted, transactional-only, customers ejected for bad practice. 3 = mixed pool, fine for engaged lists. 1 = large open pool with visible spam. Inferred, not measured. | | IP warmup | `ip_warmup` | deliverability | tristate | - | higher | 5 | Does the provider automatically ramp a new dedicated IP, throttling volume and blending with the shared pool, without you writing a schedule? partial = documented guidance or support-assisted only. no = no dedicated IPs offered. | | DKIM/DMARC friction | `dkim_dmarc_friction` | deliverability | score | - | lower | 6 | Judgement, 1-5, of authentication setup effort. 1 = pre-generated records plus registrar auto-config and live verification. 3 = manual records including a custom return-path, then a wait. 5 = multiple consoles, manual key handling, or repeat setup per region. | | BIMI | `bimi_support` | deliverability | tristate | - | higher | 2 | BIMI is DNS plus a VMC, so nothing truly blocks it. yes = the provider documents it and guarantees the DMARC alignment it requires; partial = works but undocumented; no = shared-pool alignment makes it impractical. | | Suppression list | `suppression_management` | deliverability | tristate | - | higher | 4 | An automatic account-level suppression list, readable and editable over the API, that blocks sends to previously bounced or complaining addresses. partial = a list exists but is dashboard-only or per-stream. | | Bounce handling | `bounce_complaint_handling` | deliverability | tristate | - | higher | 4 | Does the provider classify bounces, process feedback loops and act on them for you? partial = you receive the notifications but remain responsible for reacting to them. | | Price / 1k emails | `price_per_1k` | pricing | currency | /1k | lower | 7 | Cheapest paid self-serve tier, divided out to USD per 1,000 emails, monthly billing, no annual discount. Providers that bill on contacts rather than volume are left blank. | | Free tier | `free_tier` | pricing | number | emails/mo | higher | 4 | Emails per month on a permanently free plan. Time-limited trials and first-12-months allowances are noted rather than counted as permanent. | | Dedicated IP | `dedicated_ip_cost` | pricing | currency | /mo | lower | 3 | List price per month for one dedicated sending IP on the cheapest plan that offers one. Blank means either no dedicated IP product or no public price. | | Pricing model | `pricing_model` | pricing | enum | - | higher | 2 | How the bill is computed. pay-as-you-go = metered per message with no plan; volume-tiers = monthly plan with an included allowance; contact-based = priced on stored contacts rather than sends. | | MCP server | `mcp_server` | agentic | tristate | - | higher | 3 | A first-party MCP server exposing the sending API to agents. partial = covered by the parent company's general-purpose MCP server, or only community packages exist. | | llms.txt docs | `llms_txt_docs` | agentic | tristate | - | higher | 2 | Are the docs published in a form an agent can consume directly, an llms.txt index or markdown twins of every page? partial = raw markdown exists publicly but there is no index. | | Funding | `funding_stage` | traction | enum | - | n/a | 0 | Ownership and last known funding stage. acquired = bought by another company but still run as a distinct product; subsidiary = absorbed into a parent's platform. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor sells itself, in its own framing, with the gap between the claim and the product noted where there is one. | | GA year | `ga_year` | timeline | number | - | n/a | 0 | Year the sending product became generally available under its current name. Rebrands keep the original product's year. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Fastest to first send | `fastest-first-send` | Signup to a delivered email today, not next week. | time_to_first_send:10, dkim_dmarc_friction:7, free_tier:5, react_email_mjml:4, multi_domain:2, price_per_1k:2, shared_pool_quality:3, llms_txt_docs:2 | https://toolweight.com/compare/email-sending-apis?w=time_to_first_send:10,dkim_dmarc_friction:7,free_tier:5,react_email_mjml:4,multi_domain:2,price_per_1k:2,shared_pool_quality:3,llms_txt_docs:2 | | Best deliverability | `best-deliverability` | Transactional mail that reaches the inbox on a cold domain. | shared_pool_quality:10, ip_warmup:7, dedicated_ip_cost:5, bounce_complaint_handling:6, suppression_management:6, bimi_support:4, dkim_dmarc_friction:5, log_retention:5, time_to_first_send:2 | https://toolweight.com/compare/email-sending-apis?w=shared_pool_quality:10,ip_warmup:7,dedicated_ip_cost:5,bounce_complaint_handling:6,suppression_management:6,bimi_support:4,dkim_dmarc_friction:5,log_retention:5,time_to_first_send:2 | | Cheapest at volume | `cheapest-at-volume` | Millions of messages a month, where price dominates everything else. | price_per_1k:10, dedicated_ip_cost:6, throughput_ceiling:6, pricing_model:4, free_tier:1, shared_pool_quality:3, time_to_first_send:1 | https://toolweight.com/compare/email-sending-apis?w=price_per_1k:10,dedicated_ip_cost:6,throughput_ceiling:6,pricing_model:4,free_tier:1,shared_pool_quality:3,time_to_first_send:1 | | Best DX | `best-dx` | Typed SDKs, components as templates, events you can subscribe to. | react_email_mjml:9, event_webhooks:8, time_to_first_send:7, log_retention:6, hosted_templates:4, inbound_parsing:4, mcp_server:4, llms_txt_docs:4, dkim_dmarc_friction:5 | https://toolweight.com/compare/email-sending-apis?w=react_email_mjml:9,event_webhooks:8,time_to_first_send:7,log_retention:6,hosted_templates:4,inbound_parsing:4,mcp_server:4,llms_txt_docs:4,dkim_dmarc_friction:5 | ## Verdict - Three questions decide it: how fast you can send, whose reputation you inherit, what you pay at volume - Shipping this week? Resend is the default, and not close - Small API, Node SDK takes a React element directly, no human approval loop - Pre-generated DNS records with live verification - AhaSend and Plunk are cheaper, Loops nicer for lifecycle, but Resend has the deepest docs and community - Resend costs $0.40 per thousand, four times Amazon SES - **Deliverability first? Postmark.** The only vendor here that loses customers to protect its shared pool - The discipline shows up in inbox placement on cold domains - You pay $1.50 per thousand, roughly fifteen times SES, plus an approval step in hours - Right for password resets and receipts, wrong for a newsletter - **Real volume? Amazon SES**, cheaper by an order of magnitude, and staying that way - SES is a primitive, not a product: no message log, no real template editor - Events via SNS or EventBridge you wire yourself - Sandbox exit goes through AWS Support and is routinely rejected first try - Budget days, and an engineer to build the observability the others give free - Plunk is the middle: an open-source console over your own SES account - SendGrid and Mailgun are the incumbents, competent, owned by Twilio and Sinch - Both carry shared pools large enough that your reputation is partly other people's problem - SparkPost has been absorbed into Bird and self-serve access is shrinking - Brevo and MailerSend are priced for marketing volume, not developer ergonomics - Mailtrap grew a sender from a testing tool, and is still best at the testing half - Scaleway TEM is the only European-owned option with a simple API; deliberately no open tracking - For Australian data residency, only Amazon SES in ap-southeast-2 or self-hosting - Everyone else stores your message content in the US or the EU ## Where the pricing pages hide the money - List price per thousand is the least useful number on a pricing page - **Contact-based billing:** Loops and Brevo price partly or wholly on stored contacts, not messages sent - Cheap for a weekly newsletter to a stable list, expensive for a product hoarding every signup - If contacts grow faster than sends, per-message providers win even at a higher headline rate - **Retention as an upsell:** SendGrid's activity feed keeps three days unless you buy Email Activity History - Mailgun's cheapest tier keeps one day - When a customer chases an eleven-day-old receipt, retention is the entire product - Postmark's forty-five days is the outlier and worth real money - **The dedicated IP trap:** $25 to $60 a month, and the most common way to make deliverability worse - Below roughly 100,000 a month a fresh IP never accumulates enough reputation signal - You have voluntarily left a pool someone else was policing for you - Buy one when a mailbox provider tells you to, not when the pricing page suggests it - **Free tiers keep shrinking:** Amazon's always-free 62,000 a month from EC2 is now a twelve-month allowance - MailerSend's free plan came down to 3,000 - Do not architect around a free tier ## Migrating between providers without torching your reputation - The API surface is the easy part: every provider takes a JSON body with from, to, subject and html - The send call is an afternoon behind a thin interface - Writing that interface on day one is the highest-return decision here - **Suppression list does not migrate:** it lives in the old provider and records who bounced or complained - Export before you cancel, import before your first send, or you re-mail known bad addresses - **Reputation does not migrate:** it attaches to the sending IP and domain together - New providers mean new IPs, so ramp over the first few days - Bias early volume to engaged recipients and watch complaint rates, not delivery rates - A hard cutover on a large list is how a good domain gets filtered - **DNS does not migrate:** DKIM keys are provider-specific and the return-path points at their infrastructure - Run both providers in parallel; multiple DKIM selectors coexist happily - Keep the old provider live and paid for a fortnight; one month's fee is your only rollback ## How to actually decide - Answer four questions in order and the shortlist collapses - **What are you sending?** Password resets and receipts are a deliverability problem - Weight pool quality and retention: Postmark, then Resend - Newsletters and lifecycle mail are a tooling problem: Loops, Brevo, or Resend Broadcasts - If it is both, buy two products and keep the streams on separate subdomains - Mixing marketing and transactional on one domain is the most common self-inflicted deliverability wound - **How much?** Under 50,000 a month, price is noise, optimise for hours saved - Over about two million, SES's advantage justifies building the missing observability - Plunk or a self-built console is a reasonable way to get it back - **Where does the data live?** This eliminates faster than anything else - EU-only means Scaleway TEM or Brevo; Australian means SES in Sydney or self-hosting - Everything else is a US company with an EU region - **When do you need to be live?** If today, that alone rules out SES - Often ship on Resend behind your own interface, re-evaluate when the price gap stops being theoretical ## Per-tool provenance, every cell, every source ### Postmark {#postmark} Transactional-only sender with the best-policed shared IP pool in the category. | | | | --- | --- | | Site | https://postmarkapp.com | | Docs | https://postmarkapp.com/developer | | Company | ActiveCampaign | | Founded | 2010 | | Funding | Acquired (ActiveCampaign, 2022) | | Profile | https://toolweight.com/tools/postmark | | Score (default weights) | 76.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 4h | Community-reported | - | - | Postmark reviews the use case before enabling sending to unverified recipients; usually hours, occasionally next business day. | https://toolweight.com/compare/email-sending-apis#postmark--time_to_first_send | | Product scope | transactional-first | Inferred | - | - | Broadcast streams exist but are deliberately kept separate from transactional. | https://toolweight.com/compare/email-sending-apis#postmark--product_scope | | Inbound parsing | ● | Vendor-claimed | 2026-05-20 | https://postmarkapp.com/developer/user-guide/inbound | - | https://toolweight.com/compare/email-sending-apis#postmark--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, unsubscribed, inbound | Vendor-claimed | 2026-05-20 | https://postmarkapp.com/developer/webhooks/webhooks-overview | - | https://toolweight.com/compare/email-sending-apis#postmark--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | Drag-and-drop builder plus a well-regarded set of open-source starter templates. | https://toolweight.com/compare/email-sending-apis#postmark--hosted_templates | | React Email / MJML | mjml, handlebars | Inferred | - | - | Templates use a Mustache-style syntax; MJML is documented as an authoring path. | https://toolweight.com/compare/email-sending-apis#postmark--react_email_mjml | | Log retention | 45d | Community-reported | - | - | 45-day activity retention is Postmark's long-standing default and the best here. | https://toolweight.com/compare/email-sending-apis#postmark--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#postmark--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--multi_domain | | Data residency | us | Inferred | - | - | US-hosted; no EU data region as of this pass. | https://toolweight.com/compare/email-sending-apis#postmark--data_residency | | Shared pool quality | 5 | Inferred | - | - | The most aggressively policed pool in the category, transactional-only, with customers removed for bad practice. | https://toolweight.com/compare/email-sending-apis#postmark--shared_pool_quality | | IP warmup | ● | Inferred | - | - | Managed by Postmark, but they require sustained volume before selling you an IP. | https://toolweight.com/compare/email-sending-apis#postmark--ip_warmup | | DKIM/DMARC friction | 2 | Inferred | - | - | Clear records and verification, plus a separate custom return-path CNAME. | https://toolweight.com/compare/email-sending-apis#postmark--dkim_dmarc_friction | | BIMI | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--bimi_support | | Suppression list | ● | Inferred | - | - | Per-message-stream suppressions, readable over the API. | https://toolweight.com/compare/email-sending-apis#postmark--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--bounce_complaint_handling | | Price / 1k emails | $1.5/1k | Vendor-claimed | 2026-05-20 | https://postmarkapp.com/pricing | $15/mo for 10,000 emails; the rate falls at higher tiers. | https://toolweight.com/compare/email-sending-apis#postmark--price_per_1k | | Free tier | 100 emails/mo | Vendor-claimed | 2026-11-06 | https://postmarkapp.com/pricing | - | https://toolweight.com/compare/email-sending-apis#postmark--free_tier | | Dedicated IP | $50/mo | Vendor-claimed | 2026-11-06 | https://postmarkapp.com/pricing | - | https://toolweight.com/compare/email-sending-apis#postmark--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--pricing_model | | MCP server | ◐ | Community-reported | - | - | No first-party server. A malicious third-party postmark-mcp npm package impersonated one in 2025, check the publisher. | https://toolweight.com/compare/email-sending-apis#postmark--mcp_server | | llms.txt docs | ● | Measured by Toolweight | 2026-11-07 | https://postmarkapp.com/llms.txt | - | https://toolweight.com/compare/email-sending-apis#postmark--llms_txt_docs | | Funding | acquired | Community-reported | - | - | Wildbit, Postmark's parent, was acquired by ActiveCampaign in 2022. | https://toolweight.com/compare/email-sending-apis#postmark--funding_stage | | Positioning | "Your emails, delivered." Sells discipline rather than features, and unusually, the claim matches the product. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--positioning | | GA year | 2010 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#postmark--ga_year | **Verdict.** The deliverability benchmark, with pool quality as a deliberate business decision, expensive and worth it for mail that must arrive. **Pick it when** - Password resets, receipts and anything a support ticket follows - Cold sending domains with no reputation to lean on - Teams who need 45 days of searchable history ### Resend {#resend} Developer-first email API built around React Email components. | | | | --- | --- | | Site | https://resend.com | | Docs | https://resend.com/docs | | Company | Resend, Inc. | | Founded | 2023 | | Funding | Series A | | Profile | https://toolweight.com/tools/resend | | Score (default weights) | 73.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 10min | Community-reported | - | - | No approval queue: create an account, paste three DNS records, send. The only variable is your registrar. | https://toolweight.com/compare/email-sending-apis#resend--time_to_first_send | | Product scope | both | Inferred | - | - | Broadcasts added a campaign product on top of the transactional API. | https://toolweight.com/compare/email-sending-apis#resend--product_scope | | Inbound parsing | ◐ | Community-reported | - | - | Inbound is newer here and thinner on routing rules than Mailgun or Postmark. | https://toolweight.com/compare/email-sending-apis#resend--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred | Vendor-claimed | 2026-06-01 | https://resend.com/docs/dashboard/webhooks/introduction | - | https://toolweight.com/compare/email-sending-apis#resend--event_webhooks | | Hosted templates | code-editor | Inferred | - | - | React Email in your own repo is the intended path; Broadcasts has a visual editor. | https://toolweight.com/compare/email-sending-apis#resend--hosted_templates | | React Email / MJML | react-email, mjml | Vendor-claimed | 2026-06-01 | https://resend.com/docs/send-with-nextjs | React Email is a Resend project and the Node SDK takes a React element directly. | https://toolweight.com/compare/email-sending-apis#resend--react_email_mjml | | Log retention | 3d | Inferred | - | - | Approximate and plan-dependent; Resend's window is short by category standards. | https://toolweight.com/compare/email-sending-apis#resend--log_retention | | Throughput ceiling | 7,200 emails/hr | Community-reported | - | - | Default API rate limit is 2 requests/second; the batch endpoint lifts effective throughput well past this. | https://toolweight.com/compare/email-sending-apis#resend--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--multi_domain | | Data residency | us, eu, apac, sa | Community-reported | - | - | Sending region is chosen per domain. No Australian region. | https://toolweight.com/compare/email-sending-apis#resend--data_residency | | Shared pool quality | 4 | Inferred | - | - | Well managed and improving, but younger and larger than Postmark's. | https://toolweight.com/compare/email-sending-apis#resend--shared_pool_quality | | IP warmup | ◐ | Inferred | - | - | New dedicated IPs are ramped, but the schedule is not documented. | https://toolweight.com/compare/email-sending-apis#resend--ip_warmup | | DKIM/DMARC friction | 1 | Inferred | - | - | Registrar auto-configuration for Vercel and Cloudflare domains; otherwise three pre-generated records with live verification. | https://toolweight.com/compare/email-sending-apis#resend--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--bounce_complaint_handling | | Price / 1k emails | $0.4/1k | Vendor-claimed | 2026-06-01 | https://resend.com/pricing | Pro is $20/mo for 50,000 emails. | https://toolweight.com/compare/email-sending-apis#resend--price_per_1k | | Free tier | 3,000 emails/mo | Vendor-claimed | 2026-11-06 | https://resend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#resend--free_tier | | Dedicated IP | $30/mo | Vendor-claimed | 2026-11-06 | https://resend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#resend--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--pricing_model | | MCP server | ● | Community-reported | - | - | Resend publishes an MCP server for sending mail from agents. | https://toolweight.com/compare/email-sending-apis#resend--mcp_server | | llms.txt docs | ● | Inferred | - | - | Mintlify-hosted docs, which publish an llms.txt index automatically. | https://toolweight.com/compare/email-sending-apis#resend--llms_txt_docs | | Funding | series-a | Community-reported | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--funding_stage | | Positioning | "Email for developers." React Email is the hook; the API is deliberately small and the docs carry most of the product. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--positioning | | GA year | 2023 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#resend--ga_year | **Verdict.** The fastest path to a delivered email, templates in your codebase, but four times SES with stingy retention. **Pick it when** - Shipping transactional email this afternoon - React and Next.js codebases that want templates in the repo - Teams who would rather pay than run an approval gauntlet ### MailerSend {#mailersend} Transactional sibling of MailerLite, bootstrapped and cheap at mid volume. | | | | --- | --- | | Site | https://www.mailersend.com | | Docs | https://developers.mailersend.com | | Company | MailerLite | | Founded | 2020 | | Funding | Bootstrapped | | Profile | https://toolweight.com/tools/mailersend | | Score (default weights) | 66.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 24h | Community-reported | - | - | Trial accounts must be approved by a human before they can mail unverified recipients; commonly around 24 hours. | https://toolweight.com/compare/email-sending-apis#mailersend--time_to_first_send | | Product scope | both | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--product_scope | | Inbound parsing | ● | Inferred | - | - | Inbound routing with parsed payloads. | https://toolweight.com/compare/email-sending-apis#mailersend--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, unsubscribed, inbound | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | Inherits MailerLite's drag-and-drop builder, which is the best of the group. | https://toolweight.com/compare/email-sending-apis#mailersend--hosted_templates | | React Email / MJML | handlebars, mjml | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--react_email_mjml | | Log retention | 30d | Inferred | - | - | Approximate and plan-dependent. | https://toolweight.com/compare/email-sending-apis#mailersend--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#mailersend--throughput_ceiling | | Multi-domain sending | ◐ | Inferred | - | - | Domain count is capped on the entry plan. | https://toolweight.com/compare/email-sending-apis#mailersend--multi_domain | | Data residency | us, eu | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--data_residency | | Shared pool quality | 3 | Inferred | - | - | The manual approval step keeps the pool cleaner than the free-tier-heavy alternatives. | https://toolweight.com/compare/email-sending-apis#mailersend--shared_pool_quality | | IP warmup | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--ip_warmup | | DKIM/DMARC friction | 2 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--dkim_dmarc_friction | | BIMI | ● | Inferred | - | - | One of the few here with explicit BIMI documentation. | https://toolweight.com/compare/email-sending-apis#mailersend--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--bounce_complaint_handling | | Price / 1k emails | $0.56/1k | Inferred | - | - | Approximate: the entry paid plan is roughly $28/mo for 50,000 emails. | https://toolweight.com/compare/email-sending-apis#mailersend--price_per_1k | | Free tier | 500 emails/mo | Vendor-claimed | 2026-11-06 | https://www.mailersend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#mailersend--free_tier | | Dedicated IP | $50/mo | Inferred | - | - | Approximate monthly add-on. | https://toolweight.com/compare/email-sending-apis#mailersend--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://www.mailersend.com/features/mcp | - | https://toolweight.com/compare/email-sending-apis#mailersend--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--llms_txt_docs | | Funding | bootstrapped | Inferred | - | - | Same team as MailerLite; no outside funding publicly reported. | https://toolweight.com/compare/email-sending-apis#mailersend--funding_stage | | Positioning | "Transactional email for developers and marketers." Positions on the template builder, which is genuinely its strongest feature. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--positioning | | GA year | 2020 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailersend--ga_year | **Verdict.** The best price per message past 50,000/month with a real UI, taxed by a manual approval gate. **Pick it when** - Mid-volume sending where SES is too raw and Postmark too dear - Non-engineers who need to edit templates - Teams already using MailerLite for marketing ### AhaSend {#ahasend} Small indie transactional API competing on price and instant signup. | | | | --- | --- | | Site | https://ahasend.com | | Docs | https://ahasend.com/docs | | Company | AhaSend | | Founded | 2023 | | Funding | Bootstrapped | | Profile | https://toolweight.com/tools/ahasend | | Score (default weights) | 66.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 15min | Inferred | - | - | Instant self-serve signup with no approval queue; DNS verification is the only gate. | https://toolweight.com/compare/email-sending-apis#ahasend--time_to_first_send | | Product scope | transactional-only | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--product_scope | | Inbound parsing | ● | Vendor-claimed | 2026-11-07 | https://ahasend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#ahasend--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--event_webhooks | | Hosted templates | none | Inferred | - | - | You post rendered HTML; there is no template store. | https://toolweight.com/compare/email-sending-apis#ahasend--hosted_templates | | React Email / MJML | mjml | Vendor-claimed | 2026-11-07 | https://ahasend.com/docs/llms.txt | - | https://toolweight.com/compare/email-sending-apis#ahasend--react_email_mjml | | Log retention | 14d | Vendor-claimed | 2026-11-07 | https://ahasend.com/llms.txt | - | https://toolweight.com/compare/email-sending-apis#ahasend--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#ahasend--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--multi_domain | | Data residency | eu | Vendor-claimed | 2026-11-07 | https://ahasend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#ahasend--data_residency | | Shared pool quality | 3 | Inferred | - | - | Small operator, so the pool is small and unproven in both directions, less spam, but less evidence. | https://toolweight.com/compare/email-sending-apis#ahasend--shared_pool_quality | | IP warmup | ● | Vendor-claimed | 2026-11-07 | https://ahasend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#ahasend--ip_warmup | | DKIM/DMARC friction | 2 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--dkim_dmarc_friction | | BIMI | - | Unknown | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--bounce_complaint_handling | | Price / 1k emails | $0.4/1k | Vendor-claimed | 2026-11-07 | https://ahasend.com/llms.txt | Pro $10/mo includes 25,000 emails; overage $0.50/1k. | https://toolweight.com/compare/email-sending-apis#ahasend--price_per_1k | | Free tier | 1,000 emails/mo | Vendor-claimed | 2026-11-06 | https://ahasend.com/pricing | - | https://toolweight.com/compare/email-sending-apis#ahasend--free_tier | | Dedicated IP | - | Unknown | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--dedicated_ip_cost | | Pricing model | pay-as-you-go | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://ahasend.com/docs/mcp-server | - | https://toolweight.com/compare/email-sending-apis#ahasend--mcp_server | | llms.txt docs | ● | Inferred | - | - | Modern docs stack that publishes an llms.txt index. | https://toolweight.com/compare/email-sending-apis#ahasend--llms_txt_docs | | Funding | bootstrapped | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--funding_stage | | Positioning | "Transactional email without the bloat." Competes on price and on not having a marketing product. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--positioning | | GA year | 2023 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#ahasend--ga_year | **Verdict.** Cheap and fast to start, but trusts one small team's discipline with your reputation, fine for side projects. **Pick it when** - Side projects and internal tools where price dominates - Straight transactional sending with no template layer needed - Anyone who wants an API key in under fifteen minutes ### SendGrid {#sendgrid} The incumbent: enormous scale, enormous shared pool, everything bolted on. | | | | --- | --- | | Site | https://sendgrid.com | | Docs | https://www.twilio.com/docs/sendgrid | | Company | Twilio | | Founded | 2009 | | Funding | Subsidiary (Twilio, acquired 2019) | | Profile | https://toolweight.com/tools/sendgrid | | Score (default weights) | 63.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 1h | Community-reported | - | - | Usually under an hour, but new free accounts are regularly caught by fraud automation, which turns into a support thread lasting days. | https://toolweight.com/compare/email-sending-apis#sendgrid--time_to_first_send | | Product scope | both | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--product_scope | | Inbound parsing | ● | Vendor-claimed | 2026-05-15 | https://www.twilio.com/docs/sendgrid/for-developers/parsing-email/setting-up-the-inbound-parse-webhook | - | https://toolweight.com/compare/email-sending-apis#sendgrid--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | Vendor-claimed | 2026-05-15 | https://www.twilio.com/docs/sendgrid/for-developers/tracking-events/event | - | https://toolweight.com/compare/email-sending-apis#sendgrid--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | Design Library plus Handlebars-based dynamic templates. | https://toolweight.com/compare/email-sending-apis#sendgrid--hosted_templates | | React Email / MJML | handlebars | Inferred | - | - | Dynamic templates use Handlebars; anything else you render yourself. | https://toolweight.com/compare/email-sending-apis#sendgrid--react_email_mjml | | Log retention | 3d | Community-reported | - | - | The Activity Feed keeps 3 days. Thirty days requires the Email Activity History add-on. | https://toolweight.com/compare/email-sending-apis#sendgrid--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#sendgrid--throughput_ceiling | | Multi-domain sending | ◐ | Inferred | - | - | Domain authentication count is plan-dependent on the cheaper tiers. | https://toolweight.com/compare/email-sending-apis#sendgrid--multi_domain | | Data residency | us, eu | Inferred | - | - | EU data residency is a paid feature on higher plans. | https://toolweight.com/compare/email-sending-apis#sendgrid--data_residency | | Shared pool quality | 2 | Inferred | - | - | The free tier is enormous and open, which is exactly the traffic you do not want sharing your IP range. | https://toolweight.com/compare/email-sending-apis#sendgrid--shared_pool_quality | | IP warmup | ● | Inferred | - | - | Automated IP warmup has been a SendGrid feature for years. | https://toolweight.com/compare/email-sending-apis#sendgrid--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | The domain authentication wizard is decent; sender identity plus link branding plus DMARC is still several steps. | https://toolweight.com/compare/email-sending-apis#sendgrid--dkim_dmarc_friction | | BIMI | ● | Inferred | - | - | Documented, and practical on a dedicated IP. | https://toolweight.com/compare/email-sending-apis#sendgrid--bimi_support | | Suppression list | ● | Inferred | - | - | Suppression groups are genuinely well designed. | https://toolweight.com/compare/email-sending-apis#sendgrid--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--bounce_complaint_handling | | Price / 1k emails | $0.4/1k | Vendor-claimed | 2026-05-15 | https://sendgrid.com/en-us/pricing | Essentials at roughly $19.95/mo for 50,000 emails. | https://toolweight.com/compare/email-sending-apis#sendgrid--price_per_1k | | Free tier | 3,000 emails/mo | Inferred | - | - | 100/day on the permanent free plan. | https://toolweight.com/compare/email-sending-apis#sendgrid--free_tier | | Dedicated IP | $30/mo | Inferred | - | - | Approximate. One IP is bundled into Pro (~$90/mo); extras are charged monthly. | https://toolweight.com/compare/email-sending-apis#sendgrid--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--pricing_model | | MCP server | ◐ | Inferred | - | - | Covered by Twilio's general MCP tooling rather than a SendGrid-specific server. | https://toolweight.com/compare/email-sending-apis#sendgrid--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--llms_txt_docs | | Funding | subsidiary | Vendor-claimed | 2026-05-15 | https://www.twilio.com | - | https://toolweight.com/compare/email-sending-apis#sendgrid--funding_stage | | Positioning | "Trusted for more than a decade." Sells scale and incumbency; the surface is wide, and the free-tier pool is the hidden cost. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--positioning | | GA year | 2009 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sendgrid--ga_year | **Verdict.** Competent at everything and best at nothing, choose it for breadth, not deliverability, and budget for the activity history add-on. **Pick it when** - Teams already on Twilio who want one vendor and one invoice - Marketing plus transactional under a single account - Enterprises needing SSO, SLAs and procurement paperwork ### Brevo {#brevo} EU-hosted marketing platform with a competent transactional API attached. | | | | --- | --- | | Site | https://www.brevo.com | | Docs | https://developers.brevo.com | | Company | Brevo (ex-Sendinblue) | | Founded | 2012 | | Funding | Series B+ | | Profile | https://toolweight.com/tools/brevo | | Score (default weights) | 62.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 4h | Community-reported | - | - | New accounts routinely go through manual validation before sending is enabled; expect to answer questions about your list. | https://toolweight.com/compare/email-sending-apis#brevo--time_to_first_send | | Product scope | marketing-first | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--product_scope | | Inbound parsing | ● | Inferred | - | - | An inbound parsing API exists but is secondary to the marketing product. | https://toolweight.com/compare/email-sending-apis#brevo--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--hosted_templates | | React Email / MJML | liquid | Inferred | - | - | Brevo's own templating language, closer to Django or Liquid than Handlebars. | https://toolweight.com/compare/email-sending-apis#brevo--react_email_mjml | | Log retention | 30d | Inferred | - | - | Approximate and plan-dependent. | https://toolweight.com/compare/email-sending-apis#brevo--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#brevo--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--multi_domain | | Data residency | eu | Inferred | - | - | French company, EU-hosted throughout, one of the shortest answers to a GDPR question here. | https://toolweight.com/compare/email-sending-apis#brevo--data_residency | | Shared pool quality | 2 | Inferred | - | - | Large marketing-heavy pool with a generous free tier; transactional mail inherits the consequences. | https://toolweight.com/compare/email-sending-apis#brevo--shared_pool_quality | | IP warmup | ◐ | Inferred | - | - | Documented guidance and support-assisted rather than fully automatic. | https://toolweight.com/compare/email-sending-apis#brevo--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--bounce_complaint_handling | | Price / 1k emails | $1.8/1k | Inferred | - | - | Approximate: the entry plan is roughly $9/mo for 5,000 emails, falling well under $1/1k by 100,000. | https://toolweight.com/compare/email-sending-apis#brevo--price_per_1k | | Free tier | 9,000 emails/mo | Inferred | - | - | 300 emails/day, permanent, the most generous free plan here. | https://toolweight.com/compare/email-sending-apis#brevo--free_tier | | Dedicated IP | $40/mo | Inferred | - | - | Approximate; sold as an add-on on higher plans. | https://toolweight.com/compare/email-sending-apis#brevo--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://developers.brevo.com/docs/mcp-protocol | - | https://toolweight.com/compare/email-sending-apis#brevo--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--llms_txt_docs | | Funding | series-b+ | Community-reported | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--funding_stage | | Positioning | "All your marketing in one place." A CRM suite that also sends transactional mail; the API is real but it is not the product. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--positioning | | GA year | 2012 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#brevo--ga_year | **Verdict.** Buy it for EU hosting and the marketing suite, not the transactional API, and not if you need to be live today. **Pick it when** - EU-only data residency without self-hosting - One vendor covering CRM, marketing and transactional - High free-tier volume during prototyping ### Mailgun {#mailgun} Long-running transactional API with strong routing and inbound handling. | | | | --- | --- | | Site | https://www.mailgun.com | | Docs | https://documentation.mailgun.com | | Company | Sinch | | Founded | 2010 | | Funding | Subsidiary (Sinch, acquired 2021) | | Profile | https://toolweight.com/tools/mailgun | | Score (default weights) | 60.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 30min | Community-reported | - | - | Fast once a payment card is on file. Without one you are restricted to authorised recipients, which does not count as a first send under our definition. | https://toolweight.com/compare/email-sending-apis#mailgun--time_to_first_send | | Product scope | transactional-first | Inferred | - | - | Marketing lives in Mailjet, its Sinch stablemate. | https://toolweight.com/compare/email-sending-apis#mailgun--product_scope | | Inbound parsing | ● | Vendor-claimed | 2026-05-18 | https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/ | Routes are the strongest inbound implementation in the category. | https://toolweight.com/compare/email-sending-apis#mailgun--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | Vendor-claimed | 2026-05-18 | https://documentation.mailgun.com/docs/mailgun/user-manual/events/ | - | https://toolweight.com/compare/email-sending-apis#mailgun--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--hosted_templates | | React Email / MJML | handlebars | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--react_email_mjml | | Log retention | 24h | Inferred | - | - | Cheapest paid tier only. Retention extends to around 30 days higher up, this is a real upsell lever. | https://toolweight.com/compare/email-sending-apis#mailgun--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#mailgun--throughput_ceiling | | Multi-domain sending | ◐ | Inferred | - | - | Custom domain count is capped on the entry plan. | https://toolweight.com/compare/email-sending-apis#mailgun--multi_domain | | Data residency | us, eu | Vendor-claimed | 2026-05-18 | https://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/ | - | https://toolweight.com/compare/email-sending-apis#mailgun--data_residency | | Shared pool quality | 3 | Inferred | - | - | Large and mixed, but Sinch polices it more actively than SendGrid does. | https://toolweight.com/compare/email-sending-apis#mailgun--shared_pool_quality | | IP warmup | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | Four records including a tracking CNAME and a custom return-path subdomain. | https://toolweight.com/compare/email-sending-apis#mailgun--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--bounce_complaint_handling | | Price / 1k emails | $1.5/1k | Inferred | - | - | Approximate: the entry paid plan is around $15/mo for 10,000 emails, and the rate improves sharply with volume. | https://toolweight.com/compare/email-sending-apis#mailgun--price_per_1k | | Free tier | 3,000 emails/mo | Vendor-claimed | 2026-11-06 | https://www.mailgun.com/pricing/ | - | https://toolweight.com/compare/email-sending-apis#mailgun--free_tier | | Dedicated IP | $59/mo | Vendor-claimed | 2026-11-06 | https://www.mailgun.com/pricing/ | - | https://toolweight.com/compare/email-sending-apis#mailgun--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://documentation.mailgun.com/docs/mailgun/mcp.md | - | https://toolweight.com/compare/email-sending-apis#mailgun--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--llms_txt_docs | | Funding | subsidiary | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--funding_stage | | Positioning | "Email API for developers." Was the developer-first option a decade before that was a category; the deliverability add-ons are where the real pricing lives. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--positioning | | GA year | 2010 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailgun--ga_year | **Verdict.** Pick it for inbound: Routes and the events API are best-in-class, though one-day entry-plan retention is a real problem. **Pick it when** - Products that receive and parse inbound email - Complex routing, tagging and event-driven pipelines - Teams already inside the Sinch messaging stack ### Mailtrap {#mailtrap} Email testing sandbox that grew a production sending product. | | | | --- | --- | | Site | https://mailtrap.io | | Docs | https://help.mailtrap.io | | Company | Mailtrap | | Founded | 2013 | | Funding | Bootstrapped | | Profile | https://toolweight.com/tools/mailtrap | | Score (default weights) | 58.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 2h | Inferred | - | - | The Email Testing sandbox is instant. This measures Email Sending, which needs domain verification and a compliance check. | https://toolweight.com/compare/email-sending-apis#mailtrap--time_to_first_send | | Product scope | transactional-first | Inferred | - | - | Testing sandbox plus a production sending stream; bulk exists but is secondary. | https://toolweight.com/compare/email-sending-apis#mailtrap--product_scope | | Inbound parsing | ○ | Inferred | - | - | The sandbox captures your own outbound mail, which is not the same thing as inbound routing. | https://toolweight.com/compare/email-sending-apis#mailtrap--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, unsubscribed | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--hosted_templates | | React Email / MJML | handlebars | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--react_email_mjml | | Log retention | 30d | Inferred | - | - | Approximate and plan-dependent. | https://toolweight.com/compare/email-sending-apis#mailtrap--log_retention | | Throughput ceiling | 150 emails/hr | Vendor-claimed | 2026-11-07 | https://docs.mailtrap.io/email-api-smtp/setup/sending-limits | - | https://toolweight.com/compare/email-sending-apis#mailtrap--throughput_ceiling | | Multi-domain sending | ◐ | Vendor-claimed | 2026-11-07 | https://mailtrap.io/pricing/ | 5 domains on the entry paid plan | https://toolweight.com/compare/email-sending-apis#mailtrap--multi_domain | | Data residency | us, eu | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--data_residency | | Shared pool quality | 3 | Inferred | - | - | Younger sending business than its competitors; the pool is correspondingly less proven. | https://toolweight.com/compare/email-sending-apis#mailtrap--shared_pool_quality | | IP warmup | ● | Vendor-claimed | 2026-11-07 | https://mailtrap.io/pricing/ | - | https://toolweight.com/compare/email-sending-apis#mailtrap--ip_warmup | | DKIM/DMARC friction | 2 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--bounce_complaint_handling | | Price / 1k emails | $1.5/1k | Inferred | - | - | Approximate: the entry sending plan is around $15/mo for 10,000 emails. | https://toolweight.com/compare/email-sending-apis#mailtrap--price_per_1k | | Free tier | 1,000 emails/mo | Inferred | - | - | Separate from the free testing sandbox, which is metered in captured messages. | https://toolweight.com/compare/email-sending-apis#mailtrap--free_tier | | Dedicated IP | - | Unknown | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://docs.mailtrap.io/for-ai-agents/tools/mcp-server.md | - | https://toolweight.com/compare/email-sending-apis#mailtrap--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--llms_txt_docs | | Funding | bootstrapped | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--funding_stage | | Positioning | "Email delivery platform", but the reason people arrive is still the staging sandbox, which remains the best in the category. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#mailtrap--positioning | | GA year | 2013 | Inferred | - | - | Testing launched 2013; the production sending product is far newer. | https://toolweight.com/compare/email-sending-apis#mailtrap--ga_year | **Verdict.** Worth having for the best-in-class testing sandbox; the sending product is fine, not distinctive, and younger than its competitors. **Pick it when** - Catching and inspecting outbound mail in staging - Teams who want testing and sending under one account - Checking spam scores and HTML compatibility before a launch ### Loops {#loops} Lifecycle and marketing email for SaaS, priced on contacts rather than sends. | | | | --- | --- | | Site | https://loops.so | | Docs | https://loops.so/docs | | Company | Loops | | Founded | 2022 | | Funding | Seed | | Profile | https://toolweight.com/tools/loops | | Score (default weights) | 56.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 15min | Inferred | - | - | Self-serve with no approval queue; domain verification is the only gate. | https://toolweight.com/compare/email-sending-apis#loops--time_to_first_send | | Product scope | marketing-first | Inferred | - | - | Lifecycle and campaign email first, with a transactional API attached. | https://toolweight.com/compare/email-sending-apis#loops--product_scope | | Inbound parsing | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, unsubscribed | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--event_webhooks | | Hosted templates | visual-editor | Inferred | - | - | Deliberately opinionated editor, fast, and not very configurable. | https://toolweight.com/compare/email-sending-apis#loops--hosted_templates | | React Email / MJML | - | Inferred | - | - | Templates live in Loops, not in your repo. That is the point of the product. | https://toolweight.com/compare/email-sending-apis#loops--react_email_mjml | | Log retention | - | Unknown | - | - | Retention window not verified for this pass. | https://toolweight.com/compare/email-sending-apis#loops--log_retention | | Throughput ceiling | 36,000 emails/hr | Vendor-claimed | 2026-11-07 | https://loops.so/pricing | Free account default of 10 emails/sec; paid plans 1,000/sec. | https://toolweight.com/compare/email-sending-apis#loops--throughput_ceiling | | Multi-domain sending | ○ | Inferred | - | - | One sending domain per workspace. | https://toolweight.com/compare/email-sending-apis#loops--multi_domain | | Data residency | us | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--data_residency | | Shared pool quality | 4 | Inferred | - | - | Small, SaaS-focused customer base keeps the pool comparatively clean. | https://toolweight.com/compare/email-sending-apis#loops--shared_pool_quality | | IP warmup | ○ | Inferred | - | - | No dedicated IP product. | https://toolweight.com/compare/email-sending-apis#loops--ip_warmup | | DKIM/DMARC friction | 2 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--dkim_dmarc_friction | | BIMI | - | Unknown | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--bimi_support | | Suppression list | ● | Inferred | - | - | Unsubscribes and bounces are handled at the contact level. | https://toolweight.com/compare/email-sending-apis#loops--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--bounce_complaint_handling | | Price / 1k emails | - | Vendor-claimed | 2026-06-05 | https://loops.so/pricing | Not applicable: Loops bills on stored contacts, not on messages sent. | https://toolweight.com/compare/email-sending-apis#loops--price_per_1k | | Free tier | 4,000 emails/mo | Vendor-claimed | 2026-11-06 | https://loops.so/pricing | - | https://toolweight.com/compare/email-sending-apis#loops--free_tier | | Dedicated IP | - | Inferred | - | - | Not offered, shared pool only. | https://toolweight.com/compare/email-sending-apis#loops--dedicated_ip_cost | | Pricing model | contact-based | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--pricing_model | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://loops.so/docs/api-reference/intro | - | https://toolweight.com/compare/email-sending-apis#loops--mcp_server | | llms.txt docs | ● | Inferred | - | - | Mintlify-hosted docs, which publish an llms.txt index automatically. | https://toolweight.com/compare/email-sending-apis#loops--llms_txt_docs | | Funding | seed | Community-reported | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--funding_stage | | Positioning | "Email for modern SaaS." Sells taste and speed of setup rather than deliverability engineering. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--positioning | | GA year | 2023 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#loops--ga_year | **Verdict.** The best-looking way to send lifecycle email, wrong for high-volume transactional, and a bet your list stays engaged. **Pick it when** - Onboarding sequences and product announcements - Small teams with no dedicated email engineer - Products where marketing and transactional should share one contact record ### Amazon SES {#amazon-ses} The cheapest way to send email at scale, and the least finished product. | | | | --- | --- | | Site | https://aws.amazon.com/ses/ | | Docs | https://docs.aws.amazon.com/ses/ | | Company | Amazon Web Services | | Founded | 2011 | | Funding | Subsidiary (Amazon) | | Profile | https://toolweight.com/tools/amazon-ses | | Score (default weights) | 56.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 2d | Community-reported | - | - | AWS targets 24h on sandbox-exit requests, but first attempts are frequently rejected for a vague use-case description, pushing real elapsed time to 2-5 days. | https://toolweight.com/compare/email-sending-apis#amazon-ses--time_to_first_send | | Product scope | transactional-only | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--product_scope | | Inbound parsing | ● | Vendor-claimed | 2026-05-10 | https://docs.aws.amazon.com/ses/latest/dg/receiving-email.html | Receipt rules to S3, Lambda or SNS, but only in a subset of regions. | https://toolweight.com/compare/email-sending-apis#amazon-ses--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | Vendor-claimed | 2026-05-10 | https://docs.aws.amazon.com/ses/latest/dg/monitor-using-event-publishing.html | Not HTTP webhooks: events go to SNS, EventBridge or Firehose and you build the consumer. | https://toolweight.com/compare/email-sending-apis#amazon-ses--event_webhooks | | Hosted templates | api-only | Inferred | - | - | Templates are created over the API; the console editor is minimal. | https://toolweight.com/compare/email-sending-apis#amazon-ses--hosted_templates | | React Email / MJML | handlebars | Inferred | - | - | SES templates use Handlebars-style substitution. React Email works fine, you render to HTML yourself. | https://toolweight.com/compare/email-sending-apis#amazon-ses--react_email_mjml | | Log retention | 0ms | Inferred | - | - | SES stores no searchable message log. Retention is whatever you build in CloudWatch, S3 or your own database. | https://toolweight.com/compare/email-sending-apis#amazon-ses--log_retention | | Throughput ceiling | 50,400 emails/hr | Vendor-claimed | 2026-05-10 | https://docs.aws.amazon.com/ses/latest/dg/manage-sending-quotas.html | Typical post-sandbox quota is 50,000/day at 14 messages/second; raised on request. | https://toolweight.com/compare/email-sending-apis#amazon-ses--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | Up to 10,000 verified identities per account, per region. | https://toolweight.com/compare/email-sending-apis#amazon-ses--multi_domain | | Data residency | us, eu, au, apac, sa, ca | Vendor-claimed | 2026-05-10 | https://docs.aws.amazon.com/general/latest/gr/ses.html | Available in ap-southeast-2, the only managed provider here with Australian residency. | https://toolweight.com/compare/email-sending-apis#amazon-ses--data_residency | | Shared pool quality | 3 | Inferred | - | - | Enormous and mixed, but AWS enforces bounce and complaint thresholds hard and will pause your account. | https://toolweight.com/compare/email-sending-apis#amazon-ses--shared_pool_quality | | IP warmup | ● | Vendor-claimed | 2026-05-10 | https://aws.amazon.com/ses/pricing/ | Managed Dedicated IPs handle warm-up entirely; standard dedicated IPs have an automatic warm-up mode. | https://toolweight.com/compare/email-sending-apis#amazon-ses--ip_warmup | | DKIM/DMARC friction | 4 | Inferred | - | - | Easy DKIM is fine, but identities are per-region, the custom MAIL FROM domain is a separate step, and DMARC is left to you. | https://toolweight.com/compare/email-sending-apis#amazon-ses--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | No BIMI feature; nothing blocks it once DMARC is enforced. | https://toolweight.com/compare/email-sending-apis#amazon-ses--bimi_support | | Suppression list | ● | Vendor-claimed | 2026-05-10 | https://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.html | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--suppression_management | | Bounce handling | ◐ | Inferred | - | - | You get notifications and an account suppression list, but you remain accountable for the rates and can be paused for them. | https://toolweight.com/compare/email-sending-apis#amazon-ses--bounce_complaint_handling | | Price / 1k emails | $0.1/1k | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/ses/pricing/ | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--price_per_1k | | Free tier | 3,000 emails/mo | Inferred | - | - | 12-month allowance only. The old always-free 62,000/month-from-EC2 grant is gone. | https://toolweight.com/compare/email-sending-apis#amazon-ses--free_tier | | Dedicated IP | $24.95/mo | Vendor-claimed | 2026-11-06 | https://aws.amazon.com/ses/pricing/ | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--dedicated_ip_cost | | Pricing model | pay-as-you-go | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--pricing_model | | MCP server | ◐ | Inferred | - | - | No SES-specific server; AWS's general-purpose API MCP servers cover it. | https://toolweight.com/compare/email-sending-apis#amazon-ses--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--llms_txt_docs | | Funding | subsidiary | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--funding_stage | | Positioning | Barely marketed at all, SES is sold as an AWS primitive and the pricing page does the work. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--positioning | | GA year | 2011 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#amazon-ses--ga_year | **Verdict.** An order of magnitude cheaper and half a product, right above a couple of million a month or for Sydney residency. **Pick it when** - High volume where $0.10 per thousand actually moves the P&L - Workloads that must stay in ap-southeast-2 - Teams already deep in IAM, EventBridge and CloudWatch ### SparkPost {#sparkpost} High-volume sender with deep analytics, now folded into Bird's platform. | | | | --- | --- | | Site | https://www.sparkpost.com | | Docs | https://developers.sparkpost.com | | Company | Bird (ex-MessageBird) | | Founded | 2014 | | Funding | Acquired (MessageBird/Bird, 2021) | | Profile | https://toolweight.com/tools/sparkpost | | Score (default weights) | 52.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 2d | Inferred | - | - | Self-serve signup has been progressively folded into Bird's flow; assume a sales conversation for anything beyond trivial volume. | https://toolweight.com/compare/email-sending-apis#sparkpost--time_to_first_send | | Product scope | transactional-first | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--product_scope | | Inbound parsing | ● | Inferred | - | - | Relay webhooks deliver inbound mail as JSON. | https://toolweight.com/compare/email-sending-apis#sparkpost--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, complained, deferred, unsubscribed, inbound | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--event_webhooks | | Hosted templates | code-editor | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--hosted_templates | | React Email / MJML | handlebars | Inferred | - | - | Substitution syntax is Handlebars-like. | https://toolweight.com/compare/email-sending-apis#sparkpost--react_email_mjml | | Log retention | 10d | Community-reported | - | - | Message events are queryable for roughly 10 days. | https://toolweight.com/compare/email-sending-apis#sparkpost--log_retention | | Throughput ceiling | - | Unknown | - | - | No published figure. | https://toolweight.com/compare/email-sending-apis#sparkpost--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--multi_domain | | Data residency | us, eu | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--data_residency | | Shared pool quality | 3 | Inferred | - | - | Real deliverability engineering underneath, inherited from the Message Systems MTA business. | https://toolweight.com/compare/email-sending-apis#sparkpost--shared_pool_quality | | IP warmup | ● | Inferred | - | - | Automatic IP warmup is a long-standing SparkPost feature and one of the better implementations. | https://toolweight.com/compare/email-sending-apis#sparkpost--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--dkim_dmarc_friction | | BIMI | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--bimi_support | | Suppression list | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--suppression_management | | Bounce handling | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--bounce_complaint_handling | | Price / 1k emails | $0.4/1k | Inferred | - | - | Legacy self-serve rate, roughly $20/mo for 50,000. Bird now quotes most volume through sales. | https://toolweight.com/compare/email-sending-apis#sparkpost--price_per_1k | | Free tier | 1,000 emails/mo | Vendor-claimed | 2026-11-07 | https://bird.com/pricing/email?sp=true | - | https://toolweight.com/compare/email-sending-apis#sparkpost--free_tier | | Dedicated IP | - | Unknown | - | - | Included on committed plans; no public list price since the merger. | https://toolweight.com/compare/email-sending-apis#sparkpost--dedicated_ip_cost | | Pricing model | volume-tiers | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--pricing_model | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--llms_txt_docs | | Funding | acquired | Community-reported | - | - | Acquired by MessageBird, now Bird, in 2021. | https://toolweight.com/compare/email-sending-apis#sparkpost--funding_stage | | Positioning | "Predictable email delivery at scale." The engineering is real; the product is increasingly a feature of Bird rather than a thing you buy. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--positioning | | GA year | 2014 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#sparkpost--ga_year | **Verdict.** Genuinely good deliverability technology attached to an uncertain commercial story; new teams should confirm what self-serve still exists. **Pick it when** - Existing SparkPost estates at high volume - Teams already committed to Bird's platform - Workloads that need automatic IP warmup across many IPs ### Plunk {#plunk} Open-source email console you self-host on top of your own AWS SES account. | | | | --- | --- | | Site | https://useplunk.com | | Docs | https://docs.useplunk.com | | Repo | https://github.com/useplunk/plunk | | Company | Plunk | | Founded | 2023 | | Funding | Bootstrapped | | Open source | Yes (AGPL-3.0) | | Profile | https://toolweight.com/tools/plunk | | Score (default weights) | 45.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 30min | Inferred | - | - | Cloud signup is quick. Self-hosted Plunk inherits your own SES sandbox exit, which realistically makes it days. | https://toolweight.com/compare/email-sending-apis#plunk--time_to_first_send | | Product scope | both | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--product_scope | | Inbound parsing | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--inbound_parsing | | Event webhooks | delivered, opened, clicked, bounced, unsubscribed | Inferred | - | - | Plunk's model is its own event and trigger system rather than raw SMTP webhooks. | https://toolweight.com/compare/email-sending-apis#plunk--event_webhooks | | Hosted templates | code-editor | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--hosted_templates | | React Email / MJML | - | Inferred | - | - | Plunk sends HTML; render React Email or MJML yourself before posting. | https://toolweight.com/compare/email-sending-apis#plunk--react_email_mjml | | Log retention | - | Inferred | - | - | Self-hosted: retention is whatever your Postgres keeps. | https://toolweight.com/compare/email-sending-apis#plunk--log_retention | | Throughput ceiling | 50,400 emails/hr | Inferred | - | - | Whatever your underlying SES quota is. | https://toolweight.com/compare/email-sending-apis#plunk--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--multi_domain | | Data residency | us, eu, au | Inferred | - | - | Self-hosted, so wherever you deploy it and whichever SES region you point it at. Plunk Cloud is US-only. | https://toolweight.com/compare/email-sending-apis#plunk--data_residency | | Shared pool quality | 3 | Inferred | - | - | Inherits SES's pool, or your own dedicated IP if you buy one from AWS. | https://toolweight.com/compare/email-sending-apis#plunk--shared_pool_quality | | IP warmup | ○ | Inferred | - | - | Delegated entirely to SES. | https://toolweight.com/compare/email-sending-apis#plunk--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | You are doing SES's DNS setup, plus deploying Plunk. | https://toolweight.com/compare/email-sending-apis#plunk--dkim_dmarc_friction | | BIMI | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--bimi_support | | Suppression list | ◐ | Inferred | - | - | Contact-level unsubscribes exist; suppression is thinner than a managed provider's. | https://toolweight.com/compare/email-sending-apis#plunk--suppression_management | | Bounce handling | ◐ | Inferred | - | - | You wire SES's bounce and complaint notifications yourself. | https://toolweight.com/compare/email-sending-apis#plunk--bounce_complaint_handling | | Price / 1k emails | $1/1k | Inferred | - | - | Approximate for Plunk Cloud. Self-hosted, your only cost is SES at $0.10/1k plus a small server. | https://toolweight.com/compare/email-sending-apis#plunk--price_per_1k | | Free tier | 1,000 emails/mo | Vendor-claimed | 2026-11-06 | https://www.useplunk.com/pricing | - | https://toolweight.com/compare/email-sending-apis#plunk--free_tier | | Dedicated IP | - | Inferred | - | - | Not sold by Plunk, buy one from AWS if you need it. | https://toolweight.com/compare/email-sending-apis#plunk--dedicated_ip_cost | | Pricing model | pay-as-you-go | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--pricing_model | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--mcp_server | | llms.txt docs | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--llms_txt_docs | | Funding | bootstrapped | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--funding_stage | | Positioning | "The open-source email platform." Sells ownership: your data, your infrastructure, SES's price. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--positioning | | GA year | 2023 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#plunk--ga_year | **Verdict.** The cheapest honest dashboard over SES pricing with data in your own database, if you take on deployment and SES onboarding. **Pick it when** - Teams who already run SES and want a UI over it - Data-residency requirements no managed vendor satisfies - Self-hosters who would rather own the stack than rent it ### Scaleway TEM {#scaleway-tem} EU-sovereign transactional email from Scaleway, deliberately minimal. | | | | --- | --- | | Site | https://www.scaleway.com/en/transactional-email-tem/ | | Docs | https://www.scaleway.com/en/docs/transactional-email/ | | Company | Scaleway (Iliad Group) | | Founded | 2023 | | Funding | Subsidiary (Iliad) | | Profile | https://toolweight.com/tools/scaleway-tem | | Score (default weights) | 38.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Time to first send | 24h | Inferred | - | - | Scaleway account verification plus domain validation, and new organisations start on a very low quota that has to be raised. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--time_to_first_send | | Product scope | transactional-only | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--product_scope | | Inbound parsing | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--inbound_parsing | | Event webhooks | delivered, bounced, complained | Inferred | - | - | No open or click events, TEM deliberately does not track recipients. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--event_webhooks | | Hosted templates | none | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--hosted_templates | | React Email / MJML | - | Inferred | - | - | No templating layer at all; you post the rendered HTML. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--react_email_mjml | | Log retention | - | Unknown | 2026-11-07 | - | Retention window not verified for this pass. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--log_retention | | Throughput ceiling | - | Unknown | 2026-11-07 | - | No published figure. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--throughput_ceiling | | Multi-domain sending | ● | Inferred | - | - | Domains are managed per project. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--multi_domain | | Data residency | eu | Vendor-claimed | 2026-05-25 | https://www.scaleway.com/en/docs/transactional-email/ | EU-only, under an EU-owned parent, a different legal position from a US vendor's EU region. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--data_residency | | Shared pool quality | 3 | Inferred | - | - | Small, EU-focused pool; less battle-tested than the incumbents. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--shared_pool_quality | | IP warmup | ○ | Inferred | - | - | No dedicated IP product. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--ip_warmup | | DKIM/DMARC friction | 3 | Inferred | - | - | Manual records through the Scaleway console, plus domain validation. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--dkim_dmarc_friction | | BIMI | ○ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--bimi_support | | Suppression list | ◐ | Inferred | - | - | Blocklists exist but the tooling is minimal. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--suppression_management | | Bounce handling | ◐ | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--bounce_complaint_handling | | Price / 1k emails | $0.3/1k | Inferred | - | - | Approximate: metered at roughly €0.25 per 1,000, converted. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--price_per_1k | | Free tier | 300 emails/mo | Inferred | - | - | Small permanent monthly allowance per project. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--free_tier | | Dedicated IP | - | Inferred | 2026-11-07 | - | Not offered, shared pool only. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--dedicated_ip_cost | | Pricing model | pay-as-you-go | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--pricing_model | | MCP server | ◐ | Inferred | - | - | Scaleway ships a general MCP server for its API surface rather than a TEM-specific one. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--mcp_server | | llms.txt docs | ◐ | Inferred | - | - | Docs are public markdown on GitHub, without a formal llms.txt index. | https://toolweight.com/compare/email-sending-apis#scaleway-tem--llms_txt_docs | | Funding | subsidiary | Vendor-claimed | 2026-05-25 | https://www.scaleway.com | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--funding_stage | | Positioning | "Sovereign European cloud." The pitch is jurisdiction, not features, and the feature set reflects that honestly. | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--positioning | | GA year | 2023 | Inferred | - | - | - | https://toolweight.com/compare/email-sending-apis#scaleway-tem--ga_year | **Verdict.** The clearest answer when you need an EU-owned company holding the data; minimal otherwise, so judge it on jurisdiction. **Pick it when** - EU sovereignty requirements a US vendor's EU region does not satisfy - Privacy-first products that do not want open tracking to exist - Teams already running on Scaleway infrastructure ## Methodology - Prices are the cheapest paid self-serve tier, in USD per thousand emails - Annual discounts and contact-based add-ons ignored - Free tiers are permanent free plans, not trials - Feature cells from vendor documentation are marked vendor-claimed - Judgement calls (pool quality, DKIM friction, warmup depth) are scored 1-5 and marked inferred - Ladders are defined in each column's help text - Blank cells mean we do not know, and we would rather say so - Time-to-first-send is currently inferred or community-reported on every row - Definition: wall-clock from clean signup to a message in a Gmail inbox not verified on the account - The external-inbox clause excludes sandbox echo, so SES cannot pass by mailing itself - Includes manual review, compliance holds and support tickets - Excludes DNS propagation beyond ten minutes, so a slow registrar is not scored against the provider - Next pass measures properly: fresh company, fresh domain per provider, scripted signup - Receiving mailboxes we control on Gmail, Outlook and Fastmail - Timestamp taken from the receiving server's Received header, not the vendor dashboard - Rows move to measured as each run completes - Rejected sandbox requests reported as a distribution, not a median, because the tail is the story ## FAQ ### What is the fastest email API to get sending with? - Resend, AhaSend and Loops all hit an external inbox roughly ten to fifteen minutes after signup - No human approval step: verify DNS and you are live - Amazon SES is the slow end, one to five days - Its sandbox exit goes through AWS Support and is frequently rejected first time ### Is Amazon SES actually cheaper than Resend or Postmark? - Per message, dramatically: $0.10 per thousand against Resend's $0.40 and Postmark's $1.50 - The gap only holds if you value your own time at zero - No message log, no template UI, no hosted event pipeline, you build all three - Below roughly two million a month, the saving rarely covers the engineering ### Do I need a dedicated IP for transactional email? - Almost certainly not - Dedicated IPs need sustained volume; Postmark wants around 300,000 a month before selling one - A cold IP with low traffic warms badly and looks worse than a well-policed shared pool - Below that threshold, a policed shared pool beats an under-warmed dedicated IP ### Which email API works with React Email? - React Email renders to HTML, so it technically works with any provider - Only Resend integrates it first-party: React Email is a Resend project - Its Node SDK accepts a React element as the message body - Everywhere else you call `render()` yourself, about four lines of glue ### Which providers offer EU or Australian data residency? - EU residency is common: Scaleway TEM and Brevo are EU-only - Resend, SendGrid, Mailgun, SparkPost, MailerSend and Mailtrap offer an EU region, sometimes paid - Australian residency is close to nonexistent - Amazon SES in ap-southeast-2 is the only managed option; otherwise self-host something like Plunk ### Why did my provider suspend my account after the first send? - Almost always compliance automation, not deliverability - New accounts mailing an unseen list trip fraud heuristics, especially free tiers at SendGrid and Brevo - Send a small warm batch to engaged recipients first, under a few hundred a day - Have DKIM, SPF and a DMARC record in place before the first campaign ### How is time-to-first-send measured on this page? - Wall-clock from signup to a message in a Gmail inbox not verified on the account - Includes any manual review queue - Excludes DNS propagation beyond ten minutes - The external-inbox clause stops a provider passing by mailing an address it already trusts, as an SES sandbox can ## Sources | Source | Last verified | | --- | --- | | https://resend.com/docs/dashboard/webhooks/introduction | 2026-06-01 | | https://resend.com/docs/send-with-nextjs | 2026-06-01 | | https://resend.com/pricing | 2026-06-01 | | https://postmarkapp.com/developer/user-guide/inbound | 2026-05-20 | | https://postmarkapp.com/developer/webhooks/webhooks-overview | 2026-05-20 | | https://postmarkapp.com/pricing | 2026-05-20 | | https://postmarkapp.com/llms.txt | 2026-11-07 | | https://docs.aws.amazon.com/ses/latest/dg/receiving-email.html | 2026-05-10 | | https://docs.aws.amazon.com/ses/latest/dg/monitor-using-event-publishing.html | 2026-05-10 | | https://docs.aws.amazon.com/ses/latest/dg/manage-sending-quotas.html | 2026-05-10 | | https://docs.aws.amazon.com/general/latest/gr/ses.html | 2026-05-10 | | https://aws.amazon.com/ses/pricing/ | 2026-05-10 | | https://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.html | 2026-05-10 | | https://www.twilio.com/docs/sendgrid/for-developers/parsing-email/setting-up-the-inbound-parse-webhook | 2026-05-15 | | https://www.twilio.com/docs/sendgrid/for-developers/tracking-events/event | 2026-05-15 | | https://sendgrid.com/en-us/pricing | 2026-05-15 | | https://www.twilio.com | 2026-05-15 | | https://documentation.mailgun.com/docs/mailgun/user-manual/receive-forward-store/ | 2026-05-18 | | https://documentation.mailgun.com/docs/mailgun/user-manual/events/ | 2026-05-18 | | https://documentation.mailgun.com/docs/mailgun/user-manual/sending-messages/ | 2026-05-18 | | https://www.mailgun.com/pricing/ | 2026-11-06 | | https://documentation.mailgun.com/docs/mailgun/mcp.md | 2026-11-07 | | https://loops.so/pricing | 2026-11-07 | | https://loops.so/docs/api-reference/intro | 2026-11-07 | | https://developers.brevo.com/docs/mcp-protocol | 2026-11-07 | | https://www.mailersend.com/pricing | 2026-11-06 | | https://www.mailersend.com/features/mcp | 2026-11-07 | | https://bird.com/pricing/email?sp=true | 2026-11-07 | | https://ahasend.com/pricing | 2026-11-07 | | https://ahasend.com/docs/llms.txt | 2026-11-07 | | https://ahasend.com/llms.txt | 2026-11-07 | | https://ahasend.com/docs/mcp-server | 2026-11-07 | | https://www.useplunk.com/pricing | 2026-11-06 | | https://www.scaleway.com/en/docs/transactional-email/ | 2026-05-25 | | https://www.scaleway.com | 2026-05-25 | | https://docs.mailtrap.io/email-api-smtp/setup/sending-limits | 2026-11-07 | | https://mailtrap.io/pricing/ | 2026-11-07 | | https://docs.mailtrap.io/for-ai-agents/tools/mcp-server.md | 2026-11-07 | ## Cite this page > Resend, AhaSend and Loops deliver a first email in about ten minutes; Amazon SES is cheapest at $0.10 per thousand; Postmark polices its pool best. > > — Toolweight, https://toolweight.com/compare/email-sending-apis, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [AU SMS APIs](https://toolweight.com/compare/sms-api-providers-australia), Which SMS API provider should I use to send text messages to Australian mobile numbers? - [Domain registrars](https://toolweight.com/compare/domain-registrars), Which domain registrar is cheapest to renew with, and which ones make it hard to leave? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/email-sending-apis - Machine-readable: https://toolweight.com/compare/email-sending-apis.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: SQLite vs PostgreSQL vs MySQL vs MariaDB vs DuckDB slug: sqlite-vs-postgres-vs-mysql url: "https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql" question: Should I use SQLite, PostgreSQL or MySQL? tools: 5 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-07-01 median_verified: 2026-07-01 stale_values: 108 conflicting_values: 0 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 62% verify_cadence: 30d license: CC-BY-4.0 --- # SQLite vs PostgreSQL vs MySQL > **Should I use SQLite, PostgreSQL or MySQL?** > > Use SQLite when one process owns modest writes, PostgreSQL for concurrent writers and extensions, MySQL or MariaDB for online schema changes, and DuckDB for analytics. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql | | Tools compared | 5 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 130 of 130 values have a verification date, checked between 2026-07-01 and 2026-11-07 (median 2026-07-01), 108 due for re-check. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 62% (mean cell confidence, not age) | | Killer field | operational_burden | | Scoring | Not ranked, this category compares, it does not rank | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Comparison ### Engine & SQL | Tool | Embedded or server | Concurrency model | Write concurrency | Isolation levels | JSON support | Full-text search | Vector search | Type strictness | ALTER TABLE | Max database size | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | PostgreSQL | Server (client/server) | MVCC (heap row versions) | Concurrent writers (row-level) | Read committed, Repeatable read, Serializable | Binary JSONB + indexes | Built-in | Extension | Static, strict | Minimal | - | | MariaDB | Both | MVCC (undo log) | Concurrent writers (row-level) | Read uncommitted, Read committed, Repeatable read, Serializable | Text functions only | Built-in | Native type + ANN index | Static, coercing | Moderate | 64 TB | | MySQL | Server (client/server) | MVCC (undo log) | Concurrent writers (row-level) | Read uncommitted, Read committed, Repeatable read, Serializable | Binary JSON type | Built-in | Native type | Static, coercing | Moderate | 64 TB | | SQLite | Embedded (in-process) | Reader/writer locking | Single writer | Serializable | Text functions only | Extension | Extension | Dynamic (per-value) | Severe (rebuild required) | 256 TB | | DuckDB | Embedded (in-process) | MVCC (single process) | Single writer | Snapshot | Text functions only | Extension | Extension | Static, strict | Moderate | - | ### Operations | Tool | Replication | PITR | Online schema change | Connection model | Default max conns | Managed options | Ops burden | | --- | --- | --- | --- | --- | --- | --- | --- | | PostgreSQL | Built-in async + synchronous | ● | ◐ | Process per connection | 100 | Neon, Supabase, Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | 4 | | MariaDB | Built-in async + synchronous | ● | ● | Thread per connection | 151 | Amazon RDS, Google Cloud SQL, MariaDB SkySQL | 3 | | MySQL | Built-in async + synchronous | ● | ● | Thread per connection | 151 | Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | 3 | | SQLite | Third-party only | ◐ | ○ | In-process (no connections) | - | Turso, Cloudflare D1, Fly.io LiteFS | 1 | | DuckDB | None | ○ | ○ | In-process (no connections) | - | MotherDuck | 1 | ### Ecosystem | Tool | Extension ecosystem | Client libraries | Migration tooling | GitHub stars | Positioning | | --- | --- | --- | --- | --- | --- | | PostgreSQL | 5 | 5 | 5 | 18,000 | The world's most advanced open source relational database. | | MariaDB | 3 | 4 | 3 | 6,000 | The open source relational database, made by the original developers of MySQL. | | MySQL | 2 | 5 | 4 | 11,000 | The world's most popular open source database. | | SQLite | 4 | 5 | 3 | 8,000 | Small. Fast. Reliable. Choose any three. | | DuckDB | 4 | 3 | 2 | 33,000 | DuckDB is a fast in-process analytical database. | ### Licence & governance | Tool | Licence | Embed in closed source | Governance | | --- | --- | --- | --- | | PostgreSQL | PostgreSQL Licence (BSD-style) | ● | Community project | | MariaDB | GPL-2.0 | ◐ | Foundation | | MySQL | GPL-2.0 or commercial | ○ | Single vendor | | SQLite | Public domain | ● | Independent team | | DuckDB | MIT | ● | Foundation | ### History | Tool | First release | | --- | --- | | PostgreSQL | 1997-01-29 | | MariaDB | 2009-10-29 | | MySQL | 1995-05-23 | | SQLite | 2000-08-17 | | DuckDB | 2019-06-26 | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | `embedded_or_server` | features | enum | - | n/a | 0 | Whether the engine runs inside your application process as a library, as a separate daemon you connect to over a socket, or ships both. | | Concurrency model | `concurrency_model` | features | enum | - | n/a | 0 | How the engine isolates concurrent transactions: lock-based, or multi-version with old row versions kept in the heap, in an undo log, or in process memory. | | Write concurrency | `write_concurrency` | features | enum | - | n/a | 0 | Whether two write transactions can commit at the same time against the same database, or writes are serialised to one at a time. | | Isolation levels | `isolation_levels` | features | multi-enum | - | n/a | 0 | SQL isolation levels the engine implements with distinct semantics; levels it accepts but silently upgrades are excluded and noted. | | JSON support | `json_support` | features | enum | - | higher | 5 | Whether JSON is stored as text with helper functions, as a parsed binary column type, or as a binary type with a general index (GIN or multi-valued) over its contents. | | Full-text search | `full_text_search` | features | enum | - | higher | 4 | Whether a ranked text index (BM25, tsvector, FULLTEXT) is part of the core engine, available as a loadable extension, or absent. | | Vector search | `vector_search` | features | enum | - | higher | 6 | Support for storing embeddings and running nearest-neighbour queries: absent, a native column type with exact scans only, a mature extension, or a native type with an approximate index in the open-source build. | | Type strictness | `type_strictness` | features | enum | - | n/a | 0 | Whether column types are advisory and values carry their own type, enforced but with implicit coercion or truncation, or enforced with errors on lossy conversion. | | ALTER TABLE | `alter_table_limits` | features | enum | - | higher | 6 | How much of the schema you can change in place. Severe means most changes beyond ADD COLUMN need a full table rebuild; minimal means near-complete DDL inside a transaction you can roll back. | | Max database size | `max_db_size` | features | bytes | - | n/a | 0 | The documented hard ceiling for one database or tablespace. Null where the project documents no limit; the note gives the practical wall operators hit first. | | Replication | `replication` | operations | enum | - | higher | 7 | Replication shipped with the engine itself: none, third-party tooling only, asynchronous followers, or asynchronous plus a synchronous or quorum-committed mode. | | PITR | `pitr` | operations | tristate | - | higher | 7 | Point-in-time recovery: can you restore to an arbitrary moment before an incident using a base backup plus a shipped write-ahead or binary log? Partial means only via third-party tooling. | | Online schema change | `online_schema_change` | operations | tristate | - | higher | 7 | Whether a large table's schema can be changed while writes continue, without a long exclusive lock, using either the engine's own online DDL or well-established shadow-table tooling. | | Connection model | `connection_model` | operations | enum | - | n/a | 0 | What the server allocates per client connection, which sets how badly an oversized or serverless connection pool hurts. | | Default max conns | `default_max_connections` | operations | number | - | n/a | 0 | Out-of-the-box concurrent client connection limit in a default configuration. Null for embedded engines, where the concept does not apply. | | Managed options | `hosted_options` | operations | multi-enum | - | higher | 5 | Notable managed services that run this engine for you, as a proxy for how easy it is to stop operating it yourself. Curated, not exhaustive. | | Ops burden | `operational_burden` | operations | score | - | lower | 9 | 1-5, lower is less work. 1 = a file your process opens: no daemon, no upgrade dance. 2 = one process, but you own the backups. 3 = a server with users, connection limits and a replica to monitor. 4 = all of that plus vacuum or bloat management, connection pooling and major-version upgrades that need a migration plan. 5 = a cluster with a full-time owner. | | Extension ecosystem | `extension_ecosystem` | ecosystem | score | - | higher | 6 | 1-5. 1 = no extension mechanism. 2 = pluggable storage engines or components, little third-party use. 3 = a documented plugin API with a handful of production-grade plugins. 4 = a healthy third-party ecosystem installable without patching the source. 5 = hundreds of extensions, and managed hosts ship a curated subset. | | Client libraries | `client_library_maturity` | ecosystem | score | - | higher | 5 | 1-5 for driver and ORM quality across mainstream languages. 5 = first-class, actively maintained drivers plus full ORM and query-builder support everywhere. 3 = official drivers for the major languages, thin ORM coverage. 1 = one language, community-maintained. | | Migration tooling | `migration_tooling` | ecosystem | score | - | higher | 6 | 1-5 for schema-migration tooling maturity, weighted towards zero-downtime changes on large tables. 5 = several mature frameworks plus dedicated online-change tools. 2 = migrations exist but you write the safety yourself. | | GitHub stars | `github_stars` | ecosystem | number | - | n/a | 0 | Stars on the canonical public repository, rounded to the nearest thousand. For SQLite, PostgreSQL and MySQL this is a read-only mirror, so it measures visibility rather than activity. | | Positioning | `positioning` | ecosystem | text | - | n/a | 0 | The project's own one-line description of itself, quoted from its homepage or documentation. | | Licence | `licence` | licensing | enum | - | n/a | 0 | The licence the source is distributed under. Dual licensing means the copyleft terms apply unless you buy the commercial option. | | Embed in closed source | `embedding_freedom` | licensing | tristate | - | higher | 4 | Whether you can ship the engine inside a proprietary product without a commercial licence. Partial means the client library is permissive enough to link, but the server is not redistributable that way. | | Governance | `governance` | licensing | enum | - | n/a | 0 | Who controls the roadmap and holds the copyright: one company, a small independent team, a non-profit foundation, or a distributed contributor community with no owning entity. | | First release | `first_release` | timeline | date | - | n/a | 0 | Date of the first public release under the project's current name; the note records earlier ancestry where it exists. | ## Verdict - This page has no score column, and never will. - Other Toolweight comparisons rank vendors selling the same thing at different prices. - These five are engines with different shapes, not competitors. - SQLite is a file format with a query planner attached. - PostgreSQL is a process-per-connection MVCC server. - MySQL and MariaDB are thread-per-connection MVCC servers tuned for replication. - DuckDB is a columnar analytics engine that happens to speak SQL. - Weighting them would say more about the weights than the engines. - So the table is descriptive, and the decision lives in prose. - **PostgreSQL is the correct default for most teams.** - It has the widest SQL surface and the best extension ecosystem. - Most people already know it. - pgvector made it the default vector store, killing a category of standalone databases. - The catch is the operational tax: it is the heaviest engine here to run. - Expect autovacuum tuning, transaction-ID wraparound and bloat. - A process per connection means PgBouncer stops being optional past a few hundred clients. - Major-version upgrades mean pg_upgrade or a logical-replication cutover. - Managed Postgres exists because self-hosting it well is a job. - **SQLite is the most under-used engine here, and the most over-claimed.** - WAL mode gives many concurrent readers. - One NVMe machine serves astonishing traffic with zero network hops. - But: one writer at a time, and no built-in replication. - Most schema changes beyond ADD COLUMN need a twelve-step table rebuild. - Backups mean adopting Litestream or Turso. - It is a straight trade: one process, short writes, great simplicity. - **MySQL and MariaDB are right more often than the Postgres-shaped internet admits.** - Their edge: changing a very large table's schema without taking writes offline. - Online DDL, INSTANT ADD COLUMN, gh-ost and pt-online-schema-change make it routine. - Thread-per-connection also forgives a badly behaved pool. - Against that: a narrower SQL surface and a thin extension ecosystem. - Licence differs: MySQL is GPLv2-or-commercial under Oracle, MariaDB GPLv2 under a foundation. - Embedding the server in a product makes that the whole decision; a website makes it noise. - **The decision tree, in order:** - More than one process writing concurrently? If no, and it fits one disk, use SQLite. - Turn on WAL mode. - If yes: is much of the load aggregation over columns, not key lookups? - If so, that half belongs in DuckDB or a warehouse, not your OLTP engine. - Need extensions, pgvector, PostGIS, TimescaleDB, or window-heavy, CTE-heavy SQL? - If yes, PostgreSQL, and budget for the operations. - If not, but you fear altering a 500 GB table without downtime, MySQL or MariaDB. - If nothing discriminates, it is a genuine tie. - A tie means pick the engine somebody already debugged at three in the morning. ## Axis 1, deployment shape - The first question is not which SQL dialect you prefer. - It is whether the database is a library or a server. - SQLite and DuckDB run inside your process. - No daemon, no port, no credentials, no network hop, no connection pool, nothing extra to monitor. - A query is a function call. - That collapses an entire layer of your architecture. - The cost: the database's availability is now your process's availability. - Adding a read replica means shipping the file, Litestream, LiteFS, Turso, not pointing a replica at a primary. - Server engines charge you a daemon and pay you back with a network boundary. - Several app instances, an analyst with psql, a cross-region replica, a bastion host. - Migrations run from CI rather than whichever container won the race. - The detail that catches teams out is the connection model. - PostgreSQL forks a process per connection. - A thousand idle Lambda connections becomes a memory problem, and PgBouncer stops being optional. - MySQL and MariaDB use a thread per connection and forgive a badly configured pool. - If your compute is serverless and bursty, that beats any feature in the table. ## Axis 2, concurrency profile - SQLite in WAL mode gives many concurrent readers and exactly one writer. - Writes are serialised, so the arithmetic is simple. - Write transaction duration times writes per second must stay comfortably below one. - Short transactions at a few hundred writes per second are fine on commodity hardware. - Long transactions are what kill you. - Holding a write transaction open across a network call is the classic way to lock a healthy app. - MVCC engines let writers proceed in parallel by keeping old row versions. - Then they hand you the bill for those versions. - On PostgreSQL it arrives as autovacuum, table and index bloat, and transaction-ID wraparound warnings. - On InnoDB it arrives as undo-log growth and a history list that climbs when a long read refuses to end. - Neither is hard once you know it exists; both are surprises the first time. - One detail deserves more attention: the default isolation levels differ. - PostgreSQL defaults to READ COMMITTED. - MySQL and MariaDB default to REPEATABLE READ. - SQLite is effectively serialisable, and DuckDB gives snapshot isolation. - Code written against one engine's default can change behaviour silently on another. - Read-modify-write races that were impossible become possible, or vice versa. - Port the isolation assumptions, not just the SQL. ## Axis 3, query complexity - PostgreSQL has the widest SQL surface here by a distance. - Lateral joins, materialised and non-materialised CTEs, partial and expression indexes, generated columns, exclusion constraints. - Window functions that keep gaining features, plus JSONB with GIN indexes. - Its extension mechanism made it a geospatial, time-series and vector database without forking. - If your queries are analytical in shape but transactional in access pattern, it will not run out of room. - MySQL and MariaDB trade surface area for a fast primary-key path and predictable clustered-index behaviour. - Most application queries are exactly that shape, which is why so much of the web runs on them. - You feel the ceiling when reporting queries bring five-way joins with correlated subqueries. - SQLite's planner is small and honest about it. - It handles ordinary plans well, does less well on many-way joins, and has no parallelism: one query, one core. - DuckDB inverts every one of these assumptions. - Vectorised columnar execution, multi-core by default. - It reads Parquet, CSV, S3 and live PostgreSQL tables directly. - It aggregates a billion rows on a laptop while your OLTP engine is still planning. - The right architecture for many teams is running two, not choosing between them. - Rows in Postgres or SQLite, columns in DuckDB, over the same object storage. ## What this page deliberately leaves out - There is no pricing group: these engines are free, and the money is in who runs them. - The comparison people need next is different: Neon vs Supabase vs RDS vs Aurora, or PlanetScale and Vitess vs managed MySQL. - That is another page with different fields: cold start, branching, connection pooling, egress, backup retention, region coverage. - Hosted-Postgres and hosted-MySQL are planned as their own categories. - They will have score columns, because those are vendors selling the same thing at different prices. - Until then, the adjacent pages are the useful ones. - Convex alternatives covers the layer above, where database, API and sync engine ship together and the engine choice is made for you. - S3-compatible storage covers where the blobs go, and the substrate DuckDB reads from. - LLM APIs covers the retrieval side of the pgvector column. - The embedding model constrains dimensionality, and therefore the index you can afford. ## Per-tool provenance, every cell, every source ### PostgreSQL {#postgresql} MVCC relational server with the widest SQL surface and a deep extension ecosystem. | | | | --- | --- | | Site | https://www.postgresql.org | | Docs | https://www.postgresql.org/docs/current/ | | Repo | https://github.com/postgres/postgres | | Company | PostgreSQL | | Founded | 1996 | | Open source | Yes (PostgreSQL Licence) | | Profile | https://toolweight.com/tools/postgresql | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | Server (client/server) | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/tutorial-arch.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--embedded_or_server | | Concurrency model | MVCC (heap row versions) | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/mvcc-intro.html | Dead row versions live in the heap until vacuumed, which is why bloat is a Postgres word and not a MySQL one. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--concurrency_model | | Write concurrency | Concurrent writers (row-level) | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/explicit-locking.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--write_concurrency | | Isolation levels | Read committed, Repeatable read, Serializable | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/transaction-iso.html | READ UNCOMMITTED is accepted but behaves as READ COMMITTED. SERIALIZABLE is true SSI, not lock-based. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--isolation_levels | | JSON support | Binary JSONB + indexes | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/datatype-json.html | jsonb with GIN indexes, containment operators and SQL/JSON path queries. The reason most document-store migrations get cancelled. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--json_support | | Full-text search | Built-in | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/textsearch.html | tsvector and tsquery with GIN indexes and ranking. Good enough to defer Elasticsearch for a long time; not a replacement for it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--full_text_search | | Vector search | Extension | Vendor-claimed | 2026-07-01 | https://github.com/pgvector/pgvector | pgvector is the de facto standard: HNSW and IVFFlat indexes, available on essentially every managed Postgres. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--vector_search | | Type strictness | Static, strict | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/typeconv.html | Refuses implicit lossy casts. This is the source of most complaints from people arriving from MySQL, and most of the data-integrity wins. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--type_strictness | | ALTER TABLE | Minimal | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/sql-altertable.html | Near-complete DDL inside a transaction you can roll back. ALTER TYPE still rewrites the table under ACCESS EXCLUSIVE. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--alter_table_limits | | Max database size | - | Vendor-claimed | 2026-11-07 | https://www.postgresql.org/docs/current/limits.html | Unlimited database size according to the official limits table; practical limits such as available disk space and performance still apply. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--max_db_size | | Replication | Built-in async + synchronous | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/high-availability.html | Physical streaming plus logical replication in core; synchronous_commit gives quorum or remote-apply durability. Automatic failover is still Patroni's job. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--replication | | PITR | ● | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/continuous-archiving.html | Base backup plus archived WAL restores to a timestamp, an LSN or a named restore point. The reference implementation of the idea. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--pitr | | Online schema change | ◐ | Inferred | 2026-07-01 | - | Many ALTERs are metadata-only and instant; type changes rewrite under an exclusive lock. Teams reach for pgroll or pg_repack, and always set lock_timeout. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--online_schema_change | | Connection model | Process per connection | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/tutorial-arch.html | A backend process per connection. Past a few hundred clients PgBouncer stops being optional, and serverless compute reaches that number fast. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--connection_model | | Default max conns | 100 | Vendor-claimed | 2026-11-06 | https://www.postgresql.org/docs/current/runtime-config-connection.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--default_max_connections | | Managed options | Neon, Supabase, Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Inferred | 2026-07-01 | - | The widest managed market of any engine here, and the reason most teams never actually run Postgres themselves. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--hosted_options | | Ops burden | 4 | Inferred | 2026-07-01 | - | Autovacuum tuning, bloat, transaction-ID wraparound, connection pooling, and major upgrades via pg_upgrade or logical replication. The best engine here is also the most work. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--operational_burden | | Extension ecosystem | 5 | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/docs/current/extend-extensions.html | PostGIS, pgvector, TimescaleDB, pg_cron, pg_stat_statements. Managed hosts each ship a curated subset, which is worth checking before you depend on one. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--extension_ecosystem | | Client libraries | 5 | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--client_library_maturity | | Migration tooling | 5 | Inferred | 2026-07-01 | - | Atlas, Flyway, Liquibase, sqlx, Drizzle and Prisma all treat Postgres as the reference target, plus pgroll and reshape for expand/contract rollouts. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--migration_tooling | | GitHub stars | 18,000 | Community-reported | 2026-07-01 | https://github.com/postgres/postgres | Approximate. Official mirror; development happens on the pgsql-hackers mailing list. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--github_stars | | Positioning | The world's most advanced open source relational database. | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--positioning | | Licence | PostgreSQL Licence (BSD-style) | Vendor-claimed | 2026-11-06 | https://www.postgresql.org/about/licence/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--licence | | Embed in closed source | ● | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/about/licence/ | Permissive enough to redistribute inside a proprietary product; the engine's shape means almost nobody does. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--embedding_freedom | | Governance | Community project | Vendor-claimed | 2026-07-01 | https://www.postgresql.org/developer/ | A core team and a contributor community with no owning company, the strongest acquisition-risk story on this page. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--governance | | First release | 1997-01-29 | Community-reported | 2026-07-01 | https://www.postgresql.org/docs/current/history.html | PostgreSQL 6.0. The lineage runs back through Postgres95 to Berkeley POSTGRES in 1986. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#postgresql--first_release | **Verdict.** Strongest engine on every axis except operational cost; nothing else pairs transactional DDL, this much SQL and pgvector. **Pick it when** - Concurrent writers plus queries that outgrow simple key lookups - Anything storing embeddings, geometry or time series alongside rows - Teams who will run it managed, or who have someone who wants to own it ### MariaDB {#mariadb} GPL-only MySQL fork under a foundation, with Galera clustering and native vectors. | | | | --- | --- | | Site | https://mariadb.org | | Docs | https://mariadb.com/kb/en/documentation/ | | Repo | https://github.com/MariaDB/server | | Company | MariaDB Foundation | | Founded | 2009 | | Open source | Yes (GPL-2.0) | | Profile | https://toolweight.com/tools/mariadb | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | Both | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/mariadb-embedded-server/ | Primarily a server, but the libmariadbd embedded library still ships, unlike MySQL, which removed its equivalent. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--embedded_or_server | | Concurrency model | MVCC (undo log) | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/innodb/ | InnoDB by default, so the same undo-log versioning as MySQL. Aria and MyISAM behave differently and are not transactional. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--concurrency_model | | Write concurrency | Concurrent writers (row-level) | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/innodb-lock-modes/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--write_concurrency | | Isolation levels | Read uncommitted, Read committed, Repeatable read, Serializable | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/set-transaction/ | Defaults to REPEATABLE READ, matching MySQL. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--isolation_levels | | JSON support | Text functions only | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/json-data-type/ | JSON is an alias for LONGTEXT with a JSON_VALID check constraint. The functions are there; the binary storage and multi-valued indexes are not. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--json_support | | Full-text search | Built-in | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/full-text-indexes/ | FULLTEXT indexes on InnoDB and MyISAM; the Mroonga storage engine is the usual answer for serious CJK search. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--full_text_search | | Vector search | Native type + ANN index | Vendor-claimed | 2026-11-06 | https://mariadb.com/kb/en/vectors/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--vector_search | | Type strictness | Static, coercing | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/sql-mode/ | Strict mode has been the default since 10.2.4, but as on MySQL it is a sql_mode setting rather than an engine guarantee. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--type_strictness | | ALTER TABLE | Moderate | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/alter-table/ | ALTER ONLINE and instant ADD COLUMN since 10.3; DDL is not rollback-able inside a transaction. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--alter_table_limits | | Max database size | 64 TB | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/innodb-limitations/ | 64 TiB per InnoDB tablespace at the default page size, inherited from the shared InnoDB lineage. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--max_db_size | | Replication | Built-in async + synchronous | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/galera-cluster/ | Binary-log replication plus Galera synchronous multi-primary clustering bundled since 10.1, no plugin purchase, no separate product. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--replication | | PITR | ● | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/mariabackup/ | Mariabackup for hot physical backups, plus binlog replay to a point in time. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--pitr | | Online schema change | ● | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/alter-table/ | Native online ALTER, and gh-ost and pt-online-schema-change both work against it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--online_schema_change | | Connection model | Thread per connection | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/thread-pool-in-mariadb/ | A thread per connection by default, but unlike MySQL the thread pool is in the community server. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--connection_model | | Default max conns | 151 | Vendor-claimed | 2026-07-01 | https://mariadb.com/kb/en/server-system-variables/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--default_max_connections | | Managed options | Amazon RDS, Google Cloud SQL, MariaDB SkySQL | Inferred | 2026-07-01 | - | Thinner than MySQL's. Several hosts advertising MariaDB compatibility are in fact running MySQL. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--hosted_options | | Ops burden | 3 | Inferred | 2026-07-01 | - | Same shape as MySQL. Galera moves it up a point if you run it, synchronous clustering brings flow control and split-brain to think about. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--operational_burden | | Extension ecosystem | 3 | Inferred | 2026-07-01 | - | Pluggable storage engines are a genuine differentiator: ColumnStore, Spider, Mroonga, CONNECT. Not comparable to Postgres extensions in breadth. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--extension_ecosystem | | Client libraries | 4 | Inferred | 2026-07-01 | - | Mostly rides MySQL drivers, which works until it does not, authentication plugins and newer type support are where the divergence shows. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--client_library_maturity | | Migration tooling | 3 | Inferred | 2026-07-01 | - | MySQL tooling generally works, but MariaDB is rarely the tested target, so you find the gaps yourself. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--migration_tooling | | GitHub stars | 6,000 | Community-reported | 2026-07-01 | https://github.com/MariaDB/server | Approximate. Unlike MySQL and Postgres, this is where development actually happens. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--github_stars | | Positioning | The open source relational database, made by the original developers of MySQL. | Vendor-claimed | 2026-07-01 | https://mariadb.org/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--positioning | | Licence | GPL-2.0 | Vendor-claimed | 2026-11-06 | https://mariadb.com/kb/en/mariadb-license/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--licence | | Embed in closed source | ◐ | Inferred | 2026-07-01 | - | The server is GPLv2 with no commercial alternative, so you cannot embed it in closed source. The LGPL client library means you can link a proprietary client, the opposite trade to MySQL's. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--embedding_freedom | | Governance | Foundation | Vendor-claimed | 2026-07-01 | https://mariadb.org/about/ | The MariaDB Foundation stewards the code and guarantees it stays open; MariaDB plc sells products and support around it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--governance | | First release | 2009-10-29 | Community-reported | 2026-07-01 | https://mariadb.org/about/ | MariaDB 5.1.38 beta, forked from MySQL 5.1 after Oracle's acquisition of Sun. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mariadb--first_release | **Verdict.** MySQL without Oracle, plus Galera clustering and native vectors ahead of MySQL; smaller ecosystem and growing compatibility drift. **Pick it when** - MySQL-shaped workloads where GPL-only licensing or Oracle stewardship is a blocker - Synchronous multi-primary clustering without buying anything - Vector search inside a MySQL dialect you can self-host ### MySQL {#mysql} The relational server that ran the early web, now Oracle-stewarded and InnoDB-based. | | | | --- | --- | | Site | https://www.mysql.com | | Docs | https://dev.mysql.com/doc/refman/8.4/en/ | | Repo | https://github.com/mysql/mysql-server | | Company | Oracle | | Founded | 1995 | | Open source | Yes (GPL-2.0 or commercial) | | Profile | https://toolweight.com/tools/mysql | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | Server (client/server) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/what-is-mysql.html | The libmysqld embedded server library was removed in 8.0; it is a server, full stop. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--embedded_or_server | | Concurrency model | MVCC (undo log) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-multi-versioning.html | InnoDB keeps old versions in an undo log rather than the heap, so the failure mode is history-list growth, not table bloat. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--concurrency_model | | Write concurrency | Concurrent writers (row-level) | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-locking.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--write_concurrency | | Isolation levels | Read uncommitted, Read committed, Repeatable read, Serializable | Vendor-claimed | 2026-11-06 | https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--isolation_levels | | JSON support | Binary JSON type | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/json.html | A real JSON column type stored in a parsed binary format, with multi-valued indexes over arrays since 8.0.17. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--json_support | | Full-text search | Built-in | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/fulltext-search.html | FULLTEXT indexes on InnoDB with natural-language and boolean modes; the ngram parser covers CJK. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--full_text_search | | Vector search | Native type | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/9.0/en/vector.html | VECTOR type and distance functions since 9.0, but the approximate index is a HeatWave feature, the community server does exact scans. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--vector_search | | Type strictness | Static, coercing | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/sql-mode.html | STRICT_TRANS_TABLES is on by default and has been since 5.7, but sql_mode is a runtime variable, so strictness is a configuration fact rather than an engine fact. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--type_strictness | | ALTER TABLE | Moderate | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html | Broad ALTER support with INSTANT and INPLACE algorithms. DDL is atomic and crash-safe since 8.0, but you cannot roll it back inside a transaction the way you can on Postgres. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--alter_table_limits | | Max database size | 64 TB | Vendor-claimed | 2026-11-06 | https://dev.mysql.com/doc/refman/8.4/en/innodb-limits.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--max_db_size | | Replication | Built-in async + synchronous | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/replication.html | Asynchronous binary-log replication, a semi-synchronous plugin, and Group Replication for quorum writes and automatic failover. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--replication | | PITR | ● | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/point-in-time-recovery.html | Full backup plus mysqlbinlog replay to a timestamp or GTID. Percona XtraBackup is the usual hot-backup tool in the open-source world. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--pitr | | Online schema change | ● | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl.html | Native online DDL, plus gh-ost and pt-online-schema-change for the cases it cannot do. The strongest story on this page. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--online_schema_change | | Connection model | Thread per connection | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/connection-interfaces.html | A thread per connection, so idle connections are far cheaper than on Postgres. A true thread pool is an Enterprise or Percona feature. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--connection_model | | Default max conns | 151 | Vendor-claimed | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--default_max_connections | | Managed options | Amazon RDS, Amazon Aurora, Google Cloud SQL, Azure Database, PlanetScale | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--hosted_options | | Ops burden | 3 | Inferred | 2026-07-01 | - | A server with users, replicas and a binlog to keep an eye on, but no vacuum, and connection handling that forgives a sloppy pool. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--operational_burden | | Extension ecosystem | 2 | Inferred | 2026-07-01 | - | A component and plugin API exists, and pluggable storage engines are real, but there is nothing resembling the Postgres extension market. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--extension_ecosystem | | Client libraries | 5 | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--client_library_maturity | | Migration tooling | 4 | Inferred | 2026-07-01 | - | Flyway and Liquibase are first-class, and gh-ost plus pt-online-schema-change are battle-tested at a scale nothing on Postgres matches. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--migration_tooling | | GitHub stars | 11,000 | Community-reported | 2026-07-01 | https://github.com/mysql/mysql-server | Approximate. Oracle publishes source drops to this mirror rather than developing in the open. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--github_stars | | Positioning | The world's most popular open source database. | Vendor-claimed | 2026-07-01 | https://www.mysql.com/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--positioning | | Licence | GPL-2.0 or commercial | Vendor-claimed | 2026-11-06 | https://www.mysql.com/about/legal/licensing/oem/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--licence | | Embed in closed source | ○ | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/legal/licensing/oem/ | GPLv2 unless you buy the commercial licence, which is precisely the product Oracle sells. The client library carries a FOSS Exception, the server does not. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--embedding_freedom | | Governance | Single vendor | Vendor-claimed | 2026-07-01 | https://www.mysql.com/about/ | Oracle owns the copyright, the roadmap and the release cadence. MariaDB exists because of this row. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--governance | | First release | 1995-05-23 | Community-reported | 2026-07-01 | https://dev.mysql.com/doc/refman/8.4/en/history.html | First internal release; the first widely distributed public binaries followed in 1996. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#mysql--first_release | **Verdict.** Underused for its strength, altering an enormous table while writes continue; narrower SQL, but a well-worn operational path. **Pick it when** - Very large tables that must be altered without downtime - Read-replica topologies your team has already run before - Environments where the host, ORM or ops runbook already assumes MySQL ### SQLite {#sqlite} Embedded SQL engine that runs inside your process, a file, not a server. | | | | --- | --- | | Site | https://www.sqlite.org | | Docs | https://www.sqlite.org/docs.html | | Repo | https://github.com/sqlite/sqlite | | Company | SQLite | | Founded | 2000 | | Open source | Yes (Public domain) | | Profile | https://toolweight.com/tools/sqlite | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | Embedded (in-process) | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/about.html | There is a client/server wrapper in the wild, but the engine itself is a library. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--embedded_or_server | | Concurrency model | Reader/writer locking | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/wal.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--concurrency_model | | Write concurrency | Single writer | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/wal.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--write_concurrency | | Isolation levels | Serializable | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/isolation.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--isolation_levels | | JSON support | Text functions only | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/json1.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--json_support | | Full-text search | Extension | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/fts5.html | FTS5 is a loadable extension but ships in the amalgamation and is compiled into most distributions. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--full_text_search | | Vector search | Extension | Community-reported | 2026-07-01 | https://github.com/asg017/sqlite-vec | sqlite-vec gives a vector type and brute-force KNN. No approximate index, so recall is exact and cost is linear. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--vector_search | | Type strictness | Dynamic (per-value) | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/datatype3.html | Type affinity, not enforcement. STRICT tables since 3.37 give you real checking if you opt in per table. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--type_strictness | | ALTER TABLE | Severe (rebuild required) | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/lang_altertable.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--alter_table_limits | | Max database size | 256 TB | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/limits.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--max_db_size | | Replication | Third-party only | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/whentouse.html | Nothing in the engine. Litestream, LiteFS, rqlite and Turso each solve it differently and none is free of trade-offs. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--replication | | PITR | ◐ | Community-reported | 2026-07-01 | https://litestream.io/how-it-works/ | Litestream ships WAL frames to object storage continuously, giving real PITR, but it is a separate process you must run and monitor. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--pitr | | Online schema change | ○ | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/lang_altertable.html | A rebuild holds the write lock for its duration; on a large table that is user-visible downtime. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--online_schema_change | | Connection model | In-process (no connections) | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/threadsafe.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--connection_model | | Default max conns | - | Vendor-claimed | 2026-11-07 | https://www.sqlite.org/serverless.html | Not applicable: SQLite is embedded and has no server max_connections setting. Null is intentional, not a numeric connection limit. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--default_max_connections | | Managed options | Turso, Cloudflare D1, Fly.io LiteFS | Inferred | 2026-07-01 | - | All three are SQLite-compatible services rather than managed SQLite; D1 and Turso add their own replication layers. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--hosted_options | | Ops burden | 1 | Inferred | 2026-07-01 | - | No daemon, no users, no upgrades in place. Add one point in practice if you adopt Litestream and actually test the restore. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--operational_burden | | Extension ecosystem | 4 | Inferred | 2026-07-01 | - | A stable loadable-extension ABI with FTS5, R-Tree, sqlite-vec and sqlean, but no package manager and no host that curates them. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--extension_ecosystem | | Client libraries | 5 | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--client_library_maturity | | Migration tooling | 3 | Inferred | 2026-07-01 | - | Atlas, Drizzle and Alembic automate the rebuild dance, but the dance is still happening underneath. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--migration_tooling | | GitHub stars | 8,000 | Community-reported | 2026-07-01 | https://github.com/sqlite/sqlite | Approximate. Read-only mirror; development happens in Fossil, so this measures visibility only. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--github_stars | | Positioning | Small. Fast. Reliable. Choose any three. | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--positioning | | Licence | Public domain | Vendor-claimed | 2026-11-06 | https://www.sqlite.org/copyright.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--licence | | Embed in closed source | ● | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/copyright.html | Public domain. A paid licence exists purely so companies in jurisdictions without a public domain can have a signed document. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--embedding_freedom | | Governance | Independent team | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/consortium.html | Hwaci employs the core developers; the SQLite Consortium funds them without steering the roadmap. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--governance | | First release | 2000-08-17 | Vendor-claimed | 2026-07-01 | https://www.sqlite.org/chronology.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#sqlite--first_release | **Verdict.** Best when one process owns the data; limits are single writer, no replication and painful schema changes. **Pick it when** - One application process, or one machine, owning the data - Read-heavy workloads where removing the network hop is the whole win - Anything shipped to the edge, a device, a CLI or a test suite ### DuckDB {#duckdb} In-process columnar analytics engine, SQLite's shape, a warehouse's execution model. | | | | --- | --- | | Site | https://duckdb.org | | Docs | https://duckdb.org/docs/ | | Repo | https://github.com/duckdb/duckdb | | Company | DuckDB Labs | | Founded | 2019 | | Open source | Yes (MIT) | | Profile | https://toolweight.com/tools/duckdb | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Embedded or server | Embedded (in-process) | Vendor-claimed | 2026-11-06 | https://duckdb.org/why_duckdb | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--embedded_or_server | | Concurrency model | MVCC (single process) | Vendor-claimed | 2026-11-06 | https://duckdb.org/docs/2.0/connect/concurrency.html | Optimistic MVCC within one process. Writes from several processes now go through the Quack remote protocol rather than opening the same file. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--concurrency_model | | Write concurrency | Single writer | Vendor-claimed | 2026-11-06 | https://duckdb.org/docs/2.0/connect/concurrency.html | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--write_concurrency | | Isolation levels | Snapshot | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | Snapshot isolation rather than the ANSI ladder; the SQL syntax for setting levels is largely absent. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--isolation_levels | | JSON support | Text functions only | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/data/json/overview | The json extension gives a JSON logical type backed by text. Native STRUCT, LIST and MAP types are usually the better answer. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--json_support | | Full-text search | Extension | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/full_text_search | The fts extension gives BM25 scoring. Adequate for filtering a dataset, not for powering a search box. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--full_text_search | | Vector search | Extension | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/vss | The vss extension adds an HNSW index; persistence of that index has carried experimental caveats, so treat it as analysis rather than serving. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--vector_search | | Type strictness | Static, strict | Inferred | 2026-07-01 | - | Types are enforced and out-of-range casts error, though CSV and JSON ingestion infers liberally by design. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--type_strictness | | ALTER TABLE | Moderate | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/sql/statements/alter_table | ADD, DROP, RENAME and type changes, all inside a transaction, but the supported set is narrower than the server engines'. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--alter_table_limits | | Max database size | - | Vendor-claimed | 2026-11-07 | https://duckdb.org/docs/2.0/operations_manual/limits.html | Vendor documents no practical database-file size limit and reports files using 15 TB+; no numeric maximum in bytes is specified. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--max_db_size | | Replication | None | Vendor-claimed | 2026-07-01 | https://duckdb.org/why_duckdb | By design. Distribution is MotherDuck's product, not the engine's. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--replication | | PITR | ○ | Inferred | 2026-07-01 | - | No WAL archiving or log shipping. Recovery means re-running the pipeline that built the file, which is often the right model anyway. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--pitr | | Online schema change | ○ | Inferred | 2026-07-01 | - | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--online_schema_change | | Connection model | In-process (no connections) | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/connect/concurrency | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--connection_model | | Default max conns | - | Vendor-claimed | 2026-11-07 | https://duckdb.org/docs/stable/connect/concurrency | Not applicable, connections are objects inside your process. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--default_max_connections | | Managed options | MotherDuck | Inferred | 2026-07-01 | - | MotherDuck is the only serious managed offering, and it extends DuckDB rather than merely hosting it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--hosted_options | | Ops burden | 1 | Inferred | 2026-07-01 | - | Nothing to run. The burden moves upstream into whatever pipeline produces the data, which the score does not capture. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--operational_burden | | Extension ecosystem | 4 | Vendor-claimed | 2026-07-01 | https://duckdb.org/docs/stable/extensions/overview | INSTALL and LOAD from a first-party repository, plus a community-extensions channel. Young, but the distribution mechanism is better than SQLite's. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--extension_ecosystem | | Client libraries | 3 | Inferred | 2026-07-01 | - | Excellent Python, Node, Java, Go and Rust clients. ORM and query-builder coverage is thin because nobody builds CRUD apps on it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--client_library_maturity | | Migration tooling | 2 | Inferred | 2026-07-01 | - | Migrations are barely a concept here, most DuckDB files are rebuilt rather than migrated. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--migration_tooling | | GitHub stars | 33,000 | Community-reported | 2026-07-01 | https://github.com/duckdb/duckdb | Approximate. The only project here whose star count reflects genuine recent momentum rather than a mirror's visibility. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--github_stars | | Positioning | DuckDB is a fast in-process analytical database. | Vendor-claimed | 2026-07-01 | https://duckdb.org/ | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--positioning | | Licence | MIT | Vendor-claimed | 2026-11-06 | https://duckdb.org/why_duckdb | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--licence | | Embed in closed source | ● | Vendor-claimed | 2026-07-01 | https://github.com/duckdb/duckdb/blob/main/LICENSE | - | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--embedding_freedom | | Governance | Foundation | Vendor-claimed | 2026-07-01 | https://duckdb.org/foundation/ | The non-profit DuckDB Foundation holds the IP specifically so DuckDB Labs and MotherDuck cannot close it. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--governance | | First release | 2019-06-26 | Community-reported | 2026-07-01 | https://duckdb.org/why_duckdb | Version 0.1.0. The project began at CWI Amsterdam in 2018. | https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql#duckdb--first_release | **Verdict.** The analytical contrast, included so the others are legible; superb over Parquet, but never a system of record. **Pick it when** - Aggregation and scans over columns rather than fetching rows by key - Querying Parquet, CSV or object storage without an ingestion pipeline - The reporting half of a system whose rows live in Postgres or SQLite ## Methodology - Every cell comes from the engine's own reference manual, not a vendor pricing page. - That makes this the best-sourced page on toolweight. - These projects document their limits precisely and change them slowly. - Judgement calls, extension ecosystem, migration tooling, client-library maturity, ops burden, are marked inferred. - The ladder is spelled out in the column help, so you can disagree with placement. - Where a project documents no limit, the cell is null and renders as an em dash. - The killer field is operational burden, scored 1-5 where lower is better. - It measures what a team must do to keep the engine healthy, not install difficulty. - 1 is a file your process opens; 5 is a cluster with a full-time owner. - It inverts the usual ranking: PostgreSQL has the strongest features and the highest burden. - Pretending otherwise is how teams hit a vacuum problem eighteen months in. - One finding shows only by absence: SQLite appears nowhere in the timeline. - It ships several backwards-compatible releases a year, none of which change a decision. - That stability is a feature, and it generates no news. ## FAQ ### Is SQLite production-ready for a real web application? - Yes, with conditions. - Turn on WAL mode, set a busy timeout, and keep write transactions short. - Adopt a replication or backup tool such as Litestream on day one. - The limits that bite are single-writer serialisation and no built-in replication, not throughput, correctness or size. ### When does SQLite's single writer actually become a problem? - Multiply your write transaction duration by your write rate. - Five-millisecond transactions at 200 writes per second use about a second of writer time per wall-clock second, already near the wall. - Long transactions are the real killer: one 300 ms write blocks every other writer for 300 ms. - If you cannot bound transaction duration, you want an MVCC engine. ### MySQL or MariaDB in 2026? - For a normal application either works, and the drivers are largely interchangeable. - Choose MariaDB for a foundation over Oracle, GPLv2 without a commercial upsell, native vector search, or Galera clustering. - Choose MySQL if your managed host, ORM or replication tooling assumes it. - Or choose MySQL if you need Oracle's commercial licence to embed the server in a product. ### Do I need a dedicated vector database, or is pgvector enough? - For almost everyone, pgvector is enough. - It gives HNSW and IVFFlat indexes in the same transaction as your rows, so embeddings cannot drift out of sync. - Reach for something specialised only when index build time, high-dimensional recall, or billion-scale corpora become the bottleneck. - That is later than most teams assume. ### Can DuckDB be my application database? - No, and it does not try to be. - It is an in-process columnar engine for scans and aggregation, with a single-process write path and no replication or PITR. - Superb as the analytics half of a system, querying Parquet or reading straight from your Postgres. - A poor fit for many clients writing single rows. ### Is PostgreSQL always the safe default? - It is the safest default, not a free one. - You get the widest SQL surface, transactional DDL and the deepest extension ecosystem. - You also get autovacuum, bloat, transaction-ID wraparound and a process per connection. - If nobody will own those, use managed Postgres or pick a lighter engine deliberately. ### How painful are schema migrations on each engine? - MySQL and MariaDB are best: online DDL plus gh-ost and pt-online-schema-change make altering a huge table routine. - PostgreSQL runs DDL inside a transaction, a genuine advantage, but type changes rewrite the table under an exclusive lock. - So Postgres teams reach for pgroll or pg_repack. - SQLite is worst: most changes need the documented twelve-step table rebuild, though modern tooling automates it. ## Sources | Source | Last verified | | --- | --- | | https://www.sqlite.org/about.html | 2026-07-01 | | https://www.sqlite.org/wal.html | 2026-11-06 | | https://www.sqlite.org/isolation.html | 2026-11-06 | | https://www.sqlite.org/json1.html | 2026-11-06 | | https://www.sqlite.org/fts5.html | 2026-07-01 | | https://github.com/asg017/sqlite-vec | 2026-07-01 | | https://www.sqlite.org/datatype3.html | 2026-07-01 | | https://www.sqlite.org/lang_altertable.html | 2026-11-06 | | https://www.sqlite.org/limits.html | 2026-11-06 | | https://www.sqlite.org/whentouse.html | 2026-07-01 | | https://litestream.io/how-it-works/ | 2026-07-01 | | https://www.sqlite.org/threadsafe.html | 2026-07-01 | | https://www.sqlite.org/serverless.html | 2026-11-07 | | https://github.com/sqlite/sqlite | 2026-07-01 | | https://www.sqlite.org/ | 2026-07-01 | | https://www.sqlite.org/copyright.html | 2026-11-06 | | https://www.sqlite.org/consortium.html | 2026-07-01 | | https://www.sqlite.org/chronology.html | 2026-07-01 | | https://www.postgresql.org/docs/current/tutorial-arch.html | 2026-07-01 | | https://www.postgresql.org/docs/current/mvcc-intro.html | 2026-07-01 | | https://www.postgresql.org/docs/current/explicit-locking.html | 2026-07-01 | | https://www.postgresql.org/docs/current/transaction-iso.html | 2026-07-01 | | https://www.postgresql.org/docs/current/datatype-json.html | 2026-07-01 | | https://www.postgresql.org/docs/current/textsearch.html | 2026-07-01 | | https://github.com/pgvector/pgvector | 2026-07-01 | | https://www.postgresql.org/docs/current/typeconv.html | 2026-07-01 | | https://www.postgresql.org/docs/current/sql-altertable.html | 2026-07-01 | | https://www.postgresql.org/docs/current/limits.html | 2026-11-07 | | https://www.postgresql.org/docs/current/high-availability.html | 2026-07-01 | | https://www.postgresql.org/docs/current/continuous-archiving.html | 2026-07-01 | | https://www.postgresql.org/docs/current/runtime-config-connection.html | 2026-11-06 | | https://www.postgresql.org/docs/current/extend-extensions.html | 2026-07-01 | | https://github.com/postgres/postgres | 2026-07-01 | | https://www.postgresql.org/ | 2026-07-01 | | https://www.postgresql.org/about/licence/ | 2026-11-06 | | https://www.postgresql.org/developer/ | 2026-07-01 | | https://www.postgresql.org/docs/current/history.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/what-is-mysql.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-multi-versioning.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-locking.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.html | 2026-11-06 | | https://dev.mysql.com/doc/refman/8.4/en/json.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/fulltext-search.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/9.0/en/vector.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/sql-mode.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl-operations.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-limits.html | 2026-11-06 | | https://dev.mysql.com/doc/refman/8.4/en/replication.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/point-in-time-recovery.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/innodb-online-ddl.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/connection-interfaces.html | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html | 2026-07-01 | | https://github.com/mysql/mysql-server | 2026-07-01 | | https://www.mysql.com/ | 2026-07-01 | | https://www.mysql.com/about/legal/licensing/oem/ | 2026-11-06 | | https://www.mysql.com/about/ | 2026-07-01 | | https://dev.mysql.com/doc/refman/8.4/en/history.html | 2026-07-01 | | https://mariadb.com/kb/en/mariadb-embedded-server/ | 2026-07-01 | | https://mariadb.com/kb/en/innodb/ | 2026-07-01 | | https://mariadb.com/kb/en/innodb-lock-modes/ | 2026-07-01 | | https://mariadb.com/kb/en/set-transaction/ | 2026-07-01 | | https://mariadb.com/kb/en/json-data-type/ | 2026-07-01 | | https://mariadb.com/kb/en/full-text-indexes/ | 2026-07-01 | | https://mariadb.com/kb/en/vectors/ | 2026-11-06 | | https://mariadb.com/kb/en/sql-mode/ | 2026-07-01 | | https://mariadb.com/kb/en/alter-table/ | 2026-07-01 | | https://mariadb.com/kb/en/innodb-limitations/ | 2026-07-01 | | https://mariadb.com/kb/en/galera-cluster/ | 2026-07-01 | | https://mariadb.com/kb/en/mariabackup/ | 2026-07-01 | | https://mariadb.com/kb/en/thread-pool-in-mariadb/ | 2026-07-01 | | https://mariadb.com/kb/en/server-system-variables/ | 2026-07-01 | | https://github.com/MariaDB/server | 2026-07-01 | | https://mariadb.org/ | 2026-07-01 | | https://mariadb.com/kb/en/mariadb-license/ | 2026-11-06 | | https://mariadb.org/about/ | 2026-07-01 | | https://duckdb.org/why_duckdb | 2026-11-06 | | https://duckdb.org/docs/2.0/connect/concurrency.html | 2026-11-06 | | https://duckdb.org/docs/stable/connect/concurrency | 2026-07-01 | | https://duckdb.org/docs/stable/data/json/overview | 2026-07-01 | | https://duckdb.org/docs/stable/extensions/full_text_search | 2026-07-01 | | https://duckdb.org/docs/stable/extensions/vss | 2026-07-01 | | https://duckdb.org/docs/stable/sql/statements/alter_table | 2026-07-01 | | https://duckdb.org/docs/2.0/operations_manual/limits.html | 2026-11-07 | | https://duckdb.org/docs/stable/extensions/overview | 2026-07-01 | | https://github.com/duckdb/duckdb | 2026-07-01 | | https://duckdb.org/ | 2026-07-01 | | https://github.com/duckdb/duckdb/blob/main/LICENSE | 2026-07-01 | | https://duckdb.org/foundation/ | 2026-07-01 | ## Cite this page > Use SQLite when one process owns modest writes, PostgreSQL for concurrent writers and extensions, MySQL or MariaDB for online schema changes, and DuckDB for analytics. > > — Toolweight, https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Convex alternatives](https://toolweight.com/compare/convex-alternatives), What are the best alternatives to Convex, and how hard is each one to leave? - [S3-compatible storage](https://toolweight.com/compare/s3-compatible-storage), Which S3-compatible object storage provider is actually cheapest once egress is counted? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [LLM APIs](https://toolweight.com/compare/llm-apis), Which frontier LLM API should I build on? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql - Machine-readable: https://toolweight.com/compare/sqlite-vs-postgres-vs-mysql.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: "Domain registrars compared: renewal price and exit cost" slug: domain-registrars url: "https://toolweight.com/compare/domain-registrars" question: Which domain registrar is cheapest to renew with, and which ones make it hard to leave? tools: 15 fields: 25 last_verified: 2026-11-07 oldest_verified: 2026-06-30 median_verified: 2026-11-06 stale_values: 18 conflicting_values: 6 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 31% verify_cadence: 30d license: CC-BY-4.0 --- # Domain registrars, ranked by what it costs to leave > **Which domain registrar is cheapest to renew with, and which ones make it hard to leave?** > > Cloudflare Registrar is cheapest for .com at registry cost and Porkbun is the best all-round retail registrar; renewal price and exit friction matter most. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/domain-registrars | | Tools compared | 15 | | Fields compared | 25 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 50 of 375 values have a verification date, checked between 2026-06-30 and 2026-11-07 (median 2026-11-06), 18 due for re-check, 6 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 31% (mean cell confidence, not age) | | Killer field | transfer_out_friction | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Synergy Wholesale](https://toolweight.com/tools/synergy-wholesale) | 80.1 | 100% | Australian wholesale registrar, near-cost .au if you can open an account. | | 2 | [Porkbun](https://toolweight.com/tools/porkbun) | 78.9 | 100% | Near-cost pricing with free privacy, SSL and forwarding, and a clean exit. | | 3 | [Cloudflare Registrar](https://toolweight.com/tools/cloudflare-registrar) | 75.0 | 92% | At-cost registration bolted to Cloudflare DNS, no markup, ever. | | 4 | [NameSilo](https://toolweight.com/tools/namesilo) | 66.5 | 96% | Flat renewals, free privacy and portfolio tooling for people holding hundreds. | | 5 | [Netim](https://toolweight.com/tools/netim) | 64.9 | 92% | French registrar with unusually deep ccTLD coverage and corporate controls. | | 6 | [Dynadot](https://toolweight.com/tools/dynadot) | 62.7 | 96% | Domainer-oriented registrar with strong bulk tools and a built-in marketplace. | | 7 | [Namecheap](https://toolweight.com/tools/namecheap) | 59.9 | 96% | The mainstream cheap registrar: heavy first-year discounts, higher renewals. | | 8 | [Hover](https://toolweight.com/tools/hover) | 59.8 | 92% | Expensive, calm and upsell-free, with the best phone support in the category. | | 9 | [Spaceship](https://toolweight.com/tools/spaceship) | 58.5 | 96% | Namecheap's newer consumer brand, aggressive intro pricing, modern dashboard. | | 10 | [Gandi](https://toolweight.com/tools/gandi) | 57.6 | 96% | European registrar with huge TLD breadth and post-2023 premium pricing. | | 11 | [VentraIP](https://toolweight.com/tools/ventraip) | 54.7 | 100% | auDA-accredited Australian registrar with a local support desk. | | 12 | [Squarespace Domains](https://toolweight.com/tools/squarespace-domains) | 51.0 | 92% | The Google Domains book, flat-priced at around US$20 with privacy included. | | 13 | [Sav](https://toolweight.com/tools/sav) | 44.8 | 88% | Very cheap registrations bundled with an aftermarket and parking business. | | 14 | [GoDaddy](https://toolweight.com/tools/godaddy) | 44.0 | 100% | The default registrar for people who have never compared registrars. | | 15 | [Crazy Domains](https://toolweight.com/tools/crazy-domains) | 23.7 | 88% | Australian bait pricing: single-digit first year, then several times that. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Features | Tool | Free WHOIS privacy | DNSSEC | DNS hosting | Email forwarding | Bulk management | TLDs offered (TLDs) | Public API | Support quality | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Synergy Wholesale | ● | ● | standard | ● | ● | 200 TLDs | ● | 4 | | Porkbun | ● | ● | standard | ● | ● | 600 TLDs | ● | 5 | | Cloudflare Registrar | ● | ● | anycast-global | ● | ◐ | 430 TLDs | ● | 2 | | NameSilo | ● | ● | standard | ● | ● | 500 TLDs | ● | 3 | | Netim | ◐ | ● | standard | ● | ● | 900 TLDs | ● | 3 | | Dynadot | ● | ● | standard | ● | ● | 600 TLDs | ● | 4 | | Namecheap | ● | ◐ | standard | ● | ● | 500 TLDs | ● | 4 | | Hover | ● | ◐ | standard | ● | ◐ | 300 TLDs | ○ | 5 | | Spaceship | ● | ● | standard | ● | ◐ | 500 TLDs | ◐ | 3 | | Gandi | ● | ● | anycast-global | ◐ | ● | 750 TLDs | ● | 2 | | VentraIP | ◐ | ◐ | standard | ◐ | ◐ | 100 TLDs | ○ | 4 | | Squarespace Domains | ● | ● | standard | ● | ○ | 300 TLDs | ○ | 3 | | Sav | ◐ | ● | basic | - | ● | 350 TLDs | ◐ | 2 | | GoDaddy | ◐ | ◐ | standard | ○ | ● | 500 TLDs | ◐ | 3 | | Crazy Domains | ○ | - | basic | ◐ | ◐ | 300 TLDs | ◐ | 2 | ### Pricing | Tool | .com first year (/yr) | .com renewal (/yr) | Renewal jump (/yr) | At-cost pricing | Fee transparency | .com.au renewal (/yr) | | --- | --- | --- | --- | --- | --- | --- | | Synergy Wholesale | $10.5/yr | $10.5/yr | $0/yr | ◐ | ● | A$12.95/yr | | Porkbun | $11.81/yr | $11.81/yr | $0/yr | ◐ | ● | A$19.94/yr | | Cloudflare Registrar | $11.16/yr | $11.16/yr | $0/yr | ● | ● | - | | NameSilo | $12.99/yr | $12.99/yr | $0/yr | ◐ | ● | - | | Netim | $13/yr | $16/yr | $3/yr | ○ | - | A$39/yr | | Dynadot | $10.99/yr | $13.99/yr | $3/yr | ○ | ◐ | - | | Namecheap | $6.49/yr | $16.98/yr | $10.49/yr | ○ | ◐ | - | | Hover | $17.99/yr | $19.99/yr | $2/yr | ○ | ● | - | | Spaceship | $5.98/yr | $13.98/yr | $8/yr | ○ | ◐ | - | | Gandi | $24/yr | $24/yr | $0/yr | ○ | ● | A$65/yr | | VentraIP | $16/yr | $16/yr | $0/yr | ○ | ◐ | A$19.95/yr | | Squarespace Domains | $20/yr | $20/yr | $0/yr | ○ | ● | - | | Sav | $6.99/yr | $12.99/yr | $6/yr | ○ | ◐ | - | | GoDaddy | $11.99/yr | $21.99/yr | $10/yr | ○ | ○ | A$29.99/yr | | Crazy Domains | $3.5/yr | $26/yr | $22.5/yr | ○ | ○ | A$29.95/yr | ### Control & exit | Tool | Transfer-out friction | Auth code delivery | Registry lock | 2FA methods | .au accredited | Account recovery | | --- | --- | --- | --- | --- | --- | --- | | Synergy Wholesale | 2 | instant-dashboard | ○ | totp | ● | 4 | | Porkbun | 1 | instant-dashboard | ○ | totp | ○ | 4 | | Cloudflare Registrar | 1 | instant-dashboard | ○ | totp, hardware-key | ○ | 3 | | NameSilo | 2 | dashboard-plus-email | ○ | totp | ○ | 3 | | Netim | 3 | email-delay | ◐ | passkey, totp | ◐ | 3 | | Dynadot | 2 | dashboard-plus-email | ○ | totp | ○ | 3 | | Namecheap | 2 | dashboard-plus-email | ○ | totp, sms, email-otp | ○ | 3 | | Hover | 2 | dashboard-plus-email | ○ | totp | ○ | 4 | | Spaceship | 2 | dashboard-plus-email | ○ | totp | ○ | 3 | | Gandi | 2 | dashboard-plus-email | ◐ | totp | - | 3 | | VentraIP | 3 | email-delay | ○ | totp | ● | 4 | | Squarespace Domains | 3 | email-delay | ○ | totp, passkey | ○ | 3 | | Sav | 3 | email-delay | ○ | totp | ○ | 2 | | GoDaddy | 4 | email-delay | ◐ | totp, sms | ● | 3 | | Crazy Domains | 5 | support-ticket | ○ | - | ● | 2 | ### Traction | Tool | Domains managed (M) | Ownership | | --- | --- | --- | | Synergy Wholesale | 1 M | independent | | Porkbun | 4 M | registry-affiliated | | Cloudflare Registrar | - | public-company | | NameSilo | 6 M | public-company | | Netim | - | independent | | Dynadot | 13 M | independent | | Namecheap | 16 M | independent | | Hover | - | public-company | | Spaceship | 10 M | platform-subsidiary | | Gandi | 2.4 M | pe-owned | | VentraIP | 1 M | independent | | Squarespace Domains | - | pe-owned | | Sav | - | independent | | GoDaddy | 84 M | public-company | | Crazy Domains | - | pe-owned | ### Positioning | Tool | Upsell aggression | Ad parking | Positioning | | --- | --- | --- | --- | | Synergy Wholesale | 1 | ○ | Wholesale .au for people who manage domains for other people. | | Porkbun | 1 | ○ | Everything the expensive registrars charge extra for, included. | | Cloudflare Registrar | 1 | ○ | Domains at cost, as an on-ramp to Cloudflare's network. | | NameSilo | 1 | ◐ | Flat renewals and portfolio tooling, at the cost of the interface. | | Netim | 1 | ○ | The registrar you find when nobody else sells the extension. | | Dynadot | 2 | ◐ | Registrar plus aftermarket, aimed at people who trade domains. | | Namecheap | 3 | ◐ | Cheap first year, mainstream feature set, 24/7 chat. | | Hover | 1 | ○ | Pay more, get left alone. | | Spaceship | 2 | ○ | Namecheap rebuilt for people who find Namecheap dated. | | Gandi | 2 | ○ | European breadth and control, at a price it did not used to charge. | | VentraIP | 2 | ◐ | Australian-owned, accredited, and answers the phone. | | Squarespace Domains | 2 | ○ | Google Domains' calm, at roughly double Cloudflare's price. | | Sav | 4 | ● | Cheapest acquisition, monetised everywhere else. | | GoDaddy | 5 | ● | The default, defended by advertising rather than by price. | | Crazy Domains | 5 | ● | Australian mass-market advertising, priced for year two. | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | `free_whois_privacy` | features | tristate | - | higher | 8 | Is registrant contact redaction included at no cost, for the life of the domain, on the TLDs that permit it? `partial` means free on some TLDs only, free in year one only, or bundled with a paid plan. | | DNSSEC | `dnssec` | features | tristate | - | higher | 5 | Can DS records be enabled or pasted in from the registrar's own dashboard at no extra charge? `partial` means it exists but needs a paid DNS plan or a support request. | | DNS hosting | `dns_hosting` | features | enum | - | higher | 5 | Quality of the free DNS bundled with the registration. `anycast-global` = a globally anycast network the registrar operates itself; `standard` = a handful of unicast or regional nameservers; `basic` = limited record types, or anything useful costs extra. | | Email forwarding | `email_forwarding` | features | tristate | - | higher | 4 | Free forwarding of addresses at the domain to an external mailbox. `partial` means capped alias counts, no catch-all, or bundling only with a paid product. | | Bulk management | `bulk_management` | features | tristate | - | higher | 4 | Can you select many domains at once in the dashboard and change nameservers, contacts, auto-renew and locks in one operation? `partial` means some fields only, or a hard cap on selection size. | | TLDs offered | `tld_count` | features | number | TLDs | higher | 4 | Approximate number of top-level domains the registrar sells directly, from its public TLD price list. These are order-of-magnitude indicators, not audited counts. | | Public API | `api_available` | features | tristate | - | higher | 3 | Is there a documented API a retail customer can use without signing a reseller agreement? Weighted lightly here on purpose, the programmatic comparison lives on the domain API providers page. | | Support quality | `support_responsiveness` | features | score | - | higher | 6 | 1-5 from documented channels plus consistent user reports. 5 = a knowledgeable human on chat or phone within the hour; 4 = 24/7 chat that resolves domain issues; 3 = ticket queue answered the same business day; 2 = slow queue or scripted replies; 1 = effectively self-service. | | .com first year | `com_first_year` | pricing | currency | /yr | lower | 3 | Advertised price of a one-year .com registration for a new customer, excluding tax. Promotional pricing is used where it is the headline offer, because that is what the funnel shows you. | | .com renewal | `com_renewal` | pricing | currency | /yr | lower | 10 | Advertised price of a one-year .com renewal at standard rates, excluding tax and excluding loyalty or club discounts that cost money to join. This is what you actually pay for the life of the domain. | | Renewal jump | `renewal_delta` | pricing | currency | /yr | lower | 7 | Renewal price minus first-year price, in USD. Zero means the advertised price is the real price. Large positive values mark bait-and-renew pricing. | | At-cost pricing | `at_cost_pricing` | pricing | tristate | - | higher | 7 | Does the registrar pass through the registry wholesale fee plus the ICANN transaction fee with no margin of its own? `partial` = a thin disclosed margin, or wholesale rates gated behind an account or membership. | | Fee transparency | `icann_fee_transparency` | pricing | tristate | - | higher | 4 | `yes` = the advertised price is what you pay, with the US$0.18 ICANN fee either included or itemised before the cart; `partial` = itemised only at the cart step; `no` = it surfaces at final checkout or on the invoice. | | .com.au renewal | `au_renewal` | pricing | currency | /yr | lower | 5 | Advertised price of a one-year .com.au renewal in Australian dollars, excluding GST. Null means the registrar does not sell .au, or we could not confirm the price. | | Transfer-out friction | `transfer_out_friction` | governance | score | - | lower | 10 | 1-5, lower is better. 1 = unlock toggle and auth code both on screen in the dashboard, no retention interstitial, no fee. 2 = code in the dashboard but behind an email round-trip or a second confirmation screen. 3 = a mandated delay of up to 24h, or a retention offer you must dismiss to proceed. 4 = the code needs a support ticket or an extra identity check, with repeated confirmation emails. 5 = a phone call, an uploaded ID, an add-on that must be cancelled first, or a hold beyond the ICANN 60-day rule. | | Auth code delivery | `epp_code_delivery` | governance | enum | - | higher | 7 | How the EPP authorisation code reaches you once the domain is unlocked: shown immediately in the dashboard, shown after an emailed confirmation, emailed after a delay, raised as a support ticket, or gated behind a phone call or identity document. | | Registry lock | `registry_lock` | governance | tristate | - | higher | 5 | A true registry-level lock requiring out-of-band authorisation to change NS, contacts or registrar, not the clientTransferProhibited flag every registrar sets by default. `partial` = a paid add-on, selected TLDs only, or available only through a corporate product line. | | 2FA methods | `two_factor` | governance | multi-enum | - | higher | 6 | Second-factor methods the account supports, scored on the strongest available. SMS-only scores as weak because domain accounts are a standard SIM-swap target. | | .au accredited | `au_accreditation` | governance | tristate | - | higher | 6 | Is this entity itself accredited by auDA to sell .au namespace domains? `partial` = sells .au as a reseller through an accredited registrar, which means escalations travel through a third party. | | Account recovery | `account_recovery` | governance | score | - | higher | 5 | 1-5 for how well-defined and safe the lost-access path is. 5 = documented identity-verified recovery with a published turnaround; 3 = ticket-based recovery with no stated SLA; 1 = undocumented or effectively unrecoverable. A strong recovery process is also a social-engineering surface, so read it next to the 2FA column. | | Domains managed | `domains_under_mgmt` | traction | number | M | higher | 2 | Approximate domains under management in millions, from company disclosures or registry market-share reporting. Scale is a proxy for survival odds, not for quality. | | Ownership | `ownership` | traction | enum | - | higher | 2 | Who owns the registrar, ranked by how much pressure the owner applies to monetise the existing book. Private-equity ownership has been the most reliable predictor of renewal price rises and add-on packaging in this category. | | Upsell aggression | `upsell_aggression` | marketing | score | - | lower | 6 | 1-5, lower is better, counted across the buy flow and the dashboard. 1 = a cart with the domain in it and nothing else. 3 = a few prominently offered extras you decline in one click, none pre-ticked. 5 = multiple interstitials, pre-selected add-ons, hosting and email bundles, and continuing in-account promotion after purchase. | | Ad parking | `parking_ads` | marketing | tristate | - | lower | 4 | Does the registrar point unconfigured domains at a monetised page carrying third-party ads or its own promotions? `partial` = a plain branded placeholder without third-party advertising, or parking that is opt-in. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the registrar positions itself to retail buyers, in our words rather than theirs. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest renewal | `cheapest-renewal` | Ignores the first-year promo entirely and ranks on what you pay every year after. | com_renewal:10, renewal_delta:8, at_cost_pricing:7, icann_fee_transparency:4, upsell_aggression:4, com_first_year:2, transfer_out_friction:3 | https://toolweight.com/compare/domain-registrars?w=com_renewal:10,renewal_delta:8,at_cost_pricing:7,icann_fee_transparency:4,upsell_aggression:4,com_first_year:2,transfer_out_friction:3 | | Best privacy | `best-privacy` | Free WHOIS redaction, real 2FA, DNSSEC, and nobody monetising your idle domains. | free_whois_privacy:10, two_factor:8, registry_lock:7, dnssec:7, parking_ads:6, account_recovery:5, transfer_out_friction:3 | https://toolweight.com/compare/domain-registrars?w=free_whois_privacy:10,two_factor:8,registry_lock:7,dnssec:7,parking_ads:6,account_recovery:5,transfer_out_friction:3 | | Easiest exit | `easiest-exit` | How fast you can get the auth code and go, if this registrar disappoints you in 2028. | transfer_out_friction:10, epp_code_delivery:9, upsell_aggression:5, account_recovery:4, at_cost_pricing:3, two_factor:3, api_available:2 | https://toolweight.com/compare/domain-registrars?w=transfer_out_friction:10,epp_code_delivery:9,upsell_aggression:5,account_recovery:4,at_cost_pricing:3,two_factor:3,api_available:2 | | Best for .au | `best-for-au` | auDA accreditation, .com.au renewal price, and whether an Australian human answers. | au_accreditation:10, au_renewal:9, support_responsiveness:7, transfer_out_friction:5, dns_hosting:4, upsell_aggression:4 | https://toolweight.com/compare/domain-registrars?w=au_accreditation:10,au_renewal:9,support_responsiveness:7,transfer_out_friction:5,dns_hosting:4,upsell_aggression:4 | ## Verdict - Domain retail is a subscription disguised as a purchase; the first year is the customer-acquisition budget. - Every year after is the margin. - That is why a .com can be advertised at A$4.95 and renew at A$39.95. - The renewal column is the only price that matters for a domain you intend to keep. - Cloudflare Registrar charges the registry fee plus the ICANN transaction fee, no markup, ever. - Cloudflare only registers domains already on a Cloudflare zone; narrow TLD list, no .au, ticket-queue support. - Porkbun is the better general-purpose choice: near-cost pricing, free WHOIS privacy, email forwarding, SSL, one-click DNSSEC. - Porkbun puts the auth code in the dashboard the moment you unlock. - NameSilo suits holding hundreds of domains where bulk tooling and flat renewals beat the interface. - GoDaddy and Crazy Domains run the same playbook: loss-leader first year, aggressive checkout upsells. - They charge for things competitors give away: DNSSEC behind Premium DNS at GoDaddy, free email forwarding withdrawn in 2022. - Their exit path routes through retention offers. - Squarespace Domains inherited the Google Domains book at a flat twenty dollars, the least annoying expensive registrar. - Squarespace costs roughly double Cloudflare for a nicer control panel. - Gandi repriced out of its value role in 2023; now a specialist pick for TLD breadth and registry lock. - For .au the calculus is mostly not about price. - VentraIP, Synergy Wholesale, Crazy Domains and GoDaddy differ by an amount that will not change your life. - They differ enormously in whether a human answers when a .com.au transfer stalls. - VentraIP and Synergy Wholesale run Australian desks that understand auDA transfer rules; offshore resellers generally do not. - .au WHOIS privacy is pointless: auDA already redacts registrant contact data. - The direction of travel is consolidation; Verisign takes its .com increase most years and every registrar passes it through. - That compresses the tiers in percentage terms while widening them in dollars. - The interesting registrars are front ends: Cloudflare wants your DNS, Squarespace your site, Spaceship Namecheap's next decade of customers. - Pick the one whose real business you are happy to be adjacent to. ## The renewal trap - Every registrar in this table knows domain churn is low. - Once a domain has a live site, an MX record and a dozen forgotten DNS entries, the renewal invoice gets approved unread. - That low-churn asset is what a cheap first-year .com actually buys. - The delta column makes the strategy visible. - Cloudflare, Porkbun, NameSilo, Squarespace and Gandi charge roughly the same in year one as year five. - Namecheap, Spaceship, GoDaddy, Sav and Crazy Domains do not; the gap runs from a few dollars to more than twenty. - Crazy Domains is the extreme: a first year priced to win a click, a renewal priced for someone who stopped comparing. - Defence one: prepay up to ten years of .com at the current renewal rate, locking out margin creep and Verisign's annual increase. - Defence two: treat the renewal price as the only price and sort this table by it. ## Getting out: what a transfer actually costs you - Transfers follow ICANN's transfer policy, so the mechanics are identical everywhere: unlock, get the authorisation code, initiate at the gaining registrar, approve. - What differs is how many extra steps a registrar inserts before the code, and none are in the policy. - The friction score on this page is that count. - Good end (Cloudflare, Porkbun, Synergy Wholesale): the code sits in the dashboard next to the lock toggle, ninety seconds plus the five-day registry wait. - Middle: registrars email the code after a delay, ask you to re-verify the account, or put a retention offer in front of the button. - Bad end: a phone call, uploaded identity documents, or a domain-protection product that must be cancelled before the domain unlocks. - You cannot transfer within 60 days of registering or of a previous transfer. - Changing the registrant contact can restart that clock, so do the transfer first and tidy contacts afterwards. - Unused time comes with you: a transfer adds a year to the existing expiry rather than resetting it, so leaving mid-term costs nothing extra. - .au transfers differ: a registrar-issued auth code, no ICANN five-day window, and Australian registrars unstick stalls faster than offshore resellers. ## Buying and holding .au in 2026 - .au has rules the gTLDs do not: you need an Australian presence, an ABN, ACN, registered trademark or equivalent. - For .com.au that presence must be a commercial entity, the registrar checks it, and a mismatch can cost you the name later. - Since direct .au registration opened, most businesses hold both the .com.au and the matching .au, doubling the renewal line. - Price differences between accredited Australian registrars are small and rarely the deciding factor. - Support is: you want a registrar that can speak to the registry on your behalf during Australian business hours. - That is what VentraIP and Synergy Wholesale actually sell. - Crazy Domains is accredited and cheap in year one, but behaves like an international discounter otherwise. - Do not pay for .au WHOIS privacy: auDA already withholds registrant contact details, so it is a line item with no product behind it. ## Registering domains from code - This page is about buying, renewing, transferring and holding domains through a dashboard, as a person. - Automating registration is a different problem: reseller agreements, prepaid balances, OTE sandboxes, and whether renewal pricing is even exposed on the wire. - Looking to register domains from code? → /compare/domain-api-providers - The overlap in vendor names is real, but the decision is not the same one. - Several registrars excellent to hold domains with have no public API at all. - Several with first-class APIs will not take your money until you sign a reseller contract and fund a four-figure float. ## Per-tool provenance, every cell, every source ### Synergy Wholesale {#synergy-wholesale} Australian wholesale registrar, near-cost .au if you can open an account. | | | | --- | --- | | Site | https://synergywholesale.com/ | | Docs | https://synergywholesale.com/api-documentation/ | | Company | Synergy Wholesale Pty Ltd | | Founded | 2011 | | Open source | No | | Profile | https://toolweight.com/tools/synergy-wholesale | | Score (default weights) | 80.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Inferred | - | - | Included where the registry permits; irrelevant for .au, which auDA redacts anyway. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--email_forwarding | | Bulk management | ● | Inferred | - | - | The account is built around managing client portfolios. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--bulk_management | | TLDs offered | 200 TLDs | Inferred | - | - | Approximate; strong on .au, narrower on the long tail. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--tld_count | | Public API | ● | Vendor-claimed | 2026-06-30 | https://synergywholesale.com/api-documentation/ | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--api_available | | Support quality | 4 | Community-reported | - | - | Australian, technical, business hours. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--support_responsiveness | | .com first year | $10.5/yr | Inferred | - | - | Approximate, converted from AUD wholesale pricing. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--com_first_year | | .com renewal | $10.5/yr | Inferred | - | - | Approximate; wholesale rates do not step up at renewal. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--renewal_delta | | At-cost pricing | ◐ | Inferred | - | - | Wholesale rates, but behind an account and a prepaid balance rather than open retail. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--icann_fee_transparency | | .com.au renewal | A$12.95/yr | Inferred | - | - | Approximate AUD wholesale per year excluding GST, the cheapest credible .com.au in this roster. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--au_renewal | | Transfer-out friction | 2 | Inferred | - | - | Auth codes are issued from the panel; wholesale customers are expected to move domains and the workflow reflects that. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--transfer_out_friction | | Auth code delivery | instant-dashboard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--two_factor | | .au accredited | ● | Vendor-claimed | 2026-06-30 | https://synergywholesale.com/ | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--au_accreditation | | Account recovery | 4 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--account_recovery | | Domains managed | 1 M | Vendor-claimed | 2026-11-07 | https://synergywholesale.com/integrations | Marketing claim, undated; "1m+" so a floor. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--domains_under_mgmt | | Ownership | independent | Inferred | - | - | Australian-owned; shareholding not re-verified. | https://toolweight.com/compare/domain-registrars#synergy-wholesale--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--parking_ads | | Positioning | Wholesale .au for people who manage domains for other people. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#synergy-wholesale--positioning | **Verdict.** The cheapest honest way to hold .au, if you will open a wholesale account and keep a balance. **Pick it when** - Agencies and MSPs holding .au on behalf of clients - The lowest .com.au renewal available without a reseller contract - Australian support who can escalate to the registry directly ### Porkbun {#porkbun} Near-cost pricing with free privacy, SSL and forwarding, and a clean exit. | | | | --- | --- | | Site | https://porkbun.com/ | | Docs | https://porkbun.com/api/json/v3/documentation | | Company | Top Level Design | | Founded | 2014 | | Open source | No | | Profile | https://toolweight.com/tools/porkbun | | Score (default weights) | 78.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-11-06 | https://www.porkbun.com/products/domains | - | https://toolweight.com/compare/domain-registrars#porkbun--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--dns_hosting | | Email forwarding | ● | Vendor-claimed | 2026-06-30 | https://porkbun.com/ | Free forwarding; paid mailboxes sold separately. | https://toolweight.com/compare/domain-registrars#porkbun--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--bulk_management | | TLDs offered | 600 TLDs | Inferred | - | - | Approximate; one of the broader retail catalogues. | https://toolweight.com/compare/domain-registrars#porkbun--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--api_available | | Support quality | 5 | Community-reported | - | - | Consistently reported as fast and technically literate over email and chat. | https://toolweight.com/compare/domain-registrars#porkbun--support_responsiveness | | .com first year | $11.81/yr | Vendor-claimed | 2026-11-06 | https://www.porkbun.com/products/domains | - | https://toolweight.com/compare/domain-registrars#porkbun--com_first_year | | .com renewal | $11.81/yr | Vendor-claimed | 2026-11-06 | https://www.porkbun.com/products/domains | - | https://toolweight.com/compare/domain-registrars#porkbun--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | Promotional pricing appears on newer TLDs, not on .com. | https://toolweight.com/compare/domain-registrars#porkbun--renewal_delta | | At-cost pricing | ◐ | Inferred | - | - | A thin margin above wholesale, close to cost, but not cost. | https://toolweight.com/compare/domain-registrars#porkbun--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--icann_fee_transparency | | .com.au renewal | A$19.94/yr | Inferred | 2026-11-07 | https://porkbun.com/tld/com.au | Porkbun lists .com.au at US$13.70/yr regular renewal (US$8.29 sale price shown); converted to AUD at 1.4554 (frankfurter.dev, 2026-11-06). Excludes GST. | https://toolweight.com/compare/domain-registrars#porkbun--au_renewal | | Transfer-out friction | 1 | Community-reported | - | - | Unlock toggle and auth code sit together in the domain management panel; no retention interstitial. | https://toolweight.com/compare/domain-registrars#porkbun--transfer_out_friction | | Auth code delivery | instant-dashboard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--two_factor | | .au accredited | ○ | Inferred | 2026-11-07 | https://auda.org.au/industry/registrars/accredited-au-registrars | - | https://toolweight.com/compare/domain-registrars#porkbun--au_accreditation | | Account recovery | 4 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--account_recovery | | Domains managed | 4 M | Vendor-claimed | 2026-11-07 | https://porkbun.com/blog/porkbun-four-million-domains-under-management/ | Vendor says it crossed 4 million. | https://toolweight.com/compare/domain-registrars#porkbun--domains_under_mgmt | | Ownership | registry-affiliated | Inferred | - | - | Operated by Top Level Design, the registry behind .design, .ink and .wiki. | https://toolweight.com/compare/domain-registrars#porkbun--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--parking_ads | | Positioning | Everything the expensive registrars charge extra for, included. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#porkbun--positioning | **Verdict.** The best general-purpose registrar here: near-cost, everything bundled, and a ninety-second exit. **Pick it when** - A default registrar for a handful of domains you actually use - Wide TLD coverage without Gandi's price tag - You want free privacy, SSL and forwarding without reading a plan matrix ### Cloudflare Registrar {#cloudflare-registrar} At-cost registration bolted to Cloudflare DNS, no markup, ever. | | | | --- | --- | | Site | https://www.cloudflare.com/products/registrar/ | | Docs | https://developers.cloudflare.com/registrar/ | | Company | Cloudflare | | Founded | 2009 | | Open source | No | | Profile | https://toolweight.com/tools/cloudflare-registrar | | Score (default weights) | 75.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-11-06 | https://www.cloudflare.com/products/registrar/ | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--free_whois_privacy | | DNSSEC | ● | Vendor-claimed | 2026-06-30 | https://developers.cloudflare.com/dns/dnssec/ | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--dnssec | | DNS hosting | anycast-global | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--dns_hosting | | Email forwarding | ● | Vendor-claimed | 2026-06-30 | https://developers.cloudflare.com/email-routing/ | Cloudflare Email Routing, free, forwarding only, no mailboxes. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--email_forwarding | | Bulk management | ◐ | Inferred | - | - | Bulk changes are straightforward via the API; the dashboard is per-domain for most operations. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--bulk_management | | TLDs offered | 430 TLDs | Vendor-claimed | 2026-11-06 | https://www.cloudflare.com/products/registrar/ | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--api_available | | Support quality | 2 | Community-reported | - | - | Ticket queue tied to your Cloudflare plan tier; no phone support on Free or Pro. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--support_responsiveness | | .com first year | $11.16/yr | Inferred | - | - | At-cost: tracks the Verisign wholesale fee plus the US$0.18 ICANN fee, so it moves whenever Verisign moves. Approximate for mid-2026. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--com_first_year | | .com renewal | $11.16/yr | Inferred | - | - | Identical to registration, Cloudflare takes no margin. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--renewal_delta | | At-cost pricing | ● | Vendor-claimed | 2026-11-06 | https://www.cloudflare.com/products/registrar/ | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--icann_fee_transparency | | .com.au renewal | - | Inferred | - | - | Not offered, .au is not in Cloudflare Registrar's supported TLD list. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--au_renewal | | Transfer-out friction | 1 | Community-reported | - | - | Unlock and auth code both live in the dashboard; there is no retention flow because there is no margin to retain. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--transfer_out_friction | | Auth code delivery | instant-dashboard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | Client-level transfer and update locks are applied by default; a true registry lock is not part of the retail product. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--registry_lock | | 2FA methods | totp, hardware-key | Vendor-claimed | 2026-06-30 | https://developers.cloudflare.com/fundamentals/user-profiles/2fa/ | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--two_factor | | .au accredited | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--au_accreditation | | Account recovery | 3 | Inferred | - | - | Documented but ticket-based, and gated behind the same support tier as everything else. | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--account_recovery | | Domains managed | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--domains_under_mgmt | | Ownership | public-company | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--parking_ads | | Positioning | Domains at cost, as an on-ramp to Cloudflare's network. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#cloudflare-registrar--positioning | **Verdict.** The cheapest place to hold a .com, if you accept Cloudflare zones, a short TLD list and ticket-only support. **Pick it when** - You already run DNS on Cloudflare and want the registration to cost nothing extra - Long-term holds where the renewal price compounds - Anyone who wants zero upsell surface on a domain account ### NameSilo {#namesilo} Flat renewals, free privacy and portfolio tooling for people holding hundreds. | | | | --- | --- | | Site | https://www.namesilo.com/ | | Docs | https://www.namesilo.com/api-reference | | Company | NameSilo LLC | | Founded | 2009 | | Open source | No | | Profile | https://toolweight.com/tools/namesilo | | Score (default weights) | 66.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.namesilo.com/ | - | https://toolweight.com/compare/domain-registrars#namesilo--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--email_forwarding | | Bulk management | ● | Community-reported | - | - | One of the strongest bulk toolsets in the retail tier. | https://toolweight.com/compare/domain-registrars#namesilo--bulk_management | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#namesilo--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--api_available | | Support quality | 3 | Community-reported | - | - | Ticket-based, competent, not fast. | https://toolweight.com/compare/domain-registrars#namesilo--support_responsiveness | | .com first year | $12.99/yr | Inferred | - | - | Approximate; NameSilo runs few promotions on .com. | https://toolweight.com/compare/domain-registrars#namesilo--com_first_year | | .com renewal | $12.99/yr | Inferred | - | - | Approximate; flat pricing is the core pitch. | https://toolweight.com/compare/domain-registrars#namesilo--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--renewal_delta | | At-cost pricing | ◐ | Inferred | - | - | Thin disclosed margin, with discounts that scale by portfolio size. | https://toolweight.com/compare/domain-registrars#namesilo--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--au_renewal | | Transfer-out friction | 2 | Community-reported | - | - | Auth code available in the dashboard after an account-level confirmation step. | https://toolweight.com/compare/domain-registrars#namesilo--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--two_factor | | .au accredited | ○ | Inferred | 2026-11-07 | https://auda.org.au/industry/registrars/accredited-au-registrars | - | https://toolweight.com/compare/domain-registrars#namesilo--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--account_recovery | | Domains managed | 6 M | Community-reported | 2026-11-07 | https://en.wikipedia.org/wiki/NameSilo | Company announcement of January 2026 as reported by Wikipedia; the press release itself was not fetchable. | https://toolweight.com/compare/domain-registrars#namesilo--domains_under_mgmt | | Ownership | public-company | Community-reported | 2026-11-07 | https://en.wikipedia.org/wiki/NameSilo | NameSilo LLC is controlled by CSE-listed NameSilo Technologies Corp. (81.5% stake at 2018 acquisition); still issuing 2026 announcements. | https://toolweight.com/compare/domain-registrars#namesilo--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--upsell_aggression | | Ad parking | ◐ | Community-reported | - | - | Free parking with revenue share is offered as an opt-in, not applied by default. | https://toolweight.com/compare/domain-registrars#namesilo--parking_ads | | Positioning | Flat renewals and portfolio tooling, at the cost of the interface. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namesilo--positioning | **Verdict.** For portfolio holders: flat renewals and serious bulk operations behind a dashboard that aged without dignity. **Pick it when** - Portfolios in the hundreds where bulk edits are a weekly task - You want the renewal to equal the registration price, permanently - Cost discipline matters more than UI ### Netim {#netim} French registrar with unusually deep ccTLD coverage and corporate controls. | | | | --- | --- | | Site | https://www.netim.com/en | | Company | NETIM SARL | | Founded | 2003 | | Open source | No | | Profile | https://toolweight.com/tools/netim | | Score (default weights) | 64.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ◐ | Inferred | - | - | Included on some extensions and chargeable on others; we have not verified the full matrix. | https://toolweight.com/compare/domain-registrars#netim--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--bulk_management | | TLDs offered | 900 TLDs | Inferred | - | - | Approximate. Netim's differentiator is long-tail ccTLD coverage, including trustee services. | https://toolweight.com/compare/domain-registrars#netim--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--api_available | | Support quality | 3 | Inferred | - | - | Ticket and phone during French business hours. | https://toolweight.com/compare/domain-registrars#netim--support_responsiveness | | .com first year | $13/yr | Inferred | - | - | Approximate, converted from EUR. | https://toolweight.com/compare/domain-registrars#netim--com_first_year | | .com renewal | $16/yr | Inferred | - | - | Approximate, converted from EUR. | https://toolweight.com/compare/domain-registrars#netim--com_renewal | | Renewal jump | $3/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--at_cost_pricing | | Fee transparency | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#netim--icann_fee_transparency | | .com.au renewal | A$39/yr | Inferred | 2026-11-07 | https://www.netim.com/en/domain-name/com.au-domain | Netim lists .com.au renewal at EUR24.00/yr excl. VAT; converted at EUR/AUD 1.625 (frankfurter.dev, 2026-11-06). | https://toolweight.com/compare/domain-registrars#netim--au_renewal | | Transfer-out friction | 3 | Inferred | - | - | Documented but interface-heavy, with confirmations split across email and the control panel. | https://toolweight.com/compare/domain-registrars#netim--transfer_out_friction | | Auth code delivery | email-delay | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--epp_code_delivery | | Registry lock | ◐ | Inferred | - | - | Registry lock is offered on supported extensions as a corporate option. | https://toolweight.com/compare/domain-registrars#netim--registry_lock | | 2FA methods | passkey, totp | Vendor-claimed | 2026-11-07 | https://support.netim.com/en/wiki/2FA | - | https://toolweight.com/compare/domain-registrars#netim--two_factor | | .au accredited | ◐ | Inferred | - | - | Appears to sell .au through accredited channels rather than holding auDA accreditation itself. | https://toolweight.com/compare/domain-registrars#netim--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--account_recovery | | Domains managed | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#netim--domains_under_mgmt | | Ownership | independent | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--parking_ads | | Positioning | The registrar you find when nobody else sells the extension. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#netim--positioning | **Verdict.** A specialist for ccTLDs with local-presence requirements, not a choice for .com. **Pick it when** - Long-tail ccTLDs and extensions needing trustee or local presence - European corporate domain portfolios - Registry lock on extensions that support it ### Dynadot {#dynadot} Domainer-oriented registrar with strong bulk tools and a built-in marketplace. | | | | --- | --- | | Site | https://www.dynadot.com/ | | Docs | https://www.dynadot.com/domain/api3.html | | Company | Dynadot LLC | | Founded | 2002 | | Open source | No | | Profile | https://toolweight.com/tools/dynadot | | Score (default weights) | 62.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-11-06 | https://www.dynadot.com/domain/pricing | - | https://toolweight.com/compare/domain-registrars#dynadot--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--email_forwarding | | Bulk management | ● | Community-reported | - | - | Bulk search, bulk register and bulk edit are first-class. | https://toolweight.com/compare/domain-registrars#dynadot--bulk_management | | TLDs offered | 600 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#dynadot--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--api_available | | Support quality | 4 | Community-reported | - | - | Live chat during US hours, responsive. | https://toolweight.com/compare/domain-registrars#dynadot--support_responsiveness | | .com first year | $10.99/yr | Inferred | - | - | Approximate; Dynadot discounts modestly rather than aggressively. | https://toolweight.com/compare/domain-registrars#dynadot--com_first_year | | .com renewal | $13.99/yr | Inferred | - | - | Approximate; falls with bulk tiers. | https://toolweight.com/compare/domain-registrars#dynadot--com_renewal | | Renewal jump | $3/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--at_cost_pricing | | Fee transparency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--au_renewal | | Transfer-out friction | 2 | Community-reported | - | - | Unlock and code both in the dashboard, behind an account security confirmation. | https://toolweight.com/compare/domain-registrars#dynadot--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--two_factor | | .au accredited | ○ | Inferred | 2026-11-07 | https://auda.org.au/industry/registrars/accredited-au-registrars | - | https://toolweight.com/compare/domain-registrars#dynadot--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--account_recovery | | Domains managed | 13 M | Vendor-claimed | 2026-11-07 | https://www.dynadot.com/community/about-us | Vendor says 13+ million. | https://toolweight.com/compare/domain-registrars#dynadot--domains_under_mgmt | | Ownership | independent | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--ownership | | Upsell aggression | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--upsell_aggression | | Ad parking | ◐ | Inferred | - | - | Marketplace listing pages are offered for domains you flag for sale; nothing is applied by default. | https://toolweight.com/compare/domain-registrars#dynadot--parking_ads | | Positioning | Registrar plus aftermarket, aimed at people who trade domains. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#dynadot--positioning | **Verdict.** A strong middle option with built-in aftermarket tooling and a small, ignorable renewal step-up. **Pick it when** - You buy and sell domains as well as using them - Bulk registration sweeps across many TLDs - Mid-size portfolios that have outgrown Namecheap's dashboard ### Namecheap {#namecheap} The mainstream cheap registrar: heavy first-year discounts, higher renewals. | | | | --- | --- | | Site | https://www.namecheap.com/domains/ | | Docs | https://www.namecheap.com/support/api/intro/ | | Company | Namecheap Inc. | | Founded | 2000 | | Open source | No | | Profile | https://toolweight.com/tools/namecheap | | Score (default weights) | 59.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.namecheap.com/security/whois-domain-privacy/ | Included for the life of the domain on TLDs that permit redaction. | https://toolweight.com/compare/domain-registrars#namecheap--free_whois_privacy | | DNSSEC | ◐ | Community-reported | - | - | Supported, but DS management is awkward and behaves differently on Namecheap DNS versus external nameservers. | https://toolweight.com/compare/domain-registrars#namecheap--dnssec | | DNS hosting | standard | Inferred | - | - | Free DNS is unicast; anycast is the paid PremiumDNS add-on. | https://toolweight.com/compare/domain-registrars#namecheap--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--bulk_management | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#namecheap--tld_count | | Public API | ● | Vendor-claimed | 2026-06-30 | https://www.namecheap.com/support/api/intro/ | Keys are issued only once the account meets a balance or domain-count threshold. | https://toolweight.com/compare/domain-registrars#namecheap--api_available | | Support quality | 4 | Community-reported | - | - | 24/7 live chat, generally quick, occasionally scripted. | https://toolweight.com/compare/domain-registrars#namecheap--support_responsiveness | | .com first year | $6.49/yr | Inferred | - | - | Approximate promotional price; Namecheap moves this frequently. | https://toolweight.com/compare/domain-registrars#namecheap--com_first_year | | .com renewal | $16.98/yr | Inferred | - | - | Approximate standard renewal. | https://toolweight.com/compare/domain-registrars#namecheap--com_renewal | | Renewal jump | $10.49/yr | Inferred | - | - | Roughly a 2.5x step-up from year one to year two. | https://toolweight.com/compare/domain-registrars#namecheap--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--at_cost_pricing | | Fee transparency | ◐ | Inferred | - | - | The ICANN fee is itemised, but only once the domain is in the cart. | https://toolweight.com/compare/domain-registrars#namecheap--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--au_renewal | | Transfer-out friction | 2 | Community-reported | - | - | Unlock in the dashboard, auth code emailed to the registrant address; no hard retention gate. | https://toolweight.com/compare/domain-registrars#namecheap--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--registry_lock | | 2FA methods | totp, sms, email-otp | Community-reported | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--two_factor | | .au accredited | ○ | Inferred | 2026-11-07 | https://auda.org.au/industry/registrars/accredited-au-registrars | - | https://toolweight.com/compare/domain-registrars#namecheap--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--account_recovery | | Domains managed | 16 M | Inferred | - | - | Approximate, from company marketing claims. | https://toolweight.com/compare/domain-registrars#namecheap--domains_under_mgmt | | Ownership | independent | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--ownership | | Upsell aggression | 3 | Community-reported | - | - | Hosting and SSL are offered at checkout, but nothing is pre-ticked. | https://toolweight.com/compare/domain-registrars#namecheap--upsell_aggression | | Ad parking | ◐ | Inferred | - | - | Unconfigured domains land on a Namecheap-branded placeholder rather than a third-party ad page. | https://toolweight.com/compare/domain-registrars#namecheap--parking_ads | | Positioning | Cheap first year, mainstream feature set, 24/7 chat. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#namecheap--positioning | **Verdict.** Permanently mid-table: cheapest first year, dearer renewal, so it only wins if you churn domains. **Pick it when** - Short-lived or speculative registrations you will not renew - You want 24/7 chat rather than a ticket queue - Consolidating a portfolio somewhere mainstream and well-staffed ### Hover {#hover} Expensive, calm and upsell-free, with the best phone support in the category. | | | | --- | --- | | Site | https://www.hover.com/ | | Company | Tucows | | Founded | 2008 | | Open source | No | | Profile | https://toolweight.com/tools/hover | | Score (default weights) | 59.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.hover.com/ | - | https://toolweight.com/compare/domain-registrars#hover--free_whois_privacy | | DNSSEC | ◐ | Community-reported | - | - | Supported on some TLDs; management is not fully self-service. | https://toolweight.com/compare/domain-registrars#hover--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--dns_hosting | | Email forwarding | ● | Vendor-claimed | 2026-06-30 | https://www.hover.com/ | Free forwarding; Hover also sells real mailboxes. | https://toolweight.com/compare/domain-registrars#hover--email_forwarding | | Bulk management | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--bulk_management | | TLDs offered | 300 TLDs | Inferred | - | - | Approximate; deliberately curated rather than exhaustive. | https://toolweight.com/compare/domain-registrars#hover--tld_count | | Public API | ○ | Inferred | - | - | No documented public API for retail customers. | https://toolweight.com/compare/domain-registrars#hover--api_available | | Support quality | 5 | Community-reported | - | - | Phone and chat answered quickly by people who know the product, the brand's main asset. | https://toolweight.com/compare/domain-registrars#hover--support_responsiveness | | .com first year | $17.99/yr | Inferred | - | - | Approximate; inclusive of privacy and the ICANN fee. | https://toolweight.com/compare/domain-registrars#hover--com_first_year | | .com renewal | $19.99/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#hover--com_renewal | | Renewal jump | $2/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | Advertised price is all-inclusive; nothing is added later. | https://toolweight.com/compare/domain-registrars#hover--icann_fee_transparency | | .com.au renewal | - | Inferred | - | - | Not offered, .au is outside Hover's curated TLD list. | https://toolweight.com/compare/domain-registrars#hover--au_renewal | | Transfer-out friction | 2 | Community-reported | - | - | Unlock and code via the dashboard or a single support message; no retention pressure. | https://toolweight.com/compare/domain-registrars#hover--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--two_factor | | .au accredited | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--au_accreditation | | Account recovery | 4 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--account_recovery | | Domains managed | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#hover--domains_under_mgmt | | Ownership | public-company | Inferred | - | - | Tucows, NASDAQ-listed. | https://toolweight.com/compare/domain-registrars#hover--ownership | | Upsell aggression | 1 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--parking_ads | | Positioning | Pay more, get left alone. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#hover--positioning | **Verdict.** The priciest registrar here still worth recommending: no upsells and a phone number that answers. **Pick it when** - A single business-critical domain where support beats price - Non-technical owners who need a human to talk to - Anyone allergic to checkout upsells ### Spaceship {#spaceship} Namecheap's newer consumer brand, aggressive intro pricing, modern dashboard. | | | | --- | --- | | Site | https://www.spaceship.com/ | | Company | Namecheap | | Founded | 2023 | | Open source | No | | Profile | https://toolweight.com/tools/spaceship | | Score (default weights) | 58.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.spaceship.com/ | Included by default on eligible TLDs. | https://toolweight.com/compare/domain-registrars#spaceship--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--email_forwarding | | Bulk management | ◐ | Inferred | - | - | Newer dashboard; portfolio tooling is thinner than Namecheap's. | https://toolweight.com/compare/domain-registrars#spaceship--bulk_management | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate; shares much of Namecheap's catalogue. | https://toolweight.com/compare/domain-registrars#spaceship--tld_count | | Public API | ◐ | Inferred | - | - | An API exists but is younger and narrower than the parent's. | https://toolweight.com/compare/domain-registrars#spaceship--api_available | | Support quality | 3 | Community-reported | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--support_responsiveness | | .com first year | $5.98/yr | Inferred | - | - | Approximate; among the most aggressive intro prices in the roster. | https://toolweight.com/compare/domain-registrars#spaceship--com_first_year | | .com renewal | $13.98/yr | Inferred | - | - | Approximate standard renewal. | https://toolweight.com/compare/domain-registrars#spaceship--com_renewal | | Renewal jump | $8/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--at_cost_pricing | | Fee transparency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--au_renewal | | Transfer-out friction | 2 | Inferred | - | - | Modern dashboard with the code available after account verification; short track record, so treat as provisional. | https://toolweight.com/compare/domain-registrars#spaceship--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--two_factor | | .au accredited | ○ | Inferred | 2026-11-07 | https://www.auda.org.au/registrar-resources/list-of-au-accredited-registrars/ | - | https://toolweight.com/compare/domain-registrars#spaceship--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--account_recovery | | Domains managed | 10 M | Community-reported | 2026-11-07 | https://domainnamewire.com/2026/09/30/spaceship-rockets-past-10-million-domains/ | Reported by Domain Name Wire 2026-09-30 from Spaceship's own counter; Spaceship's own blog post returned 403 to our fetch. | https://toolweight.com/compare/domain-registrars#spaceship--domains_under_mgmt | | Ownership | platform-subsidiary | Inferred | - | - | Namecheap's second brand. | https://toolweight.com/compare/domain-registrars#spaceship--ownership | | Upsell aggression | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--parking_ads | | Positioning | Namecheap rebuilt for people who find Namecheap dated. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#spaceship--positioning | **Verdict.** The nicest discount-tier dashboard, but the same renewal economics as parent Namecheap. **Pick it when** - You want cheap domains without Namecheap's 2010s interface - Short-term projects where the first-year price dominates - Bundled mailbox trials alongside the registration ### Gandi {#gandi} European registrar with huge TLD breadth and post-2023 premium pricing. | | | | --- | --- | | Site | https://www.gandi.net/en | | Docs | https://api.gandi.net/docs/ | | Company | Total Webhosting Solutions | | Founded | 1999 | | Open source | No | | Profile | https://toolweight.com/tools/gandi | | Score (default weights) | 57.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.gandi.net/en/domain | Included on TLDs where redaction is permitted. | https://toolweight.com/compare/domain-registrars#gandi--free_whois_privacy | | DNSSEC | ● | Vendor-claimed | 2026-06-30 | https://docs.gandi.net/en/domain_names/advanced_users/dnssec.html | - | https://toolweight.com/compare/domain-registrars#gandi--dnssec | | DNS hosting | anycast-global | Vendor-claimed | 2026-06-30 | https://docs.gandi.net/en/domain_names/domain_name_management/livedns.html | Gandi LiveDNS runs on an anycast network. | https://toolweight.com/compare/domain-registrars#gandi--dns_hosting | | Email forwarding | ◐ | Community-reported | - | - | Forwarding remains, but the free mailboxes bundled for two decades were withdrawn in 2023. | https://toolweight.com/compare/domain-registrars#gandi--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--bulk_management | | TLDs offered | 750 TLDs | Inferred | - | - | Approximate; among the broadest catalogues in the category. | https://toolweight.com/compare/domain-registrars#gandi--tld_count | | Public API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--api_available | | Support quality | 2 | Community-reported | - | - | Ticket-based and slower since the ownership change; paid support tiers exist. | https://toolweight.com/compare/domain-registrars#gandi--support_responsiveness | | .com first year | $24/yr | Inferred | - | - | Approximate, converted from EUR. | https://toolweight.com/compare/domain-registrars#gandi--com_first_year | | .com renewal | $24/yr | Inferred | - | - | Approximate, converted from EUR; registration and renewal broadly match. | https://toolweight.com/compare/domain-registrars#gandi--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--icann_fee_transparency | | .com.au renewal | A$65/yr | Inferred | 2026-11-07 | https://www.gandi.net/en/domain/tld/au | Price is from Gandi .au TLD page (excluding VAT), which also covers .com.au/.net.au/.org.au as second-level extensions; a separate .com.au price page was not found. Converted at EUR/AUD 1.625 (frankfurter.dev, 2026-11-06). | https://toolweight.com/compare/domain-registrars#gandi--au_renewal | | Transfer-out friction | 2 | Community-reported | - | - | Code retrievable from the dashboard; the process is documented and unobstructed. | https://toolweight.com/compare/domain-registrars#gandi--transfer_out_friction | | Auth code delivery | dashboard-plus-email | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--epp_code_delivery | | Registry lock | ◐ | Vendor-claimed | 2026-06-30 | https://www.gandi.net/en/domain | Offered as a paid option on the TLDs whose registries support it. | https://toolweight.com/compare/domain-registrars#gandi--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--two_factor | | .au accredited | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--account_recovery | | Domains managed | 2.4 M | Inferred | - | - | Approximate, order-of-magnitude only. | https://toolweight.com/compare/domain-registrars#gandi--domains_under_mgmt | | Ownership | pe-owned | Inferred | - | - | Total Webhosting Solutions, backed by private capital since 2019. | https://toolweight.com/compare/domain-registrars#gandi--ownership | | Upsell aggression | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--parking_ads | | Positioning | European breadth and control, at a price it did not used to charge. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#gandi--positioning | **Verdict.** Right for obscure TLDs and registry lock, but no longer the ethical-value pick since 2023. **Pick it when** - TLDs nobody else sells - You need registry lock without moving to a corporate registrar - European billing, invoicing and data-residency preferences ### VentraIP {#ventraip} auDA-accredited Australian registrar with a local support desk. | | | | --- | --- | | Site | https://ventraip.com.au/domain-names/ | | Company | VentraIP Australia | | Founded | 2010 | | Open source | No | | Profile | https://toolweight.com/tools/ventraip | | Score (default weights) | 54.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ◐ | Inferred | - | - | Largely moot for .au, where auDA redacts registrant contact data by default; gTLD privacy handling is less clear. | https://toolweight.com/compare/domain-registrars#ventraip--free_whois_privacy | | DNSSEC | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--dns_hosting | | Email forwarding | ◐ | Inferred | - | - | Bundled with hosting products rather than with a bare registration. | https://toolweight.com/compare/domain-registrars#ventraip--email_forwarding | | Bulk management | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--bulk_management | | TLDs offered | 100 TLDs | Inferred | - | - | Approximate; an Australian-focused catalogue. | https://toolweight.com/compare/domain-registrars#ventraip--tld_count | | Public API | ○ | Inferred | - | - | No documented public registration API for retail accounts. | https://toolweight.com/compare/domain-registrars#ventraip--api_available | | Support quality | 4 | Community-reported | - | - | Australian phone and ticket support with genuine .au knowledge. | https://toolweight.com/compare/domain-registrars#ventraip--support_responsiveness | | .com first year | $16/yr | Inferred | - | - | Approximate, converted from AUD; gTLD pricing is not competitive with the discounters. | https://toolweight.com/compare/domain-registrars#ventraip--com_first_year | | .com renewal | $16/yr | Inferred | - | - | Approximate, converted from AUD. | https://toolweight.com/compare/domain-registrars#ventraip--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--at_cost_pricing | | Fee transparency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--icann_fee_transparency | | .com.au renewal | A$19.95/yr | Inferred | - | - | Approximate AUD per year excluding GST; .com.au and .au priced alike. | https://toolweight.com/compare/domain-registrars#ventraip--au_renewal | | Transfer-out friction | 3 | Inferred | - | - | .au transfers use a registrar-issued auth code; VentraIP issues it on request, generally the same business day. | https://toolweight.com/compare/domain-registrars#ventraip--transfer_out_friction | | Auth code delivery | email-delay | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--two_factor | | .au accredited | ● | Vendor-claimed | 2026-06-30 | https://ventraip.com.au/domain-names/ | - | https://toolweight.com/compare/domain-registrars#ventraip--au_accreditation | | Account recovery | 4 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--account_recovery | | Domains managed | 1 M | Vendor-claimed | 2026-11-07 | https://www.ventraip.com.au/about-us/ | Milestone dated 2023 on the VentraIP About page timeline (Nexigen Digital, VentraIP parent). Current count likely higher; no newer figure published. | https://toolweight.com/compare/domain-registrars#ventraip--domains_under_mgmt | | Ownership | independent | Inferred | - | - | Australian-owned; we have not re-verified the current shareholding. | https://toolweight.com/compare/domain-registrars#ventraip--ownership | | Upsell aggression | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--upsell_aggression | | Ad parking | ◐ | Inferred | - | - | Unconfigured domains land on a VentraIP placeholder. | https://toolweight.com/compare/domain-registrars#ventraip--parking_ads | | Positioning | Australian-owned, accredited, and answers the phone. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#ventraip--positioning | **Verdict.** The straightforward .au choice with Australian phone support; do not bring your gTLDs. **Pick it when** - .com.au and .au for an Australian business - You want local support who understand auDA eligibility rules - Domains bundled with Australian-hosted infrastructure ### Squarespace Domains {#squarespace-domains} The Google Domains book, flat-priced at around US$20 with privacy included. | | | | --- | --- | | Site | https://www.squarespace.com/domains | | Company | Squarespace | | Founded | 2003 | | Open source | No | | Profile | https://toolweight.com/tools/squarespace-domains | | Score (default weights) | 51.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ● | Vendor-claimed | 2026-06-30 | https://www.squarespace.com/domains | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--free_whois_privacy | | DNSSEC | ● | Inferred | - | - | Inherited from the Google Domains product line. | https://toolweight.com/compare/domain-registrars#squarespace-domains--dnssec | | DNS hosting | standard | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--dns_hosting | | Email forwarding | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--email_forwarding | | Bulk management | ○ | Inferred | - | - | The dashboard is built for a handful of domains attached to a site. | https://toolweight.com/compare/domain-registrars#squarespace-domains--bulk_management | | TLDs offered | 300 TLDs | Inferred | - | - | Approximate; a curated list, shorter than the discount registrars'. | https://toolweight.com/compare/domain-registrars#squarespace-domains--tld_count | | Public API | ○ | Inferred | - | - | No public domain API for retail customers. | https://toolweight.com/compare/domain-registrars#squarespace-domains--api_available | | Support quality | 3 | Community-reported | - | - | Email and chat through Squarespace's general support, not a domain specialist desk. | https://toolweight.com/compare/domain-registrars#squarespace-domains--support_responsiveness | | .com first year | $20/yr | Inferred | - | - | Approximate; flat pricing with no promotional first year. | https://toolweight.com/compare/domain-registrars#squarespace-domains--com_first_year | | .com renewal | $20/yr | Inferred | - | - | Approximate; registration and renewal match. | https://toolweight.com/compare/domain-registrars#squarespace-domains--com_renewal | | Renewal jump | $0/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--at_cost_pricing | | Fee transparency | ● | Inferred | - | - | All-inclusive advertised price. | https://toolweight.com/compare/domain-registrars#squarespace-domains--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | We have not confirmed whether .com.au is in the curated list. | https://toolweight.com/compare/domain-registrars#squarespace-domains--au_renewal | | Transfer-out friction | 3 | Community-reported | - | - | Documented and functional, but slower than the specialists, and stalls route through general Squarespace support. | https://toolweight.com/compare/domain-registrars#squarespace-domains--transfer_out_friction | | Auth code delivery | email-delay | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--registry_lock | | 2FA methods | totp, passkey | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--two_factor | | .au accredited | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--au_accreditation | | Account recovery | 3 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--account_recovery | | Domains managed | - | Unknown | - | - | Inherited the Google Domains book in 2023; a current figure is not disclosed. | https://toolweight.com/compare/domain-registrars#squarespace-domains--domains_under_mgmt | | Ownership | pe-owned | Inferred | - | - | Taken private by Permira in 2024. | https://toolweight.com/compare/domain-registrars#squarespace-domains--ownership | | Upsell aggression | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--upsell_aggression | | Ad parking | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--parking_ads | | Positioning | Google Domains' calm, at roughly double Cloudflare's price. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#squarespace-domains--positioning | **Verdict.** The least irritating expensive registrar: flat pricing, no upsells, but a site-builder's margin on a commodity. **Pick it when** - You already run the site on Squarespace - One flat annual price with privacy included and no promotions to track - Inherited Google Domains registrations you cannot be bothered moving ### Sav {#sav} Very cheap registrations bundled with an aftermarket and parking business. | | | | --- | --- | | Site | https://www.sav.com/ | | Company | Sav | | Open source | No | | Profile | https://toolweight.com/tools/sav | | Score (default weights) | 44.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ◐ | Inferred | - | - | Included on some TLDs; we have not verified the full list. | https://toolweight.com/compare/domain-registrars#sav--free_whois_privacy | | DNSSEC | ● | Vendor-claimed | 2026-11-07 | https://sav.com/domains/dns/dnssec | - | https://toolweight.com/compare/domain-registrars#sav--dnssec | | DNS hosting | basic | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--dns_hosting | | Email forwarding | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/domain-registrars#sav--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--bulk_management | | TLDs offered | 350 TLDs | Vendor-claimed | 2026-11-07 | https://sav.com/domains/dns | Vendor says more than 350. | https://toolweight.com/compare/domain-registrars#sav--tld_count | | Public API | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--api_available | | Support quality | 2 | Community-reported | - | - | - | https://toolweight.com/compare/domain-registrars#sav--support_responsiveness | | .com first year | $6.99/yr | Inferred | - | - | Approximate; Sav sits consistently at the bottom of the first-year market. | https://toolweight.com/compare/domain-registrars#sav--com_first_year | | .com renewal | $12.99/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#sav--com_renewal | | Renewal jump | $6/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--at_cost_pricing | | Fee transparency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--icann_fee_transparency | | .com.au renewal | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#sav--au_renewal | | Transfer-out friction | 3 | Community-reported | - | - | Reported as slower than the rest of the discount tier, with codes arriving by email after a delay. | https://toolweight.com/compare/domain-registrars#sav--transfer_out_friction | | Auth code delivery | email-delay | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--registry_lock | | 2FA methods | totp | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--two_factor | | .au accredited | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--au_accreditation | | Account recovery | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--account_recovery | | Domains managed | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/domain-registrars#sav--domains_under_mgmt | | Ownership | independent | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--ownership | | Upsell aggression | 4 | Community-reported | - | - | Aftermarket, parking and auction products are pushed throughout the account. | https://toolweight.com/compare/domain-registrars#sav--upsell_aggression | | Ad parking | ● | Inferred | - | - | Parking and monetisation are part of the core business model. | https://toolweight.com/compare/domain-registrars#sav--parking_ads | | Positioning | Cheapest acquisition, monetised everywhere else. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#sav--positioning | **Verdict.** Cheap to buy from, wrong place to keep anything important; the business runs on the aftermarket. **Pick it when** - Bulk speculative acquisition where per-domain cost dominates - Domains you intend to flip rather than build on - Not: anything with a production DNS record on it ### GoDaddy {#godaddy} The default registrar for people who have never compared registrars. | | | | --- | --- | | Site | https://www.godaddy.com/ | | Docs | https://developer.godaddy.com/doc | | Company | GoDaddy Inc. | | Founded | 1997 | | Funding | Public (NYSE: GDDY) | | Open source | No | | Profile | https://toolweight.com/tools/godaddy | | Score (default weights) | 44.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ◐ | Community-reported | - | - | Basic redaction is bundled on many TLDs; the marketed privacy and protection tiers remain paid add-ons. | https://toolweight.com/compare/domain-registrars#godaddy--free_whois_privacy | | DNSSEC | ◐ | Community-reported | - | - | Delivered through the paid Premium DNS product rather than free with the base registration. | https://toolweight.com/compare/domain-registrars#godaddy--dnssec | | DNS hosting | standard | Inferred | - | - | Free DNS is basic; anycast and advanced record handling sit behind Premium DNS. | https://toolweight.com/compare/domain-registrars#godaddy--dns_hosting | | Email forwarding | ○ | Community-reported | - | - | Free email forwarding was withdrawn in 2022 and replaced with a paid Microsoft 365 upsell. | https://toolweight.com/compare/domain-registrars#godaddy--email_forwarding | | Bulk management | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--bulk_management | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#godaddy--tld_count | | Public API | ◐ | Community-reported | - | - | API access was narrowed in 2024 to accounts holding a meaningful number of domains or a paid Discount Domain Club plan. | https://toolweight.com/compare/domain-registrars#godaddy--api_available | | Support quality | 3 | Community-reported | - | - | 24/7 phone, competent, and simultaneously a sales channel. | https://toolweight.com/compare/domain-registrars#godaddy--support_responsiveness | | .com first year | $11.99/yr | Inferred | - | - | Approximate. GoDaddy runs deep first-year promotions, occasionally near zero when bundled with hosting. | https://toolweight.com/compare/domain-registrars#godaddy--com_first_year | | .com renewal | $21.99/yr | Inferred | - | - | Approximate standard renewal; Discount Domain Club members pay less. | https://toolweight.com/compare/domain-registrars#godaddy--com_renewal | | Renewal jump | $10/yr | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--at_cost_pricing | | Fee transparency | ○ | Community-reported | - | - | Fees and add-ons surface late in the checkout funnel. | https://toolweight.com/compare/domain-registrars#godaddy--icann_fee_transparency | | .com.au renewal | A$29.99/yr | Inferred | - | - | Approximate AUD renewal for .com.au; GoDaddy sells .au through an accredited Australian entity. | https://toolweight.com/compare/domain-registrars#godaddy--au_renewal | | Transfer-out friction | 4 | Community-reported | - | - | Unlock, disable privacy, request the code, dismiss retention offers, and cancel any bundled protection product that blocks the unlock. | https://toolweight.com/compare/domain-registrars#godaddy--transfer_out_friction | | Auth code delivery | email-delay | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--epp_code_delivery | | Registry lock | ◐ | Inferred | - | - | True registry lock is a GoDaddy Corporate Domains product, not part of the retail account. | https://toolweight.com/compare/domain-registrars#godaddy--registry_lock | | 2FA methods | totp, sms | Community-reported | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--two_factor | | .au accredited | ● | Inferred | - | - | Operates an accredited Australian entity and sells .au directly. | https://toolweight.com/compare/domain-registrars#godaddy--au_accreditation | | Account recovery | 3 | Community-reported | - | - | Phone-based identity verification exists and is well staffed, which is also a social-engineering surface. | https://toolweight.com/compare/domain-registrars#godaddy--account_recovery | | Domains managed | 84 M | Inferred | - | - | Approximate, from company reporting. | https://toolweight.com/compare/domain-registrars#godaddy--domains_under_mgmt | | Ownership | public-company | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--ownership | | Upsell aggression | 5 | Community-reported | - | - | Multiple interstitials, pre-selected add-ons, and continuing in-account promotion. | https://toolweight.com/compare/domain-registrars#godaddy--upsell_aggression | | Ad parking | ● | Community-reported | - | - | Unconfigured domains resolve to a GoDaddy-monetised parked page. | https://toolweight.com/compare/domain-registrars#godaddy--parking_ads | | Positioning | The default, defended by advertising rather than by price. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#godaddy--positioning | **Verdict.** The highest exit cost outside Crazy Domains, priced to extract from people who do not comparison-shop. **Pick it when** - You need .au and gTLDs from one accredited vendor with 24/7 phone support - Auctions and aftermarket inventory, where GoDaddy's scale is real - Not: holding domains cheaply, or leaving quickly ### Crazy Domains {#crazy-domains} Australian bait pricing: single-digit first year, then several times that. | | | | --- | --- | | Site | https://www.crazydomains.com.au/ | | Company | Dreamscape Networks | | Founded | 2000 | | Open source | No | | Profile | https://toolweight.com/tools/crazy-domains | | Score (default weights) | 23.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Free WHOIS privacy | ○ | Community-reported | - | - | Privacy is a paid add-on, which on .au buys you redaction auDA already applies. | https://toolweight.com/compare/domain-registrars#crazy-domains--free_whois_privacy | | DNSSEC | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--dnssec | | DNS hosting | basic | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--dns_hosting | | Email forwarding | ◐ | Inferred | - | - | Offered as part of paid email products rather than free with the domain. | https://toolweight.com/compare/domain-registrars#crazy-domains--email_forwarding | | Bulk management | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--bulk_management | | TLDs offered | 300 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-registrars#crazy-domains--tld_count | | Public API | ◐ | Inferred | - | - | Reseller-oriented access rather than a documented retail API. | https://toolweight.com/compare/domain-registrars#crazy-domains--api_available | | Support quality | 2 | Community-reported | - | - | Contactable and heavily sales-oriented, with slow resolution on technical escalations. | https://toolweight.com/compare/domain-registrars#crazy-domains--support_responsiveness | | .com first year | $3.5/yr | Inferred | - | - | Approximate, converted from an AUD promotional price; frequently advertised in the single digits. | https://toolweight.com/compare/domain-registrars#crazy-domains--com_first_year | | .com renewal | $26/yr | Inferred | - | - | Approximate, converted from the AUD standard renewal. | https://toolweight.com/compare/domain-registrars#crazy-domains--com_renewal | | Renewal jump | $22.5/yr | Inferred | - | - | The widest first-year-to-renewal spread in this roster, by a distance. | https://toolweight.com/compare/domain-registrars#crazy-domains--renewal_delta | | At-cost pricing | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--at_cost_pricing | | Fee transparency | ○ | Community-reported | - | - | The advertised figure is a promotional first-year price; fees and add-ons appear later in the funnel. | https://toolweight.com/compare/domain-registrars#crazy-domains--icann_fee_transparency | | .com.au renewal | A$29.95/yr | Inferred | - | - | Approximate AUD per year; the first-year offer is typically under A$10. | https://toolweight.com/compare/domain-registrars#crazy-domains--au_renewal | | Transfer-out friction | 5 | Community-reported | - | - | Consistently reported as the hardest exit in the Australian market: retention calls, add-on cancellations and slow code issuance. | https://toolweight.com/compare/domain-registrars#crazy-domains--transfer_out_friction | | Auth code delivery | support-ticket | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--epp_code_delivery | | Registry lock | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--registry_lock | | 2FA methods | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--two_factor | | .au accredited | ● | Inferred | - | - | Dreamscape Networks holds auDA accreditation. | https://toolweight.com/compare/domain-registrars#crazy-domains--au_accreditation | | Account recovery | 2 | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--account_recovery | | Domains managed | - | Unknown | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--domains_under_mgmt | | Ownership | pe-owned | Inferred | - | - | Dreamscape Networks, within the Newfold Digital group. | https://toolweight.com/compare/domain-registrars#crazy-domains--ownership | | Upsell aggression | 5 | Community-reported | - | - | Pre-selected add-ons, multiple interstitials, and continuing outbound sales after purchase. | https://toolweight.com/compare/domain-registrars#crazy-domains--upsell_aggression | | Ad parking | ● | Inferred | - | - | Unconfigured domains resolve to a promotional parked page. | https://toolweight.com/compare/domain-registrars#crazy-domains--parking_ads | | Positioning | Australian mass-market advertising, priced for year two. | Inferred | - | - | - | https://toolweight.com/compare/domain-registrars#crazy-domains--positioning | **Verdict.** The clearest case for ranking on exit cost: single-digit first year, high renewal, obstructed transfers. **Pick it when** - Nothing we would pick over VentraIP or Synergy Wholesale at similar effort - Registering something disposable for one year and abandoning it - If you are already here: get the auth code before the next renewal date, not after ## Methodology - Prices are advertised retail one-year .com registration and renewal, in USD, excluding sales tax and GST. - Figures come from public pricing pages, not logged-in carts. - The delta column is renewal minus first year, the number marketing wants you not to compute. - Australian figures are .com.au retail renewal in AUD excluding GST. - Other currencies are converted at an approximate mid-market rate and flagged as inferred. - Treat every price cell as accurate to the dollar, not the cent; re-check before buying in bulk. - Transfer-out friction is a 1-5 ladder from the documented process plus consistent user reports, not vendor claims. - Level 1: the domain unlocks with one toggle and the auth code is on screen immediately. - Level 5: a phone call, an identity document, a paid add-on to cancel first, or a hold beyond the ICANN 60-day rule. - Levels 4 and 5 are the scores we most want to replace with measured runs. - The plan is to attempt a real transfer out of each registrar on the 30-day cycle and re-label as measured. - Until then these cells are community or inferred; read them as how much of your afternoon it costs, not a stopwatch reading. ## FAQ ### Which registrar has the cheapest .com renewal? - Cloudflare Registrar: it charges the Verisign wholesale fee plus the ICANN transaction fee and adds nothing. - Porkbun, NameSilo and Synergy Wholesale sit a dollar or two above it. - Catch: the domain must live on a Cloudflare DNS zone and the TLD list is short. - If your TLD is not sold there, Porkbun is the cheapest sane fallback. ### How do I transfer a domain away from GoDaddy? - Unlock the domain and turn off any privacy or protection add-on that blocks the unlock. - Request the authorisation code, then start the transfer at the gaining registrar and approve both sides' emails. - Budget a couple of days and expect retention offers in the middle. - You cannot transfer within 60 days of registering or of a previous transfer, and the domain must not be in redemption. ### Is Cloudflare Registrar actually free? - No, it is at-cost: the registry's wholesale fee plus the US$0.18 ICANN fee. - For a .com that lands a little over eleven dollars a year in 2026, rising whenever Verisign raises it. - Free is everything around it: WHOIS privacy, DNSSEC, anycast DNS, email routing. - Cloudflare takes no margin because the domain is a funnel, not the product. ### Does WHOIS privacy still matter if registrant data is already redacted? - For gTLDs it matters less post-GDPR; public .com WHOIS is largely redacted by default. - It still matters because registries, resellers and bulk data licensees see more than the public record. - A registrar that charges for privacy tells you how it will treat every other add-on. - For .au it is pointless: auDA redacts registrant contact data itself. ### Should I keep DNS at my registrar or move it elsewhere? - Separate them if the domain matters. - Registrar DNS couples two failure modes: a billing dispute or account lockout takes down registration and resolution together. - Cloudflare, Route 53 and Bunny all run better anycast than most registrar DNS. - Splitting makes a future transfer boring: the nameservers never change and nothing goes dark mid-transfer. ### Who should I register a .com.au with? - An auDA-accredited registrar with an Australian support desk. - VentraIP for a handful of domains; Synergy Wholesale if you hold domains for clients. - Both understand the .au transfer process: a registrar-issued auth code and different rules from gTLDs. - Avoid Crazy Domains bait pricing: single-digit first year, renewal roughly triple it. ### What happens if I let a domain expire? - Most registrars park it, stop resolution, then hold it through a grace period of around 30 days at the normal renewal price. - Then an ICANN redemption period where recovery costs a restore fee, commonly US$80-100 on top of the renewal. - After that it is deleted and may go to auction. - Auto-renew plus a card that has not expired is the entire mitigation. ## Sources | Source | Last verified | | --- | --- | | https://www.cloudflare.com/products/registrar/ | 2026-11-06 | | https://developers.cloudflare.com/dns/dnssec/ | 2026-06-30 | | https://developers.cloudflare.com/email-routing/ | 2026-06-30 | | https://developers.cloudflare.com/fundamentals/user-profiles/2fa/ | 2026-06-30 | | https://www.porkbun.com/products/domains | 2026-11-06 | | https://porkbun.com/ | 2026-06-30 | | https://porkbun.com/tld/com.au | 2026-11-07 | | https://auda.org.au/industry/registrars/accredited-au-registrars | 2026-11-07 | | https://porkbun.com/blog/porkbun-four-million-domains-under-management/ | 2026-11-07 | | https://www.namecheap.com/security/whois-domain-privacy/ | 2026-06-30 | | https://www.namecheap.com/support/api/intro/ | 2026-06-30 | | https://www.namesilo.com/ | 2026-06-30 | | https://en.wikipedia.org/wiki/NameSilo | 2026-11-07 | | https://www.dynadot.com/domain/pricing | 2026-11-06 | | https://www.dynadot.com/community/about-us | 2026-11-07 | | https://www.spaceship.com/ | 2026-06-30 | | https://www.auda.org.au/registrar-resources/list-of-au-accredited-registrars/ | 2026-11-07 | | https://domainnamewire.com/2026/09/30/spaceship-rockets-past-10-million-domains/ | 2026-11-07 | | https://www.hover.com/ | 2026-06-30 | | https://www.gandi.net/en/domain | 2026-06-30 | | https://docs.gandi.net/en/domain_names/advanced_users/dnssec.html | 2026-06-30 | | https://docs.gandi.net/en/domain_names/domain_name_management/livedns.html | 2026-06-30 | | https://www.gandi.net/en/domain/tld/au | 2026-11-07 | | https://www.netim.com/en/domain-name/com.au-domain | 2026-11-07 | | https://support.netim.com/en/wiki/2FA | 2026-11-07 | | https://sav.com/domains/dns/dnssec | 2026-11-07 | | https://sav.com/domains/dns | 2026-11-07 | | https://www.squarespace.com/domains | 2026-06-30 | | https://ventraip.com.au/domain-names/ | 2026-06-30 | | https://www.ventraip.com.au/about-us/ | 2026-11-07 | | https://synergywholesale.com/api-documentation/ | 2026-06-30 | | https://synergywholesale.com/ | 2026-06-30 | | https://synergywholesale.com/integrations | 2026-11-07 | ## Cite this page > Cloudflare Registrar is cheapest for .com at registry cost and Porkbun is the best all-round retail registrar; renewal price and exit friction matter most. > > — Toolweight, https://toolweight.com/compare/domain-registrars, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Domain APIs](https://toolweight.com/compare/domain-api-providers), Which registrar has the best API for registering domains programmatically? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [Email APIs](https://toolweight.com/compare/email-sending-apis), Which email sending API is best for developers? - [S3-compatible storage](https://toolweight.com/compare/s3-compatible-storage), Which S3-compatible object storage provider is actually cheapest once egress is counted? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/domain-registrars - Machine-readable: https://toolweight.com/compare/domain-registrars.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Domain registration APIs compared slug: domain-api-providers url: "https://toolweight.com/compare/domain-api-providers" question: Which registrar has the best API for registering domains programmatically? tools: 15 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-07-23 median_verified: 2026-07-23 stale_values: 56 conflicting_values: 6 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 33% verify_cadence: 30d license: CC-BY-4.0 --- # Domain registration APIs > **Which registrar has the best API for registering domains programmatically?** > > Porkbun, Name.com and NameSilo hand you a working key for free, while wholesale platforms and higher-priced Route 53 and Vercel demand contracts or deposits first. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/domain-api-providers | | Tools compared | 15 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 72 of 390 values have a verification date, checked between 2026-07-23 and 2026-11-07 (median 2026-07-23), 56 due for re-check, 6 with conflicting evidence. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 33% (mean cell confidence, not age) | | Killer field | min_spend_to_api | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [Gandi](https://toolweight.com/tools/gandi) | 80.3 | 100% | European registrar with huge TLD breadth and post-2023 premium pricing. | | 2 | [Hexonet](https://toolweight.com/tools/hexonet) | 76.7 | 96% | Wholesale platform with 1,000+ TLDs, bulk checks and a free OT&E on signup | | 3 | [Name.com](https://toolweight.com/tools/name-com) | 76.0 | 96% | Clean REST API with streaming search, a dev environment and auth-code retrieval | | 4 | [Netim](https://toolweight.com/tools/netim) | 75.3 | 80% | French registrar with unusually deep ccTLD coverage and corporate controls. | | 5 | [OpenSRS](https://toolweight.com/tools/opensrs) | 74.0 | 92% | Tucows' wholesale platform, deep API, real OT&E, signed contract required | | 6 | [Internet.bs](https://toolweight.com/tools/internetbs) | 72.9 | 88% | Old-school reseller API with published test credentials and no onboarding gate | | 7 | [NameSilo](https://toolweight.com/tools/namesilo) | 72.3 | 96% | Flat renewals, free privacy and portfolio tooling for people holding hundreds. | | 8 | [AWS Route 53 Domains](https://toolweight.com/tools/route53-domains) | 71.4 | 96% | SigV4 domain registration inside AWS, with no sandbox and hard throttling | | 9 | [Dynadot](https://toolweight.com/tools/dynadot) | 68.0 | 92% | Domainer-oriented registrar with strong bulk tools and a built-in marketplace. | | 10 | [GoDaddy](https://toolweight.com/tools/godaddy) | 65.1 | 100% | The default registrar for people who have never compared registrars. | | 11 | [Synergy Wholesale](https://toolweight.com/tools/synergy-wholesale) | 64.6 | 92% | Australian wholesale registrar, near-cost .au if you can open an account. | | 12 | [Direct EPP (own accreditation)](https://toolweight.com/tools/direct-epp) | 63.2 | 92% | Become the registrar: ICANN accreditation plus an EPP client per registry | | 13 | [Porkbun](https://toolweight.com/tools/porkbun) | 61.5 | 100% | Near-cost pricing with free privacy, SSL and forwarding, and a clean exit. | | 14 | [Namecheap](https://toolweight.com/tools/namecheap) | 58.4 | 100% | The mainstream cheap registrar: heavy first-year discounts, higher renewals. | | 15 | [Vercel Domains](https://toolweight.com/tools/vercel-domains) | 50.1 | 100% | Buy a domain with the token that runs your deploys, narrow list, high prices | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Access & onboarding | Tool | Spend to first call ( up front) | Sandbox / OTE | Reseller contract | Min prepaid balance ( float) | ICANN accredited | API auth | | --- | --- | --- | --- | --- | --- | --- | | Gandi | $0 up front | ● | ○ | $0 float | ● | bearer-token | | Hexonet | $0 up front | ● | ● | $80 float | ● | user-password | | Name.com | $0 up front | ● | ○ | $0 float | ● | basic-auth | | Netim | - | - | ◐ | - | ● | api-key | | OpenSRS | $500 up front | ● | ● | - | ● | api-key-ip-allowlist | | Internet.bs | $0 up front | ● | ○ | $0 float | ● | api-key | | NameSilo | $0 up front | ● | ○ | $0 float | ● | api-key | | AWS Route 53 Domains | $0 up front | ○ | ○ | $0 float | ◐ | sigv4 | | Dynadot | $0 up front | ○ | ○ | - | ● | api-key | | GoDaddy | $30 up front | ● | ◐ | $0 float | ● | api-key | | Synergy Wholesale | $0 up front | ○ | ● | - | ◐ | api-key-ip-allowlist | | Direct EPP (own accreditation) | $7,500 up front | ● | ○ | - | ● | epp-xml | | Porkbun | $0 up front | ● | ○ | $0 float | ● | api-key | | Namecheap | $50 up front | ● | ○ | $50 float | ● | api-key-ip-allowlist | | Vercel Domains | $0 up front | ○ | ○ | $0 float | ○ | bearer-token | ### API surface | Tool | TLDs offered ( TLDs) | .au support | Register endpoint | Bulk availability | Suggestion API | Transfer in/out | DNS record API | EPP code via API | Auto-renew control | Webhooks / events | Contact model | Privacy via API | Rate limit ( req/min) | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Gandi | 750 TLDs | ◐ | ● | ◐ | ◐ | ● | ● | ● | ● | ○ | reusable-handles | free-and-default | 1,000 req/min | | Hexonet | 1,000 TLDs | ● | ● | ● | ◐ | ● | ● | ● | ● | ◐ | reusable-handles | paid-addon | - | | Name.com | 500 TLDs | - | ● | ● | ● | ● | ● | ● | ● | ○ | inline-per-order | paid-addon | 50 req/min | | Netim | 900 TLDs | ◐ | ● | ● | - | ● | ● | ● | ● | ○ | reusable-handles | paid-addon | - | | OpenSRS | 800 TLDs | ● | ● | ◐ | ● | ● | ● | ● | ● | ◐ | reusable-handles | paid-addon | - | | Internet.bs | 400 TLDs | - | ● | ◐ | ○ | ● | ● | ● | ● | ○ | inline-per-order | free-and-default | - | | NameSilo | 500 TLDs | ○ | ● | ● | ○ | ● | ● | ◐ | ● | ○ | reusable-handles | free-and-default | - | | AWS Route 53 Domains | 180 TLDs | ◐ | ● | ○ | ● | ● | ● | ● | ● | ◐ | inline-per-order | free-toggle-api | - | | Dynadot | 600 TLDs | - | ● | ● | ○ | ● | ◐ | ● | ● | ○ | reusable-handles | free-toggle-api | 60 req/min | | GoDaddy | 500 TLDs | ◐ | ● | ● | ● | ● | ● | ○ | ● | ○ | inline-per-order | paid-addon | 60 req/min | | Synergy Wholesale | 200 TLDs | ● | ● | ● | ○ | ● | ● | ● | ● | ○ | inline-per-order | paid-addon | - | | Direct EPP (own accreditation) | - | ● | ● | ◐ | ○ | ● | ○ | ● | ● | ◐ | reusable-handles | not-in-api | 600 req/min | | Porkbun | 600 TLDs | ○ | ● | ● | ○ | ○ | ● | ○ | ○ | ● | account-default | free-and-default | 6 req/min | | Namecheap | 500 TLDs | ○ | ● | ● | ○ | ● | ◐ | ○ | ◐ | ○ | inline-per-order | free-toggle-api | 20 req/min | | Vercel Domains | 50 TLDs | ○ | ● | ○ | ○ | ◐ | ● | ○ | ◐ | ◐ | account-default | free-and-default | 2 req/min | ### Pricing | Tool | Pricing basis | Renewal price in API | .com renewal (/yr) | | --- | --- | --- | --- | | Gandi | retail | ● | $24/yr | | Hexonet | wholesale | ● | $11.3/yr | | Name.com | retail | ● | $14.99/yr | | Netim | wholesale-tiered | ● | $12/yr | | OpenSRS | wholesale-tiered | ● | $11.5/yr | | Internet.bs | retail | - | $12.5/yr | | NameSilo | retail | ● | $13.95/yr | | AWS Route 53 Domains | retail | ● | $13/yr | | Dynadot | retail | ● | $12.99/yr | | GoDaddy | retail-premium | ◐ | $21.99/yr | | Synergy Wholesale | wholesale | ● | $11/yr | | Direct EPP (own accreditation) | wholesale | ○ | $10.98/yr | | Porkbun | retail | ● | $11.06/yr | | Namecheap | retail | ● | $15.98/yr | | Vercel Domains | retail-premium | ◐ | $20/yr | ### Agentic | Tool | MCP server | Machine-readable spec | | --- | --- | --- | | Gandi | ○ | ◐ | | Hexonet | ○ | ◐ | | Name.com | ○ | ◐ | | Netim | ○ | ◐ | | OpenSRS | ○ | ○ | | Internet.bs | ○ | ○ | | NameSilo | ○ | ○ | | AWS Route 53 Domains | ◐ | ● | | Dynadot | ○ | ○ | | GoDaddy | ○ | ● | | Synergy Wholesale | ○ | ○ | | Direct EPP (own accreditation) | ○ | ○ | | Porkbun | ○ | ○ | | Namecheap | ○ | ○ | | Vercel Domains | ● | ● | ### Traction | Tool | API since | | --- | --- | | Gandi | 2007 | | Hexonet | 1999 | | Name.com | 2015 | | Netim | 2010 | | OpenSRS | 1999 | | Internet.bs | 2008 | | NameSilo | 2012 | | AWS Route 53 Domains | 2014 | | Dynadot | 2008 | | GoDaddy | 2015 | | Synergy Wholesale | 2011 | | Direct EPP (own accreditation) | 2004 | | Porkbun | 2019 | | Namecheap | 2008 | | Vercel Domains | 2018 | ### Positioning | Tool | Positioning | | --- | --- | | Gandi | European registrar with a genuinely modern REST API and premium pricing to match. | | Hexonet | High-coverage wholesale platform within Team Internet, aimed at resellers and registries. | | Name.com | Developer-facing retail registrar; the API is treated as a product, not a support burden. | | Netim | French registrar selling breadth of extensions, including ccTLDs needing local presence. | | OpenSRS | The incumbent wholesale platform for hosts and platforms reselling domains at scale. | | Internet.bs | Long-running reseller-oriented registrar with an open, evaluate-before-you-sign API. | | NameSilo | Low-margin retail registrar that treats API access and free privacy as table stakes. | | AWS Route 53 Domains | Domain registration as an AWS service, IAM, CloudTrail and one bill, not a registrar product. | | Dynadot | Value registrar with a long-lived, unglamorous API aimed at bulk domain investors. | | GoDaddy | Mass-market registrar whose API is now positioned as a benefit for larger customers. | | Synergy Wholesale | Australian wholesale provider for hosts and agencies reselling .au and hosting together. | | Direct EPP (own accreditation) | The reference point: registry cost with no margin, in exchange for becoming a regulated party. | | Porkbun | Cheap retail registrar whose API exists mainly so developers can automate DNS. | | Namecheap | Retail registrar with a long-standing reseller-flavoured API and a hard IP allowlist. | | Vercel Domains | Domain purchase as a convenience inside a deployment platform, not a registrar business. | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | `min_spend_to_api` | access | currency | up front | lower | 10 | Lowest total USD outlay standing between a new signup and an authenticated call the live registration endpoint will accept: account-balance minimums, opening deposits, mandatory memberships, accreditation fees. Excludes the price of the domain. Where a free sandbox exists but production is gated, the production figure is used. | | Sandbox / OTE | `sandbox_env` | access | tristate | - | higher | 8 | Is there a separate test environment where a registration call succeeds against a fake registry and costs nothing? Partial means a limited test host that cannot exercise registration, transfer and renewal end to end. | | Reseller contract | `reseller_contract` | access | tristate | - | lower | 7 | Must a reseller or partner agreement be applied for and countersigned before production API access is granted? Partial means an application form and manual approval but no negotiated contract. Lower is better. | | Min prepaid balance | `min_prepaid_balance` | access | currency | float | lower | 6 | Smallest documented account float the provider requires you to hold before the API will complete a registration. Zero means registrations bill a stored card or an invoice. Null means the provider is prepaid but publishes no minimum. | | ICANN accredited | `icann_accredited` | access | tristate | - | higher | 4 | Is the entity behind the API an ICANN-accredited registrar in its own right, rather than a reseller sitting on someone else's accreditation? Partial means accredited for part of the catalogue only. Determines who your registrant relationship is actually with when things go wrong. | | API auth | `api_auth` | access | enum | - | higher | 5 | How the API authenticates callers, ranked by how well it survives ephemeral infrastructure. A bearer token or plain key beats anything that pins you to a static IP allowlist, which beats raw EPP over mutual TLS. | | TLDs offered | `tld_count` | features | number | TLDs | higher | 6 | Approximate count of top-level domains registrable through the API, as advertised by the provider. Treat as an order of magnitude, not a precise figure, every provider counts differently and registry-only access inflates the number. | | .au support | `au_support` | features | tristate | - | higher | 7 | Can .com.au and direct .au names be registered through the API with the auDA eligibility data, ABN or ACN, registrant ID type, eligibility reason, carried in the call? Partial means the TLD is sold but the eligibility fields are undocumented, manual, or .com.au only. | | Register endpoint | `register_api` | features | tristate | - | higher | 9 | Can a brand-new domain be purchased and registered end to end from an API call, with no dashboard step? Partial means registration exists but needs manual approval, a pre-created order, or an undocumented endpoint. | | Bulk availability | `bulk_availability` | features | tristate | - | higher | 6 | Does one availability call accept many names, or stream results? Partial means several names per call but a low cap, or a bulk path that drops premium and pricing data. | | Suggestion API | `suggestion_api` | features | tristate | - | higher | 4 | Is there an endpoint that returns alternative available names for a query, spins, synonyms, other TLDs, rather than a yes/no on one string? | | Transfer in/out | `transfer_api` | features | tristate | - | higher | 6 | Can an inbound transfer be initiated with an auth code and its status polled through the API? Partial means transfer-in only, or an endpoint that creates an order still needing dashboard confirmation. | | DNS record API | `dns_record_api` | features | tristate | - | higher | 6 | Can individual DNS records be created, updated and deleted through the API on the provider's own nameservers? Partial means whole-zone replacement only, which forces read-modify-write and races under concurrency. | | EPP code via API | `epp_code_api` | features | tristate | - | higher | 7 | Does an API call return the domain's authorisation code, so it can be handed to a customer who is leaving? Partial means an endpoint that triggers an email to the registrant instead of returning the code in the response. | | Auto-renew control | `auto_renew_api` | features | tristate | - | higher | 5 | Can auto-renew be switched on and off per domain through the API, and can an explicit renewal be triggered? Partial means one of the two, typically renew-now with no auto-renew flag. | | Webhooks / events | `webhook_events` | features | tristate | - | higher | 5 | Does the provider push lifecycle events, registration completed, transfer approved, expiry approaching, to a URL you own? Partial means a pollable event queue, or generic platform webhooks with thin domain coverage. | | Contact model | `contact_model` | features | enum | - | higher | 6 | How registrant contacts are supplied. Reusable handles means contact objects created once and referenced by ID. Inline means a full contact block on every create. Account-default means the domain inherits your account details, so you cannot register on a customer's behalf. | | Privacy via API | `privacy_api` | features | enum | - | higher | 4 | Whether WHOIS/RDAP privacy can be controlled from the API and what it costs at your tier. Free-and-default means applied on registration with no call and no charge; paid-addon means a billable line item you must toggle yourself. | | Rate limit | `rate_limit` | features | number | req/min | higher | 5 | Documented sustained request ceiling per key, normalised to requests per minute, using the tightest published figure where several apply. Null where the provider publishes nothing credible, which is most of them. | | Pricing basis | `pricing_basis` | pricing | enum | - | higher | 7 | What the API charges you. Wholesale means registry cost plus a flat reseller margin for everyone; wholesale-tiered means the margin falls with volume; retail means you pay what a walk-in customer pays; retail-premium means visibly above the retail market. | | Renewal price in API | `renewal_price_api` | pricing | tristate | - | higher | 8 | Does an endpoint return the renewal price for a TLD at your tier, separate from the registration price? Partial means a single price field that silently conflates the two, which is how first-year discounts end up in customer-facing quotes. | | .com renewal | `com_renewal_usd` | pricing | currency | /yr | lower | 7 | Approximate USD price the API returns to renew a .com for one year at the entry tier, ex-tax, mid-2026. Approximate by nature, every figure tracks Verisign's annual wholesale step plus the provider's margin, so read it as a ranking, not a quote. | | MCP server | `mcp_server` | agentic | tristate | - | higher | 3 | Is there a first-party MCP server exposing these endpoints to coding agents? Partial means the domain operations are reachable through a broader platform MCP server not specific to domains. | | Machine-readable spec | `openapi_spec` | agentic | tristate | - | higher | 4 | Does the provider publish an OpenAPI, Swagger or equivalent machine-readable schema you can generate a typed client from? Partial means an incomplete or unofficial spec, or a service model that needs translating first. | | API since | `api_since` | traction | number | - | n/a | 1 | Year the provider first shipped a public programmatic domain interface. Older is not automatically better, several of the oldest here are still XML over HTTP, but it does indicate how unlikely the endpoints are to move under you. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | Who the provider builds this API for, in its own framing: hobbyist automation, platform reseller, or a convenience for an existing customer base. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest wholesale | `cheapest-wholesale` | Lowest cost per name once you are past the contract, with pricing readable from the API. | com_renewal_usd:10, pricing_basis:9, renewal_price_api:7, privacy_api:3, tld_count:3, min_spend_to_api:2, min_prepaid_balance:2 | https://toolweight.com/compare/domain-api-providers?w=com_renewal_usd:10,pricing_basis:9,renewal_price_api:7,privacy_api:3,tld_count:3,min_spend_to_api:2,min_prepaid_balance:2 | | Best .au support | `best-au` | Registering .com.au and direct .au from code, eligibility fields and all. | au_support:10, register_api:6, contact_model:6, epp_code_api:4, transfer_api:3, renewal_price_api:3, sandbox_env:3 | https://toolweight.com/compare/domain-api-providers?w=au_support:10,register_api:6,contact_model:6,epp_code_api:4,transfer_api:3,renewal_price_api:3,sandbox_env:3 | | No contract required | `no-contract` | Key today, first registration today. No application, no deposit, no countersignature. | min_spend_to_api:10, reseller_contract:9, min_prepaid_balance:7, sandbox_env:5, api_auth:4, openapi_spec:3 | https://toolweight.com/compare/domain-api-providers?w=min_spend_to_api:10,reseller_contract:9,min_prepaid_balance:7,sandbox_env:5,api_auth:4,openapi_spec:3 | | Widest TLD coverage | `widest-tlds` | One integration that can register almost anything, including the awkward ccTLDs. | tld_count:10, register_api:6, au_support:5, transfer_api:4, bulk_availability:4, contact_model:3, suggestion_api:3 | https://toolweight.com/compare/domain-api-providers?w=tld_count:10,register_api:6,au_support:5,transfer_api:4,bulk_availability:4,contact_model:3,suggestion_api:3 | ## Verdict - The category splits in two, contractually rather than technically - Retail registrars (Porkbun, NameSilo, Name.com, Dynadot, Namecheap, Internet.bs) bolt an API onto a consumer account - Sign up, toggle, get a key, call the registration endpoint the same afternoon - Wholesale platforms (OpenSRS, Hexonet, Synergy Wholesale, Netim) need an application, agreement and funded balance first - Wholesale APIs are markedly better: reusable contact handles, per-TLD per-tier pricing, event queues, inline auth codes - You pay for that in onboarding weeks - The .au question decides this page for many Australian teams - Registering .com.au or direct .au needs auDA accreditation plus eligibility data (ABN or ACN, registrant ID type, declared connection) - Synergy Wholesale models it all properly, the default if AU-based with an ABN - Tucows' OpenSRS is the credible international alternative - GoDaddy sells .au retail but its documented Domains API schema omits the eligibility fields - Porkbun, Namecheap and Vercel do not sell .au at all - Register one AU name by hand through a provider's API before designing around it - Sandboxes are scarcer than the marketing suggests - Namecheap, GoDaddy, Name.com, Gandi, OpenSRS and Hexonet run genuine, free test environments - Route 53, Vercel, Porkbun and Synergy Wholesale do not; every test is a real registration - Only a registry grace period saves you if you notice fast - Budget roughly a hundred dollars of throwaway names without an OTE - For most signup flows, use Name.com or NameSilo: free key, availability and pricing endpoints, retrievable auth codes - Both support registering on someone else's behalf - If domains are the product, go wholesale; margin and the pricing API repay the contract within a few hundred registrations - Use Route 53 only when the domains are yours, few, and everything lives in AWS - Use Vercel Domains only when the point is a customer never leaving onboarding ## The gate is the contract, not the code - Every one of these APIs is an afternoon's work - Reading docs, writing a client, handling the create-and-poll dance for async registrations, none of it is hard - Half the providers ship an SDK; what takes weeks is being allowed to call it in production - The retail tier gates on money already spent - Namecheap wants US$50 in the account, or twenty domains, before flipping production access on - Cheap, but it catches teams that built against the sandbox then watched identical code fail live - GoDaddy's mid-2024 change was sharper: ten domains or a paid Discount Domain Club membership - Applied to long-open endpoints, it killed many small integrations overnight - The wholesale tier gates on a signature - OpenSRS, Hexonet and Synergy Wholesale want an application, a countersigned reseller agreement, and a funded prepaid balance - None publish the opening deposit; sales quotes it, it varies by market, routinely three or four figures - Synergy's real barrier is an ABN rather than a cheque; Australian businesses are often approved same-day - Budget calendar time, and start the paperwork on day one, not the week before launch ## Testing without burning money - A registration is irreversible in a way most API calls are not - No DELETE gives your money back, only a registry grace period some providers honour and some quietly do not - Where an OT&E exists, use it properly - Namecheap, GoDaddy, Name.com, Gandi, OpenSRS and Hexonet let you register nonsense against a fake registry - OpenSRS and Hexonet also let you exercise transfers and renewals, where the real bugs live - Sandbox pricing usually does not mirror production, so never assert on prices from a test host - Where no OT&E exists (Route 53, Vercel, Porkbun, Synergy Wholesale), your test plan is real money - Register short-lived names in the cheapest TLD, in a dedicated account, and confirm the grace window first - Test failure paths deliberately: an unavailable name, a rejected contact, a registry timeout leaving the operation pending - Those are the 3am branches, and exactly what an OT&E reproduces well ## Availability search is the part that does not scale - Almost every integration starts as a search box and hits a rate limit before a product decision - The registration endpoint is called rarely; availability is called on every keystroke unless you stop it - The spread is enormous - GoDaddy accepts arrays of names in one availability POST and ships a separate suggestion endpoint - Name.com streams search results, genuinely the nicest developer experience here - Hexonet and OpenSRS both do bulk checks with premium and suggestion data attached - Porkbun allows roughly one check every ten seconds - Route 53 checks one name per call and throttles the caller aggressively - Vercel exposes a single-name status endpoint with nothing bulk behind it - The usual fix is to stop asking the registrar - Keep a local zone-file or RDAP-backed first pass for obvious rejections, cache negatives briefly, spend a call only near commitment - That decouples you from the provider: availability logic is what you keep when you switch registrars for price ## This page is about the API, not the shopfront - Everything ranked above is measured through the developer surface: endpoints, auth, sandboxes, rate limits, wholesale cost, contract terms - Nothing here reflects the control panel, the checkout, or what one name costs a person buying by hand - Those are different questions with different winners - A provider scoring badly here can be a perfectly good place to park your own domains - Just buying a domain by hand? → /compare/domain-registrars ## Per-tool provenance, every cell, every source ### Gandi {#gandi} European registrar with huge TLD breadth and post-2023 premium pricing. | | | | --- | --- | | Site | https://www.gandi.net/en | | Docs | https://api.gandi.net/docs/ | | Company | Total Webhosting Solutions | | Founded | 1999 | | Open source | No | | Profile | https://toolweight.com/tools/gandi | | Score (default weights) | 80.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | Personal access tokens are created free from the account; the sandbox uses a separate free account. | https://toolweight.com/compare/domain-api-providers#gandi--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | - | https://toolweight.com/compare/domain-api-providers#gandi--sandbox_env | | Reseller contract | ○ | Inferred | - | - | A separate reseller tier exists with better pricing, but the standard API is open. | https://toolweight.com/compare/domain-api-providers#gandi--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--icann_accredited | | API auth | bearer-token | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | Personal access tokens with scoped permissions replaced the older API keys. | https://toolweight.com/compare/domain-api-providers#gandi--api_auth | | TLDs offered | 750 TLDs | Inferred | - | - | Approximate; among the broadest catalogues in the category. | https://toolweight.com/compare/domain-api-providers#gandi--tld_count | | .au support | ◐ | Inferred | - | - | AU extensions appear in the catalogue, but eligibility handling in the API is not clearly documented. | https://toolweight.com/compare/domain-api-providers#gandi--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--register_api | | Bulk availability | ◐ | Inferred | - | - | Availability takes one name and expands it across extensions rather than accepting a list. | https://toolweight.com/compare/domain-api-providers#gandi--bulk_availability | | Suggestion API | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--transfer_api | | DNS record API | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | LiveDNS supports per-record CRUD and zone snapshots. | https://toolweight.com/compare/domain-api-providers#gandi--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--webhook_events | | Contact model | reusable-handles | Inferred | - | - | Organisation and contact objects can be reused across domains via sharing IDs. | https://toolweight.com/compare/domain-api-providers#gandi--contact_model | | Privacy via API | free-and-default | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--privacy_api | | Rate limit | 1,000 req/min | Vendor-claimed | 2026-11-07 | https://api.gandi.net/docs/reference/ | - | https://toolweight.com/compare/domain-api-providers#gandi--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--pricing_basis | | Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://api.gandi.net/docs/domains/ | The billing price endpoint quotes per process, so renewal is separable from creation. | https://toolweight.com/compare/domain-api-providers#gandi--renewal_price_api | | .com renewal | $24/yr | Inferred | - | - | Approximate, and among the highest here after the 2023 restructuring. | https://toolweight.com/compare/domain-api-providers#gandi--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--mcp_server | | Machine-readable spec | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--openapi_spec | | API since | 2007 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--api_since | | Positioning | European registrar with a genuinely modern REST API and premium pricing to match. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#gandi--positioning | **Verdict.** The nicest European REST surface, but 2023 price rises put .com renewals near the top of this table. **Pick it when** - European teams wanting an EU-based registrar with a modern API - Zone-heavy workloads that benefit from LiveDNS - Small portfolios where per-name price is not the deciding factor ### Hexonet {#hexonet} Wholesale platform with 1,000+ TLDs, bulk checks and a free OT&E on signup | | | | --- | --- | | Site | https://www.hexonet.net | | Docs | https://wiki.hexonet.net/wiki/API | | Company | Team Internet Group | | Founded | 1999 | | Profile | https://toolweight.com/tools/hexonet | | Score (default weights) | 76.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Inferred | - | - | Signup gives immediate OT&E access at no cost. A live account needs approval and a funded prepaid balance; no minimum deposit is published, so the true production figure may be higher. | https://toolweight.com/compare/domain-api-providers#hexonet--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | Free OT&E with the full command set. | https://toolweight.com/compare/domain-api-providers#hexonet--sandbox_env | | Reseller contract | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--reseller_contract | | Min prepaid balance | $80 float | Vendor-claimed | 2026-11-07 | https://support.centralnicreseller.com/hc/en-gb/articles/20040551857053-How-to-Get-Started-as-a-CentralNic-Reseller | - | https://toolweight.com/compare/domain-api-providers#hexonet--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--icann_accredited | | API auth | user-password | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | Login and password parameters on a command-style HTTP interface, with optional IP restriction and role accounts. | https://toolweight.com/compare/domain-api-providers#hexonet--api_auth | | TLDs offered | 1,000 TLDs | Vendor-claimed | 2026-07-23 | https://wiki.hexonet.net/wiki/API | - | https://toolweight.com/compare/domain-api-providers#hexonet--tld_count | | .au support | ● | Inferred | - | - | AU extensions are carried with their eligibility attributes as registry-specific parameters. | https://toolweight.com/compare/domain-api-providers#hexonet--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--register_api | | Bulk availability | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--bulk_availability | | Suggestion API | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--auto_renew_api | | Webhooks / events | ◐ | Inferred | - | - | Status events are polled from a queue rather than pushed to a URL. | https://toolweight.com/compare/domain-api-providers#hexonet--webhook_events | | Contact model | reusable-handles | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--contact_model | | Privacy via API | paid-addon | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--privacy_api | | Rate limit | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--rate_limit | | Pricing basis | wholesale | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--renewal_price_api | | .com renewal | $11.3/yr | Inferred | - | - | Approximate wholesale. | https://toolweight.com/compare/domain-api-providers#hexonet--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--mcp_server | | Machine-readable spec | ◐ | Inferred | - | - | No OpenAPI document, but official open-source SDKs exist for most languages. | https://toolweight.com/compare/domain-api-providers#hexonet--openapi_spec | | API since | 1999 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--api_since | | Positioning | High-coverage wholesale platform within Team Internet, aimed at resellers and registries. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#hexonet--positioning | **Verdict.** The widest TLD coverage and lowest-friction way into wholesale, via an idiosyncratic command-and-parameter API. **Pick it when** - Registering unusual ccTLDs through one integration - Evaluating a wholesale platform before signing anything - Teams that want official SDKs rather than hand-rolled clients ### Name.com {#name-com} Clean REST API with streaming search, a dev environment and auth-code retrieval | | | | --- | --- | | Site | https://www.name.com | | Docs | https://docs.name.com/ | | Company | Identity Digital | | Founded | 2003 | | Profile | https://toolweight.com/tools/name-com | | Score (default weights) | 76.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Token is generated from the account; the development environment needs a separate free account. | https://toolweight.com/compare/domain-api-providers#name-com--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | A dedicated development host mirrors the production API. | https://toolweight.com/compare/domain-api-providers#name-com--sandbox_env | | Reseller contract | ○ | Inferred | - | - | A separate reseller programme exists, but the standard API is open to any account. | https://toolweight.com/compare/domain-api-providers#name-com--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--icann_accredited | | API auth | basic-auth | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | HTTP Basic with username and API token. No IP allowlist requirement. | https://toolweight.com/compare/domain-api-providers#name-com--api_auth | | TLDs offered | 500 TLDs | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--tld_count | | .au support | - | Unknown | - | - | Not confident .com.au is in the catalogue, and no eligibility-field documentation was found either way. | https://toolweight.com/compare/domain-api-providers#name-com--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--register_api | | Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Multiple names per availability call, plus a streaming search endpoint that returns results as they resolve. | https://toolweight.com/compare/domain-api-providers#name-com--bulk_availability | | Suggestion API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--transfer_api | | DNS record API | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | Per-record CRUD, not whole-zone replacement. | https://toolweight.com/compare/domain-api-providers#name-com--dns_record_api | | EPP code via API | ● | Vendor-claimed | 2026-07-23 | https://docs.name.com/ | A dedicated endpoint returns the auth code to the caller. | https://toolweight.com/compare/domain-api-providers#name-com--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--webhook_events | | Contact model | inline-per-order | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--contact_model | | Privacy via API | paid-addon | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--privacy_api | | Rate limit | 50 req/min | Vendor-claimed | 2026-11-07 | https://www.name.com/api-docs | - | https://toolweight.com/compare/domain-api-providers#name-com--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--renewal_price_api | | .com renewal | $14.99/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#name-com--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--mcp_server | | Machine-readable spec | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--openapi_spec | | API since | 2015 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--api_since | | Positioning | Developer-facing retail registrar; the API is treated as a product, not a support burden. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#name-com--positioning | **Verdict.** The best free-tier developer experience here, paid for in retail pricing once domains become the margin. **Pick it when** - Products with a domain search box in the onboarding flow - Teams needing auth-code retrieval without a reseller contract - Prototyping before committing to a wholesale platform ### Netim {#netim} French registrar with unusually deep ccTLD coverage and corporate controls. | | | | --- | --- | | Site | https://www.netim.com/en | | Company | NETIM SARL | | Founded | 2003 | | Open source | No | | Profile | https://toolweight.com/tools/netim | | Score (default weights) | 75.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | - | Unknown | - | - | Netim sells direct and through a reseller tier with different onboarding for each. No opening figure is published for either. | https://toolweight.com/compare/domain-api-providers#netim--min_spend_to_api | | Sandbox / OTE | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--sandbox_env | | Reseller contract | ◐ | Inferred | - | - | Direct accounts are self-serve; the wholesale tier requires an agreement. | https://toolweight.com/compare/domain-api-providers#netim--reseller_contract | | Min prepaid balance | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--icann_accredited | | API auth | api-key | Inferred | - | - | REST with a session and token flow; a legacy SOAP interface is still supported. | https://toolweight.com/compare/domain-api-providers#netim--api_auth | | TLDs offered | 900 TLDs | Inferred | - | - | Approximate. Netim's differentiator is long-tail ccTLD coverage, including trustee services. | https://toolweight.com/compare/domain-api-providers#netim--tld_count | | .au support | ◐ | Inferred | - | - | AU extensions are listed, typically with trustee or local-presence handling layered underneath rather than raw eligibility fields. | https://toolweight.com/compare/domain-api-providers#netim--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--register_api | | Bulk availability | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--bulk_availability | | Suggestion API | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--webhook_events | | Contact model | reusable-handles | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--contact_model | | Privacy via API | paid-addon | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--privacy_api | | Rate limit | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--rate_limit | | Pricing basis | wholesale-tiered | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--renewal_price_api | | .com renewal | $12/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#netim--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--mcp_server | | Machine-readable spec | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--openapi_spec | | API since | 2010 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--api_since | | Positioning | French registrar selling breadth of extensions, including ccTLDs needing local presence. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#netim--positioning | **Verdict.** Chosen for reach and trustee-backed ccTLDs, not developer experience; documentation and transparency lag the wholesale majors. **Pick it when** - Portfolios needing ccTLDs with local-presence requirements - European teams wanting one contract across many registries - Trustee-backed registrations you would otherwise handle manually ### OpenSRS {#opensrs} Tucows' wholesale platform, deep API, real OT&E, signed contract required | | | | --- | --- | | Site | https://opensrs.com | | Docs | https://domains.opensrs.guide/docs | | Company | Tucows | | Founded | 1999 | | Funding | Public (NASDAQ: TCX) | | Profile | https://toolweight.com/tools/opensrs | | Score (default weights) | 74.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $500 up front | Community-reported | - | - | The OT&E sandbox is free on signup. A live reseller account needs an approved application and a funded balance; integrators commonly report an opening deposit around US$500. It is quoted by sales, never published, and varies by market. | https://toolweight.com/compare/domain-api-providers#opensrs--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Full OT&E covering registration, transfer and renewal against a test registry. | https://toolweight.com/compare/domain-api-providers#opensrs--sandbox_env | | Reseller contract | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | - | https://toolweight.com/compare/domain-api-providers#opensrs--reseller_contract | | Min prepaid balance | - | Unknown | - | - | Prepaid, but the required float is set per account during onboarding. | https://toolweight.com/compare/domain-api-providers#opensrs--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--icann_accredited | | API auth | api-key-ip-allowlist | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Signed XML over HTTPS with a reseller username and key, and calls restricted to allowlisted IPs. Direct EPP is also offered. | https://toolweight.com/compare/domain-api-providers#opensrs--api_auth | | TLDs offered | 800 TLDs | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--tld_count | | .au support | ● | Inferred | - | - | Tucows is auDA accredited and OpenSRS carries the AU eligibility fields on registration. | https://toolweight.com/compare/domain-api-providers#opensrs--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--register_api | | Bulk availability | ◐ | Inferred | - | - | Lookup is per name; the suggestion and premium search calls return sets but are not a straight bulk check. | https://toolweight.com/compare/domain-api-providers#opensrs--bulk_availability | | Suggestion API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--auto_renew_api | | Webhooks / events | ◐ | Inferred | - | - | A pollable event queue rather than pushed webhooks, you acknowledge events as you consume them. | https://toolweight.com/compare/domain-api-providers#opensrs--webhook_events | | Contact model | reusable-handles | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | - | https://toolweight.com/compare/domain-api-providers#opensrs--contact_model | | Privacy via API | paid-addon | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--privacy_api | | Rate limit | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--rate_limit | | Pricing basis | wholesale-tiered | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--pricing_basis | | Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://domains.opensrs.guide/docs | Cost calls return your tier's registration, renewal and transfer price per TLD. | https://toolweight.com/compare/domain-api-providers#opensrs--renewal_price_api | | .com renewal | $11.5/yr | Inferred | - | - | Approximate entry-tier wholesale; falls with volume. | https://toolweight.com/compare/domain-api-providers#opensrs--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | XML API with hand-written client libraries; no machine-readable schema. | https://toolweight.com/compare/domain-api-providers#opensrs--openapi_spec | | API since | 1999 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--api_since | | Positioning | The incumbent wholesale platform for hosts and platforms reselling domains at scale. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#opensrs--positioning | **Verdict.** The serious choice when domains are your product, despite a dated XML surface and an opaque opening deposit. **Pick it when** - Hosting platforms reselling domains at volume - Products needing .com.au alongside broad international coverage - Teams that must test transfers and renewals before launch ### Internet.bs {#internetbs} Old-school reseller API with published test credentials and no onboarding gate | | | | --- | --- | | Site | https://internetbs.net | | Company | Internet.bs Corp | | Founded | 2008 | | Profile | https://toolweight.com/tools/internetbs | | Score (default weights) | 72.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Community-reported | - | - | Test credentials are published in the documentation, so the entire API can be exercised before an account exists. | https://toolweight.com/compare/domain-api-providers#internetbs--min_spend_to_api | | Sandbox / OTE | ● | Community-reported | - | - | Separate test host with shared public credentials. | https://toolweight.com/compare/domain-api-providers#internetbs--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | A prepaid balance funds registrations; no minimum is documented. | https://toolweight.com/compare/domain-api-providers#internetbs--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--icann_accredited | | API auth | api-key | Inferred | - | - | API key and password passed as request parameters. | https://toolweight.com/compare/domain-api-providers#internetbs--api_auth | | TLDs offered | 400 TLDs | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--tld_count | | .au support | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--register_api | | Bulk availability | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--dns_record_api | | EPP code via API | ● | Inferred | - | - | The domain info call returns the transfer auth code directly. | https://toolweight.com/compare/domain-api-providers#internetbs--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--webhook_events | | Contact model | inline-per-order | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--contact_model | | Privacy via API | free-and-default | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--privacy_api | | Rate limit | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--pricing_basis | | Renewal price in API | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--renewal_price_api | | .com renewal | $12.5/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#internetbs--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--openapi_spec | | API since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--api_since | | Positioning | Long-running reseller-oriented registrar with an open, evaluate-before-you-sign API. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#internetbs--positioning | **Verdict.** Published test credentials let you evaluate in minutes, but everything else about the platform feels its age. **Pick it when** - Evaluating a registrar API before creating an account - Auth-code retrieval without a reseller contract - Free privacy on a prepaid, no-minimum account ### NameSilo {#namesilo} Flat renewals, free privacy and portfolio tooling for people holding hundreds. | | | | --- | --- | | Site | https://www.namesilo.com/ | | Docs | https://www.namesilo.com/api-reference | | Company | NameSilo LLC | | Founded | 2009 | | Open source | No | | Profile | https://toolweight.com/tools/namesilo | | Score (default weights) | 72.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Key is issued immediately from the account page with no spend condition. | https://toolweight.com/compare/domain-api-providers#namesilo--min_spend_to_api | | Sandbox / OTE | ● | Community-reported | - | - | A sandbox host with separate credentials is available; parity with production is not complete. | https://toolweight.com/compare/domain-api-providers#namesilo--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | Registrations draw on account funds; no minimum float is documented. | https://toolweight.com/compare/domain-api-providers#namesilo--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--icann_accredited | | API auth | api-key | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Key passed in the query string, so it ends up in access and proxy logs unless you proxy carefully. | https://toolweight.com/compare/domain-api-providers#namesilo--api_auth | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#namesilo--tld_count | | .au support | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--register_api | | Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Comma-separated list of names in one call, returning available and unavailable sets. | https://toolweight.com/compare/domain-api-providers#namesilo--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--dns_record_api | | EPP code via API | ◐ | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | The retrieval call emails the code to the administrative contact instead of returning it in the response. | https://toolweight.com/compare/domain-api-providers#namesilo--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--webhook_events | | Contact model | reusable-handles | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | Contacts are account objects created once and associated with domains afterwards. | https://toolweight.com/compare/domain-api-providers#namesilo--contact_model | | Privacy via API | free-and-default | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | - | https://toolweight.com/compare/domain-api-providers#namesilo--privacy_api | | Rate limit | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--pricing_basis | | Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://www.namesilo.com/api-reference | A prices call returns registration, renewal and transfer per TLD. | https://toolweight.com/compare/domain-api-providers#namesilo--renewal_price_api | | .com renewal | $13.95/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#namesilo--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--openapi_spec | | API since | 2012 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--api_since | | Positioning | Low-margin retail registrar that treats API access and free privacy as table stakes. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namesilo--positioning | **Verdict.** The most complete no-contract API here, held back by a query-string key and email-only auth codes. **Pick it when** - Registering on behalf of customers without a reseller contract - Cost-sensitive bulk portfolios - Teams that want free WHOIS privacy applied automatically ### AWS Route 53 Domains {#route53-domains} SigV4 domain registration inside AWS, with no sandbox and hard throttling | | | | --- | --- | | Site | https://aws.amazon.com/route53/ | | Docs | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | | Company | Amazon Web Services | | Founded | 2014 | | Profile | https://toolweight.com/tools/route53-domains | | Score (default weights) | 71.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Any AWS account with the right IAM permissions can call it. With no sandbox, the first successful create is a real purchase. | https://toolweight.com/compare/domain-api-providers#route53-domains--min_spend_to_api | | Sandbox / OTE | ○ | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | - | https://toolweight.com/compare/domain-api-providers#route53-domains--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--min_prepaid_balance | | ICANN accredited | ◐ | Inferred | - | - | Amazon Registrar is accredited and is registrar of record for the common gTLDs; other extensions are fulfilled through a partner registrar. | https://toolweight.com/compare/domain-api-providers#route53-domains--icann_accredited | | API auth | sigv4 | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Standard SigV4 with IAM policies, roles and CloudTrail auditing, the best access-control story in the category. | https://toolweight.com/compare/domain-api-providers#route53-domains--api_auth | | TLDs offered | 180 TLDs | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--tld_count | | .au support | ◐ | Inferred | - | - | com.au and net.au are supported with eligibility data on the contact, but direct .au is not clearly covered. | https://toolweight.com/compare/domain-api-providers#route53-domains--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--register_api | | Bulk availability | ○ | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | One name per availability call, and throttled hard enough that sweeping a candidate list is impractical. | https://toolweight.com/compare/domain-api-providers#route53-domains--bulk_availability | | Suggestion API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--transfer_api | | DNS record API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | Through the separate Route 53 hosted-zone API, not the domains API, different service, different limits. | https://toolweight.com/compare/domain-api-providers#route53-domains--dns_record_api | | EPP code via API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | RetrieveDomainAuthCode returns the code directly. | https://toolweight.com/compare/domain-api-providers#route53-domains--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--auto_renew_api | | Webhooks / events | ◐ | Inferred | - | - | No domain webhooks; operations return an ID you poll, with CloudTrail and EventBridge as the async path. | https://toolweight.com/compare/domain-api-providers#route53-domains--webhook_events | | Contact model | inline-per-order | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--contact_model | | Privacy via API | free-toggle-api | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | - | https://toolweight.com/compare/domain-api-providers#route53-domains--privacy_api | | Rate limit | - | Unknown | - | - | AWS publishes no figure for this API, but it throttles noticeably sooner than most Route 53 endpoints. | https://toolweight.com/compare/domain-api-providers#route53-domains--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--pricing_basis | | Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | ListPrices returns registration, renewal, transfer, restoration and change-ownership prices per TLD. | https://toolweight.com/compare/domain-api-providers#route53-domains--renewal_price_api | | .com renewal | $13/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#route53-domains--com_renewal_usd | | MCP server | ◐ | Inferred | - | - | No domains-specific MCP server, but AWS's general-purpose API MCP servers reach these operations. | https://toolweight.com/compare/domain-api-providers#route53-domains--mcp_server | | Machine-readable spec | ● | Inferred | - | - | Published service models generate typed clients in every AWS SDK. | https://toolweight.com/compare/domain-api-providers#route53-domains--openapi_spec | | API since | 2014 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--api_since | | Positioning | Domain registration as an AWS service, IAM, CloudTrail and one bill, not a registrar product. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#route53-domains--positioning | **Verdict.** Worth it only for domains inside IAM and your AWS bill; wrong for a customer-facing search box. **Pick it when** - Domains that belong to infrastructure and should be governed by IAM - Teams needing auth-code retrieval and audit logs in one place - Small numbers of registrations where throttling never bites ### Dynadot {#dynadot} Domainer-oriented registrar with strong bulk tools and a built-in marketplace. | | | | --- | --- | | Site | https://www.dynadot.com/ | | Docs | https://www.dynadot.com/domain/api3.html | | Company | Dynadot LLC | | Founded | 2002 | | Open source | No | | Profile | https://toolweight.com/tools/dynadot | | Score (default weights) | 68.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Inferred | - | - | Key is generated from account settings. Registrations then fail until the prepaid balance covers them. | https://toolweight.com/compare/domain-api-providers#dynadot--min_spend_to_api | | Sandbox / OTE | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--reseller_contract | | Min prepaid balance | - | Unknown | - | - | Dynadot bills API registrations from account credit but publishes no minimum float. | https://toolweight.com/compare/domain-api-providers#dynadot--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--icann_accredited | | API auth | api-key | Vendor-claimed | 2026-07-23 | https://www.dynadot.com/domain/api3.html | Key passed as a request parameter on the older interface; the newer REST version uses a header. | https://toolweight.com/compare/domain-api-providers#dynadot--api_auth | | TLDs offered | 600 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#dynadot--tld_count | | .au support | - | Unknown | - | - | The catalogue is broad and may include .com.au, but AU eligibility handling in the API is undocumented. | https://toolweight.com/compare/domain-api-providers#dynadot--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--register_api | | Bulk availability | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--transfer_api | | DNS record API | ◐ | Community-reported | - | - | DNS is set as a whole record list per domain rather than record by record. | https://toolweight.com/compare/domain-api-providers#dynadot--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--webhook_events | | Contact model | reusable-handles | Inferred | - | - | Contacts are created as account objects and referenced by ID on registration. | https://toolweight.com/compare/domain-api-providers#dynadot--contact_model | | Privacy via API | free-toggle-api | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--privacy_api | | Rate limit | 60 req/min | Vendor-claimed | 2026-11-07 | https://www.dynadot.com/domain/api-document | - | https://toolweight.com/compare/domain-api-providers#dynadot--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--renewal_price_api | | .com renewal | $12.99/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#dynadot--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--openapi_spec | | API since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--api_since | | Positioning | Value registrar with a long-lived, unglamorous API aimed at bulk domain investors. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#dynadot--positioning | **Verdict.** Built for domainers: strong bulk and contact handling, weak DNS granularity, no sandbox, keen prepaid pricing. **Pick it when** - Bulk registration and portfolio automation - Teams that want a hard spending ceiling via prepaid credit - Scripts where a query-string API is a feature, not a flaw ### GoDaddy {#godaddy} The default registrar for people who have never compared registrars. | | | | --- | --- | | Site | https://www.godaddy.com/ | | Docs | https://developer.godaddy.com/doc | | Company | GoDaddy Inc. | | Founded | 1997 | | Funding | Public (NYSE: GDDY) | | Open source | No | | Profile | https://toolweight.com/tools/godaddy | | Score (default weights) | 65.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $30 up front | Community-reported | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | Since mid-2024 production access requires ten or more domains under management or an active Discount Domain Club membership, roughly US$30 a year for the entry plan. The OTE sandbox stayed free. | https://toolweight.com/compare/domain-api-providers#godaddy--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | Separate OTE host with its own keys. | https://toolweight.com/compare/domain-api-providers#godaddy--sandbox_env | | Reseller contract | ◐ | Inferred | - | - | No contract for the standard API, but the eligibility gate functions as one. A separate reseller programme exists. | https://toolweight.com/compare/domain-api-providers#godaddy--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--icann_accredited | | API auth | api-key | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | An sso-key header carrying a key and secret pair. | https://toolweight.com/compare/domain-api-providers#godaddy--api_auth | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#godaddy--tld_count | | .au support | ◐ | Inferred | - | - | GoDaddy retails .com.au and .au, but the documented Domains API schema does not carry the auDA eligibility fields, so programmatic registration is not a clean path. | https://toolweight.com/compare/domain-api-providers#godaddy--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--register_api | | Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | An array of names in a single POST, with a fast/accurate mode switch. | https://toolweight.com/compare/domain-api-providers#godaddy--bulk_availability | | Suggestion API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--transfer_api | | DNS record API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--dns_record_api | | EPP code via API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--webhook_events | | Contact model | inline-per-order | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--contact_model | | Privacy via API | paid-addon | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--privacy_api | | Rate limit | 60 req/min | Community-reported | - | - | Undocumented; 429s are commonly reported around one call per second per key. | https://toolweight.com/compare/domain-api-providers#godaddy--rate_limit | | Pricing basis | retail-premium | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--pricing_basis | | Renewal price in API | ◐ | Inferred | - | - | Purchase schemas return a price for the term requested; there is no clean separate renewal figure per TLD. | https://toolweight.com/compare/domain-api-providers#godaddy--renewal_price_api | | .com renewal | $21.99/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#godaddy--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--mcp_server | | Machine-readable spec | ● | Vendor-claimed | 2026-07-23 | https://developer.godaddy.com/doc/endpoint/domains | - | https://toolweight.com/compare/domain-api-providers#godaddy--openapi_spec | | API since | 2015 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--api_since | | Positioning | Mass-market registrar whose API is now positioned as a benefit for larger customers. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#godaddy--positioning | **Verdict.** Technically strong surface undermined by the least trustworthy access policy here and the worst pricing. **Pick it when** - Accounts already holding ten or more domains - High-volume availability search and name suggestions - Teams that want a generated client from a published schema ### Synergy Wholesale {#synergy-wholesale} Australian wholesale registrar, near-cost .au if you can open an account. | | | | --- | --- | | Site | https://synergywholesale.com/ | | Docs | https://synergywholesale.com/api-documentation/ | | Company | Synergy Wholesale Pty Ltd | | Founded | 2011 | | Open source | No | | Profile | https://toolweight.com/tools/synergy-wholesale | | Score (default weights) | 64.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Inferred | - | - | The real barrier is an ABN and a signed reseller agreement rather than a deposit. Applications from Australian businesses are often approved same-day, but funds must clear before the first register call. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--min_spend_to_api | | Sandbox / OTE | ○ | Community-reported | - | - | No OT&E. Integration testing happens against live registrations at live prices. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--sandbox_env | | Reseller contract | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--reseller_contract | | Min prepaid balance | - | Unknown | - | - | Prepaid account; the required float is set during onboarding and not published. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--min_prepaid_balance | | ICANN accredited | ◐ | Inferred | - | - | auDA accredited for the AU space; gTLDs are fulfilled through upstream accreditation. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--icann_accredited | | API auth | api-key-ip-allowlist | Inferred | - | - | Reseller ID and API key with calls restricted to allowlisted IPs. The interface is SOAP-flavoured. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--api_auth | | TLDs offered | 200 TLDs | Inferred | - | - | Approximate; strong on .au, narrower on the long tail. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--tld_count | | .au support | ● | Inferred | - | - | The auDA eligibility model, ABN or ACN, registrant ID type, eligibility reason, is carried as first-class fields on registration, direct .au included. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--register_api | | Bulk availability | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--transfer_api | | DNS record API | ● | Inferred | - | - | Managed DNS with per-record control, hosted in Australia. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--epp_code_api | | Auto-renew control | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--webhook_events | | Contact model | inline-per-order | Inferred | - | - | Contacts are supplied per registration together with the AU eligibility fields. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--contact_model | | Privacy via API | paid-addon | Inferred | - | - | Moot for .au, the registry publishes the registrant name regardless. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--privacy_api | | Rate limit | - | Unknown | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--rate_limit | | Pricing basis | wholesale | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--renewal_price_api | | .com renewal | $11/yr | Inferred | - | - | Approximate USD equivalent of the AUD wholesale price; FX moves this. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | SOAP WSDL rather than OpenAPI. | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--openapi_spec | | API since | 2011 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--api_since | | Positioning | Australian wholesale provider for hosts and agencies reselling .au and hosting together. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#synergy-wholesale--positioning | **Verdict.** The answer for .com.au or direct .au from code with an ABN; the missing test environment is the real cost. **Pick it when** - Australian platforms registering .com.au for customers - Agencies bundling AU domains, DNS and hosting - Anyone needing eligibility fields inside the registration call ### Direct EPP (own accreditation) {#direct-epp} Become the registrar: ICANN accreditation plus an EPP client per registry | | | | --- | --- | | Site | https://www.icann.org/resources/pages/accreditation-2012-02-25-en | | Company | Direct EPP (own accreditation) | | Profile | https://toolweight.com/tools/direct-epp | | Score (default weights) | 63.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $7,500 up front | Vendor-claimed | 2026-07-23 | https://www.icann.org/resources/pages/accreditation-2012-02-25-en | US$3,500 non-refundable application plus US$4,000 a year in accreditation fees, before registry deposits, letters of credit, insurance and the cost of building an EPP client. Registry security deposits are the larger number and vary per registry. | https://toolweight.com/compare/domain-api-providers#direct-epp--min_spend_to_api | | Sandbox / OTE | ● | Inferred | - | - | Every registry runs an OT&E, and passing its certification test is mandatory before production credentials are issued. | https://toolweight.com/compare/domain-api-providers#direct-epp--sandbox_env | | Reseller contract | ○ | Inferred | - | - | No reseller agreement, you sign a registry-registrar agreement with each registry instead, which is considerably more onerous. | https://toolweight.com/compare/domain-api-providers#direct-epp--reseller_contract | | Min prepaid balance | - | Unknown | - | - | Set per registry; commonly a deposit or letter of credit sized to your projected volume. | https://toolweight.com/compare/domain-api-providers#direct-epp--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--icann_accredited | | API auth | epp-xml | Inferred | - | - | EPP over TLS with client certificates and IP allowlisting, one persistent session per registry. | https://toolweight.com/compare/domain-api-providers#direct-epp--api_auth | | TLDs offered | - | Unknown | - | - | Unbounded in principle, one contract at a time in practice. | https://toolweight.com/compare/domain-api-providers#direct-epp--tld_count | | .au support | ● | Inferred | - | - | Requires separate auDA accreditation on top of ICANN, with its own fees and Australian presence requirements. | https://toolweight.com/compare/domain-api-providers#direct-epp--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--register_api | | Bulk availability | ◐ | Inferred | - | - | The EPP check command accepts several names, but registries cap it and watch check-to-create ratios. | https://toolweight.com/compare/domain-api-providers#direct-epp--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--transfer_api | | DNS record API | ○ | Inferred | - | - | EPP sets nameservers; running DNS is a separate system you build or buy. | https://toolweight.com/compare/domain-api-providers#direct-epp--dns_record_api | | EPP code via API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--epp_code_api | | Auto-renew control | ● | Inferred | - | - | Renewal is an explicit command; auto-renew is a policy you implement yourself. | https://toolweight.com/compare/domain-api-providers#direct-epp--auto_renew_api | | Webhooks / events | ◐ | Inferred | - | - | The EPP message queue is poll-based and must be drained or the registry complains. | https://toolweight.com/compare/domain-api-providers#direct-epp--webhook_events | | Contact model | reusable-handles | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--contact_model | | Privacy via API | not-in-api | Inferred | - | - | Privacy is a service you operate, not a flag you set. | https://toolweight.com/compare/domain-api-providers#direct-epp--privacy_api | | Rate limit | 600 req/min | Inferred | - | - | Registry-imposed per-session command limits. Check commands are watched closely and abusive ratios attract warnings. | https://toolweight.com/compare/domain-api-providers#direct-epp--rate_limit | | Pricing basis | wholesale | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--pricing_basis | | Renewal price in API | ○ | Inferred | - | - | Registries publish price lists contractually, not through EPP. | https://toolweight.com/compare/domain-api-providers#direct-epp--renewal_price_api | | .com renewal | $10.98/yr | Inferred | - | - | Verisign wholesale plus the US$0.18 ICANN transaction fee. Approximate, and it steps up again each September. | https://toolweight.com/compare/domain-api-providers#direct-epp--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | EPP is specified by RFC rather than by a schema you can generate a client from, though the RFCs are precise, which is arguably better. | https://toolweight.com/compare/domain-api-providers#direct-epp--openapi_spec | | API since | 2004 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--api_since | | Positioning | The reference point: registry cost with no margin, in exchange for becoming a regulated party. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#direct-epp--positioning | **Verdict.** A reference point, not a recommendation; below roughly a hundred thousand names the compliance load outweighs every reseller margin. **Pick it when** - Operators already carrying six figures of domains under management - Registries and large hosts building their own registrar - Understanding what the margin above actually pays for ### Porkbun {#porkbun} Near-cost pricing with free privacy, SSL and forwarding, and a clean exit. | | | | --- | --- | | Site | https://porkbun.com/ | | Docs | https://porkbun.com/api/json/v3/documentation | | Company | Top Level Design | | Founded | 2014 | | Open source | No | | Profile | https://toolweight.com/tools/porkbun | | Score (default weights) | 61.5 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | Key and secret are generated free from account settings. API access must then be enabled per domain before domain-level calls work. | https://toolweight.com/compare/domain-api-providers#porkbun--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-11-06 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--icann_accredited | | API auth | api-key | Vendor-claimed | 2026-11-06 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--api_auth | | TLDs offered | 600 TLDs | Inferred | - | - | Approximate; one of the broader retail catalogues. | https://toolweight.com/compare/domain-api-providers#porkbun--tld_count | | .au support | ○ | Inferred | - | - | The catalogue is wide but does not carry .au, and there is no eligibility-field support anywhere in the API. | https://toolweight.com/compare/domain-api-providers#porkbun--au_support | | Register endpoint | ● | Vendor-claimed | 2026-11-06 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--register_api | | Bulk availability | ● | Vendor-claimed | 2026-11-06 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--suggestion_api | | Transfer in/out | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--transfer_api | | DNS record API | ● | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | Per-record create, edit and delete, including retrieval by type and subdomain. The strongest part of the API. | https://toolweight.com/compare/domain-api-providers#porkbun--dns_record_api | | EPP code via API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--epp_code_api | | Auto-renew control | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--auto_renew_api | | Webhooks / events | ● | Vendor-claimed | 2026-11-06 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--webhook_events | | Contact model | account-default | Inferred | - | - | Registrant details come from the account; there is no contact-object model for registering on someone else's behalf. | https://toolweight.com/compare/domain-api-providers#porkbun--contact_model | | Privacy via API | free-and-default | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | - | https://toolweight.com/compare/domain-api-providers#porkbun--privacy_api | | Rate limit | 6 req/min | Community-reported | - | - | Reflects the availability check, which is the binding limit at roughly one call per ten seconds. Other endpoints are looser but undocumented. | https://toolweight.com/compare/domain-api-providers#porkbun--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--pricing_basis | | Renewal price in API | ● | Vendor-claimed | 2026-07-23 | https://porkbun.com/api/json/v3/documentation | The pricing endpoint needs no authentication and returns registration, renewal and transfer prices for the whole catalogue. | https://toolweight.com/compare/domain-api-providers#porkbun--renewal_price_api | | .com renewal | $11.06/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#porkbun--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--openapi_spec | | API since | 2019 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--api_since | | Positioning | Cheap retail registrar whose API exists mainly so developers can automate DNS. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#porkbun--positioning | **Verdict.** Superb free pricing and DNS API, but verify a registration endpoint exists before building a signup flow. **Pick it when** - Automating DNS records for domains you bought by hand - A free, unauthenticated source of TLD pricing data - Small projects where one registration a month can be manual ### Namecheap {#namecheap} The mainstream cheap registrar: heavy first-year discounts, higher renewals. | | | | --- | --- | | Site | https://www.namecheap.com/domains/ | | Docs | https://www.namecheap.com/support/api/intro/ | | Company | Namecheap Inc. | | Founded | 2000 | | Open source | No | | Profile | https://toolweight.com/tools/namecheap | | Score (default weights) | 58.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $50 up front | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | Production needs twenty domains in the account, US$50 of account balance, or US$50 spent in the last two years. The sandbox is free and unconditional. | https://toolweight.com/compare/domain-api-providers#namecheap--min_spend_to_api | | Sandbox / OTE | ● | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | A separate sandbox host mirrors the production API with its own credentials. | https://toolweight.com/compare/domain-api-providers#namecheap--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--reseller_contract | | Min prepaid balance | $50 float | Inferred | - | - | The same US$50 that unlocks production also funds registrations, since API purchases draw on account balance. | https://toolweight.com/compare/domain-api-providers#namecheap--min_prepaid_balance | | ICANN accredited | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--icann_accredited | | API auth | api-key-ip-allowlist | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | ApiUser, ApiKey and a ClientIp that must be on the allowlist. Painful from serverless or autoscaled workers. | https://toolweight.com/compare/domain-api-providers#namecheap--api_auth | | TLDs offered | 500 TLDs | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#namecheap--tld_count | | .au support | ○ | Inferred | - | - | Namecheap does not sell .com.au or .au. | https://toolweight.com/compare/domain-api-providers#namecheap--au_support | | Register endpoint | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--register_api | | Bulk availability | ● | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | The check command accepts a comma-separated list, capped around fifty names. | https://toolweight.com/compare/domain-api-providers#namecheap--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--suggestion_api | | Transfer in/out | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--transfer_api | | DNS record API | ◐ | Community-reported | - | - | setHosts replaces the entire record set. Concurrent updates silently clobber each other unless you serialise. | https://toolweight.com/compare/domain-api-providers#namecheap--dns_record_api | | EPP code via API | ○ | Inferred | - | - | The auth code is emailed to the registrant rather than returned by a call. | https://toolweight.com/compare/domain-api-providers#namecheap--epp_code_api | | Auto-renew control | ◐ | Inferred | - | - | An explicit renew command exists; the auto-renew flag is a dashboard setting. | https://toolweight.com/compare/domain-api-providers#namecheap--auto_renew_api | | Webhooks / events | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--webhook_events | | Contact model | inline-per-order | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--contact_model | | Privacy via API | free-toggle-api | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | WhoisGuard is included and enabled through its own API commands. | https://toolweight.com/compare/domain-api-providers#namecheap--privacy_api | | Rate limit | 20 req/min | Vendor-claimed | 2026-07-23 | https://www.namecheap.com/support/api/intro/ | Also capped at roughly 700 per hour and 8,000 per day. | https://toolweight.com/compare/domain-api-providers#namecheap--rate_limit | | Pricing basis | retail | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--pricing_basis | | Renewal price in API | ● | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--renewal_price_api | | .com renewal | $15.98/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#namecheap--com_renewal_usd | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--mcp_server | | Machine-readable spec | ○ | Inferred | - | - | XML request and response with no published schema; every client here is hand-written. | https://toolweight.com/compare/domain-api-providers#namecheap--openapi_spec | | API since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--api_since | | Positioning | Retail registrar with a long-standing reseller-flavoured API and a hard IP allowlist. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#namecheap--positioning | **Verdict.** Good sandbox and docs, but whole-zone DNS, no auth-code retrieval and a mandatory IP allowlist hurt. **Pick it when** - Teams that must test registration flows against a real sandbox - Workloads with a stable egress IP or NAT gateway - Bulk availability search at moderate volume ### Vercel Domains {#vercel-domains} Buy a domain with the token that runs your deploys, narrow list, high prices | | | | --- | --- | | Site | https://vercel.com/docs/domains | | Docs | https://vercel.com/docs/rest-api/reference/endpoints/domains | | Company | Vercel Inc. | | Founded | 2015 | | Funding | Series F | | Profile | https://toolweight.com/tools/vercel-domains | | Score (default weights) | 50.1 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Spend to first call | $0 up front | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | The same bearer token that deploys projects can buy domains. There is no sandbox, so the first successful buy is a real purchase. | https://toolweight.com/compare/domain-api-providers#vercel-domains--min_spend_to_api | | Sandbox / OTE | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--sandbox_env | | Reseller contract | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--reseller_contract | | Min prepaid balance | $0 float | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--min_prepaid_balance | | ICANN accredited | ○ | Inferred | - | - | Vercel resells through an accredited registrar rather than holding accreditation itself. | https://toolweight.com/compare/domain-api-providers#vercel-domains--icann_accredited | | API auth | bearer-token | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--api_auth | | TLDs offered | 50 TLDs | Inferred | - | - | A short list skewed to the popular gTLDs. Check your extension before designing around it. | https://toolweight.com/compare/domain-api-providers#vercel-domains--tld_count | | .au support | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--au_support | | Register endpoint | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | Buy, price and status endpoints, with the purchased domain wired straight into project configuration. | https://toolweight.com/compare/domain-api-providers#vercel-domains--register_api | | Bulk availability | ○ | Inferred | - | - | One name per status call. | https://toolweight.com/compare/domain-api-providers#vercel-domains--bulk_availability | | Suggestion API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--suggestion_api | | Transfer in/out | ◐ | Inferred | - | - | Transfer-in only. | https://toolweight.com/compare/domain-api-providers#vercel-domains--transfer_api | | DNS record API | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--dns_record_api | | EPP code via API | ○ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--epp_code_api | | Auto-renew control | ◐ | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--auto_renew_api | | Webhooks / events | ◐ | Inferred | - | - | Platform webhooks include domain creation, but nothing for expiry, renewal failure or transfer state. | https://toolweight.com/compare/domain-api-providers#vercel-domains--webhook_events | | Contact model | account-default | Inferred | - | - | The registrant is your account or team, so you cannot register on a customer's behalf. | https://toolweight.com/compare/domain-api-providers#vercel-domains--contact_model | | Privacy via API | free-and-default | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--privacy_api | | Rate limit | 2 req/min | Vendor-claimed | 2026-11-07 | https://vercel.com/docs/limits | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--rate_limit | | Pricing basis | retail-premium | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--pricing_basis | | Renewal price in API | ◐ | Inferred | - | - | The price endpoint quotes a term rather than exposing a distinct renewal figure. | https://toolweight.com/compare/domain-api-providers#vercel-domains--renewal_price_api | | .com renewal | $20/yr | Inferred | - | - | Approximate. | https://toolweight.com/compare/domain-api-providers#vercel-domains--com_renewal_usd | | MCP server | ● | Community-reported | - | - | Vercel's platform MCP server exposes the REST API, domains included. | https://toolweight.com/compare/domain-api-providers#vercel-domains--mcp_server | | Machine-readable spec | ● | Vendor-claimed | 2026-07-23 | https://vercel.com/docs/rest-api/reference/endpoints/domains | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--openapi_spec | | API since | 2018 | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--api_since | | Positioning | Domain purchase as a convenience inside a deployment platform, not a registrar business. | Inferred | - | - | - | https://toolweight.com/compare/domain-api-providers#vercel-domains--positioning | **Verdict.** Buying a domain in the deploy flow is a real advantage, offset by a narrow catalogue and premium pricing. **Pick it when** - Onboarding flows that end with a live site on a custom domain - Agent-driven workflows already holding a Vercel token - Teams that value one bill over per-name price ## Methodology - Every cell read off the provider's own developer docs, reseller onboarding pages, or consistent integrator reports - Values are dated and carry a confidence marker - Anything we could not stand behind is null and renders as an em dash, not a guess - That covers most published rate limits and several undisclosed opening deposits, quoted by sales only - The killer field, minimum spend to a working key, is the lowest total US-dollar outlay to an accepted authenticated call - It counts account-balance minimums, opening deposits, mandatory memberships and accreditation fees - It excludes the price of the domain itself - Where a free sandbox gates production, the production figure is reported and the sandbox noted - Every vendor buries this number, and it reorders the table completely ## FAQ ### Which domain API can I start using today with no contract and no deposit? - Porkbun, NameSilo, Name.com, Dynadot, Internet.bs and Gandi issue a key from a normal account at zero cost - Route 53 and Vercel need only an existing AWS or Vercel account - Namecheap issues a free sandbox key but gates production behind US$50 or twenty domains - GoDaddy now requires ten domains under management or a paid Discount Domain Club membership ### Can I register a .com.au domain through an API? - Yes, but the list is short - Synergy Wholesale is strongest, modelling the auDA eligibility fields (ABN or ACN, registrant ID type, eligibility reason) in the call - OpenSRS carries them too; Route 53 accepts .com.au with eligibility data on the contact - Porkbun, Namecheap and Vercel do not sell .au at all ### Do I need to be an ICANN-accredited registrar to register domains from code? - No - Every provider here is accredited itself or resells someone who is, and the API is the point of that - Self-accreditation costs US$3,500 to apply plus US$4,000 a year, before registry deposits, insurance and an EPP client - Only worth it above roughly a hundred thousand names under management ### Which registrar APIs have a real sandbox? - Namecheap runs a sandbox host, GoDaddy an OTE environment, Name.com a development host - Gandi, OpenSRS and Hexonet all run proper OT&E systems with free, fake registrations - Route 53, Vercel Domains, Porkbun and Synergy Wholesale have none - Against those, test with a cheap TLD and delete inside the grace window ### How do I retrieve a domain's EPP or auth code through an API? - Name.com, Route 53, Hexonet, OpenSRS, Internet.bs and Synergy Wholesale return the code to an API call - NameSilo has a retrieval endpoint but emails the code to the admin contact - Namecheap, Porkbun, GoDaddy and Vercel expect a human in a dashboard or inbox - Treat this as blocking if you hand domains back to customers ### Do these APIs expose renewal prices, or only registration prices? - Wholesale platforms expose renewal separately: OpenSRS, Hexonet, Synergy Wholesale and Netim return per-TLD registration, renewal and transfer at your tier - Porkbun's pricing endpoint is public and unauthenticated - NameSilo, Name.com, Namecheap, Gandi and Route 53 all return renewal figures - GoDaddy and Vercel are the notable gaps ### What rate limits should I expect on availability checks? - Assume they are the binding constraint - Namecheap documents roughly twenty calls a minute, 700 an hour and 8,000 a day - Porkbun throttles domain checks to about one every ten seconds; Route 53 throttles too hard to sweep a list - Only GoDaddy, Hexonet and Name.com make bulk or streaming search practical ## Sources | Source | Last verified | | --- | --- | | https://porkbun.com/api/json/v3/documentation | 2026-07-23 | | https://www.namecheap.com/support/api/intro/ | 2026-07-23 | | https://docs.name.com/ | 2026-07-23 | | https://www.name.com/api-docs | 2026-11-07 | | https://www.dynadot.com/domain/api3.html | 2026-07-23 | | https://www.dynadot.com/domain/api-document | 2026-11-07 | | https://developer.godaddy.com/doc/endpoint/domains | 2026-07-23 | | https://www.namesilo.com/api-reference | 2026-07-23 | | https://domains.opensrs.guide/docs | 2026-07-23 | | https://wiki.hexonet.net/wiki/API | 2026-07-23 | | https://support.centralnicreseller.com/hc/en-gb/articles/20040551857053-How-to-Get-Started-as-a-CentralNic-Reseller | 2026-11-07 | | https://api.gandi.net/docs/domains/ | 2026-07-23 | | https://api.gandi.net/docs/reference/ | 2026-11-07 | | https://docs.aws.amazon.com/Route53/latest/APIReference/API_Operations_Amazon_Route_53_Domains.html | 2026-07-23 | | https://vercel.com/docs/rest-api/reference/endpoints/domains | 2026-07-23 | | https://vercel.com/docs/limits | 2026-11-07 | | https://www.icann.org/resources/pages/accreditation-2012-02-25-en | 2026-07-23 | ## Cite this page > Porkbun, Name.com and NameSilo hand you a working key for free, while wholesale platforms and higher-priced Route 53 and Vercel demand contracts or deposits first. > > — Toolweight, https://toolweight.com/compare/domain-api-providers, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Domain registrars](https://toolweight.com/compare/domain-registrars), Which domain registrar is cheapest to renew with, and which ones make it hard to leave? - [Vercel alternatives](https://toolweight.com/compare/vercel-alternatives), Which Vercel alternative should I use, and what happens to my bill if my site goes viral? - [Email APIs](https://toolweight.com/compare/email-sending-apis), Which email sending API is best for developers? - [AU SMS APIs](https://toolweight.com/compare/sms-api-providers-australia), Which SMS API provider should I use to send text messages to Australian mobile numbers? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/domain-api-providers - Machine-readable: https://toolweight.com/compare/domain-api-providers.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements. --- --- title: Australian SMS API providers compared slug: sms-api-providers-australia url: "https://toolweight.com/compare/sms-api-providers-australia" question: Which SMS API provider should I use to send text messages to Australian mobile numbers? tools: 13 fields: 26 last_verified: 2026-11-07 oldest_verified: 2026-07-20 median_verified: 2026-11-07 stale_values: 10 conflicting_values: 0 dataset_version: 0738be72 dataset_published: 2026-11-14 evidence_strength: 26% verify_cadence: 30d license: CC-BY-4.0 --- # SMS API providers for Australia > **Which SMS API provider should I use to send text messages to Australian mobile numbers?** > > ClickSend, Cellcast, SMS Broadcast, SMSGlobal and Twilio issue an API key at signup; SMS Broadcast and Cellcast are cheapest, Telstra the only direct carrier. ## At a glance | | | | --- | --- | | Canonical | https://toolweight.com/compare/sms-api-providers-australia | | Tools compared | 13 | | Fields compared | 26 | | Last verified | 2026-11-07 (7d ago), newest single value | | Verification | 36 of 338 values have a verification date, checked between 2026-07-20 and 2026-11-07 (median 2026-11-07), 10 due for re-check. | | Dataset | 0738be72, published 2026-11-14 | | Verify cadence | 30d | | Evidence strength | 26% (mean cell confidence, not age) | | Killer field | self_serve_api_key | | Scoring | Weighted, re-rankable | | Licence | CC-BY-4.0, https://creativecommons.org/licenses/by/4.0/ | ## Ranking, default weights | # | Tool | Score | Coverage | One-liner | | --- | --- | --- | --- | --- | | 1 | [SMSGlobal](https://toolweight.com/tools/smsglobal) | 79.3 | 92% | Melbourne-based provider offering both REST and a direct SMPP bind for high throughput. | | 2 | [Kudosity](https://toolweight.com/tools/kudosity) | 76.8 | 88% | Burst SMS rebuilt as a customer-engagement platform, with the original API still underneath. | | 3 | [Cellcast](https://toolweight.com/tools/cellcast) | 74.9 | 88% | Australian-owned SMS provider competing mainly on published per-message price. | | 4 | [Sinch](https://toolweight.com/tools/sinch) | 71.9 | 75% | Global tier-one aggregator that owns MessageMedia and sells Australia through both brands. | | 5 | [ClickSend](https://toolweight.com/tools/clicksend) | 70.0 | 96% | Perth-based multichannel API with a public rate table and no sales gate. | | 6 | [Twilio](https://toolweight.com/tools/twilio) | 64.6 | 96% | The default global messaging API, with the best docs and Australia's least competitive rates. | | 7 | [Telstra Messaging API](https://toolweight.com/tools/telstra-messaging) | 63.7 | 75% | The only provider on this list that owns the Australian network your message lands on. | | 8 | [SMS Broadcast](https://toolweight.com/tools/sms-broadcast) | 63.2 | 92% | The cheapest credible Australian bulk SMS API, with a deliberately minimal interface. | | 9 | [MessageMedia](https://toolweight.com/tools/messagemedia) | 61.4 | 75% | Long-established Australian A2P provider, now inside Sinch, sold through a sales team. | | 10 | [AWS End User Messaging](https://toolweight.com/tools/aws-end-user-messaging) | 60.2 | 92% | SMS as an AWS primitive: no vendor relationship, but registration is a support ticket. | | 11 | [Vonage](https://toolweight.com/tools/vonage) | 57.8 | 92% | Ericsson-owned CPaaS with clean self-serve access and no Australian entity story. | | 12 | [Bird](https://toolweight.com/tools/bird) | 56.4 | 79% | MessageBird rebuilt as a CRM-first platform; SMS is now a channel inside it. | | 13 | [Esendex AU](https://toolweight.com/tools/esendex) | 55.4 | 83% | Commify's Australian business messaging arm, sold through account management. | Re-rank against your own priorities by appending `?w=field_id:weight,…` to the canonical URL, or call `score_tools` on the MCP server at `https://toolweight.com/mcp`. ## Comparison ### Pricing | Tool | Price /SMS @ 1k (/SMS) | Price /SMS @ 10k (/SMS) | Price /SMS @ 100k (/SMS) | Dedicated number (/mo) | Min top-up | Billing model | | --- | --- | --- | --- | --- | --- | --- | | SMSGlobal | A$0.05/SMS | A$0.042/SMS | A$0.03/SMS | - | A$5 | prepay-self-serve | | Kudosity | A$0.055/SMS | A$0.045/SMS | A$0.032/SMS | - | - | prepay-self-serve | | Cellcast | A$0.037/SMS | A$0.042/SMS | A$0.028/SMS | A$18/mo | - | prepay-self-serve | | Sinch | - | - | - | - | - | prepay-then-invoice | | ClickSend | A$0.072/SMS | A$0.067/SMS | A$0.062/SMS | A$19/mo | A$20 | prepay-self-serve | | Twilio | A$0.08/SMS | A$0.08/SMS | A$0.075/SMS | A$6/mo | A$30 | prepay-self-serve | | Telstra Messaging API | - | - | - | - | - | contract-required | | SMS Broadcast | A$0.038/SMS | A$0.032/SMS | A$0.024/SMS | A$14.92/mo | - | prepay-self-serve | | MessageMedia | - | - | - | - | - | contract-required | | AWS End User Messaging | A$0.07/SMS | A$0.07/SMS | A$0.07/SMS | A$22/mo | - | postpaid-self-serve | | Vonage | A$0.08/SMS | A$0.08/SMS | A$0.075/SMS | A$5/mo | - | prepay-self-serve | | Bird | A$0.075/SMS | - | - | - | - | contract-required | | Esendex AU | A$0.062/SMS | A$0.0542/SMS | - | - | - | contract-required | ### Features | Tool | Self-serve API key | Alphanumeric sender | Two-way messaging | MMS to AU | RCS | Delivery receipts | Unicode billing doc | API style | SDK languages | Public status page | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | SMSGlobal | ● | ● | ● | ◐ | ◐ | ● | ● | rest-json-plus-smpp | node, php, python, java, dotnet | ● | | Kudosity | ● | ● | ● | ● | ◐ | ● | ● | rest-json | node, php, python | ● | | Cellcast | ● | ● | ● | ● | ◐ | ● | ◐ | rest-json | curl-only | ● | | Sinch | ◐ | ● | ● | ● | ● | ● | ● | rest-json-plus-smpp | node, python, php, java, dotnet | ● | | ClickSend | ● | ● | ● | ● | ○ | ● | ● | rest-json | node, python, php, ruby, java, dotnet, go | ● | | Twilio | ● | ● | ● | ○ | ◐ | ● | ● | rest-form | node, python, php, ruby, java, dotnet, go | ● | | Telstra Messaging API | ◐ | ● | ● | ● | ◐ | ● | ◐ | rest-json | node, python | ◐ | | SMS Broadcast | ● | ● | ● | ○ | ○ | ◐ | ◐ | rest-form | curl-only | ○ | | MessageMedia | ○ | ● | ● | ● | ◐ | ● | ◐ | rest-json | node, python, php, ruby, java, dotnet | ● | | AWS End User Messaging | ◐ | ◐ | ◐ | ○ | ○ | ● | ● | rest-json | node, python, php, ruby, java, dotnet, go | ● | | Vonage | ● | ● | ● | ○ | ◐ | ● | ● | rest-json | node, python, php, ruby, java, dotnet | ● | | Bird | ◐ | ● | ● | ● | ● | ● | ◐ | rest-json | node, python, php, java, go | ● | | Esendex AU | ○ | ● | ● | ◐ | ○ | ● | ◐ | rest-json | dotnet, php, java, ruby, node, go | ● | ### Australian compliance | Tool | AU legal entity | ACMA Sender ID | AU data residency | Opt-out built in | Carrier route | | --- | --- | --- | --- | --- | --- | | SMSGlobal | ● | - | ● | ● | hybrid-direct | | Kudosity | ● | - | ● | ● | hybrid-direct | | Cellcast | ● | - | ● | ● | hybrid-direct | | Sinch | ● | - | ◐ | ● | hybrid-direct | | ClickSend | ● | - | ◐ | ● | au-aggregator | | Twilio | ● | - | ◐ | ● | international-aggregator | | Telstra Messaging API | ● | - | ● | ◐ | direct-carrier | | SMS Broadcast | ● | - | ● | ◐ | au-aggregator | | MessageMedia | ● | - | ● | ● | hybrid-direct | | AWS End User Messaging | ● | - | ● | ● | international-aggregator | | Vonage | ◐ | - | ○ | ◐ | international-aggregator | | Bird | ◐ | - | ○ | ● | international-aggregator | | Esendex AU | ● | - | ◐ | ● | au-aggregator | ### Agentic | Tool | MCP server | Agent-ready docs | | --- | --- | --- | | SMSGlobal | ○ | 3 | | Kudosity | ○ | 3 | | Cellcast | ○ | 2 | | Sinch | ● | 4 | | ClickSend | ● | 4 | | Twilio | ● | 5 | | Telstra Messaging API | ○ | 3 | | SMS Broadcast | ○ | 3 | | MessageMedia | ○ | 3 | | AWS End User Messaging | ◐ | 4 | | Vonage | ● | 4 | | Bird | ● | 3 | | Esendex AU | ○ | 3 | ### Traction | Tool | Operating since | Ownership | | --- | --- | --- | | SMSGlobal | 1999 | independent-au | | Kudosity | 2009 | independent-au | | Cellcast | - | independent-au | | Sinch | 2008 | global-listed | | ClickSend | 2008 | independent-au | | Twilio | 2008 | global-listed | | Telstra Messaging API | 2015 | carrier | | SMS Broadcast | 2010 | independent-au | | MessageMedia | 2000 | acquired-au | | AWS End User Messaging | 2016 | hyperscaler | | Vonage | 2010 | global-listed | | Bird | 2011 | global-private | | Esendex AU | 2001 | global-private | ### Positioning | Tool | Positioning | | --- | --- | | SMSGlobal | The throughput option among the local independents. SMPP where everyone else offers only REST. | | Kudosity | A developer SMS API that grew into a campaign platform. Useful when marketing needs a UI too. | | Cellcast | Australian-owned price fighter. Local support, low rates, thin platform. | | Sinch | Tier-one global aggregator. Buy it when Australia is one country in a much larger programme. | | ClickSend | The self-serve Australian generalist. SMS, MMS, voice, email and physical mail on one credit balance. | | Twilio | The safe global default. You pay a premium for docs, ecosystem and the fact that nobody gets fired for it. | | Telstra Messaging API | The carrier selling its own network directly. Unmatched routing position, carrier-shaped commercials. | | SMS Broadcast | Cheap, narrow and honest about it. One endpoint, one job, published price. | | MessageMedia | The incumbent enterprise choice. Sells carrier relationships and compliance posture, not an endpoint. | | AWS End User Messaging | The baseline. No new vendor, no new invoice, no product beyond the API. | | Vonage | Twilio's most direct substitute, without the ecosystem or the Australian entity. | | Bird | A CRM platform that happens to send SMS. The API is no longer the product. | | Esendex AU | Managed business messaging for mid-market Australia. Account-managed by design. | ## Field registry | Field | id | Group | Type | Unit | Better | Default weight | Definition | | --- | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | `price_1k` | pricing | currency | /SMS | lower | 7 | List price in AUD for one outbound SMS segment to an Australian mobile at roughly 1,000 messages/month. Null where the provider publishes no public rate. | | Price /SMS @ 10k | `price_10k` | pricing | currency | /SMS | lower | 9 | List price in AUD per outbound SMS segment to an Australian mobile at roughly 10,000 messages/month, the tier most SaaS products actually sit at. | | Price /SMS @ 100k | `price_100k` | pricing | currency | /SMS | lower | 7 | List price in AUD per outbound SMS segment at roughly 100,000 messages/month. Negotiated rates are usually lower; only published rates are recorded here. | | Dedicated number | `dedicated_number_cost` | pricing | currency | /mo | lower | 3 | Monthly rental in AUD for one dedicated Australian virtual mobile number, which two-way messaging requires. Excludes per-message inbound charges. | | Min top-up | `min_topup` | pricing | currency | - | lower | 3 | Smallest amount in AUD that can be put on the account to start sending. Null where no public minimum is stated or where billing is invoice-only. | | Billing model | `billing_model` | pricing | enum | - | higher | 6 | How you pay to get started. prepay-self-serve means card and credit balance with no commitment; contract-required means a signed agreement precedes any production traffic. | | Self-serve API key | `self_serve_api_key` | features | tristate | - | higher | 10 | From a cold signup with a card, can you obtain working credentials and deliver a message to a real Australian handset without speaking to a human? partial means credentials are self-serve but a manual approval or registration step gates production. | | Alphanumeric sender | `alpha_sender_id` | features | tristate | - | higher | 6 | Can a custom alphanumeric sender ID (a brand name) be set on outbound Australian traffic through the API? partial means supported only after a manual registration step. | | Two-way messaging | `two_way` | features | tristate | - | higher | 5 | Inbound replies delivered to a webhook against a dedicated Australian number, without additional platform products. partial means it works but requires plumbing you assemble yourself. | | MMS to AU | `mms` | features | tristate | - | higher | 3 | Can an MMS with an image attachment be sent to an Australian mobile through the API? Several global providers support MMS only in North America. | | RCS | `rcs` | features | tristate | - | higher | 2 | RCS Business Messaging to Australian handsets, generally available rather than waitlisted. partial means announced or in limited release. | | Delivery receipts | `delivery_receipts` | features | tristate | - | higher | 6 | Handset-level delivery receipts pushed to a webhook, distinguishing 'delivered to device' from 'accepted by carrier'. partial means only submission-level status is exposed. | | Unicode billing doc | `unicode_billing_doc` | features | tristate | - | higher | 4 | Does public documentation state, before signup, how GSM-7 versus UCS-2 encoding and concatenated segments are counted and charged? partial means mentioned but without worked numbers. | | API style | `api_style` | features | enum | - | higher | 3 | Primary send interface. rest-json is a JSON body; rest-form is form-encoded or query-string parameters; rest-json-plus-smpp means a direct SMPP bind is also offered for sustained throughput. | | SDK languages | `sdk_languages` | features | multi-enum | - | higher | 3 | First-party, vendor-maintained SDKs. curl-only means no maintained client library, you write the HTTP call yourself, which for a two-parameter API is often fine. | | Public status page | `status_page` | features | tristate | - | higher | 4 | A publicly reachable status page with incident history readable without an account. partial means status is published but only inside the customer portal or as generic network status. | | AU legal entity | `au_legal_entity` | compliance | tristate | - | higher | 6 | Does the contracting and invoicing entity have an Australian company registration, so invoices carry GST and the agreement sits under Australian law? partial means an AU presence exists but billing is offshore. | | ACMA Sender ID | `acma_sender_id` | compliance | tristate | - | higher | 4 | Whether the provider supports registering your sender IDs under Australia's SMS Sender ID Register regime. PENDING VERIFICATION, the regime changed recently and vendor documentation lags the regulator, so every cell here is deliberately unknown. Confirm with ACMA directly; do not use this for compliance decisions. | | AU data residency | `au_data_residency` | compliance | tristate | - | higher | 6 | Can message content and recipient numbers be pinned to Australian infrastructure? partial means an Australian region exists for some subsystems but not the whole pipeline, or residency is contractual rather than architectural. | | Opt-out built in | `optout_handling` | compliance | tristate | - | higher | 6 | Platform-side STOP keyword interception plus a managed suppression list that blocks subsequent sends automatically. partial means STOP replies are forwarded but suppression is your responsibility. | | Carrier route | `carrier_route` | compliance | enum | - | higher | 7 | How traffic reaches Telstra, Optus and TPG. direct-carrier means the provider is the network. hybrid-direct means claimed direct interconnect with at least one Australian carrier. These classifications read vendor claims and are not independently verifiable. | | MCP server | `mcp_server` | agentic | tristate | - | higher | 2 | A first-party Model Context Protocol server letting a coding agent send messages and read logs. partial means covered by broader vendor tooling rather than a dedicated messaging server. | | Agent-ready docs | `agent_ready_docs` | agentic | score | - | higher | 4 | 1-5, how far an LLM coding agent gets from documentation alone. 5 = correct auth, send and webhook handler first try. 4 = works with minor fixes. 3 = correct send, webhook needs a human. 2 = docs incomplete or PDF-bound. 1 = requires portal screenshots or support contact. | | Operating since | `operating_since` | traction | number | - | lower | 2 | Year the company began sending commercial SMS traffic, not the year of the current brand. Earlier implies longer carrier relationships, so lower is better here. | | Ownership | `ownership` | traction | enum | - | n/a | 0 | Who owns the product, because it predicts pricing behaviour and roadmap continuity. Not scored, there is no objectively better answer. | | Positioning | `positioning` | marketing | text | - | n/a | 0 | How the vendor positions itself in the Australian market, described in Toolweight's words rather than theirs. | ## Presets | Preset | id | What it optimises for | Weights | Ranked URL | | --- | --- | --- | --- | --- | | Cheapest per message | `cheapest` | Weighted almost entirely on published AUD rates at 10k and 100k/mo. Providers that refuse to publish score nothing here. | price_1k:6, price_10k:10, price_100k:9, min_topup:3, billing_model:4, dedicated_number_cost:2, self_serve_api_key:3, carrier_route:1, delivery_receipts:1 | https://toolweight.com/compare/sms-api-providers-australia?w=price_1k:6,price_10k:10,price_100k:9,min_topup:3,billing_model:4,dedicated_number_cost:2,self_serve_api_key:3,carrier_route:1,delivery_receipts:1 | | Best deliverability | `deliverability` | Carrier proximity, handset-level receipts and Australian operating history over price. | carrier_route:10, delivery_receipts:8, au_legal_entity:6, alpha_sender_id:6, operating_since:4, two_way:3, status_page:5, price_10k:2 | https://toolweight.com/compare/sms-api-providers-australia?w=carrier_route:10,delivery_receipts:8,au_legal_entity:6,alpha_sender_id:6,operating_since:4,two_way:3,status_page:5,price_10k:2 | | No sales call required | `no-sales-call` | The killer field, plus everything else that keeps a human out of your integration path. | self_serve_api_key:10, billing_model:8, price_10k:5, unicode_billing_doc:6, agent_ready_docs:7, sdk_languages:4, min_topup:4, api_style:3, mcp_server:2 | https://toolweight.com/compare/sms-api-providers-australia?w=self_serve_api_key:10,billing_model:8,price_10k:5,unicode_billing_doc:6,agent_ready_docs:7,sdk_languages:4,min_topup:4,api_style:3,mcp_server:2 | | Enterprise / compliance | `enterprise` | Australian legal entity, data residency, opt-out handling and carrier route. Price is nearly irrelevant. | au_legal_entity:9, au_data_residency:9, optout_handling:8, carrier_route:8, status_page:6, delivery_receipts:5, acma_sender_id:4, operating_since:3, price_100k:2 | https://toolweight.com/compare/sms-api-providers-australia?w=au_legal_entity:9,au_data_residency:9,optout_handling:8,carrier_route:8,status_page:6,delivery_receipts:5,acma_sender_id:4,operating_since:3,price_100k:2 | ## Verdict - Australian SMS is genuinely fragmented, not a commodity market. - Three differences from the US or EU below. - Alphanumeric sender IDs are permitted and widely used. - Per-message wholesale rates run three to eight times higher. - Roughly half the credible vendors gate sending behind a sales call. - Optimise for self-serve access first; it decides whether you ship this week. - To send inside an hour: ClickSend, SMS Broadcast, SMSGlobal, Cellcast, Kudosity. - All take a card, hand you a key, and publish a readable rate table. - Twilio does too, with the best docs in the category. - But Twilio's AU list price is roughly double the local resellers'. - Twilio does no MMS to Australian handsets. - Twilio's volume discounts are only reachable through sales. - MessageMedia, Esendex and Bird are enterprise-motion businesses. - MessageMedia has strong AU carrier relationships and a long compliance record. - None publish per-message pricing; all route new accounts through a human. - Choose them when buying a relationship, escalation paths, an account manager, an SLA. - Telstra is the only provider that owns the network your message lands on. - That removes a whole class of aggregator-reroute delivery failure. - The trade: commercial terms behave like a carrier, not a dev platform. - The dev portal sends test messages; production is a Telstra account conversation. - RCS is the live question: carriers support it, every vendor markets it. - Little RCS is generally available; per-message pricing is almost always quote-only. - Fallback-to-SMS billing is where the surprises will be. - Do not pick a provider on its 2026 RCS roadmap. - Pick on price, self-serve access and carrier route; revisit RCS later. ## Where the money actually goes - The headline per-message rate is the smallest of three costs. - Hidden cost one: segmentation, where a non-GSM character more than doubles the effective rate. - Hidden cost two: the dedicated virtual number. - Two-way messaging needs one; an alphanumeric sender cannot reply. - Number rental runs typically five to fifteen dollars per number per month. - It sometimes carries a setup fee and is almost never in the per-message quote. - Hidden cost three: the shape of the commitment. - Prepaid credit (ClickSend, SMS Broadcast, SMSGlobal, Cellcast, Kudosity) is pleasant until expiry terms surface. - Or until the good rate requires buying 100,000 messages upfront. - Postpaid and contract models give better unit economics but commit spend before you know volume. - For an unlaunched product, prepay at a worse rate; walking away is worth more than two cents. - Market-specific trap: "from" pricing only holds on domestic traffic, domestic account, registered sender. - Test with the real content, sender ID and recipient mix before committing. - International and roaming numbers bill at a different rate, with no dashboard warning. ## Choosing without a sales call - First, decide whether two-way is needed. - If it is, a dedicated number is required and the per-message maths changes. - If it is not, an alphanumeric sender is cheaper, faster and recognisable to recipients. - Second, decide whether AU data residency is a hard requirement. - It usually is for health, government and most financial services work. - That eliminates Bird and Vonage outright and puts Sinch and Esendex into "ask them" territory. - Third, get to a sent message; this is where the killer field earns its keep. - Sign up to two providers, not one, and send a real message to a real handset on each. - Twenty minutes teaches more than a week of comparing rate tables. - Check whether receipts arrive at the webhook and how long they take. - Check whether the receipt distinguishes "accepted by carrier" from "delivered to handset". - Check whether sandbox behaviour matches production. - ClickSend and SMS Broadcast are the fastest through this loop; Twilio the most pleasant. - Fourth, and only then, negotiate. - With live volume data, the enterprise providers become worth talking to. - You negotiate from a position where a working alternative already exists. - Procurement first, integration second, is how teams end up in a contract nobody has called. ## Migration and lock-in - SMS is the least locked-in category in this set; exploit that. - The core operation is a POST with destination, body and sender, plus a status webhook. - Wrap that in a two-method interface on day one. - Switching providers then becomes a config change, not a project. - The genuine switching costs are elsewhere. - A dedicated virtual number is portable in principle, painful in practice. - Porting between aggregators takes weeks and both parties must cooperate. - The opt-out list lives in the provider's suppression store unless mirrored locally. - Re-messaging someone who opted out is a compliance incident, not an inconvenience. - Export the opt-out list on a schedule. - Delivery-receipt history is almost never exportable in bulk. - Land those events in your own store as they arrive. - The one thing hard to replicate is reputation on a sender ID. - A sender pushing clean traffic for two years earns favourable carrier-side filtering. - A new provider starts that clock again. - Plan an overlap period with both providers live and traffic shifted gradually. - Avoid a single cutover release that discovers the problem in production. ## Per-tool provenance, every cell, every source ### SMSGlobal {#smsglobal} Melbourne-based provider offering both REST and a direct SMPP bind for high throughput. | | | | --- | --- | | Site | https://www.smsglobal.com/ | | Docs | https://www.smsglobal.com/rest-api/ | | Company | SMSGlobal Pty Ltd | | Founded | 1999 | | Profile | https://toolweight.com/tools/smsglobal | | Score (default weights) | 79.3 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.05/SMS | Inferred | - | - | Approximate published rate. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--price_1k | | Price /SMS @ 10k | A$0.042/SMS | Inferred | - | - | Approximate. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--price_10k | | Price /SMS @ 100k | A$0.03/SMS | Inferred | - | - | Approximate; negotiated volume terms go lower. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--dedicated_number_cost | | Min top-up | A$5 | Vendor-claimed | 2026-11-07 | https://www.smsglobal.com/faqs/ | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--billing_model | | Self-serve API key | ● | Inferred | - | - | Free trial account issues API credentials without sales contact; SMPP binds are provisioned on request. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--two_way | | MMS to AU | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--mms | | RCS | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--delivery_receipts | | Unicode billing doc | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--unicode_billing_doc | | API style | rest-json-plus-smpp | Inferred | - | - | REST for ordinary use, direct SMPP bind for sustained throughput. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--api_style | | SDK languages | node, php, python, java, dotnet | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--status_page | | AU legal entity | ● | Inferred | - | - | Melbourne-headquartered and Australian registered. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--acma_sender_id | | AU data residency | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--optout_handling | | Carrier route | hybrid-direct | Inferred | - | - | Claims direct Australian carrier connectivity; not independently verifiable. | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--agent_ready_docs | | Operating since | 1999 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--operating_since | | Ownership | independent-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--ownership | | Positioning | The throughput option among the local independents. SMPP where everyone else offers only REST. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#smsglobal--positioning | **Verdict.** The only self-serve Australian provider with a direct SMPP bind; otherwise mid-pack on REST and pricing. **Pick it when** - Sustained high-throughput sending where REST rate limits bite - Australian entity plus published pricing plus SMPP in one vendor - Teams migrating off a legacy SMPP integration ### Kudosity {#kudosity} Burst SMS rebuilt as a customer-engagement platform, with the original API still underneath. | | | | --- | --- | | Site | https://kudosity.com/ | | Docs | https://developer.transmitsms.com/ | | Company | Kudosity (formerly Burst SMS) | | Founded | 2009 | | Profile | https://toolweight.com/tools/kudosity | | Score (default weights) | 76.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.055/SMS | Inferred | - | - | Approximate published rate. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--price_1k | | Price /SMS @ 10k | A$0.045/SMS | Inferred | - | - | Approximate. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--price_10k | | Price /SMS @ 100k | A$0.032/SMS | Inferred | - | - | Approximate; volume terms negotiable. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--price_100k | | Dedicated number | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--billing_model | | Self-serve API key | ● | Inferred | - | - | Trial account with API access; the original Burst SMS developer API remains the integration path. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--mms | | RCS | ◐ | Vendor-claimed | 2026-11-07 | https://kudosity.com/au/products/messaging/rcs | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--delivery_receipts | | Unicode billing doc | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--api_style | | SDK languages | node, php, python | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--status_page | | AU legal entity | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--au_legal_entity | | ACMA Sender ID | - | Unknown | 2026-11-07 | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--acma_sender_id | | AU data residency | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--au_data_residency | | Opt-out built in | ● | Inferred | - | - | Managed opt-out list is a core platform feature. | https://toolweight.com/compare/sms-api-providers-australia#kudosity--optout_handling | | Carrier route | hybrid-direct | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--agent_ready_docs | | Operating since | 2009 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--operating_since | | Ownership | independent-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--ownership | | Positioning | A developer SMS API that grew into a campaign platform. Useful when marketing needs a UI too. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#kudosity--positioning | **Verdict.** The transactional API is intact and self-serve; pick it when one account serves both app and campaigns. **Pick it when** - Products where marketing and engineering share a sending account - Teams wanting opt-out and list management handled by the platform - Long-running Burst SMS integrations that do not need to move ### Cellcast {#cellcast} Australian-owned SMS provider competing mainly on published per-message price. | | | | --- | --- | | Site | https://www.cellcast.com.au/ | | Company | Cellcast Pty Ltd | | Profile | https://toolweight.com/tools/cellcast | | Score (default weights) | 74.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.037/SMS | Vendor-claimed | 2026-11-07 | https://www.cellcast.com/pricing | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--price_1k | | Price /SMS @ 10k | A$0.042/SMS | Inferred | - | - | Approximate. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--price_10k | | Price /SMS @ 100k | A$0.028/SMS | Vendor-claimed | 2026-11-06 | https://www.cellcast.com/pricing | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--price_100k | | Dedicated number | A$18/mo | Vendor-claimed | 2026-11-07 | https://www.cellcast.com/us/legal/frequently-asked-questions | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--min_topup | | Billing model | prepay-self-serve | Vendor-claimed | 2026-11-06 | https://www.cellcast.com/pricing | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--billing_model | | Self-serve API key | ● | Inferred | - | - | Self-serve signup with API credentials in the dashboard; no approval gate observed for standard AU traffic. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--mms | | RCS | ◐ | Inferred | - | - | Marketed; availability unclear. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--api_style | | SDK languages | curl-only | Inferred | - | - | No substantial first-party SDK set; the API is simple enough that this rarely matters. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--sdk_languages | | Public status page | ● | Vendor-claimed | 2026-11-07 | https://status.cellcast.com | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--status_page | | AU legal entity | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--acma_sender_id | | AU data residency | ● | Inferred | - | - | Australian-owned and Australian-hosted per vendor positioning. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--optout_handling | | Carrier route | hybrid-direct | Inferred | - | - | Claims direct AU carrier connectivity; unverified. | https://toolweight.com/compare/sms-api-providers-australia#cellcast--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--mcp_server | | Agent-ready docs | 2 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--agent_ready_docs | | Operating since | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--operating_since | | Ownership | independent-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--ownership | | Positioning | Australian-owned price fighter. Local support, low rates, thin platform. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#cellcast--positioning | **Verdict.** Among the cheapest published Australian rates with self-serve access, but thin docs slow the first integration. **Pick it when** - Cost-sensitive one-way notification traffic at moderate volume - Buyers who want an Australian-owned supplier without a procurement process - Teams comfortable writing the HTTP call themselves ### Sinch {#sinch} Global tier-one aggregator that owns MessageMedia and sells Australia through both brands. | | | | --- | --- | | Site | https://www.sinch.com/ | | Docs | https://developers.sinch.com/docs/sms/ | | Company | Sinch AB | | Founded | 2008 | | Profile | https://toolweight.com/tools/sinch | | Score (default weights) | 71.9 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | - | Unknown | 2026-11-07 | - | No public AU rate card; pricing surfaces after account setup. | https://toolweight.com/compare/sms-api-providers-australia#sinch--price_1k | | Price /SMS @ 10k | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--price_10k | | Price /SMS @ 100k | - | Unknown | 2026-11-07 | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--min_topup | | Billing model | prepay-then-invoice | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--billing_model | | Self-serve API key | ◐ | Inferred | - | - | Dashboard signup issues credentials, but AU sender configuration and volume pricing route through account management. | https://toolweight.com/compare/sms-api-providers-australia#sinch--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--mms | | RCS | ● | Inferred | - | - | Sinch is one of the more advanced RCS aggregators globally. | https://toolweight.com/compare/sms-api-providers-australia#sinch--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--delivery_receipts | | Unicode billing doc | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--unicode_billing_doc | | API style | rest-json-plus-smpp | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--api_style | | SDK languages | node, python, php, java, dotnet | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--status_page | | AU legal entity | ● | Inferred | - | - | Australian entity via the MessageMedia acquisition. | https://toolweight.com/compare/sms-api-providers-australia#sinch--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#sinch--acma_sender_id | | AU data residency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--optout_handling | | Carrier route | hybrid-direct | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--carrier_route | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://developers.sinch.com/docs/sms/api-reference/ | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--mcp_server | | Agent-ready docs | 4 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--agent_ready_docs | | Operating since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--operating_since | | Ownership | global-listed | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--ownership | | Positioning | Tier-one global aggregator. Buy it when Australia is one country in a much larger programme. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sinch--positioning | **Verdict.** Serious infrastructure with real Australian carrier depth, but awkward to evaluate for an Australia-only workload. **Pick it when** - Multi-country A2P programmes with Australia as one leg - Buyers who want RCS and SMS from the same aggregator - Organisations already on MessageMedia consolidating upward ### ClickSend {#clicksend} Perth-based multichannel API with a public rate table and no sales gate. | | | | --- | --- | | Site | https://www.clicksend.com/au/ | | Docs | https://developers.clicksend.com/ | | Company | ClickSend Pty Ltd | | Founded | 2008 | | Profile | https://toolweight.com/tools/clicksend | | Score (default weights) | 70.0 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.072/SMS | Vendor-claimed | 2026-11-06 | https://www.clicksend.com/au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--price_1k | | Price /SMS @ 10k | A$0.067/SMS | Inferred | 2026-11-06 | https://www.clicksend.com/au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--price_10k | | Price /SMS @ 100k | A$0.062/SMS | Inferred | 2026-11-06 | https://www.clicksend.com/au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--price_100k | | Dedicated number | A$19/mo | Vendor-claimed | 2026-11-06 | https://www.clicksend.com/au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--dedicated_number_cost | | Min top-up | A$20 | Vendor-claimed | 2026-11-06 | https://www.clicksend.com/au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--billing_model | | Self-serve API key | ● | Vendor-claimed | 2026-07-20 | https://developers.clicksend.com/docs/rest/v3/ | Signup, dashboard, API key, send. No approval step for standard AU traffic. | https://toolweight.com/compare/sms-api-providers-australia#clicksend--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--mms | | RCS | ○ | Vendor-claimed | 2026-11-07 | https://help.clicksend.com/en/articles/68247-rcs-at-clicksend | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--delivery_receipts | | Unicode billing doc | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--api_style | | SDK languages | node, python, php, ruby, java, dotnet, go | Vendor-claimed | 2026-07-20 | https://developers.clicksend.com/ | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--status_page | | AU legal entity | ● | Inferred | - | - | Perth-headquartered and Australian registered. | https://toolweight.com/compare/sms-api-providers-australia#clicksend--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#clicksend--acma_sender_id | | AU data residency | ◐ | Inferred | - | - | Australian company, but infrastructure is multi-region and residency is not clearly documented. | https://toolweight.com/compare/sms-api-providers-australia#clicksend--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--optout_handling | | Carrier route | au-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--carrier_route | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/clicksend/clicksend-mcp-server/main/README.md | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--mcp_server | | Agent-ready docs | 4 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--agent_ready_docs | | Operating since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--operating_since | | Ownership | independent-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--ownership | | Positioning | The self-serve Australian generalist. SMS, MMS, voice, email and physical mail on one credit balance. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#clicksend--positioning | **Verdict.** The best balance of Australian entity, published pricing, no sales call, and real multichannel breadth. **Pick it when** - Australian SaaS wanting one vendor for SMS, email and post - Teams that need a GST invoice and self-serve access in the same product - Anyone who wants to read the price before creating an account ### Twilio {#twilio} The default global messaging API, with the best docs and Australia's least competitive rates. | | | | --- | --- | | Site | https://www.twilio.com/en-us/messaging/channels/sms | | Docs | https://www.twilio.com/docs/messaging | | Company | Twilio Inc. | | Founded | 2008 | | Open source | No | | Profile | https://toolweight.com/tools/twilio | | Score (default weights) | 64.6 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.08/SMS | Inferred | 2026-07-20 | https://www.twilio.com/en-us/sms/pricing/au | Approximate. Twilio publishes a single AU outbound rate around eight cents per segment, with no public volume tiering. | https://toolweight.com/compare/sms-api-providers-australia#twilio--price_1k | | Price /SMS @ 10k | A$0.08/SMS | Inferred | - | - | Same list rate as the 1k tier, Twilio's AU volume discounts are negotiated, not published. | https://toolweight.com/compare/sms-api-providers-australia#twilio--price_10k | | Price /SMS @ 100k | A$0.075/SMS | Inferred | - | - | Approximate. Real 100k rates are negotiated and materially lower; the published rate barely moves. | https://toolweight.com/compare/sms-api-providers-australia#twilio--price_100k | | Dedicated number | A$6/mo | Inferred | - | - | Approximate AUD equivalent of Twilio's AU mobile number rental. | https://toolweight.com/compare/sms-api-providers-australia#twilio--dedicated_number_cost | | Min top-up | A$30 | Inferred | - | - | Approximate AUD equivalent of Twilio's USD minimum balance top-up. | https://toolweight.com/compare/sms-api-providers-australia#twilio--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--billing_model | | Self-serve API key | ● | Vendor-claimed | 2026-07-20 | https://www.twilio.com/docs/messaging/quickstart | Trial accounts send immediately to verified numbers; lifting the restriction is a card, not a call. | https://toolweight.com/compare/sms-api-providers-australia#twilio--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--two_way | | MMS to AU | ○ | Inferred | - | - | Twilio MMS is a North America feature; AU MMS is not offered. | https://toolweight.com/compare/sms-api-providers-australia#twilio--mms | | RCS | ◐ | Inferred | - | - | RCS has shipped, but AU availability is not clearly documented. | https://toolweight.com/compare/sms-api-providers-australia#twilio--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--delivery_receipts | | Unicode billing doc | ● | Vendor-claimed | 2026-07-20 | https://www.twilio.com/docs/glossary/what-sms-character-limit | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--unicode_billing_doc | | API style | rest-form | Inferred | - | - | Twilio's messaging API takes form-encoded parameters, not a JSON body. | https://toolweight.com/compare/sms-api-providers-australia#twilio--api_style | | SDK languages | node, python, php, ruby, java, dotnet, go | Vendor-claimed | 2026-07-20 | https://www.twilio.com/docs/libraries | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--sdk_languages | | Public status page | ● | Vendor-claimed | 2026-07-20 | https://status.twilio.com/ | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--status_page | | AU legal entity | ● | Inferred | - | - | Twilio Australia Pty Ltd invoices with GST. | https://toolweight.com/compare/sms-api-providers-australia#twilio--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#twilio--acma_sender_id | | AU data residency | ◐ | Inferred | - | - | Twilio offers an AU region for messaging, but not every subsystem is region-pinned. | https://toolweight.com/compare/sms-api-providers-australia#twilio--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--optout_handling | | Carrier route | international-aggregator | Inferred | - | - | Twilio buys AU termination wholesale; no claimed direct AU interconnect. | https://toolweight.com/compare/sms-api-providers-australia#twilio--carrier_route | | MCP server | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--mcp_server | | Agent-ready docs | 5 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--agent_ready_docs | | Operating since | 2008 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--operating_since | | Ownership | global-listed | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--ownership | | Positioning | The safe global default. You pay a premium for docs, ecosystem and the fact that nobody gets fired for it. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#twilio--positioning | **Verdict.** Best developer experience in the category, worst Australian unit economics, and no MMS to Australian handsets. **Pick it when** - Prototypes and early products where shipping speed beats cents per message - Multi-country sending where Australia is one of many destinations - Teams already deep in Twilio for voice or verification ### Telstra Messaging API {#telstra-messaging} The only provider on this list that owns the Australian network your message lands on. | | | | --- | --- | | Site | https://dev.telstra.com/ | | Company | Telstra | | Profile | https://toolweight.com/tools/telstra-messaging | | Score (default weights) | 63.7 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | - | Unknown | - | - | Telstra does not publish per-message rates outside a commercial account. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--price_1k | | Price /SMS @ 10k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--price_10k | | Price /SMS @ 100k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--min_topup | | Billing model | contract-required | Inferred | - | - | The developer portal trial is free; production traffic sits on a Telstra commercial account. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--billing_model | | Self-serve API key | ◐ | Inferred | - | - | Dev-portal registration issues credentials and free trial messages, but production sending requires a Telstra account relationship. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--two_way | | MMS to AU | ● | Vendor-claimed | 2026-11-07 | https://raw.githubusercontent.com/telstra/MessagingAPI-SDK-python/master/README.md | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--mms | | RCS | ◐ | Inferred | - | - | Telstra is an RCS carrier; API-level availability is unclear. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--api_style | | SDK languages | node, python | Inferred | - | - | Limited first-party SDK coverage. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--sdk_languages | | Public status page | ◐ | Inferred | - | - | Telstra publishes network status rather than an API-specific incident feed. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--status_page | | AU legal entity | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--acma_sender_id | | AU data residency | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--au_data_residency | | Opt-out built in | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--optout_handling | | Carrier route | direct-carrier | Inferred | - | - | Telstra is the network. No aggregator sits between the API and delivery on Telstra mobiles. | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--agent_ready_docs | | Operating since | 2015 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--operating_since | | Ownership | carrier | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--ownership | | Positioning | The carrier selling its own network directly. Unmatched routing position, carrier-shaped commercials. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#telstra-messaging--positioning | **Verdict.** Strongest on routing, residency and compliance; weakest on everything a developer evaluates in the first hour. **Pick it when** - Government and regulated workloads where carrier-direct routing is a requirement - Organisations with an existing Telstra commercial account - Traffic that must demonstrably never leave Australian infrastructure ### SMS Broadcast {#sms-broadcast} The cheapest credible Australian bulk SMS API, with a deliberately minimal interface. | | | | --- | --- | | Site | https://www.smsbroadcast.com.au/ | | Company | SMS Broadcast Pty Ltd | | Profile | https://toolweight.com/tools/sms-broadcast | | Score (default weights) | 63.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.038/SMS | Inferred | - | - | Approximate. SMS Broadcast publishes an openly readable low-volume rate around this level. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--price_1k | | Price /SMS @ 10k | A$0.032/SMS | Inferred | - | - | Approximate. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--price_10k | | Price /SMS @ 100k | A$0.024/SMS | Inferred | - | - | Approximate; among the lowest published AU rates. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--price_100k | | Dedicated number | A$14.92/mo | Inferred | 2026-11-07 | https://smsbroadcast.com.au/pricing/ | Billed as a $179 annual lease (ex GST), shown here as a monthly equivalent. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--billing_model | | Self-serve API key | ● | Inferred | - | - | Account creation, credit purchase, immediate API access. Credentials are the account username and password. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | Requires a dedicated number; the inbound path is a simple webhook. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--two_way | | MMS to AU | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--mms | | RCS | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--rcs | | Delivery receipts | ◐ | Inferred | - | - | Status callbacks exist, but handset-level confirmation granularity is not clearly documented. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--unicode_billing_doc | | API style | rest-form | Inferred | - | - | A single HTTP call with query-string parameters. No JSON envelope, no SDK. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--api_style | | SDK languages | curl-only | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--sdk_languages | | Public status page | ○ | Measured by Toolweight | 2026-11-07 | https://status.smsbroadcast.com.au/ | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--status_page | | AU legal entity | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--acma_sender_id | | AU data residency | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--au_data_residency | | Opt-out built in | ◐ | Inferred | - | - | STOP replies are forwarded; suppression is largely your responsibility. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--optout_handling | | Carrier route | au-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | Sparse docs, but the API is small enough that an agent usually gets it right anyway. | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--agent_ready_docs | | Operating since | 2010 | Inferred | 2026-11-07 | https://smsbroadcast.com.au/pricing/ | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--operating_since | | Ownership | independent-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--ownership | | Positioning | Cheap, narrow and honest about it. One endpoint, one job, published price. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#sms-broadcast--positioning | **Verdict.** The price leader with a one-call integration, trading away console, receipt detail and managed opt-out. **Pick it when** - High-volume one-way alerts where per-message cost dominates - Teams that would rather write the HTTP call than adopt an SDK - Backup or overflow routing behind a more featureful primary ### MessageMedia {#messagemedia} Long-established Australian A2P provider, now inside Sinch, sold through a sales team. | | | | --- | --- | | Site | https://messagemedia.com/au/ | | Docs | https://developers.messagemedia.com/ | | Company | Sinch (Message4U Pty Ltd) | | Founded | 2000 | | Profile | https://toolweight.com/tools/messagemedia | | Score (default weights) | 61.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | - | Unknown | - | - | No public rate card; pricing is quoted per account. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--price_1k | | Price /SMS @ 10k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--price_10k | | Price /SMS @ 100k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--dedicated_number_cost | | Min top-up | - | Unknown | - | - | Invoice-billed; no public minimum. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--min_topup | | Billing model | contract-required | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--billing_model | | Self-serve API key | ○ | Inferred | - | - | Onboarding runs through sales; developer sandbox access does not translate to production sending without an account manager. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--mms | | RCS | ◐ | Inferred | - | - | Available via the Sinch RCS stack; AU general availability unclear. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--api_style | | SDK languages | node, python, php, ruby, java, dotnet | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--status_page | | AU legal entity | ● | Inferred | - | - | Contracts through Message4U Pty Ltd, trading as MessageMedia. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--acma_sender_id | | AU data residency | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--optout_handling | | Carrier route | hybrid-direct | Inferred | - | - | Long-claimed direct connectivity to Australian tier-one carriers; not independently verifiable. | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--agent_ready_docs | | Operating since | 2000 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--operating_since | | Ownership | acquired-au | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--ownership | | Positioning | The incumbent enterprise choice. Sells carrier relationships and compliance posture, not an endpoint. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#messagemedia--positioning | **Verdict.** Strong Australian delivery and the longest local track record, locked behind a sales-first procurement process. **Pick it when** - Regulated organisations that need a named account manager and an escalation path - High-volume campaigns where a negotiated rate beats any published one - Buyers who value a 25-year Australian operating history over self-serve access ### AWS End User Messaging {#aws-end-user-messaging} SMS as an AWS primitive: no vendor relationship, but registration is a support ticket. | | | | --- | --- | | Site | https://aws.amazon.com/end-user-messaging/ | | Docs | https://docs.aws.amazon.com/sms-voice/ | | Company | Amazon Web Services | | Founded | 2016 | | Profile | https://toolweight.com/tools/aws-end-user-messaging | | Score (default weights) | 60.2 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.07/SMS | Inferred | 2026-07-20 | https://aws.amazon.com/end-user-messaging/pricing/ | Approximate AUD equivalent of AWS's published per-destination AU rate. AWS does not tier by volume. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--price_1k | | Price /SMS @ 10k | A$0.07/SMS | Inferred | - | - | Flat per-destination pricing; no volume tiering. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--price_10k | | Price /SMS @ 100k | A$0.07/SMS | Inferred | - | - | Flat rate. Enterprise discount programmes apply account-wide rather than per service. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--price_100k | | Dedicated number | A$22/mo | Vendor-claimed | 2026-11-07 | https://aws.amazon.com/end-user-messaging/pricing/ | AWS lists this in USD ($22/mo for an Australian long code, $0 setup); not converted to AUD. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--dedicated_number_cost | | Min top-up | - | Unknown | - | - | Billed on the AWS invoice; no separate balance. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--min_topup | | Billing model | postpaid-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--billing_model | | Self-serve API key | ◐ | Inferred | - | - | IAM credentials are instant, but sending to Australian numbers with a sender ID requires a registration request through AWS Support, a form and a wait, not a salesperson. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--self_serve_api_key | | Alphanumeric sender | ◐ | Inferred | - | - | Supported for Australia, but only after a support-ticket registration. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--alpha_sender_id | | Two-way messaging | ◐ | Inferred | - | - | Works, but the number, the SNS topic and the consumer are all yours to wire up. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--two_way | | MMS to AU | ○ | Inferred | - | - | AWS MMS is US-only. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--mms | | RCS | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--rcs | | Delivery receipts | ● | Inferred | - | - | Event destinations deliver status to SNS, Kinesis or CloudWatch. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--delivery_receipts | | Unicode billing doc | ● | Vendor-claimed | 2026-07-20 | https://docs.aws.amazon.com/sms-voice/latest/userguide/ | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--unicode_billing_doc | | API style | rest-json | Inferred | - | - | SigV4-signed API via the AWS SDKs. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--api_style | | SDK languages | node, python, php, ruby, java, dotnet, go | Vendor-claimed | 2026-07-20 | https://aws.amazon.com/developer/tools/ | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--status_page | | AU legal entity | ● | Inferred | - | - | Amazon Web Services Australia Pty Ltd invoices with GST. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--acma_sender_id | | AU data residency | ● | Inferred | - | - | Runs in ap-southeast-2 like any other AWS service. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--au_data_residency | | Opt-out built in | ● | Inferred | - | - | Managed opt-out lists are a first-class resource. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--optout_handling | | Carrier route | international-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--carrier_route | | MCP server | ◐ | Inferred | - | - | Covered by general-purpose AWS MCP tooling rather than a messaging-specific server. | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--mcp_server | | Agent-ready docs | 4 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--agent_ready_docs | | Operating since | 2016 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--operating_since | | Ownership | hyperscaler | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--ownership | | Positioning | The baseline. No new vendor, no new invoice, no product beyond the API. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#aws-end-user-messaging--positioning | **Verdict.** The cost floor if you are already on AWS, with no console, deliverability support or escalation path. **Pick it when** - Teams already running on AWS who want one invoice and one IAM model - Workloads where AU data residency in ap-southeast-2 is the deciding factor - Establishing a cost floor before negotiating with a dedicated provider ### Vonage {#vonage} Ericsson-owned CPaaS with clean self-serve access and no Australian entity story. | | | | --- | --- | | Site | https://www.vonage.com/communications-apis/sms/ | | Docs | https://developer.vonage.com/en/messaging/sms/overview | | Company | Vonage (Ericsson) | | Founded | 2010 | | Profile | https://toolweight.com/tools/vonage | | Score (default weights) | 57.8 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.08/SMS | Inferred | - | - | Approximate AUD equivalent of Vonage's published AU per-message rate. | https://toolweight.com/compare/sms-api-providers-australia#vonage--price_1k | | Price /SMS @ 10k | A$0.08/SMS | Inferred | - | - | No public volume tiering; discounts via sales. | https://toolweight.com/compare/sms-api-providers-australia#vonage--price_10k | | Price /SMS @ 100k | A$0.075/SMS | Inferred | - | - | Approximate; negotiated rates are lower. | https://toolweight.com/compare/sms-api-providers-australia#vonage--price_100k | | Dedicated number | A$5/mo | Inferred | - | - | Approximate AUD equivalent of AU number rental. | https://toolweight.com/compare/sms-api-providers-australia#vonage--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--min_topup | | Billing model | prepay-self-serve | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--billing_model | | Self-serve API key | ● | Inferred | - | - | Signup issues credentials and trial credit immediately. | https://toolweight.com/compare/sms-api-providers-australia#vonage--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--two_way | | MMS to AU | ○ | Inferred | - | - | Vonage MMS is North America only. | https://toolweight.com/compare/sms-api-providers-australia#vonage--mms | | RCS | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--delivery_receipts | | Unicode billing doc | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--api_style | | SDK languages | node, python, php, ruby, java, dotnet | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--status_page | | AU legal entity | ◐ | Inferred | - | - | Ericsson has an Australian presence, but CPaaS billing is not routinely from an Australian entity. | https://toolweight.com/compare/sms-api-providers-australia#vonage--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#vonage--acma_sender_id | | AU data residency | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--au_data_residency | | Opt-out built in | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--optout_handling | | Carrier route | international-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--carrier_route | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://developer.vonage.com/en/mcp-server/overview | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--mcp_server | | Agent-ready docs | 4 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--agent_ready_docs | | Operating since | 2010 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--operating_since | | Ownership | global-listed | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--ownership | | Positioning | Twilio's most direct substitute, without the ecosystem or the Australian entity. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#vonage--positioning | **Verdict.** Self-serve and priced like Twilio, without its docs or Australian entity; best as a failover route. **Pick it when** - Failover routing behind an Australian primary provider - Existing Nexmo integrations with no reason to move - Teams that want self-serve access and do not need AU residency ### Bird {#bird} MessageBird rebuilt as a CRM-first platform; SMS is now a channel inside it. | | | | --- | --- | | Site | https://bird.com/ | | Docs | https://docs.bird.com/ | | Company | Bird (formerly MessageBird) | | Founded | 2011 | | Profile | https://toolweight.com/tools/bird | | Score (default weights) | 56.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.075/SMS | Inferred | - | - | Approximate. Bird's pricing has moved toward platform contracts and public per-country rates are less reliable than they were. | https://toolweight.com/compare/sms-api-providers-australia#bird--price_1k | | Price /SMS @ 10k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--price_10k | | Price /SMS @ 100k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--min_topup | | Billing model | contract-required | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--billing_model | | Self-serve API key | ◐ | Inferred | - | - | Signup is self-serve, but the product funnels toward platform onboarding and volume sending is contract-gated. | https://toolweight.com/compare/sms-api-providers-australia#bird--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--two_way | | MMS to AU | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--mms | | RCS | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--api_style | | SDK languages | node, python, php, java, go | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--status_page | | AU legal entity | ◐ | Inferred | - | - | Netherlands-headquartered; an Australian contracting entity is not clearly established. | https://toolweight.com/compare/sms-api-providers-australia#bird--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#bird--acma_sender_id | | AU data residency | ○ | Inferred | - | - | Infrastructure story is European; no Australian residency position documented. | https://toolweight.com/compare/sms-api-providers-australia#bird--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--optout_handling | | Carrier route | international-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--carrier_route | | MCP server | ● | Vendor-claimed | 2026-11-07 | https://bird.com/en-us/docs/ai/mcp-server | - | https://toolweight.com/compare/sms-api-providers-australia#bird--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--agent_ready_docs | | Operating since | 2011 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--operating_since | | Ownership | global-private | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--ownership | | Positioning | A CRM platform that happens to send SMS. The API is no longer the product. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#bird--positioning | **Verdict.** Now a marketing platform with a European residency story; hard to recommend for a new Australian integration. **Pick it when** - Existing MessageBird integrations not yet worth migrating - Teams buying the CRM and campaign platform, with SMS included - Global channel coverage where Australia is incidental ### Esendex AU {#esendex} Commify's Australian business messaging arm, sold through account management. | | | | --- | --- | | Site | https://www.esendex.com.au/ | | Company | Commify | | Founded | 2001 | | Profile | https://toolweight.com/tools/esendex | | Score (default weights) | 55.4 / 100 | | Field | Value | Confidence | Verified | Source | Note | Permalink | | --- | --- | --- | --- | --- | --- | --- | | Price /SMS @ 1k | A$0.062/SMS | Inferred | 2026-11-07 | https://www.esendex.com.au/pricing | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--price_1k | | Price /SMS @ 10k | A$0.0542/SMS | Inferred | 2026-11-07 | https://www.esendex.com.au/pricing | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--price_10k | | Price /SMS @ 100k | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--price_100k | | Dedicated number | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--dedicated_number_cost | | Min top-up | - | Unknown | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--min_topup | | Billing model | contract-required | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--billing_model | | Self-serve API key | ○ | Inferred | - | - | The AU site funnels to a demo request; there is no path from cold signup to a sent message. | https://toolweight.com/compare/sms-api-providers-australia#esendex--self_serve_api_key | | Alphanumeric sender | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--alpha_sender_id | | Two-way messaging | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--two_way | | MMS to AU | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--mms | | RCS | ○ | Vendor-claimed | 2026-11-07 | https://www.esendex.com.au/messaging-api/rcs-api/ | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--rcs | | Delivery receipts | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--delivery_receipts | | Unicode billing doc | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--unicode_billing_doc | | API style | rest-json | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--api_style | | SDK languages | dotnet, php, java, ruby, node, go | Vendor-claimed | 2026-11-07 | https://developers.esendex.com/ | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--sdk_languages | | Public status page | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--status_page | | AU legal entity | ● | Inferred | - | - | Esendex operates an Australian entity within the Commify group. | https://toolweight.com/compare/sms-api-providers-australia#esendex--au_legal_entity | | ACMA Sender ID | - | Unknown | - | - | Deliberately unrecorded. Australia's SMS Sender ID Register obligations changed recently and vendor documentation lags the regulator. Pending verification against ACMA directly, do not rely on this for compliance. | https://toolweight.com/compare/sms-api-providers-australia#esendex--acma_sender_id | | AU data residency | ◐ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--au_data_residency | | Opt-out built in | ● | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--optout_handling | | Carrier route | au-aggregator | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--carrier_route | | MCP server | ○ | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--mcp_server | | Agent-ready docs | 3 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--agent_ready_docs | | Operating since | 2001 | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--operating_since | | Ownership | global-private | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--ownership | | Positioning | Managed business messaging for mid-market Australia. Account-managed by design. | Inferred | - | - | - | https://toolweight.com/compare/sms-api-providers-australia#esendex--positioning | **Verdict.** A real Australian operation with local support, but nothing is assessable without booking a call. **Pick it when** - Mid-market organisations that want a managed service rather than an API - Buyers who value local account management over self-serve access - Existing Commify customers consolidating channels ## Methodology - Prices are per outbound SMS segment to an AU mobile, in AUD. - Three monthly volumes: 1,000, 10,000 and 100,000 messages. - Where a provider publishes a public tier table, the figure is that list rate. - Where a provider quotes per account, the cell is null, not a guess. - MessageMedia, Telstra, Sinch and Esendex all quote per account. - Twilio and AWS publish a flat per-destination rate with no volume tiering. - Their three tiers are near-identical; discounts exist but require sales. - A segment is 160 GSM-7 characters or 70 UCS-2 characters. - A curly apostrophe, em dash or emoji forces UCS-2 for the whole message. - That roughly doubles your bill on anything over 70 characters. - Few vendors state this on the pricing page. - Killer field "self-serve API key": can you go cold-start to sent message, no human? - "Yes" means signup to sent message with no manual approval step. - "Partial" means credentials are self-serve but production is gated by a manual step. - Gating examples: a sender ID ticket, account activation, a trial locked to verified numbers. - "No" means a salesperson is in the critical path. - ACMA caveat: the SMS Sender ID Register regime changed recently and is in flux. - Every ACMA Sender ID cell is deliberately left unknown, not guessed. - Vendor pages lag the regulator by months; several are out of date. - This field is pending verification against ACMA; do not use it for compliance. ## FAQ ### Can I use an alphanumeric sender ID in Australia? - Yes. Unlike the US, AU carriers accept alphanumeric brand-name sender IDs. - Every provider on this roster supports them. - Catch: they are one-way, so recipients cannot reply. - STOP handling needs an appended link or separate number. - Registration rules are changing; check ACMA before relying on an unregistered ID. ### Why is SMS to Australia so much more expensive than to the US? - AU carriers charge aggregators a high per-message termination fee. - Only three networks exist to negotiate with. - No A2P workaround (short codes, toll-free) meaningfully undercuts it. - Expect roughly two to eight cents per segment, versus under a cent in the US. - Anyone quoting AU traffic at US-like rates is grey-routing it. ### Which Australian SMS providers let me start without talking to sales? - ClickSend, SMS Broadcast, SMSGlobal, Cellcast and Kudosity issue credentials at signup with published rates. - Twilio and Vonage do too. - AWS End User Messaging is instant but needs a support-ticket registration for AU sender IDs. - MessageMedia, Esendex and Bird put a person in the path. - Telstra requires a commercial account before production traffic flows. ### Does it matter whether a provider has direct carrier interconnect? - It matters for reliability more than for price. - Direct interconnect with Telstra, Optus or TPG means fewer intermediaries rerouting traffic. - That shows up as steadier delivery latency and more trustworthy receipts. - Telstra is the only true carrier here; everyone else is an aggregator. - Their direct-connectivity claims are not independently verifiable from outside. ### Do I need an Australian legal entity to send to Australian numbers? - No, but your provider's entity affects GST, contract enforceability and escalation speed. - AU-billed providers issue GST tax invoices and sit under Australian consumer law. - Those include ClickSend, SMSGlobal, Cellcast, MessageMedia, Telstra and Twilio Australia. - Offshore-billed providers do not, which finance teams discover at the wrong moment. ### How does unicode change what I pay per message? - A plain GSM-7 message fits 160 characters in one billable segment. - One character outside that alphabet switches the whole message to UCS-2. - Culprits: a pasted curly apostrophe, an emoji, an em dash. - UCS-2 fits only 70 characters per segment, so a 150-character message becomes three segments. - Sanitise templates server-side; most billing surprises start here. ### Is RCS worth waiting for in Australia? - Not for a decision being made now. - AU carriers support RCS and every vendor markets it, but availability is patchy. - Pricing is quote-only almost everywhere. - Billing when RCS falls back to SMS is rarely documented. - Build on SMS behind your own interface; revisit when a provider publishes an RCS rate card. ## Sources | Source | Last verified | | --- | --- | | https://www.twilio.com/en-us/sms/pricing/au | 2026-07-20 | | https://www.twilio.com/docs/messaging/quickstart | 2026-07-20 | | https://www.twilio.com/docs/glossary/what-sms-character-limit | 2026-07-20 | | https://www.twilio.com/docs/libraries | 2026-07-20 | | https://status.twilio.com/ | 2026-07-20 | | https://www.clicksend.com/au/pricing/ | 2026-11-06 | | https://developers.clicksend.com/docs/rest/v3/ | 2026-07-20 | | https://help.clicksend.com/en/articles/68247-rcs-at-clicksend | 2026-11-07 | | https://developers.clicksend.com/ | 2026-07-20 | | https://raw.githubusercontent.com/clicksend/clicksend-mcp-server/main/README.md | 2026-11-07 | | https://www.cellcast.com/pricing | 2026-11-07 | | https://www.cellcast.com/us/legal/frequently-asked-questions | 2026-11-07 | | https://status.cellcast.com | 2026-11-07 | | https://kudosity.com/au/products/messaging/rcs | 2026-11-07 | | https://smsbroadcast.com.au/pricing/ | 2026-11-07 | | https://status.smsbroadcast.com.au/ | 2026-11-07 | | https://www.smsglobal.com/faqs/ | 2026-11-07 | | https://raw.githubusercontent.com/telstra/MessagingAPI-SDK-python/master/README.md | 2026-11-07 | | https://developers.sinch.com/docs/sms/api-reference/ | 2026-11-07 | | https://bird.com/en-us/docs/ai/mcp-server | 2026-11-07 | | https://developer.vonage.com/en/mcp-server/overview | 2026-11-07 | | https://www.esendex.com.au/pricing | 2026-11-07 | | https://www.esendex.com.au/messaging-api/rcs-api/ | 2026-11-07 | | https://developers.esendex.com/ | 2026-11-07 | | https://aws.amazon.com/end-user-messaging/pricing/ | 2026-07-20 | | https://docs.aws.amazon.com/sms-voice/latest/userguide/ | 2026-07-20 | | https://aws.amazon.com/developer/tools/ | 2026-07-20 | ## Cite this page > ClickSend, Cellcast, SMS Broadcast, SMSGlobal and Twilio issue an API key at signup; SMS Broadcast and Cellcast are cheapest, Telstra the only direct carrier. > > — Toolweight, https://toolweight.com/compare/sms-api-providers-australia, verified 2026-11-07. Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. ## Related comparisons - [Email APIs](https://toolweight.com/compare/email-sending-apis), Which email sending API is best for developers? - [Domain registrars](https://toolweight.com/compare/domain-registrars), Which domain registrar is cheapest to renew with, and which ones make it hard to leave? - [S3-compatible storage](https://toolweight.com/compare/s3-compatible-storage), Which S3-compatible object storage provider is actually cheapest once egress is counted? ## Licence and attribution Data from Toolweight (https://toolweight.com), licensed CC-BY-4.0. - Licence: [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/) - Canonical HTML: https://toolweight.com/compare/sms-api-providers-australia - Machine-readable: https://toolweight.com/compare/sms-api-providers-australia.md · https://toolweight.com/api/v1 · https://toolweight.com/mcp - Toolweight takes no affiliate revenue and sells no placements.