A dialect is a variant, or variety, of a language spoken in a certain geographical area. The number of speakers, and the area itself, can be of arbitrary size. It follows that a dialect for a larger area can contain plenty of (sub-) dialects, which in turn can contain dialects of yet smaller areas, et cetera.
The concept dialect is distinguished from sociolect, which is a variety of a language spoken by a certain social stratum, from standard language, which is standardized for public performance (e.g. written standard), and from jargon and slang which are characterized by differences in vocabulary (or lexicon according to linguist jargon).
In a way, "dialect" is not a linguistic term: there is no linguistic means by which one is able to distinguish a "dialect" from a "language" - it is rather a kind of sociolinguistic evaluation (or historical evaluation in the case of linguists) that makes people talk about languages and dialects. Often, dialects are called dialects
Anthropological linguists define dialect as the specific form of a language used by a speech community. In other words, the difference between language and dialect is the difference between the abstract or general and the concrete and particular. From this perspective, no one speaks a "language," everyone speaks a dialect of a language. Those who identify a particular dialect as the "standard" or "proper" version of a language are in fact using these terms to express a social distinction. Often, the standard language is close to the sociolect of the elite class.
In groups where prestige standards play less important roles, "dialect" may simply be used to refer to subtle regional variations in linguistic practices that are considered mutually intelligible, playing an important role to place strangers, carrying the message of wherefrom a stranger originates (which quarter or district in a town, which village in a rural setting, or which province of a country); thus there are many apparent "dialects" of Navajo and Apache, for example, geographically widespread North American indigenous languages, by which the linguist simply means that there are many subtle variations among speakers who largely understand each other and recognize that they are each speaking "the same way" in a general sense.
Modern day linguistics knows that the status of language is not solely determined by linguistic criteria, but it is also the result of a historical and political development. Romansh came to be a written language, and therefore it is recognized as a language, even though it is very close to the Lombardic alpine dialects. An opposite example is the case of the Chinese language whose variations are often considered dialects and not languages despite their mutual unintelligibility because they share a common literary standard and common body of literature.
Max Weinreich summed this up as "A language is a dialect with an army and a navy".