{
  "$schema": "https://datapackage.org/profiles/2.0/datapackage.json",
  "name": "image-formats-polish-web-2026-10-30",
  "title": "Image formats, lazy loading and fetchpriority on Polish homepages",
  "description": "Every .pl site in a pinned Tranco list whose homepage answered with HTML: the image formats its <img> and <picture> elements serve, srcset, width and height, native and scripted lazy loading, fetchpriority and image preloads, how its first content image loads, and phone LCP with its image subparts from the Chrome UX Report.",
  "version": "2026-10-30",
  "created": "2026-11-07T06:46:17.531Z",
  "homepage": "https://www.outofplace.space/blog/image-formats-polish-web",
  "keywords": [
    "AVIF",
    "WebP",
    "lazy loading",
    "fetchpriority",
    "LCP",
    "CrUX",
    "Poland"
  ],
  "licenses": [
    {
      "name": "CC-BY-4.0",
      "path": "https://creativecommons.org/licenses/by/4.0/",
      "title": "Creative Commons Attribution 4.0"
    }
  ],
  "contributors": [
    {
      "title": "Outofplace Poland sp. z o.o.",
      "roles": [
        "creator"
      ],
      "path": "https://www.outofplace.space"
    }
  ],
  "sources": [
    {
      "title": "Tranco list Y8YYG (https://doi.org/10.14722/ndss.2019.23386)",
      "path": "https://tranco-list.eu/list/Y8YYG/1000000"
    },
    {
      "title": "Chrome UX Report (Google, CC BY 4.0)",
      "path": "https://developer.chrome.com/docs/crux"
    }
  ],
  "resources": [
    {
      "name": "sites",
      "path": "sites.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1028824,
      "hash": "sha256:b29acd438e154f6470d2e25648c97bb62b1eeac5fc29f04e5a6e5a45a16c4e40",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "rank_tranco",
            "type": "integer",
            "description": "Rank in the Tranco list."
          },
          {
            "name": "rank_sample",
            "type": "integer",
            "description": "Rank among the sample's homepages."
          },
          {
            "name": "domain",
            "type": "string",
            "description": "The .pl domain in the Tranco list."
          },
          {
            "name": "origin",
            "type": "string",
            "description": "The origin its homepage ended on."
          },
          {
            "name": "cms",
            "type": "string",
            "description": "CMS group from the CMS study of the same census (wordpress-polish-web)."
          },
          {
            "name": "truncated",
            "type": "integer",
            "description": "1 when the homepage was cut at 1 MiB."
          },
          {
            "name": "images",
            "type": "integer",
            "description": "<img> elements that aren't tracking pixels or placeholders."
          },
          {
            "name": "raster",
            "type": "integer",
            "description": "Of them, raster images (not SVG)."
          },
          {
            "name": "svg",
            "type": "integer",
            "description": "Of them, SVG images."
          },
          {
            "name": "avif",
            "type": "integer",
            "description": "1 when a raster <img>, its <picture> sources or an image preload is AVIF."
          },
          {
            "name": "webp",
            "type": "integer",
            "description": "1 when a raster <img>, its <picture> sources or an image preload is WebP."
          },
          {
            "name": "auto",
            "type": "integer",
            "description": "1 when an image URL asks an image service to pick the format from the browser's Accept header."
          },
          {
            "name": "picture_avif",
            "type": "integer",
            "description": "1 when a <picture> offers a <source> of type image/avif."
          },
          {
            "name": "picture_webp",
            "type": "integer",
            "description": "1 when a <picture> offers a <source> of type image/webp."
          },
          {
            "name": "picture",
            "type": "integer",
            "description": "Raster <img> inside a <picture>."
          },
          {
            "name": "img_avif",
            "type": "integer",
            "description": "Raster <img> whose most modern candidate is AVIF."
          },
          {
            "name": "img_webp",
            "type": "integer",
            "description": "… WebP."
          },
          {
            "name": "img_auto",
            "type": "integer",
            "description": "… a format the image service picks (auto)."
          },
          {
            "name": "img_jpeg",
            "type": "integer",
            "description": "… JPEG."
          },
          {
            "name": "img_png",
            "type": "integer",
            "description": "… PNG."
          },
          {
            "name": "img_gif",
            "type": "integer",
            "description": "… GIF."
          },
          {
            "name": "img_other",
            "type": "integer",
            "description": "… another format, or none we can tell from the URL."
          },
          {
            "name": "img_modern",
            "type": "integer",
            "description": "Raster <img> in AVIF, WebP or auto."
          },
          {
            "name": "img_lazy",
            "type": "integer",
            "description": "Raster <img> with loading=lazy."
          },
          {
            "name": "img_js_lazy",
            "type": "integer",
            "description": "Raster <img> lazy-loaded by a script (real URL in data-src or similar, placeholder in src), without loading=lazy."
          },
          {
            "name": "img_dims",
            "type": "integer",
            "description": "Raster <img> with numeric width and height attributes."
          },
          {
            "name": "img_srcset",
            "type": "integer",
            "description": "Raster <img> with srcset (or its lazy-loading twin)."
          },
          {
            "name": "img_fetchpriority_high",
            "type": "integer",
            "description": "Raster <img> with fetchpriority=high."
          },
          {
            "name": "high_any",
            "type": "integer",
            "description": "Any <img> with fetchpriority=high."
          },
          {
            "name": "high_logo",
            "type": "integer",
            "description": "Of them, images read as a logo, an icon (under 100 px) or an SVG."
          },
          {
            "name": "lazy_and_high",
            "type": "integer",
            "description": "Raster <img> with both loading=lazy and fetchpriority=high."
          },
          {
            "name": "preload_image",
            "type": "integer",
            "description": "Image preload hints (link rel=preload as=image)."
          },
          {
            "name": "preload_high",
            "type": "integer",
            "description": "Of them, with fetchpriority=high."
          },
          {
            "name": "first_format",
            "type": "string",
            "description": "Format of the first content image (the first raster <img> that isn't a pixel, logo, icon or under 100 px); empty when none."
          },
          {
            "name": "first_lazy",
            "type": "integer",
            "description": "1 when the first content image has loading=lazy."
          },
          {
            "name": "first_js_lazy",
            "type": "integer",
            "description": "1 when the first content image is lazy-loaded by a script."
          },
          {
            "name": "first_fetchpriority",
            "type": "string",
            "description": "Its fetchpriority: high, low, auto or none."
          },
          {
            "name": "first_preloaded",
            "type": "integer",
            "description": "1 when one of its URLs is also an image preload."
          },
          {
            "name": "first_dims",
            "type": "integer",
            "description": "1 when it has width and height."
          },
          {
            "name": "first_srcset",
            "type": "integer",
            "description": "1 when it has srcset."
          },
          {
            "name": "first_position",
            "type": "integer",
            "description": "Its place among the homepage's images."
          },
          {
            "name": "inline_background",
            "type": "integer",
            "description": "1 when the HTML itself sets a CSS background image (style attribute or <style> block)."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "crux",
      "path": "crux.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 678905,
      "hash": "sha256:bbbe647d8fc7da1186ab4f5a79b3d8946d830f15e4caad108c566f5f8094101e",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "origin",
            "type": "string",
            "description": "Origin from the census."
          },
          {
            "name": "crux_origin",
            "type": "string",
            "description": "Origin CrUX answered for (the www twin when the first was not found)."
          },
          {
            "name": "status",
            "type": "string",
            "description": "ok, not_found or error."
          },
          {
            "name": "collection_first",
            "type": "string",
            "description": "First day of CrUX's 28-day collection period."
          },
          {
            "name": "collection_last",
            "type": "string",
            "description": "Last day of the collection period."
          },
          {
            "name": "lcp_p75",
            "type": "number",
            "description": "p75 Largest Contentful Paint on phones (ms)."
          },
          {
            "name": "inp_p75",
            "type": "number",
            "description": "p75 Interaction to Next Paint on phones (ms)."
          },
          {
            "name": "cls_p75",
            "type": "number",
            "description": "p75 Cumulative Layout Shift on phones."
          },
          {
            "name": "ttfb_p75",
            "type": "number",
            "description": "p75 time to first byte of page loads whose LCP element is an image (ms)."
          },
          {
            "name": "load_delay_p75",
            "type": "number",
            "description": "p75 LCP image resource load delay (ms): from first byte until the image starts loading."
          },
          {
            "name": "load_duration_p75",
            "type": "number",
            "description": "p75 LCP image resource load duration (ms)."
          },
          {
            "name": "render_delay_p75",
            "type": "number",
            "description": "p75 LCP image element render delay (ms)."
          },
          {
            "name": "lcp_image_fraction",
            "type": "number",
            "description": "Share of phone page loads whose LCP element is an image."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "adoption",
      "path": "adoption.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 18371,
      "hash": "sha256:61c1654cbe8b67d8d64fa809e13d71101eba61bf3b32bb5c9374ada4eadfca45",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "dimension",
            "type": "string",
            "description": "all, band (rank in the sample) or cms."
          },
          {
            "name": "segment",
            "type": "string",
            "description": "The band or CMS group."
          },
          {
            "name": "metric",
            "type": "string",
            "description": "What is counted (see summary.json → headline.m and the README)."
          },
          {
            "name": "base",
            "type": "string",
            "description": "all, raster (homepages with a raster <img>), raster2 (two or more), first (with a first content image) or high (with fetchpriority=high on an <img>)."
          },
          {
            "name": "k",
            "type": "integer",
            "description": "Homepages with the trait."
          },
          {
            "name": "n",
            "type": "integer",
            "description": "Homepages in the base."
          },
          {
            "name": "share",
            "type": "number",
            "description": "k / n."
          },
          {
            "name": "ci_low",
            "type": "number",
            "description": "95% Wilson interval, lower bound."
          },
          {
            "name": "ci_high",
            "type": "number",
            "description": "95% Wilson interval, upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "formats",
      "path": "formats.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 640,
      "hash": "sha256:cc3a601bd8888d82c7709e64138727eed97d3a5dedd1c5b0a803871f72a78cb7",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "scope",
            "type": "string",
            "description": "all_images (every raster <img> pooled) or first_image (one per homepage)."
          },
          {
            "name": "format",
            "type": "string",
            "description": "avif, webp, auto, jpeg, png, gif or other."
          },
          {
            "name": "k",
            "type": "integer",
            "description": "Images (all_images) or homepages (first_image) in the format."
          },
          {
            "name": "n",
            "type": "integer",
            "description": "All of them."
          },
          {
            "name": "share",
            "type": "number",
            "description": "k / n."
          },
          {
            "name": "ci_low",
            "type": "number",
            "description": "95% Wilson interval, lower bound (first_image only: pooled images aren't independent)."
          },
          {
            "name": "ci_high",
            "type": "number",
            "description": "95% Wilson interval, upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "field",
      "path": "field.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1527,
      "hash": "sha256:ded339e09c5e6bebdf52314d29e199b45f5ae2358ad14c5aed8c64eb2c18e89e",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "dimension",
            "type": "string",
            "description": "all, first_load, first_load_image_lcp, all_lazy or first_format."
          },
          {
            "name": "segment",
            "type": "string",
            "description": "The segment."
          },
          {
            "name": "origins",
            "type": "integer",
            "description": "Homepages in the segment."
          },
          {
            "name": "crux_origins",
            "type": "integer",
            "description": "Of them, with CrUX phone data."
          },
          {
            "name": "lcp_n",
            "type": "integer",
            "description": "Of them, with p75 LCP."
          },
          {
            "name": "lcp_good",
            "type": "number",
            "description": "Share with p75 LCP at most 2,500 ms; empty under 30."
          },
          {
            "name": "lcp_good_ci_low",
            "type": "number",
            "description": "95% Wilson interval, lower bound."
          },
          {
            "name": "lcp_good_ci_high",
            "type": "number",
            "description": "95% Wilson interval, upper bound."
          },
          {
            "name": "lcp_good_k",
            "type": "integer",
            "description": "Origins with good LCP."
          },
          {
            "name": "lcp_median_ms",
            "type": "number",
            "description": "Median of the origins' p75 LCP (ms)."
          },
          {
            "name": "lcp_median_ci_low",
            "type": "number",
            "description": "Bootstrap 95% interval (10,000 resamples, seeded), lower bound."
          },
          {
            "name": "lcp_median_ci_high",
            "type": "number",
            "description": "Upper bound."
          },
          {
            "name": "load_delay_n",
            "type": "integer",
            "description": "Origins with an LCP image load delay."
          },
          {
            "name": "load_delay_median_ms",
            "type": "number",
            "description": "Median of their p75 resource load delay (ms)."
          },
          {
            "name": "load_delay_ci_low",
            "type": "number",
            "description": "Bootstrap 95% interval, lower bound."
          },
          {
            "name": "load_delay_ci_high",
            "type": "number",
            "description": "Upper bound."
          },
          {
            "name": "load_duration_median_ms",
            "type": "number",
            "description": "Median p75 resource load duration (ms)."
          },
          {
            "name": "render_delay_median_ms",
            "type": "number",
            "description": "Median p75 element render delay (ms)."
          },
          {
            "name": "ttfb_median_ms",
            "type": "number",
            "description": "Median p75 time to first byte of image-LCP loads (ms)."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "verification",
      "path": "verification.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 1545,
      "hash": "sha256:8d983dd5b2b90b49a9221aa787293103f82cdc6b21fc8c531d24ef4c2e7acf52",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "domain",
            "type": "string",
            "description": "Homepage read by hand."
          },
          {
            "name": "stratum",
            "type": "string",
            "description": "lazy or not_lazy: how the rules said its first content image loads."
          },
          {
            "name": "position",
            "type": "integer",
            "description": "Place of the picked image among the homepage's images when read."
          },
          {
            "name": "same_pick",
            "type": "integer",
            "description": "1 when the published rules pick the same image."
          },
          {
            "name": "content",
            "type": "integer",
            "description": "1 when the reader agreed the picked image is content, not a logo, icon, navigation graphic, badge or decoration."
          },
          {
            "name": "attributes_ok",
            "type": "integer",
            "description": "1 when its format, loading and fetchpriority were read right."
          },
          {
            "name": "note",
            "type": "string",
            "description": "What it is."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "summary",
      "path": "summary.json",
      "description": "Headline numbers from the CSVs.",
      "format": "json",
      "mediatype": "application/json",
      "encoding": "utf-8",
      "bytes": 38076,
      "hash": "sha256:0f2b086ff16300f904244bfbbf8b750e37d175a4426f34f98238580d913dc5ba"
    }
  ]
}
