Web Hosting: same words, two ways of building the page
Both versions carry identical copy, identical prices, identical order links and the same photograph. The only variable is how the page is built: one with Elementor and its add-on widgets, one as hand-written HTML. Everything below is measured from the bytes the server actually sends, not estimated.
The scoreboard
| Measured | Elementor build | Hand-written build | Difference |
|---|---|---|---|
| The page’s own markup | 109.5 KB | 60.0 KB | 1.82x lighter |
| Markup bytes per word | 103 B | 20 B | 5.03x denser |
| DOM elements in the page body | 1,080 | 571 | 1.89x fewer |
| Nested divs | 426 | 77 | 5.53x fewer |
| Deepest nesting level | 25 | 14 | 11 levels shallower |
| Icon font glyphs | 170 | 0 | all removed |
| Elementor widget wrappers | 129 | 0 | all removed |
| Real tables | 1 | 3 | one table widget becomes three real tables |
| Resources requested | 97 | 44 | 53 fewer |
| Transferred for the document | 4.14 MB | 1.56 MB | 2.66x less |
| of which JavaScript | 1.64 MB | 0.36 MB | 4.61x less |
| of which CSS | 1.79 MB | 0.49 MB | 3.65x less |
| Images | 0.15 MB | 0.15 MB | identical on purpose |
| Site chrome outside the page | 208.4 KB | 168.4 KB | unchanged |
| Time to first byte | 2567 ms | 2248 ms | no real change |
Green rows are where the hand-written build wins, amber rows are where it changes nothing. Measured on the delivered response, including every CSS, JavaScript and image the document asks for. Runtime requests made after load are excluded, and field metrics such as Largest Contentful Paint are not included because the render harness on this host is unavailable. The hand-written column includes conditional asset loading, so it no longer requests nineteen stylesheets and scripts that page has no use for.
Side by side
Elementor build
Open full pageHand-written build
Open full pageWhat actually changed in the build
Ten plan cards became two tables
The plan cards repeated the same seven labelled lines ten times, each with its own checkmark glyph. That was 70 identical lines and 70 of the page’s 170 icons. A real table states the same facts once per column, and the numbers now line up visually.
The tab widget is gone
Four plans sat behind a JavaScript tab, six behind another, so the catalogue could not be scanned or printed in one view. Both tracks are now simply visible, with no JavaScript.
The FAQ is native and self-describing
Ten questions now use details and summary, which work without
JavaScript and are keyboard accessible, plus FAQPage structured data so search engines can read
the answers directly.
Icons out, structure in
Every decorative icon is gone: the hierarchy now comes from type size, hairline rules and real spacing. One photograph does the visual work instead of a grid of glyphs.
Bundles the page never uses are not loaded
33 stylesheets and scripts exist to serve plugins this page does not use anywhere, header and footer included. Rebuilding the footer is what made most of them droppable. Together they took this page from 4.34 MB to 1.56 MB per load. The rule is an explicit page list with guards, not a site-wide switch, so no other page changes behaviour.
Long tables became tabs, with no JavaScript
The ten plans are two tabs and the comparison is three short tabs, built from radio inputs and labels: natively keyboard operable, and requiring no script at all. Every panel still prints and still appears in the page source, so search engines see all ten plans. Below 760px each table row becomes a stacked card, so nothing scrolls sideways. One optional 600-byte script marks the current section in the jump bar; the page is complete without it.
Checked in a real browser, not just in the source
The page is full width: the hero measures 1280px in a 1280px viewport, and horizontal overflow is zero. Two defects were found this way and fixed: the theme was capping the canvas at 1200px through a rule on the content element itself, and the plan table overflowed by 49px, clipping the Order column. Neither was visible in the markup.
The footer was rebuilt by hand as well
The Elementor footer is 30 KB of markup with 249 wrappers, and it renders a Royal Elementor logo widget plus Font Awesome glyphs. The hand-written replacement is 3.9 KB with no wrappers, carrying the same four columns, the same links, the same logo and the same contact details. That change is what allowed Royal Elementor Addons and Font Awesome to be dropped here. The copyright year is now rendered by the server instead of a stray script tag.
What this rebuild does not fix
The page is 2.7 times lighter. Every other page on the site is not, yet.
Everything above is scoped to this one page id. Every other page still renders the Elementor footer, and that footer is what forces Royal Elementor Addons at 791 KB, Font Awesome at 155 KB and the add-on packs onto every page of the site, whether or not those pages use them. Roughly 1.2 MB per page load, site-wide, until the footer is rebuilt everywhere rather than here.
What still loads on this page, and why it stays: the Google tag at 577 KB, which also fires on this staging site at all; the jQuery stack at about 168 KB, because Elementor and the header/footer builder depend on it; Elementor’s front end plus the builder at about 250 KB, because the header is still an Elementor template; Elementor’s Google Font CSS at about 220 KB; and the Astra theme at 70 KB.
Time to first byte did not improve either: 2567 ms against 2248 ms, since server-side rendering dominates and both versions boot the same WordPress.
Found while measuring: the Google tag fires on this staging site with a live measurement identifier, so staging visits are being counted in production analytics.
How this was measured
Both URLs were fetched fresh, then every stylesheet, script and image referenced by the document was downloaded and its real size summed. The page body was parsed into a tree to count elements, nesting depth and icon glyphs, so those figures come from the markup rather than from a visual inspection. No number on this page is an estimate.
The two builds differ only in construction. Copy, prices, plan names, order destinations, photograph and logo strip are identical.