The web development community was missing a page size reference. This site is that reference—the International Prototype of the Kilogram, but for web.
The transfer size of this website is precisely 1 MB or 1,000,000 bytes, by definition. Transfer size is the amount of data that must be transferred over the network to the browser in order to display the page fully.
The exact resources that constitute a web page are not fixed since clients are not obliged to fetch all of them. In this case the 1 MB transfer size is reached if the browser downloads all linked images, JavaScript, CSS, as the vast majority of browsers do. The 1 MB transfer size includes the size of the response headers from the web server in its totals, as these are part of the cost of fetching a page.
Note: Previous versions of this page used the base-2 version of the megabyte (220 or 1,048,576 bytes), more correctly called the mebibyte (MiB). The 220 version of the megabyte was common and is still the standard that Windows uses but is falling out of usage in favour of the SI unit. The Wikipedia mebibyte article details how different operating systems use megabyte vs. mebibyte.
If your web test tool reports anything other than exactly 1 MB as the size of this page it is either incorrect or is measuring something different. There are some valid reasons for a difference of opinion:
Some tools don't include the response headers in their page size totals. This will affect the total measured size, but not by much since each response header is only about 300 bytes in size, a tiny percentage (0.03%) of the total transfer weight.
Tools may leave out page resources e.g. JavaScript or the site's favicon (this is arguably incorrect since it is not how most browsers behave).
Some entity between your browser and this website is interfering with the content en route.
Some tools include the HTTP request headers in their totals, causing them to over-count. This is difficult to justify because almost all of the request headers are sent at the discretion of the client rather than the server.
There are two less justifiable reasons why page weight measurement tools make mistakes:
Some tools report the uncompressed size of fetched assets. This is a less useful metric since the cost to a user of fetching an asset (in both time and data plan impact) is a factor of the transfer size of the resource, not the uncompressed size.
Simple under-counting and over-counting.
The 1 MB Website is a mobiForge project project created as part of a three-part series on web page weight: Understanding page weight, Measuring page weight, Reducing page weight.
The page is served using HTTP 1.1. As is normally the case, HTML, JavaScript and CSS resources are gziped before transfer, JPEG images are not.
This page uses a fairly typical mix of HTML, CSS, images and JavaScript. There are no deliberately tricky elements designed to confuse test tools. No responsive image markup is utilised to ensure that the page weight is invariant, regardless of browser and device. User agent request headers are not included in the 1 MB total because this component of the whole is controlled by the browser rather than the server. No AJAX requests are utilised to keep things simple.
Images are Creative Commons licensed, sourced from Wikimedia Commons and Flickr.
The static source for this site is available on GitHub.