{
  "$schema": "https://datapackage.org/profiles/2.0/datapackage.json",
  "name": "google-fonts-polish-web-2026-09-24",
  "title": "Google Fonts on Polish homepages, and their loading speed",
  "description": "Every .pl site in a pinned Tranco list whose homepage answered with HTML: whether and how its HTML loads fonts from Google's servers, the families and display it asks for, its resource hints, other font services and self-hosting signs, and the phone LCP and FCP p75 from the Chrome UX Report.",
  "version": "2026-09-24",
  "created": "2026-10-22T04:44:05.241Z",
  "homepage": "https://www.outofplace.space/blog/google-fonts-polish-web",
  "keywords": [
    "Google Fonts",
    "web fonts",
    "font-display",
    "LCP",
    "GDPR",
    "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": 958075,
      "hash": "sha256:847edfcd7cd81f5c891b7b46f1ff891604e67b9a69876c41f1c089db0dd9bbb5",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "rank_tranco",
            "type": "integer",
            "description": "Rank in the pinned Tranco list (the highest-ranked domain per origin)."
          },
          {
            "name": "rank_sample",
            "type": "integer",
            "description": "Rank among the sample's origins."
          },
          {
            "name": "rank_band",
            "type": "string",
            "description": "top100 (sample ranks 1-100), top1000 (101-1,000) or rest."
          },
          {
            "name": "domain",
            "type": "string",
            "description": "The .pl domain from the Tranco list."
          },
          {
            "name": "origin",
            "type": "string",
            "description": "The homepage's final origin after redirects."
          },
          {
            "name": "sector",
            "type": "string",
            "description": "gov (a gov.pl domain), shop (the e-commerce study's classifier) or other."
          },
          {
            "name": "platform",
            "type": "string",
            "description": "Shop platform when recognised, none for other sites."
          },
          {
            "name": "wordpress",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "WordPress, by its generator tag or its asset folders."
          },
          {
            "name": "google_mode",
            "type": "string",
            "description": "How the homepage's HTML asks Google's servers for fonts: blocking (a stylesheet link or @import of fonts.googleapis.com), non_blocking (the CSS preloaded or swapped in on load, @font-face with fonts.gstatic.com files, a font preload, or a script), after_consent (a script or a held link that waits for a consent manager), preconnect_only (a preconnect to Google's font hosts and no load), none."
          },
          {
            "name": "mentioned",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "The HTML names fonts.googleapis.com or fonts.gstatic.com anywhere (comments included)."
          },
          {
            "name": "g_stylesheet",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "A render-blocking <link rel=stylesheet> to fonts.googleapis.com."
          },
          {
            "name": "g_async_css",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "Google's CSS loaded without blocking (rel=preload as=style, or media swapped on load)."
          },
          {
            "name": "g_import",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "@import of fonts.googleapis.com in an inline style."
          },
          {
            "name": "g_inline_face",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "An inline @font-face with files on fonts.gstatic.com."
          },
          {
            "name": "g_preload_font",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "<link rel=preload as=font> to fonts.gstatic.com."
          },
          {
            "name": "g_script",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "An inline script that adds Google Fonts (WebFont Loader, or code adding the link)."
          },
          {
            "name": "g_script_consent",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "That script calls a consent manager first."
          },
          {
            "name": "g_deferred_link",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "A link with Google's CSS in a data-*href attribute, no consent marker."
          },
          {
            "name": "g_consent_link",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "The same, with a consent manager's attribute (data-category, data-service...)."
          },
          {
            "name": "preconnect_css",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "A preconnect to fonts.googleapis.com."
          },
          {
            "name": "preconnect_files",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "A preconnect to fonts.gstatic.com."
          },
          {
            "name": "preconnect_files_cors",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "That preconnect carries crossorigin, as font requests need."
          },
          {
            "name": "dns_prefetch",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "A dns-prefetch to either Google font host."
          },
          {
            "name": "css_requests",
            "type": "integer",
            "description": "Google Fonts CSS URLs loaded by link or @import."
          },
          {
            "name": "css_api",
            "type": "string",
            "description": "Google Fonts API paths used: css, css2, icon, other."
          },
          {
            "name": "families",
            "type": "integer",
            "description": "Distinct families named in those URLs."
          },
          {
            "name": "display",
            "type": "string",
            "description": "display values of those URLs, space-separated; none for a URL without one."
          },
          {
            "name": "others",
            "type": "string",
            "description": "Other font services and icon kits: adobe_fonts, bunny_fonts, fontshare, cdnfonts, font_awesome."
          },
          {
            "name": "first_party_fonts",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "Font files from the site's own domain, preloaded or in an inline @font-face."
          },
          {
            "name": "self_host_markers",
            "type": "string",
            "description": "Paths of tools that self-host Google's fonts: webfonts_helper, elementor_local, wptt_local, omgf."
          },
          {
            "name": "inline_font_faces",
            "type": "integer",
            "description": "@font-face rules in inline styles."
          },
          {
            "name": "inline_font_display",
            "type": "string",
            "description": "font-display values of those rules; none for a rule without one."
          },
          {
            "name": "truncated",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "The homepage hit the census's 1 MiB cap."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "site_families",
      "path": "site_families.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 182929,
      "hash": "sha256:740f27dbe0b8857de7f4d7db6661ed1e1bef16d5aab7b0dd30e58e0d72ee0638",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "origin",
            "type": "string",
            "description": "The homepage's final origin."
          },
          {
            "name": "family",
            "type": "string",
            "description": "A Google Fonts family its CSS URLs name."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "bands",
      "path": "bands.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 985,
      "hash": "sha256:83a50b59382fad4d99fccbad47fa773ef21864f2ddcf1d15ba65cafd9951504a",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "band",
            "type": "string",
            "description": "all, top100, top1000 (ranks 101-1,000) or rest."
          },
          {
            "name": "mode",
            "type": "string",
            "description": "How the homepage's HTML asks Google's servers for fonts: blocking (a stylesheet link or @import of fonts.googleapis.com), non_blocking (the CSS preloaded or swapped in on load, @font-face with fonts.gstatic.com files, a font preload, or a script), after_consent (a script or a held link that waits for a consent manager), preconnect_only (a preconnect to Google's font hosts and no load), none."
          },
          {
            "name": "sites",
            "type": "integer",
            "description": "Homepages in the band with that mode."
          },
          {
            "name": "band_sites",
            "type": "integer",
            "description": "Homepages in the band."
          },
          {
            "name": "share",
            "type": "number",
            "description": "Share of the band's homepages."
          },
          {
            "name": "share_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "share_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "groups",
      "path": "groups.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 995,
      "hash": "sha256:002cc5172e79d0bbb53cd48f8eb8a4e6bb9d48d083f311cd2964144ecb072d3b",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "dimension",
            "type": "string",
            "description": "sector or software."
          },
          {
            "name": "grp",
            "type": "string",
            "description": "The group: gov, shop, other; or wordpress, a shop platform, other_shop, other."
          },
          {
            "name": "sites",
            "type": "integer",
            "description": "Homepages in the group."
          },
          {
            "name": "loads",
            "type": "integer",
            "description": "Of them, loading fonts from Google (blocking or non_blocking)."
          },
          {
            "name": "loads_share",
            "type": "number",
            "description": "Share of the group's homepages loading fonts from Google."
          },
          {
            "name": "loads_share_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "loads_share_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          },
          {
            "name": "blocking",
            "type": "integer",
            "description": "Of them, loading in a render-blocking way."
          },
          {
            "name": "blocking_share",
            "type": "number",
            "description": "Share of the group's homepages loading in a render-blocking way."
          },
          {
            "name": "blocking_share_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "blocking_share_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "families",
      "path": "families.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 7234,
      "hash": "sha256:29db481b1d23a3b4f6c8cb90d8a918c224d2e9e760c872897ca6afd5f5467979",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "family",
            "type": "string",
            "description": "Google Fonts family, in its most common spelling."
          },
          {
            "name": "icons",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "Material Icons or Material Symbols, Google's icon fonts."
          },
          {
            "name": "sites",
            "type": "integer",
            "description": "Homepages loading it from Google."
          },
          {
            "name": "share_of_all",
            "type": "number",
            "description": "Share of all homepages."
          },
          {
            "name": "share_of_all_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "share_of_all_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          },
          {
            "name": "share_of_loaders",
            "type": "number",
            "description": "Share of homepages loading any font from Google."
          },
          {
            "name": "share_of_loaders_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "share_of_loaders_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "vitals",
      "path": "vitals.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 2325,
      "hash": "sha256:ea0284505e375ce6982fff20e3e9943c80dba0cc0f509f77da6c3b5b70197eec",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "segment",
            "type": "string",
            "description": "all, wordpress, not_wordpress, shop, not_shop."
          },
          {
            "name": "mode",
            "type": "string",
            "description": "none, blocking, non_blocking or preconnect_only."
          },
          {
            "name": "sites",
            "type": "integer",
            "description": "Homepages in the segment and mode."
          },
          {
            "name": "origins",
            "type": "integer",
            "description": "Of them, with a CrUX phone LCP p75."
          },
          {
            "name": "lcp_median_ms",
            "type": "number",
            "description": "Median of the origins' phone LCP p75, ms."
          },
          {
            "name": "lcp_ci_low",
            "type": "number",
            "description": "Bootstrap 95% lower bound."
          },
          {
            "name": "lcp_ci_high",
            "type": "number",
            "description": "Bootstrap 95% upper bound."
          },
          {
            "name": "lcp_good",
            "type": "number",
            "description": "Share of origins with LCP p75 at or under 2500 ms."
          },
          {
            "name": "lcp_good_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "lcp_good_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          },
          {
            "name": "fcp_origins",
            "type": "integer",
            "description": "Origins with a CrUX phone FCP p75."
          },
          {
            "name": "fcp_median_ms",
            "type": "number",
            "description": "Median of the origins' phone FCP p75, ms."
          },
          {
            "name": "fcp_ci_low",
            "type": "number",
            "description": "Bootstrap 95% lower bound."
          },
          {
            "name": "fcp_ci_high",
            "type": "number",
            "description": "Bootstrap 95% upper bound."
          },
          {
            "name": "fcp_good",
            "type": "number",
            "description": "Share of origins with FCP p75 at or under 1800 ms."
          },
          {
            "name": "fcp_good_ci_low",
            "type": "number",
            "description": "Wilson 95% lower bound."
          },
          {
            "name": "fcp_good_ci_high",
            "type": "number",
            "description": "Wilson 95% upper bound."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "verification",
      "path": "verification.csv",
      "type": "table",
      "format": "csv",
      "mediatype": "text/csv",
      "encoding": "utf-8",
      "bytes": 2829,
      "hash": "sha256:10d67a56027eae10ddc01e2a6d3f97db6584b2d6c75259c0a0bafec0f0f49aaa",
      "dialect": {
        "header": true,
        "delimiter": ",",
        "lineTerminator": "\r\n",
        "quoteChar": "\"",
        "doubleQuote": true
      },
      "schema": {
        "fields": [
          {
            "name": "origin",
            "type": "string",
            "description": "Homepage read by hand."
          },
          {
            "name": "stratum",
            "type": "string",
            "description": "The mode it was drawn from; none_mentioned for none with a Google font host in the HTML."
          },
          {
            "name": "mode",
            "type": "string",
            "description": "The mode the rules gave it."
          },
          {
            "name": "ok",
            "type": "boolean",
            "trueValues": [
              "1"
            ],
            "falseValues": [
              "0"
            ],
            "description": "The reader agreed with the rules."
          },
          {
            "name": "note",
            "type": "string",
            "description": "Why, where it matters."
          }
        ],
        "missingValues": [
          ""
        ]
      }
    },
    {
      "name": "summary",
      "path": "summary.json",
      "description": "Headline numbers and chart rows from the CSVs.",
      "format": "json",
      "mediatype": "application/json",
      "encoding": "utf-8",
      "bytes": 97196,
      "hash": "sha256:d38772ad20cc4d9fdd37d76c98cb9c88dbaf97f4f2322652d91b17bc412f5985"
    }
  ]
}
