gRPC uses HTTP/2 with binary Protobuf encoding — payloads are typically 3-10x smaller and faster to parse than JSON. The .proto file is the single source of truth for the API contract, eliminating documentation drift. gRPC supports native streaming. Choose gRPC for high-throughput internal service calls; choose REST for public-facing APIs.
gRPC is a contract-first RPC framework using Protobuf over HTTP/2. It excels at high-frequency internal service communication where performance and type safety matter. REST remains the better choice for public APIs that browser and mobile clients consume directly.
Choose gRPC for: high-throughput internal service-to-service calls, streaming large datasets, polyglot environments sharing one .proto file, and latency-sensitive paths like auth or pricing engines.
Choose REST for: public-facing APIs consumed by browsers or mobile apps, teams unfamiliar with Protobuf tooling, and simple CRUD with infrequent traffic.
Protocol: gRPC uses HTTP/2 (multiplexed, binary, compressed) vs HTTP/1.1 JSON for REST.
Contract: the .proto file is the single source of truth — generated clients are fully typed; no OpenAPI drift.
Streaming: gRPC supports server, client, and bidirectional streaming natively; REST requires SSE or WebSockets.