Direct answer: paste HTML to count img/srcset/sizes/picture in the browser and simulate the candidate pick at 390@2x and 1440@1x. Missing sizes, missing 780/1440 candidates, duplicate widths and missing dimensions are flagged. No network, no upload, CSV export.
Paste HTML, check images
Paste a page or a block of image markup below. The tool reads tags and attributes only and does not load images; use it to screen before launch.
Not checked yet.
Running self-test…
How candidates are judged
| Item | Rule | Boundary |
|---|---|---|
| srcset | Parse w/x descriptors and candidate count | Candidates without a descriptor are ignored |
| sizes | w descriptors without sizes → flag | x-only is reported as density-only |
| Coverage | At least one 700–900w and one 1300–1600w candidate | Not the only valid set |
| Pick | slot × DPR → smallest candidate at or above target | Above the largest candidate, take the largest |
| Waste | Chosen width above 1.5× target | Counted at 390@2x only |
| Not checked | Image quality, format, LCP, CSS backgrounds | Tags and attributes only |
The selection formula
- Slot: the length matched by
sizes, default100vw; a 390px viewport gives 390px. - Target pixels: slot × DPR. 390px at 2x is 780px; 1440px at 1x is 1440px.
- Pick: the smallest candidate at or above the target; if all are smaller, the largest. Density descriptors follow DPR.
- Waste: chosen width above 1.5× target; e.g. a 2,880w file in a 780px target.
Background: the 25-site measurement
In the 2026-11-11 measurement of 25 equipment homepages, only one used picture/source and none used img[srcset]; first-screen image medians at 390px and 1440px were almost identical (1,152 KB versus 1,145 KB). This tool finds pages missing sizes or 780/1440 candidates at the source level; see the first-screen image audit.
Limits
- HTML only: no JS execution, no CSS background images, no real transfer bytes.
- Simplified media queries: min/max-width with and only; container queries, calc and resolution are not implemented.
- No source priority:
pictureis counted, but selection simulates theimgsrcset. - Not a device: cache, Save-Data, format support and DPR can change the browser's choice.
- Debatable thresholds: 780/1440 are common pairs, not the only answer; the tool is a screen.
Data and reproduction
Parser and selection: js/responsive-image-check.js; Node assertions: scripts/test_responsive_image_check.js (19 checks). The page runs three self-tests, and opening #sample fills the sample. To put this into acceptance, see website services.
Frequently asked questions
Does the tool upload my HTML?
No. Parsing happens in the browser with no network request; the CSV is generated locally too.
Which sizes conditions are supported?
It supports min-width/max-width joined by and, with px/vw/rem/em lengths. Container queries, calc, orientation and resolution conditions are out of scope; unknown conditions are skipped.
Will the simulated pick match the browser?
Not always. The tool simulates 390@2x and 1440@1x with fixed sizes and candidates; browsers also consider cache, Save-Data, format support, art direction and device pixel ratio. Use it to screen, not to replace a device.
Why flag a missing 780 or 1440 candidate?
A 390px slot at 2x needs 780px, and a 1440px desktop slot needs 1440px. The tool checks 700-900w and 1300-1600w coverage; these are not the only valid values.
Does it analyse picture/source?
It counts picture elements and source[srcset] entries; candidate selection simulates the img srcset and does not evaluate source media/type priority.
Can it check CSS background images?
No. It parses HTML tags only; background images, canvas and video posters need a browser measurement or desktop tool.
Are there tests?
Yes. Parsing and selection live in js/responsive-image-check.js, with 19 Node assertions in scripts/test_responsive_image_check.js and three in-page self-tests.