GraphQL is a specification, originally built at Facebook in 2012 and open-sourced in 2015, for how clients ask servers for data. Instead of a server defining a fixed set of REST endpoints like /users/42 and /users/42/posts, a GraphQL server publishes a single endpoint (usually /graphql) backed by a typed schema. The client writes a query that names the exact fields it wants, and the server resolves that query against its data sources.
The schema is the contract. It declares types (User, Post, Comment), the fields on each type, and how they connect. Because everything is strongly typed, tools can validate a query before it ever runs, generate documentation automatically, and power editor autocomplete. There are three root operation types: query for reads, mutation for writes, and subscription for a stream of real-time updates over a persistent connection.
The headline benefit is no over-fetching and no under-fetching. A mobile screen that needs a user's name and the titles of their last three posts asks for exactly those fields. A REST equivalent might force two or three round trips, or return a fat JSON blob with 40 fields the client throws away.