GraphQL vs REST API: Measured Trade-Offs and When to Choose Each
Evidence-based comparison of GraphQL and REST: measured performance trade-offs, caching, and when each fits best.
If you are building a dashboard that pulls users, orders, products and reviews into one screen, GraphQL was designed for exactly that shape of problem; if you are exposing flat, stable resources to unknown third-party clients, REST still wins more often than the marketing suggests. The two are not interchangeable upgrades. They make different trade-offs between round-trips, caching, payload shape and server load, and the academic and industry evidence is more mixed than most advocates admit.
A peer-reviewed study by Seabra, Nazário and Pinto, reported by wundergraph.com, found that migrating from REST to GraphQL reduced latency in two of three tested applications, largely by cutting the number of network round-trips; under workloads above 3,000 requests, however, REST outperformed GraphQL. A later University of Washington Tacoma study by Jin, Cordingly, Zhao and Lloyd, also cited by wundergraph.com, evaluated a 10.9-million-row CMS dataset on AWS and reported 25–67% lower average latency for GraphQL on several data-intensive operations, while REST kept its edge at the highest concurrency levels. Elghazal, Aneiba and Shahra, presented at WEBIST 2025, saw REST respond roughly 3.7× faster in a Go-based microservices setup, but GraphQL moved dramatically less data overall, shrinking total volume from several gigabytes to a few hundred megabytes. Another test summarized by wundergraph.com found REST faster on raw response time and throughput, while GraphQL consumed about 37–40% less CPU and memory. The lesson is not that one is faster; it is that the winner depends on workload, implementation and whether you value latency, throughput or bandwidth.
REST's real strengths are mature, well-understood semantics and free HTTP-level caching. requestly.com points out that REST gets URL-based caching, ETags and CDN behavior for nothing, while GraphQL's single POST endpoint is opaque to that machinery unless you add persisted queries, normalized client caches or CDN tricks yourself. wundergraph.com adds that REST makes SDK generation easy in any language and every developer already knows how to call a REST endpoint, which matters for public APIs and partner integrations.
GraphQL's strengths are precise client-driven fetching and a strongly typed schema. requestly.com notes that GraphQL eliminates over-fetching and under-fetching by design, and vercel.com describes it as the better fit when a single client view needs relational data across multiple sources. wundergraph.com recommends GraphQL for relational data, multiple consumers with different needs, and cross-team composition, and suggests federation when an organization scales from one team to many.
Strengths
- GraphQL cuts round-trips and payload bloat for nested, screen-shaped data, which is why it was originally built for mobile clients, according to wundergraph.com.
- Its mandatory schema and introspection give consumers a discoverable, typed contract without relying on separate documentation.
- REST is simpler for flat CRUD resources and enjoys decades of tooling, OpenAPI client generation and out-of-the-box HTTP caching.
- REST's server-defined payloads are predictable for public APIs, mobile apps with strict versions, and partner integrations, as requestly.com observes.
Weaknesses
- GraphQL gives up HTTP status-code semantics and URL-based caching by default; servers often return 200 OK with an errors array, requestly.com warns, and caching must be built deliberately.
- GraphQL queries can become expensive if clients write deeply nested requests, so servers need cost guarding.
- REST often forces over-fetching or multiple round-trips for interconnected data, leading to bespoke batch endpoints that are hard to maintain.
- Performance results are implementation-sensitive: the 3.7× latency gap for REST in one microservices test is larger than other studies report, which wundergraph.com says signals strong sensitivity to setup.
Who it is for
Choose REST for resource-shaped, cache-heavy, broadly public APIs and flat CRUD. Choose GraphQL for complex, client-driven, multi-resource screens, especially when mobile bandwidth or many consumer shapes matter. wundergraph.com notes that many production teams end up running both: REST for the stable resource layer, GraphQL as a client-facing aggregation layer. requestly.com agrees that running both is a common, healthy answer.
People also search for
Discussion 0
Nothing has been said yet. Start it.
Log in to join the discussion