Open
experiments
FR / EN

Web image audit grid · IMG22 & IMG23

Images and visual stability.
Observe before fixing.

What happens when an image arrives after the text? Compare the same page with and without space reserved for the image.

  1. 01Observe
  2. 02Understand the code
  3. 03Examine the evidence

01 · Visual exploration

Watch the reading marker.

Before / after, without starting movement

A · Without dimensions

Before: the browser does not yet know the image height. After: the decoded image occupies its space; content below may move.

B · With intrinsic dimensions

Before: width and height declare a 3:2 ratio. After: the image fills the reserved space. This is the expected mechanism; actual results are recorded below.

02 · The intervention

Two attributes. The same image.

The image file, text and common CSS are identical in the two experimental documents. The only HTML difference is the addition of width and height. No placeholder, fixed container height or common aspect-ratio reserves space in A.

Common responsive rule : width: 100%; height: auto; · Full shared CSS. Image: 1200 × 800, JPEG, 152 231 bytes. No image format or compression comparison here.

03 · Archived observations

A laboratory scenario, with its limits.

These measurements come from separate, top-level navigations on a local server. The image is present in the initial HTML; its response is delayed by 2 seconds. CLS is observed during the first 6 seconds. These values do not measure your replay above or a visit to GitHub Pages.

Mobile viewport · A

0.051149

Observed CLS · 0–6 s
3 valid trials · 233.33 px CSS

Mobile viewport · B

0

Observed CLS · 0–6 s
3 valid trials · 0 px CSS

Desktop · A

0.014321

Observed CLS · 0–6 s
3 valid trials · 320 px CSS

Desktop · B

0

Observed CLS · 0–6 s
3 valid trials · 0 px CSS

The values above are generated from the archived trials below. Equal repetitions are shown once; different values would be shown as a range. All failures remain in the table.

Every trial · local delayed-response server, fresh context, DPR 1.
Trial / viewportVariant / repetitionCLS · 0–6 sMarker · CSS pxStatusEvidence
1 · Mobile viewportA · run 10.051149233.33 pxValidJSON #1 · Before #1 · After #1
2 · Mobile viewportB · run 100 pxValidJSON #2 · Before #2 · After #2
3 · Mobile viewportB · run 200 pxValidJSON #3 · Before #3 · After #3
4 · Mobile viewportA · run 20.051149233.33 pxValidJSON #4 · Before #4 · After #4
5 · Mobile viewportA · run 30.051149233.33 pxValidJSON #5 · Before #5 · After #5
6 · Mobile viewportB · run 300 pxValidJSON #6 · Before #6 · After #6
7 · DesktopA · run 10.014321320 pxValidJSON #7 · Before #7 · After #7
8 · DesktopB · run 100 pxValidJSON #8 · Before #8 · After #8
9 · DesktopB · run 200 pxValidJSON #9 · Before #9 · After #9
10 · DesktopA · run 20.014321320 pxValidJSON #10 · Before #10 · After #10
11 · DesktopA · run 30.014321320 pxValidJSON #11 · Before #11 · After #11
12 · DesktopB · run 300 pxValidJSON #12 · Before #12 · After #12

The experimental scene remains French in all laboratory trials. The two viewports are 390 × 844 and 1440 × 900 CSS px. The marker stays visible before and after loading. These are desktop browser viewports, not tests on real phones.

Dates, browser and experimental revisions

Measurement dates below are distinct from build or publication dates. Every run records its browser, tools, OS, DPR, cache, image bytes and load timing.

Browser 154.0.8037.59 · Playwright 1.63.0 · web-vitals 6.2.2 · darwin 25.3.0

Four different observations

  • Visual observation: what you see moving.
  • Marker displacement: its position change in CSS pixels.
  • Scenario CLS: the largest session window in a bounded laboratory period.
  • Field data: not collected by this experiment.

What the test does not establish

Twelve trials describe this image, code, browser and protocol. They do not establish a site-wide score, a general statistical effect, an SEO or conversion gain, or accessibility conformance. This version only studies space reservation.

Shift sources identify moved elements, not automatically the cause. Missing API support is reported as unavailable, never as zero. Replay does not reset the parent page’s CLS.

How CLS is calculated here

web-vitals 6.2.2 groups unexpected layout shifts into session windows with gaps below 1 second and a total duration below 5 seconds. Entries with hadRecentInput are excluded. We retain the maximum window score within the declared 0–6 second observation. This is not the sum of every shift or the final CLS of an entire visit. Raw entries, timestamps, visibility, errors and moved elements remain available in each JSON.

web.dev · CLS · Space reservation · web-vitals 6.2.2

Reproduce in a separate laboratory

The protocol was written before collection. The build only generates the static presentation and never runs measurements. A new collection creates a new dated series; existing observations are retained.

npm ci
npm run build
npm start             # public presentation locally
# Separate terminal, fresh laboratory series
npm run measure
npm run results
npm run prepare:publish
Connection to IMG22 and IMG23

IMG22 · Do width and height describe the intrinsic ratio of the candidate or reference fallback?
Compare attributes, decoded dimensions and rendered ratio.

IMG23 · Is space reserved before download at every breakpoint?
Disable cache, throttle the network and inspect the box before decoding.

These controls belong to the existing grid version 1.1. This companion does not add an instrument or claim to validate every breakpoint on a real site.