WebDriver is an API for controlling web browsers, e.g. for automated tests. There are different WebDriver "language bindings" (i.e. client libraries) and WebDriver "implementations" (i.e. browser extensions that make a browser controllable via the API), so if your question is specific to one of them, make sure to also include the appropriate tag.

WebDriver is an API that allows programs or scripts to introspect into, and control the behaviour of, a web browser. It is primarily intended for allowing tests that automate a browser.

The WebDriver API is implemented, natively or via add-ons, by many browsers. The Selenium tools suite provides several WebDriver implementations, e.g. for Firefox or Internet Explorer. Other WebDriver implementations are developed by the browser projects directly, e.g. ChromeDriver for Chrome, or Ghost Driver for PhantomJS.

The WebDriver API specifies a wire protocol which is used for the communication between a WebDriver client and the browser. However, clients, e.g. automated tests, would not speak the wire protocol directly. Instead, they typically use "language bindings" of the WebDriver API, i.e. client libraries in the respective programming language.

There are language bindings of the WebDriver API for Java, C#, Python, Ruby, JavaScript, and other languages. Many of the language bindings are provided by the Selenium project. For some languages, there are even multiple language bindings, e.g. WebDriverJs by Selenium and WebdriverJS by webdriver.io.