{
  "audits/ad-blocking-tasks.js | columnDuration": {
    "message": "Duration",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | columnScript": {
    "message": "Attributable URL",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | description": {
    "message": "Tasks blocking the main thread can delay ad requests and cause a poor user experience. Consider removing long blocking tasks or moving them off of the main thread. These tasks can be especially detrimental to performance on less powerful devices. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-blocking-tasks).",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | failureDisplayValue": {
    "message": "{timeInMs, number, seconds} s blocked",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | failureTitle": {
    "message": "Avoid long tasks that block ad-related network requests",
    "description": ""
  },
  "audits/ad-blocking-tasks.js | title": {
    "message": "No long tasks blocking ad-related network requests",
    "description": "Title of the audit"
  },
  "audits/ad-render-blocking-resources.js | columnDuration": {
    "message": "Duration",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | columnUrl": {
    "message": "Resource",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | description": {
    "message": "Render-blocking resources slow down tag load times. Consider loading critical JS/CSS inline or loading scripts asynchronously or loading the tag earlier in the head. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/blocking-resources).",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | failureDisplayValue": {
    "message": "Up to {timeInMs, number, seconds} s tag load time improvement",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | failureTitle": {
    "message": "Avoid render-blocking resources",
    "description": ""
  },
  "audits/ad-render-blocking-resources.js | title": {
    "message": "Minimal render-blocking resources found",
    "description": ""
  },
  "audits/ad-request-critical-path.js | columnEndTime": {
    "message": "End",
    "description": ""
  },
  "audits/ad-request-critical-path.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/ad-request-critical-path.js | columnType": {
    "message": "Type",
    "description": ""
  },
  "audits/ad-request-critical-path.js | columnUrl": {
    "message": "Request",
    "description": ""
  },
  "audits/ad-request-critical-path.js | description": {
    "message": "Consider reducing the number of resources, loading multiple resources simultaneously, or loading resources earlier to improve ad speed. Requests that block ad loading can be found below. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-request-critical-path).",
    "description": ""
  },
  "audits/ad-request-critical-path.js | displayValue": {
    "message": "{serialResources, plural, =1 {1 serial resource} other {# serial resources}}",
    "description": ""
  },
  "audits/ad-request-critical-path.js | failureTitle": {
    "message": "Reduce critical path for ad loading",
    "description": ""
  },
  "audits/ad-request-critical-path.js | title": {
    "message": "Ad request waterfall",
    "description": ""
  },
  "audits/ad-request-from-page-start.js | description": {
    "message": "This metric measures the elapsed time from the start of page load until the first ad request is made. Delayed ad requests will decrease impressions and viewability, and have a negative impact on ad revenue. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-request-from-page-start).",
    "description": ""
  },
  "audits/ad-request-from-page-start.js | displayValue": {
    "message": "{timeInMs, number, seconds} s",
    "description": ""
  },
  "audits/ad-request-from-page-start.js | failureTitle": {
    "message": "Reduce time to send the first ad request",
    "description": ""
  },
  "audits/ad-request-from-page-start.js | title": {
    "message": "First ad request time",
    "description": ""
  },
  "audits/ad-request-from-tag-load.js | description": {
    "message": "This metric measures the elapsed time from when the Google Publisher Tag loads until the first ad request is made. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-request-from-tag-load).",
    "description": ""
  },
  "audits/ad-request-from-tag-load.js | displayValue": {
    "message": "{timeInMs, number, seconds} s",
    "description": ""
  },
  "audits/ad-request-from-tag-load.js | failureTitle": {
    "message": "Reduce latency of first ad request (from tag load)",
    "description": ""
  },
  "audits/ad-request-from-tag-load.js | title": {
    "message": "Latency of first ad request, from tag load",
    "description": ""
  },
  "audits/ad-top-of-viewport.js | columnSlot": {
    "message": "Top Slot ID",
    "description": ""
  },
  "audits/ad-top-of-viewport.js | description": {
    "message": "Over 10% of ads are never viewed because users scroll past them before they become viewable. By moving ad slots away from the very top of the viewport, users are more likely to see ads before scrolling away. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ad-top-of-viewport).",
    "description": ""
  },
  "audits/ad-top-of-viewport.js | failureDisplayValue": {
    "message": "A scroll of {valueInPx, number} px would hide half of your topmost ad",
    "description": ""
  },
  "audits/ad-top-of-viewport.js | failureTitle": {
    "message": "Move the top ad further down the page",
    "description": ""
  },
  "audits/ad-top-of-viewport.js | title": {
    "message": "No ad found at the very top of the viewport",
    "description": ""
  },
  "audits/ads-in-viewport.js | columnSlot": {
    "message": "Slots Outside Viewport",
    "description": ""
  },
  "audits/ads-in-viewport.js | description": {
    "message": "Too many ads loaded outside the viewport lowers viewability rates and impacts user experience. Consider loading ads below the fold lazily as the user scrolls down. Consider using GPT's [Lazy Loading API](https://developers.google.com/doubleclick-gpt/reference#googletag.PubAdsService_enableLazyLoad). [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/ads-in-viewport).",
    "description": ""
  },
  "audits/ads-in-viewport.js | failureDisplayValue": {
    "message": "{hiddenAds, plural, =1 {1 ad} other {# ads}} out of view",
    "description": ""
  },
  "audits/ads-in-viewport.js | failureTitle": {
    "message": "Avoid loading ads until they are nearly on-screen",
    "description": ""
  },
  "audits/ads-in-viewport.js | title": {
    "message": "Few or no ads loaded outside viewport",
    "description": ""
  },
  "audits/async-ad-tags.js | description": {
    "message": "Loading the ad tag synchronously blocks content rendering until the tag is fetched and loaded. Consider using the `async` attribute to load gpt.js and/or adsbygoogle.js asynchronously. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/async-ad-tags).",
    "description": ""
  },
  "audits/async-ad-tags.js | failureTitle": {
    "message": "Load ad tag asynchronously",
    "description": ""
  },
  "audits/async-ad-tags.js | title": {
    "message": "Ad tag is loaded asynchronously",
    "description": ""
  },
  "audits/bid-request-from-page-start.js | description": {
    "message": "This metric measures the elapsed time from the start of page load until the first bid request is made. Delayed bid requests will decrease impressions and viewability, and have a negative impact on ad revenue. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/bid-request-from-page-start).",
    "description": ""
  },
  "audits/bid-request-from-page-start.js | displayValue": {
    "message": "{timeInMs, number, seconds} s",
    "description": ""
  },
  "audits/bid-request-from-page-start.js | failureTitle": {
    "message": "Reduce time to send the first bid request",
    "description": ""
  },
  "audits/bid-request-from-page-start.js | title": {
    "message": "First bid request time",
    "description": ""
  },
  "audits/blocking-load-events.js | columnBlockedUrl": {
    "message": "Blocked URL",
    "description": ""
  },
  "audits/blocking-load-events.js | columnEvent": {
    "message": "Event Name",
    "description": ""
  },
  "audits/blocking-load-events.js | columnFunctionName": {
    "message": "Function",
    "description": ""
  },
  "audits/blocking-load-events.js | columnScript": {
    "message": "Script",
    "description": ""
  },
  "audits/blocking-load-events.js | columnTime": {
    "message": "Event Time",
    "description": ""
  },
  "audits/blocking-load-events.js | description": {
    "message": "Waiting on load events increases ad latency. To speed up ads, eliminate the following load event handlers. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/blocking-load-events).",
    "description": ""
  },
  "audits/blocking-load-events.js | displayValue": {
    "message": "{timeInMs, number, seconds} s blocked",
    "description": ""
  },
  "audits/blocking-load-events.js | failureTitle": {
    "message": "Avoid waiting on load events",
    "description": ""
  },
  "audits/blocking-load-events.js | title": {
    "message": "Ads not blocked by load events",
    "description": ""
  },
  "audits/bottleneck-requests.js | columnDuration": {
    "message": "Total Time",
    "description": ""
  },
  "audits/bottleneck-requests.js | columnInitiatorUrl": {
    "message": "Initiator Request",
    "description": ""
  },
  "audits/bottleneck-requests.js | columnSelfTime": {
    "message": "Exclusive Time",
    "description": ""
  },
  "audits/bottleneck-requests.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/bottleneck-requests.js | columnUrl": {
    "message": "Blocking Request",
    "description": ""
  },
  "audits/bottleneck-requests.js | description": {
    "message": "Speed up, load earlier, parallelize, or eliminate the following requests and their dependencies in order to speed up ad loading. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/bottleneck-requests).",
    "description": ""
  },
  "audits/bottleneck-requests.js | displayValue": {
    "message": "{blockedTime, number, seconds} s spent blocked on requests",
    "description": ""
  },
  "audits/bottleneck-requests.js | failureTitle": {
    "message": "Avoid bottleneck requests",
    "description": ""
  },
  "audits/bottleneck-requests.js | title": {
    "message": "No bottleneck requests found",
    "description": ""
  },
  "audits/duplicate-tags.js | columnFrameId": {
    "message": "Frame ID",
    "description": ""
  },
  "audits/duplicate-tags.js | columnNumReqs": {
    "message": "Duplicate Requests",
    "description": ""
  },
  "audits/duplicate-tags.js | columnScript": {
    "message": "Script",
    "description": ""
  },
  "audits/duplicate-tags.js | description": {
    "message": "Loading a tag more than once in the same page is redundant and adds overhead without benefit. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/duplicate-tags).",
    "description": ""
  },
  "audits/duplicate-tags.js | failureDisplayValue": {
    "message": "{duplicateTags, plural, =1 {1 duplicate tag} other {# duplicate tags}}",
    "description": ""
  },
  "audits/duplicate-tags.js | failureTitle": {
    "message": "Load tags only once",
    "description": ""
  },
  "audits/duplicate-tags.js | title": {
    "message": "No duplicate tags found",
    "description": ""
  },
  "audits/first-ad-render.js | description": {
    "message": "This metric measures the time for the first ad iframe to render from page navigation. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/first-ad-render).",
    "description": ""
  },
  "audits/first-ad-render.js | displayValue": {
    "message": "{timeInMs, number, seconds} s",
    "description": ""
  },
  "audits/first-ad-render.js | failureTitle": {
    "message": "Reduce time to render first ad",
    "description": ""
  },
  "audits/first-ad-render.js | title": {
    "message": "Latency of first ad render",
    "description": ""
  },
  "audits/full-width-slots.js | description": {
    "message": "Ad slots that utilize most of the page width generally experience increased click-through rate over smaller ad sizes. We recommend leaving no more than 25% of the viewport width unutilized on mobile devices.",
    "description": ""
  },
  "audits/full-width-slots.js | failureDisplayValue": {
    "message": "{percentUnused, number, percent} of viewport width is underutilized",
    "description": ""
  },
  "audits/full-width-slots.js | failureTitle": {
    "message": "Increase the width of ad slots",
    "description": ""
  },
  "audits/full-width-slots.js | title": {
    "message": "Ad slots effectively use horizontal space",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | columnBidder": {
    "message": "Bidder",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | columnDuration": {
    "message": "Duration",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | columnUrl": {
    "message": "URL",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | description": {
    "message": "To optimize ad loading, bid requests should not wait on GPT to load. This issue can often be fixed by making sure that bid requests do not wait on `googletag.pubadsReady` or `googletag.cmd.push`. [Learn More](https://developers.google.com/publisher-ads-audits/reference/audits/gpt-bids-parallel).",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | failureTitle": {
    "message": "Load GPT and bids in parallel",
    "description": ""
  },
  "audits/gpt-bids-parallel.js | title": {
    "message": "GPT and bids loaded in parallel",
    "description": ""
  },
  "audits/idle-network-times.js | causeDomContentLoaded": {
    "message": "DOMContentLoaded Event",
    "description": ""
  },
  "audits/idle-network-times.js | causeLoadEvent": {
    "message": "Load Event",
    "description": ""
  },
  "audits/idle-network-times.js | causeLongTask": {
    "message": "Long Task",
    "description": ""
  },
  "audits/idle-network-times.js | causeOther": {
    "message": "Other",
    "description": ""
  },
  "audits/idle-network-times.js | causeRenderBlockingResource": {
    "message": "Blocking Resource",
    "description": ""
  },
  "audits/idle-network-times.js | causeTimeout": {
    "message": "Timeout",
    "description": ""
  },
  "audits/idle-network-times.js | columnCause": {
    "message": "Suspected Cause",
    "description": ""
  },
  "audits/idle-network-times.js | columnDuration": {
    "message": "Duration",
    "description": ""
  },
  "audits/idle-network-times.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/idle-network-times.js | columnUrl": {
    "message": "Attributable URL",
    "description": ""
  },
  "audits/idle-network-times.js | description": {
    "message": "Moments of network idleness in the critical path to ad loading present opportunities to improve speed. Consider eliminating long tasks, timeouts, waiting on load events, or synchronous resources to avoid idleness. Chrome DevTools can be used to discover what is causing network idleness. [Learn more](https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference).",
    "description": ""
  },
  "audits/idle-network-times.js | displayValue": {
    "message": "{timeInMs, number, seconds} s spent idle in critical path",
    "description": ""
  },
  "audits/idle-network-times.js | failureTitle": {
    "message": "[Experimental] Reduce network idle time before ad requests",
    "description": ""
  },
  "audits/idle-network-times.js | title": {
    "message": "[Experimental] Network is efficiently utilized before ad requests",
    "description": ""
  },
  "audits/loads-ad-tag-over-https.js | description": {
    "message": "For privacy and security, always load GPT/AdSense over HTTPS. Insecure pages should explicitly request the ad script securely. GPT Example: `<script async src=\"https://securepubads.g.doubleclick.net/tag/js/gpt.js\">` AdSense Example: `<script async src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\">`. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/loads-ad-tag-over-https).",
    "description": ""
  },
  "audits/loads-ad-tag-over-https.js | failureTitle": {
    "message": "Load ad tag over HTTPS",
    "description": ""
  },
  "audits/loads-ad-tag-over-https.js | title": {
    "message": "Ad tag is loaded over HTTPS",
    "description": ""
  },
  "audits/loads-gpt-from-sgdn.js | description": {
    "message": "Load GPT from 'securepubads.g.doubleclick.net' to reduce GPT load time. By loading GPT from the same host as ad requests, browsers can avoid an additional DNS lookup and HTTP connection. Example:`<script async src=\"https://securepubads.g.doubleclick.net/tag/js/gpt.js\">`. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/loads-gpt-from-sgdn).",
    "description": ""
  },
  "audits/loads-gpt-from-sgdn.js | failureTitle": {
    "message": "Load GPT from recommended host",
    "description": ""
  },
  "audits/loads-gpt-from-sgdn.js | title": {
    "message": "GPT tag is loaded from recommended host",
    "description": ""
  },
  "audits/script-injected-tags.js | columnLoadTime": {
    "message": "Load Time",
    "description": ""
  },
  "audits/script-injected-tags.js | columnUrl": {
    "message": "Script",
    "description": ""
  },
  "audits/script-injected-tags.js | description": {
    "message": "Load the following scripts directly with `<script async src=...>` instead of injecting scripts with JavaScript. Doing so allows the browser to preload scripts sooner. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/script-injected-tags).",
    "description": ""
  },
  "audits/script-injected-tags.js | failureDisplayValue": {
    "message": "Load {tags, plural, =1 {1 script} other {# scripts}} statically",
    "description": ""
  },
  "audits/script-injected-tags.js | failureTitle": {
    "message": "Load ad scripts statically",
    "description": ""
  },
  "audits/script-injected-tags.js | title": {
    "message": "Ad scripts are loaded statically",
    "description": ""
  },
  "audits/serial-header-bidding.js | columnBidder": {
    "message": "Bidder",
    "description": ""
  },
  "audits/serial-header-bidding.js | columnDuration": {
    "message": "Duration",
    "description": ""
  },
  "audits/serial-header-bidding.js | columnStartTime": {
    "message": "Start",
    "description": ""
  },
  "audits/serial-header-bidding.js | columnUrl": {
    "message": "URL",
    "description": ""
  },
  "audits/serial-header-bidding.js | description": {
    "message": "Send header bidding requests simultaneously, rather than serially, to retrieve bids more quickly. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/serial-header-bidding).",
    "description": ""
  },
  "audits/serial-header-bidding.js | failureTitle": {
    "message": "Parallelize bid requests",
    "description": ""
  },
  "audits/serial-header-bidding.js | title": {
    "message": "Header bidding is parallelized",
    "description": ""
  },
  "audits/tag-load-time.js | description": {
    "message": "This metric measures the time for the ad tag's implementation script (pubads_impl.js for GPT; adsbygoogle.js for AdSense) to load after the page loads. [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/tag-load-time).",
    "description": ""
  },
  "audits/tag-load-time.js | displayValue": {
    "message": "{timeInMs, number, seconds} s",
    "description": ""
  },
  "audits/tag-load-time.js | failureTitle": {
    "message": "Reduce tag load time",
    "description": ""
  },
  "audits/tag-load-time.js | title": {
    "message": "Tag load time",
    "description": ""
  },
  "audits/viewport-ad-density.js | description": {
    "message": "The ads-to-content ratio inside the viewport can have an impact on user experience and ultimately user retention. The Better Ads Standard [recommends having an ad density below 30%](https://www.betterads.org/mobile-ad-density-higher-than-30/). [Learn more](https://developers.google.com/publisher-ads-audits/reference/audits/viewport-ad-density).",
    "description": ""
  },
  "audits/viewport-ad-density.js | displayValue": {
    "message": "{adDensity, number, percent} covered by ads",
    "description": ""
  },
  "audits/viewport-ad-density.js | failureTitle": {
    "message": "Reduce ad density in initial viewport",
    "description": ""
  },
  "audits/viewport-ad-density.js | title": {
    "message": "Ad density in initial viewport is within recommended range",
    "description": ""
  },
  "messages/common-strings.js | ERRORS__AREA_LARGER_THAN_VIEWPORT": {
    "message": "Calculated ad area is larger than viewport",
    "description": ""
  },
  "messages/common-strings.js | ERRORS__VIEWPORT_AREA_ZERO": {
    "message": "Viewport area is zero",
    "description": ""
  },
  "messages/common-strings.js | GROUPS__ADS_BEST_PRACTICES": {
    "message": "Tag Best Practices",
    "description": ""
  },
  "messages/common-strings.js | GROUPS__ADS_PERFORMANCE": {
    "message": "Ad Speed",
    "description": ""
  },
  "messages/common-strings.js | GROUPS__METRICS": {
    "message": "Metrics",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__DEFAULT": {
    "message": "Audit not applicable",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__INVALID_TIMING": {
    "message": "Invalid timing task data",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_AD_RELATED_REQ": {
    "message": "No ad-related requests",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_AD_RENDERED": {
    "message": "No ads rendered",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_ADS": {
    "message": "No ads requested",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_ADS_VIEWPORT": {
    "message": "No ads in viewport",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_BIDS": {
    "message": "No bids detected",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_EVENT_MATCHING_REQ": {
    "message": "No event matches network records",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_GPT": {
    "message": "GPT not requested",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_RECORDS": {
    "message": "No successful network records",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_TAG": {
    "message": "No tag requested",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_TAGS": {
    "message": "No tags requested",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_TASKS": {
    "message": "No tasks to compare",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_VALID_AD_WIDTHS": {
    "message": "No requested ads contain ads of valid width",
    "description": ""
  },
  "messages/common-strings.js | NOT_APPLICABLE__NO_VISIBLE_SLOTS": {
    "message": "No visible slots",
    "description": ""
  },
  "messages/common-strings.js | WARNINGS__NO_AD_RENDERED": {
    "message": "No ads were rendered when rendering this page.",
    "description": ""
  },
  "messages/common-strings.js | WARNINGS__NO_ADS": {
    "message": "No ads were requested when fetching this page.",
    "description": ""
  },
  "messages/common-strings.js | WARNINGS__NO_TAG": {
    "message": "The GPT tag was not requested.",
    "description": ""
  },
  "plugin.js | categoryDescription": {
    "message": "A Lighthouse plugin to improve ad speed and overall quality that is targeted at sites using GPT or AdSense tag. [Learn more](https://developers.google.com/publisher-ads-audits/reference)",
    "description": ""
  }
}
