Stainless and Fern both treat SDKs and docs as a combined platform rather than two vendors, but they price and structure that platform differently. As of this check (2026-09-21), Stainless's free tier is itemized — up to 5 generators (any mix of SDK, docs site, or MCP server) and 25 endpoints — while Fern's is unbounded but capped at "free forever" with no metered ceiling published. Both then jump straight to a custom quote for anything bigger: Stainless's Starter/Pro/Enterprise tiers carry no public price, and Fern's Enterprise tier is the same. We're the maker of a competing OpenAPI-to-SDK-and-docs tool — verify the specifics below against each vendor's own docs before deciding.
Update, September 2026: Both vendors in this comparison changed ownership after it was first checked. Stainless was acquired by Anthropic in May 2026 and is winding down its hosted product, as covered elsewhere on this site. Fern's exit looks different: Postman acquired Fern on January 8, 2026, and its announcement states Fern's product, brand, and roadmap stay the same — Fern's pricing page still shows an active Free tier and a working signup flow, unlike Stainless, where new signups stopped the day its acquisition was announced. The language, pricing, and workflow comparison below still applies to both products as they run today. Between the two moves, Sourced is now one of the last two independent, vendor-neutral hosted SDK-and-docs platforms still standing.
SDK languages: 9 each, different sets
Per Stainless's own docs and homepage (checked 2026-09-21), it generates 9 languages: TypeScript, Python, Go, Java, Kotlin, Ruby, PHP, C#, and SQL — plus Terraform providers as a separate offering. Notably, Swift and Rust don't appear in Stainless's language list.
Per Fern's SDK quickstart docs, Fern also generates 9 production-ready languages: TypeScript, Python, Go, Java, .NET, PHP, Ruby, Swift, and Rust, with C++ and Kotlin available on request.
| Stainless | Fern | |
|---|---|---|
| SDK languages | 9: TypeScript, Python, Go, Java, Kotlin, Ruby, PHP, C#, SQL | 9: TypeScript, Python, Go, Java, .NET, PHP, Ruby, Swift, Rust |
| Non-SDK codegen | Terraform providers (separate offering) | Not published on pages checked |
| Overlap | TypeScript, Python, Go, Java, Ruby, PHP | Same six, plus Swift/Rust vs Kotlin/C#/SQL |
Both land on 9, but the sets diverge at the edges: pick Stainless if Kotlin or a SQL client matters to you, Fern if Swift or Rust does.
Free tier: itemized caps vs an unbounded floor
Stainless's pricing page states the Free tier plainly: $0, up to 5 generators, ≤25 endpoints included, 5 seats. A "generator" is any single SDK, docs site, or MCP server — so a team generating a TypeScript SDK, a Python SDK, and a docs site is already using 3 of 5 slots. Docs sites count toward that generator cap; they aren't excluded from it, but they also aren't included by default — you have to spend a generator slot on one. Starter, Pro, and Enterprise tiers are named on the same page with no price shown in the page text.
Fern's pricing page lists exactly two tiers: Free (free forever, no generator or endpoint cap published) and Enterprise (custom quote, "Book a demo"). The tradeoff is the inverse of Stainless's: Fern gives you an unmetered starting point but no visibility into what changes once you need Enterprise features, while Stainless gives you a countable ceiling (5 generators, 25 endpoints) you can plan around, then the same opacity above it.
Docs product: both ship one, structured differently
Stainless treats docs as one of the five generator slots on its free tier and, per the Studio quickstart, doesn't include hosted docs in its core SDK setup flow — the Stainless Docs Platform is a separate product you configure afterward, using a generator slot to do it.
Fern's docs product is a fully separate CLI flow from SDK generation: docs.yml configures branding, navigation, and versioning, and fern docs dev / fern generate --docs build and publish to a Fern-hosted URL or custom domain, with search, AI features, and analytics included, per Fern's docs quickstart. Neither vendor bundles docs into the same first run as the SDK — both require a second, explicit setup step.
CLI and Studio workflow: steps to a first SDK
Per Stainless's Studio quickstart: sign in and create an organization and project, provide an OpenAPI spec, let Stainless auto-draft a stainless.yml config with an LLM, wait for the build, use the Studio's spec preview/editor/diagnostics panes to adjust the config, then click "Save & build main branch" to push to staging and production repos — six steps to a reviewable SDK.
Per Fern's SDK quickstart: npm install -g fern-api, fern init --openapi path/to/openapi.yml, fern check, fern generate — four steps to a default TypeScript SDK, with other languages added via generators.yml entries.
| Stainless | Fern | |
|---|---|---|
| Steps to first SDK | 6 (Studio, LLM-drafted config, manual review) | 4 (local CLI, config file you write) |
| Config authoring | Auto-drafted, then reviewed in-browser | You write generators.yml directly |
| First-pass languages | 1 selected, others available | 1 (TypeScript) by default |
Stainless's extra steps buy you an LLM-drafted starting config and an in-browser review surface; Fern's shorter flow assumes you're comfortable editing a YAML file directly.
Pick Stainless if / pick Fern if
Pick Stainless if you want a countable free-tier ceiling (5 generators, 25 endpoints) to plan against, Kotlin or a generated SQL client is on your roadmap, and an LLM-assisted config draft with in-browser review fits your team's workflow better than hand-editing YAML.
Pick Fern if you want an uncapped free tier with no generator-counting math, Swift or Rust support matters, and a fast local CLI flow (four commands to a first SDK) beats a hosted Studio review step.
Honest scope: when neither free tier is the real constraint
For small APIs under 25 endpoints, Stainless's free tier and Fern's free-forever tier are both genuinely usable without a sales call — the free-tier comparison mostly matters once you cross that line, or once you need more than one or two generator slots simultaneously. If your API is already past 25 endpoints or you need SDKs, docs, and an MCP server all live at once, budget for a paid tier on either vendor before you commit engineering time to the free setup. See our full Fern alternatives post and Speakeasy vs Fern if a third vendor is also on your list.
FAQ
Does Stainless or Fern generate more languages?
Both generate 9, but different sets. Stainless covers TypeScript, Python, Go, Java, Kotlin, Ruby, PHP, C#, and SQL; Fern covers TypeScript, Python, Go, Java, .NET, PHP, Ruby, Swift, and Rust. Check which specific language you need before assuming either is "ahead."
Is Stainless's free tier or Fern's free tier more generous?
It depends on your API size. Stainless's free tier is capped at 5 generators and 25 endpoints but includes docs and MCP server slots. Fern's Free tier has no published generator or endpoint ceiling, but only covers SDK and docs generation, not MCP servers.
Do either Stainless or Fern publish paid-tier pricing?
No. Stainless lists Starter, Pro, and Enterprise tier names with no price shown; Fern lists only Free and Enterprise (custom quote). Get a quote from both before budgeting.
Which is faster to a first working SDK?
Fern's CLI flow is four commands to a default TypeScript SDK. Stainless's Studio flow is six steps, including an LLM-drafted config and an in-browser review pass, per each vendor's own quickstart docs.
Do I need a separate product for hosted docs with either vendor?
Yes for both, structurally. Stainless's Docs Platform uses one of your five free-tier generator slots and is set up after the SDK flow. Fern's docs run through a separate docs.yml and CLI flow (fern docs) from the SDK's generators.yml.
Is there a free option that includes docs and an SDK in one first run?
Yes — Sourced pairs hosted docs with a TypeScript and Python SDK preview (the two ecosystems Sourced covers today) from one OpenAPI upload, free, no credit card, no generator-counting math — the shortest path from OpenAPI spec to live docs and SDK previews of the tools here. It covers two languages against Stainless's and Fern's nine; see migrating from Stainless to Sourced if that tradeoff is worth exploring.
Try it yourself
Run your OpenAPI spec through the OpenAPI validator first, then create hosted docs from your repo or start free to see Sourced's single-run output next to whatever Stainless's Studio or Fern's CLI produces from the same spec.