[{"data":1,"prerenderedAt":831},["ShallowReactive",2],{"navigation_docs_en":3,"-en-changelog-v1-1-0":361,"-en-changelog-v1-1-0-surround":830},[4,23,49,83,93,115,343,353],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Getting started","i-lucide-rocket","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"ranklint init","\u002Fen\u002Fgetting-started\u002Finit","en\u002F1.getting-started\u002F3.init",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":22},"Nuxt module","i-lucide-box","\u002Fen\u002Fmodule","en\u002F2.module",[29,33,37,41,45],{"title":30,"path":31,"stem":32},"Overview","\u002Fen\u002Fmodule\u002Foverview","en\u002F2.module\u002F1.overview",{"title":34,"path":35,"stem":36},"Sitemap","\u002Fen\u002Fmodule\u002Fsitemap","en\u002F2.module\u002F2.sitemap",{"title":38,"path":39,"stem":40},"Robots","\u002Fen\u002Fmodule\u002Frobots","en\u002F2.module\u002F3.robots",{"title":42,"path":43,"stem":44},"Composables","\u002Fen\u002Fmodule\u002Fcomposables","en\u002F2.module\u002F4.composables",{"title":46,"path":47,"stem":48},"DevTools","\u002Fen\u002Fmodule\u002Fdevtools","en\u002F2.module\u002F5.devtools",{"title":50,"icon":51,"path":52,"stem":53,"children":54,"page":22},"CLI","i-lucide-terminal","\u002Fen\u002Fcli","en\u002F3.cli",[55,59,63,67,71,75,79],{"title":56,"path":57,"stem":58},"ranklint audit","\u002Fen\u002Fcli\u002Faudit","en\u002F3.cli\u002F1.audit",{"title":60,"path":61,"stem":62},"Diff & CI","\u002Fen\u002Fcli\u002Fdiff-and-ci","en\u002F3.cli\u002F2.diff-and-ci",{"title":64,"path":65,"stem":66},"Production monitoring","\u002Fen\u002Fcli\u002Fmonitor","en\u002F3.cli\u002F3.monitor",{"title":68,"path":69,"stem":70},"Lighthouse","\u002Fen\u002Fcli\u002Flighthouse","en\u002F3.cli\u002F4.lighthouse",{"title":72,"path":73,"stem":74},"Zones (multi-app domains)","\u002Fen\u002Fcli\u002Fzones","en\u002F3.cli\u002F5.zones",{"title":76,"path":77,"stem":78},"Other commands","\u002Fen\u002Fcli\u002Fother-commands","en\u002F3.cli\u002F6.other-commands",{"title":80,"path":81,"stem":82},"Watch mode","\u002Fen\u002Fcli\u002Fwatch","en\u002F3.cli\u002F7.watch",{"title":84,"icon":85,"path":86,"stem":87,"children":88,"page":22},"Configuration","i-lucide-settings-2","\u002Fen\u002Fconfig","en\u002F4.config",[89],{"title":90,"path":91,"stem":92},"Reference","\u002Fen\u002Fconfig\u002Freference","en\u002F4.config\u002F1.reference",{"title":94,"icon":95,"path":96,"stem":97,"children":98,"page":22},"Advanced","i-lucide-wrench","\u002Fen\u002Fadvanced","en\u002F5.advanced",[99,103,107,111],{"title":100,"path":101,"stem":102},"Custom rules & presets","\u002Fen\u002Fadvanced\u002Fcustom-rules","en\u002F5.advanced\u002F1.custom-rules",{"title":104,"path":105,"stem":106},"Smart heuristics","\u002Fen\u002Fadvanced\u002Fheuristics","en\u002F5.advanced\u002F2.heuristics",{"title":108,"path":109,"stem":110},"Env variables","\u002Fen\u002Fadvanced\u002Fenv","en\u002F5.advanced\u002F3.env",{"title":112,"path":113,"stem":114},"Nuances & limitations","\u002Fen\u002Fadvanced\u002Fnuances","en\u002F5.advanced\u002F4.nuances",{"title":116,"icon":117,"path":118,"stem":119,"children":120},"Rules","i-lucide-list-checks","\u002Fen\u002Frules","en\u002F6.rules\u002Findex",[121,123,148,173,190,207,228,257,306,330],{"title":122,"path":118,"stem":119},"All rules",{"title":124,"path":125,"stem":126,"children":127,"page":22},"Headings","\u002Fen\u002Frules\u002Fheadings","en\u002F6.rules\u002Fheadings",[128,132,136,140,144],{"title":129,"path":130,"stem":131},"headings:h1-length","\u002Fen\u002Frules\u002Fheadings\u002Fheadings-h1-length","en\u002F6.rules\u002Fheadings\u002Fheadings-h1-length",{"title":133,"path":134,"stem":135},"headings:hierarchy","\u002Fen\u002Frules\u002Fheadings\u002Fheadings-hierarchy","en\u002F6.rules\u002Fheadings\u002Fheadings-hierarchy",{"title":137,"path":138,"stem":139},"headings:no-empty","\u002Fen\u002Frules\u002Fheadings\u002Fheadings-no-empty","en\u002F6.rules\u002Fheadings\u002Fheadings-no-empty",{"title":141,"path":142,"stem":143},"headings:single-h1","\u002Fen\u002Frules\u002Fheadings\u002Fheadings-single-h1","en\u002F6.rules\u002Fheadings\u002Fheadings-single-h1",{"title":145,"path":146,"stem":147},"headings:unique-h1","\u002Fen\u002Frules\u002Fheadings\u002Fheadings-unique-h1","en\u002F6.rules\u002Fheadings\u002Fheadings-unique-h1",{"title":149,"path":150,"stem":151,"children":152,"page":22},"Http","\u002Fen\u002Frules\u002Fhttp","en\u002F6.rules\u002Fhttp",[153,157,161,165,169],{"title":154,"path":155,"stem":156},"http:no-mixed-content","\u002Fen\u002Frules\u002Fhttp\u002Fhttp-no-mixed-content","en\u002F6.rules\u002Fhttp\u002Fhttp-no-mixed-content",{"title":158,"path":159,"stem":160},"http:no-soft-404","\u002Fen\u002Frules\u002Fhttp\u002Fhttp-no-soft-404","en\u002F6.rules\u002Fhttp\u002Fhttp-no-soft-404",{"title":162,"path":163,"stem":164},"http:ttfb-budget","\u002Fen\u002Frules\u002Fhttp\u002Fhttp-ttfb-budget","en\u002F6.rules\u002Fhttp\u002Fhttp-ttfb-budget",{"title":166,"path":167,"stem":168},"http:x-robots-consistent","\u002Fen\u002Frules\u002Fhttp\u002Fhttp-x-robots-consistent","en\u002F6.rules\u002Fhttp\u002Fhttp-x-robots-consistent",{"title":170,"path":171,"stem":172},"mobile:viewport","\u002Fen\u002Frules\u002Fhttp\u002Fmobile-viewport","en\u002F6.rules\u002Fhttp\u002Fmobile-viewport",{"title":174,"path":175,"stem":176,"children":177,"page":22},"I18n","\u002Fen\u002Frules\u002Fi18n","en\u002F6.rules\u002Fi18n",[178,182,186],{"title":179,"path":180,"stem":181},"hreflang:symmetric","\u002Fen\u002Frules\u002Fi18n\u002Fhreflang-symmetric","en\u002F6.rules\u002Fi18n\u002Fhreflang-symmetric",{"title":183,"path":184,"stem":185},"hreflang:valid-targets","\u002Fen\u002Frules\u002Fi18n\u002Fhreflang-valid-targets","en\u002F6.rules\u002Fi18n\u002Fhreflang-valid-targets",{"title":187,"path":188,"stem":189},"i18n:no-locale-leak","\u002Fen\u002Frules\u002Fi18n\u002Fi18n-no-locale-leak","en\u002F6.rules\u002Fi18n\u002Fi18n-no-locale-leak",{"title":191,"path":192,"stem":193,"children":194,"page":22},"Images","\u002Fen\u002Frules\u002Fimages","en\u002F6.rules\u002Fimages",[195,199,203],{"title":196,"path":197,"stem":198},"images:alt-required","\u002Fen\u002Frules\u002Fimages\u002Fimages-alt-required","en\u002F6.rules\u002Fimages\u002Fimages-alt-required",{"title":200,"path":201,"stem":202},"images:dimensions-required","\u002Fen\u002Frules\u002Fimages\u002Fimages-dimensions-required","en\u002F6.rules\u002Fimages\u002Fimages-dimensions-required",{"title":204,"path":205,"stem":206},"images:no-lazy-above-fold","\u002Fen\u002Frules\u002Fimages\u002Fimages-no-lazy-above-fold","en\u002F6.rules\u002Fimages\u002Fimages-no-lazy-above-fold",{"title":208,"path":209,"stem":210,"children":211,"page":22},"Indexability","\u002Fen\u002Frules\u002Findexability","en\u002F6.rules\u002Findexability",[212,218,224],{"title":213,"path":214,"stem":215,"children":216},"indexability:ssr-content","\u002Fen\u002Frules\u002Findexability\u002Findexability-ssr-content","en\u002F6.rules\u002Findexability\u002Findexability-ssr-content",[217],{"title":213,"path":214,"stem":215},{"title":219,"path":220,"stem":221,"children":222},"sitemap:no-noindex","\u002Fen\u002Frules\u002Findexability\u002Fsitemap-no-noindex","en\u002F6.rules\u002Findexability\u002Fsitemap-no-noindex",[223],{"title":219,"path":220,"stem":221},{"title":225,"path":226,"stem":227},"sitemap:reachable","\u002Fen\u002Frules\u002Findexability\u002Fsitemap-reachable","en\u002F6.rules\u002Findexability\u002Fsitemap-reachable",{"title":229,"path":230,"stem":231,"children":232,"page":22},"Links","\u002Fen\u002Frules\u002Flinks","en\u002F6.rules\u002Flinks",[233,237,241,245,249,253],{"title":234,"path":235,"stem":236},"links:no-broken","\u002Fen\u002Frules\u002Flinks\u002Flinks-no-broken","en\u002F6.rules\u002Flinks\u002Flinks-no-broken",{"title":238,"path":239,"stem":240},"links:no-orphans","\u002Fen\u002Frules\u002Flinks\u002Flinks-no-orphans","en\u002F6.rules\u002Flinks\u002Flinks-no-orphans",{"title":242,"path":243,"stem":244},"links:no-redirect-chain","\u002Fen\u002Frules\u002Flinks\u002Flinks-no-redirect-chain","en\u002F6.rules\u002Flinks\u002Flinks-no-redirect-chain",{"title":246,"path":247,"stem":248},"links:no-utm-internal","\u002Fen\u002Frules\u002Flinks\u002Flinks-no-utm-internal","en\u002F6.rules\u002Flinks\u002Flinks-no-utm-internal",{"title":250,"path":251,"stem":252},"links:permanent-redirects","\u002Fen\u002Frules\u002Flinks\u002Flinks-permanent-redirects","en\u002F6.rules\u002Flinks\u002Flinks-permanent-redirects",{"title":254,"path":255,"stem":256},"links:trailing-slash-consistent","\u002Fen\u002Frules\u002Flinks\u002Flinks-trailing-slash-consistent","en\u002F6.rules\u002Flinks\u002Flinks-trailing-slash-consistent",{"title":258,"path":259,"stem":260,"children":261,"page":22},"Meta","\u002Fen\u002Frules\u002Fmeta","en\u002F6.rules\u002Fmeta",[262,266,270,274,278,282,286,290,294,298,302],{"title":263,"path":264,"stem":265},"canonical:no-chain","\u002Fen\u002Frules\u002Fmeta\u002Fcanonical-no-chain","en\u002F6.rules\u002Fmeta\u002Fcanonical-no-chain",{"title":267,"path":268,"stem":269},"canonical:required","\u002Fen\u002Frules\u002Fmeta\u002Fcanonical-required","en\u002F6.rules\u002Fmeta\u002Fcanonical-required",{"title":271,"path":272,"stem":273},"canonical:valid","\u002Fen\u002Frules\u002Fmeta\u002Fcanonical-valid","en\u002F6.rules\u002Fmeta\u002Fcanonical-valid",{"title":275,"path":276,"stem":277},"meta:description-length","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-description-length","en\u002F6.rules\u002Fmeta\u002Fmeta-description-length",{"title":279,"path":280,"stem":281},"meta:description-required","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-description-required","en\u002F6.rules\u002Fmeta\u002Fmeta-description-required",{"title":283,"path":284,"stem":285},"meta:no-duplicate-description","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-no-duplicate-description","en\u002F6.rules\u002Fmeta\u002Fmeta-no-duplicate-description",{"title":287,"path":288,"stem":289},"meta:no-duplicate-title","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-no-duplicate-title","en\u002F6.rules\u002Fmeta\u002Fmeta-no-duplicate-title",{"title":291,"path":292,"stem":293},"meta:og-required","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-og-required","en\u002F6.rules\u002Fmeta\u002Fmeta-og-required",{"title":295,"path":296,"stem":297},"meta:title-length","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-title-length","en\u002F6.rules\u002Fmeta\u002Fmeta-title-length",{"title":299,"path":300,"stem":301},"meta:title-required","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-title-required","en\u002F6.rules\u002Fmeta\u002Fmeta-title-required",{"title":303,"path":304,"stem":305},"meta:twitter-card","\u002Fen\u002Frules\u002Fmeta\u002Fmeta-twitter-card","en\u002F6.rules\u002Fmeta\u002Fmeta-twitter-card",{"title":38,"path":307,"stem":308,"children":309,"page":22},"\u002Fen\u002Frules\u002Frobots","en\u002F6.rules\u002Frobots",[310,314,318,322,326],{"title":311,"path":312,"stem":313},"robots:env-policy","\u002Fen\u002Frules\u002Frobots\u002Frobots-env-policy","en\u002F6.rules\u002Frobots\u002Frobots-env-policy",{"title":315,"path":316,"stem":317},"robots:expected-disallow","\u002Fen\u002Frules\u002Frobots\u002Frobots-expected-disallow","en\u002F6.rules\u002Frobots\u002Frobots-expected-disallow",{"title":319,"path":320,"stem":321},"robots:reachable","\u002Fen\u002Frules\u002Frobots\u002Frobots-reachable","en\u002F6.rules\u002Frobots\u002Frobots-reachable",{"title":323,"path":324,"stem":325},"robots:sitemap-declared","\u002Fen\u002Frules\u002Frobots\u002Frobots-sitemap-declared","en\u002F6.rules\u002Frobots\u002Frobots-sitemap-declared",{"title":327,"path":328,"stem":329},"robots:zone-not-blocked","\u002Fen\u002Frules\u002Frobots\u002Frobots-zone-not-blocked","en\u002F6.rules\u002Frobots\u002Frobots-zone-not-blocked",{"title":331,"path":332,"stem":333,"children":334,"page":22},"Structured Data","\u002Fen\u002Frules\u002Fstructured-data","en\u002F6.rules\u002Fstructured-data",[335,339],{"title":336,"path":337,"stem":338},"jsonld:parseable","\u002Fen\u002Frules\u002Fstructured-data\u002Fjsonld-parseable","en\u002F6.rules\u002Fstructured-data\u002Fjsonld-parseable",{"title":340,"path":341,"stem":342},"jsonld:valid-schema","\u002Fen\u002Frules\u002Fstructured-data\u002Fjsonld-valid-schema","en\u002F6.rules\u002Fstructured-data\u002Fjsonld-valid-schema",{"title":344,"icon":345,"path":346,"stem":347,"children":348,"page":22},"Guides","i-lucide-book-open","\u002Fen\u002Fguides","en\u002F7.guides",[349],{"title":350,"path":351,"stem":352},"SEO checklist for a Nuxt project","\u002Fen\u002Fguides\u002Fseo-checklist-nuxt","en\u002F7.guides\u002F1.seo-checklist-nuxt",{"title":354,"path":355,"stem":356,"children":357,"icon":360},"Changelog","\u002Fen\u002Fchangelog","en\u002F8.changelog\u002Findex",[358],{"title":359,"path":355,"stem":356},"ranklint changelog and release notes","i-lucide-history",{"id":362,"title":363,"body":364,"description":821,"extension":822,"links":823,"meta":824,"navigation":22,"path":826,"seo":827,"stem":828,"__hash__":829},"docs_en\u002Fen\u002F8.changelog\u002Fv1.1.0.md","ranklint 1.1.0 release notes",{"type":365,"value":366,"toc":814},"minimark",[367,371,376,497,501,791,795],[368,369,370],"p",{},"Released: 2026-10-11",[372,373,375],"h2",{"id":374},"features","Features",[377,378,379,395,442],"ul",{},[380,381,382,386,387,394],"li",{},[383,384,385],"strong",{},"@ranklint\u002Fchecks, @ranklint\u002Fpreset-default",": New rule links:no-utm-internal (warn) flags internal links that carry UTM or click-id parameters (utm_*, gclid, gbraid, wbraid, fbclid, yclid, msclkid, _gl, mc_cid, mc_eid) (",[388,389,393],"a",{"href":390,"rel":391},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F9172e75",[392],"nofollow","9172e75",")",[380,396,397,400,401,405,406,409,410,413,414,417,418,421,422,425,426,429,430,417,433,436,437,394],{},[383,398,399],{},"@ranklint\u002Fcli, @ranklint\u002Freporters",": New ",[402,403,404],"code",{},"ranklint dashboard"," command and ",[402,407,408],{},"dashboard()"," reporter: a single-file HTML monitoring dashboard for GitLab or GitHub Pages built from the stored monitor reports. It shows the latest run with deltas against the previous one, new and fixed issues by rule with errors first, trends for errors, warnings, Lighthouse scores and CrUX field data, Lighthouse by page and the history of every run with a per-run report in ",[402,411,412],{},"runs\u002F\u003Cdate>.html",". An issue explorer groups problems by rule or by page: every page gets a checklist of what to fix with the suggestion and docs link for each rule, the affected elements and a NEW mark, and a \"Fix once\" block lists issues repeated across a section or the whole site that are fixed in one template. Optional branding with ",[402,415,416],{},"--logo",", ",[402,419,420],{},"--brand-name"," and ",[402,423,424],{},"--accent",": your logo top left, one accent color for the whole page and a \"powered by ranklint\" line in the side panel. A ",[402,427,428],{},"--run-url"," button opens the CI pipeline form. The html reporter (",[402,431,432],{},"--reporter html",[402,434,435],{},"--html-output",") gets the same design: issues grouped by page by default, the explorer with filters and a Web Vitals section with CrUX ratings and a Lighthouse table. Pages embed their data and script and load the brand fonts from Google Fonts, falling back to system fonts offline. (",[388,438,441],{"href":439,"rel":440},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002Fe35b41d",[392],"e35b41d",[380,443,444,447,448,451,452,454,455,421,458,417,461,417,464,417,467,417,470,417,473,417,476,417,479,417,482,485,486,421,489,491,492,394],{},[383,445,446],{},"@ranklint\u002Fcore",": Export ",[402,449,450],{},"isTrackingParam(name)"," from ",[402,453,446],{},": true for ",[402,456,457],{},"utm_*",[402,459,460],{},"gclid",[402,462,463],{},"gbraid",[402,465,466],{},"wbraid",[402,468,469],{},"fbclid",[402,471,472],{},"yclid",[402,474,475],{},"msclkid",[402,477,478],{},"_gl",[402,480,481],{},"mc_cid",[402,483,484],{},"mc_eid",". ",[402,487,488],{},"normalizeUrl",[402,490,246],{}," share this list. (",[388,493,496],{"href":494,"rel":495},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F1f669ea",[392],"1f669ea",[372,498,500],{"id":499},"fixes","Fixes",[377,502,503,566,595,605,631,722,767],{},[380,504,505,508,509,512,513,516,517,417,520,516,523,526,527,530,531,534,535,538,539,421,542,485,545,417,547,417,549,417,551,417,553,421,555,557,558,560,561,394],{},[383,506,507],{},"@ranklint\u002Fchecks, @ranklint\u002Fcli, @ranklint\u002Fcore",": The crawler no longer treats a page that redirects to another origin as a page of the site: it is counted in ",[402,510,511],{},"crawlStats.external",", its links are not crawled and page checks don't run on its HTML. Links of a page redirected inside the site resolve against the final URL, and several URLs redirecting to one final URL give a single snapshot, reported under the final URL. An entry URL redirecting to another origin (",[402,514,515],{},"example.com"," → ",[402,518,519],{},"www.example.com",[402,521,522],{},"http",[402,524,525],{},"https",") is reported as a ",[402,528,529],{},"crawl:entry-redirect"," error instead of an empty audit. ",[402,532,533],{},"PageSnapshot"," gets an optional ",[402,536,537],{},"finalUrl",", filled by ",[402,540,541],{},"HttpFetcher",[402,543,544],{},"PlaywrightFetcher",[402,546,234],{},[402,548,242],{},[402,550,250],{},[402,552,246],{},[402,554,238],{},[402,556,263],{}," resolve relative URLs against ",[402,559,537],{}," when it is set. (",[388,562,565],{"href":563,"rel":564},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F41da7b8",[392],"41da7b8",[380,567,568,571,572,574,575,421,577,579,580,417,582,421,584,586,587,589,590,394],{},[383,569,570],{},"@ranklint\u002Fchecks",": Collapse line breaks and repeated spaces in H1 and title text: ",[402,573,213],{}," no longer reports multi-line headings as client-side only, ",[402,576,129],{},[402,578,295],{}," measure the normalized text, and ",[402,581,145],{},[402,583,287],{},[402,585,283],{}," group duplicates that differ only in whitespace. ",[402,588,158],{}," matches not-found titles split across lines and shows the normalized title in the message. (",[388,591,594],{"href":592,"rel":593},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F98e44d7",[392],"98e44d7",[380,596,597,599,600,394],{},[383,598,570],{},": i18n:no-locale-leak ignores subtrees whose lang attribute differs from the page language (",[388,601,604],{"href":602,"rel":603},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F660be37",[392],"660be37",[380,606,607,610,611,421,613,616,617,421,620,623,624,627,628,394],{},[383,608,609],{},"@ranklint\u002Fchecks, @ranklint\u002Freporters",": ",[402,612,246],{},[402,614,615],{},"images:*"," escape ",[402,618,619],{},"\"",[402,621,622],{},"\\"," in the attribute value of the issue selector. ",[402,625,626],{},"markdownDiff",", the monitor dashboard and Slack\u002FTelegram notifications list new and fixed issues by severity (error, warn, info), so errors are not cut off by the item limit. (",[388,629,496],{"href":494,"rel":630},[392],[380,632,633,635,636,638,639,642,643,646,647,650,651,654,655,658,659,662,663,665,666,417,669,672,673,675,676,421,678,681,682,685,686,689,690,693,694,697,698,701,702,705,706,708,709,712,713,716,717,394],{},[383,634,507],{},": Page checks skip 4xx\u002F5xx snapshots, so an HTML 404 behind a broken link no longer raises canonical or duplicate title issues; the broken link itself is still reported by ",[402,637,234],{},". New ",[402,640,641],{},"crawl.respectRobots"," option (default ",[402,644,645],{},"true","): the crawler loads ",[402,648,649],{},"\u003Corigin>\u002Frobots.txt"," once and does not crawl links disallowed for ",[402,652,653],{},"*"," or for the group matching ",[402,656,657],{},"crawl.userAgent","; entry URLs are always crawled and the count is reported as ",[402,660,661],{},"crawlStats.disallowed"," and in the crawl log. The robots.txt parser moved to ",[402,664,446],{}," (",[402,667,668],{},"parseRobotsTxt",[402,670,671],{},"isPathDisallowed",", still re-exported by ",[402,674,570],{},") and now supports Google ",[402,677,653],{},[402,679,680],{},"$"," patterns, percent-encoded and non-ASCII paths and most specific user agent group selection. robots.txt is read from the raw response (",[402,683,684],{},"ssrHtml",") so browser-rendered fetchers no longer hide its rules from the crawler and ",[402,687,688],{},"robots:*"," checks. Entry URLs are exempt from robots.txt, ",[402,691,692],{},"sitemap+sample"," samples are not. New ",[402,695,696],{},"lighthouse.urls"," option pins the exact list of paths or URLs measured by Lighthouse in ",[402,699,700],{},"audit"," and the ",[402,703,704],{},"lighthouse"," command; an empty list counts as not set. ",[402,707,615],{}," issues for ",[402,710,711],{},"data:"," images use a structural ",[402,714,715],{},"nth-of-type"," selector instead of embedding the data URI. (",[388,718,721],{"href":719,"rel":720},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F4cab41d",[392],"4cab41d",[380,723,724,610,727,729,730,417,732,417,734,417,736,417,738,417,740,417,742,417,744,417,746,417,748,750,751,754,755,417,757,421,759,761,762,394],{},[383,725,726],{},"@ranklint\u002Fchecks, @ranklint\u002Fcore",[402,728,488],{}," strips tracking params (",[402,731,457],{},[402,733,460],{},[402,735,463],{},[402,737,466],{},[402,739,469],{},[402,741,472],{},[402,743,475],{},[402,745,478],{},[402,747,481],{},[402,749,484],{},"), so the crawler no longer visits ",[402,752,753],{},"\u002Fa?utm_source=x"," as a separate page. ",[402,756,234],{},[402,758,242],{},[402,760,250],{}," check such links once and still report the original href. (",[388,763,766],{"href":764,"rel":765},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002Fd1c054c",[392],"d1c054c",[380,768,769,771,772,775,776,779,780,421,783,665,786,394],{},[383,770,446],{},": Route patterns ending with ",[402,773,774],{},"\u002F**"," match their prefix as a glob, so ",[402,777,778],{},"\u002F*\u002Fmarket\u002F**"," covers ",[402,781,782],{},"\u002Fen\u002Fmarket",[402,784,785],{},"\u002Fen\u002Fmarket\u002Fcars",[388,787,790],{"href":788,"rel":789},"https:\u002F\u002Fgithub.com\u002Faakazancev\u002Franklint\u002Fcommit\u002F81088bc",[392],"81088bc",[372,792,794],{"id":793},"highlights","Highlights",[368,796,797,798,800,801,417,803,421,805,807,808,810,811,813],{},"ranklint 1.1.0 turns monitor mode into a place to read results. ",[402,799,404],{}," builds a single-file HTML dashboard from the stored monitor reports, ready for GitLab or GitHub Pages: the latest run with deltas, new and fixed issues with errors first, trends for errors, Lighthouse scores and CrUX field data, a per-run report for every date and an issue explorer that turns each page into a checklist of what to fix. A \"Fix once\" block lists problems repeated across a section or the whole site, and ",[402,802,416],{},[402,804,420],{},[402,806,424],{}," put your brand on it. The crawler now respects robots.txt, follows redirects to the final URL, skips pages that redirect off the site and drops tracking parameters when it dedupes URLs; ",[402,809,696],{}," pins Lighthouse to your key pages, and the new ",[402,812,246],{}," rule flags internal links with UTM tags.",{"title":815,"searchDepth":816,"depth":816,"links":817},"",2,[818,819,820],{"id":374,"depth":816,"text":375},{"id":499,"depth":816,"text":500},{"id":793,"depth":816,"text":794},"New rule links:no-utm-internal (warn) flags internal links that carry UTM or click-id parameters (utm\\_\\*, gclid, gbraid, wbraid, fbclid, yclid, msclkid, \\_gl,…","md",null,{"date":825},"2026-10-11","\u002Fen\u002Fchangelog\u002Fv1.1.0",{"title":363,"description":821},"en\u002F8.changelog\u002Fv1.1.0","vI-6yebVArgC_Dvtz7iW5xdeexuX8x3HOqk4LPt4Jb0",[823,823],1791750382005]