https://www.yahoo.com/news/us/articles/states-had-most-dog-attacks-202320752.html
1
6
17
Response status code: 200
The page should return HTTP 200. Redirects (3xx) are followed before this check, so anything other than 200 here is a real error.
Expected: 200
Value: 200
"Date": Tue, 16 Jun 2026 19:43:17 GMT
"X-Robots-Tag"
A server-level robots directive sent as an HTTP header. If it contains noindex, search engines will not index the page even if the HTML and robots meta tag say otherwise.
Expected: no noindex directive
Value: (not set)
"Content-Type"
[ + ] [ + ]An SEO audit target should be served as text/html. PDFs, JSON, or other content types are not crawled the same way.
Expected: text/html
Value: text/html; charset=utf-8
"Cache-Control"
[ + ] [ + ]Tells browsers and intermediaries how long to cache the response. Missing cache-control means clients fall back to heuristic defaults, which can hurt repeat-visit performance.
Expected: present
Value: max-age=0, private
"Strict-Transport-Security"
[ + ] [ + ]HSTS header tells browsers to only connect to this domain over HTTPS. A security best practice and a minor ranking signal.
Expected: present
Present: false
robots.txt allows our user agent
[ + ] [ + ]The site's robots.txt must allow our user agent. If disallowed, the audit returns 502 and is not charged.
Expected: allowed
Allowed: true
User agent: minifetch/1.0 (+https://minifetch.com/site-owner-faq)
served over HTTPS
[ + ] [ + ]SEO-relevant pages should be served over HTTPS. Search engines penalize http pages, browsers show 'Not Secure' warnings, and mixed content protections only activate over HTTPS. This finding looks at the URL we actually fetched (post-redirect), so an audit of http://example.com that redirects to https://example.com passes.
Expected: https
Scheme: https
no http:// resources on this HTTPS page
[ + ] [ + ]On an HTTPS page, any resource loaded over http:// is mixed content. Browsers block active mixed content (scripts, iframes, stylesheets) and warn on passive (images, video). The resources array lists the first 20 offending URLs so you know what to fix; the count and omitted fields tell you the full total.
Expected: 0
Count: 1
Resources loaded over http://:
http://informeddelivery.usps.comtitle
[ + ] [ + ]The clickable headline shown in Google search results. 30–60 characters is the healthy range, and the upper end (50–60) uses the available width best. Over ~60 characters Google truncates the title and may drop important words. A short title is not broken — it renders fine — but it leaves room to add keywords or communicate the page value, so we flag it as an opportunity rather than an error.
Expected: 30-60 chars
Value: Which states had the most dog attacks on USPS mail carriers? See list
Length: 69 chars
description
[ + ] [ + ]Often used as the snippet under the title in search results. 70–155 characters is the healthy range. Over ~155 characters Google truncates the snippet; under 70 it still renders fine but leaves room to add benefits, USPs, or a call to action — so a short description is flagged as a missed opportunity, not an error. Google may rewrite the description regardless, but a strong one still influences click-through.
Expected: 70-155 chars
Value: A new report from the USPS, released ahead of National Dog Bite Awareness Week, highlighted the issue and urged owners to exercise caution.
Length: 139 chars
canonical tag present
[ + ] [ + ]Tells search engines which URL is the master version when duplicate content exists across multiple URLs. Can appear in the HTML or the Link response header. If both are present they must agree (a disagreement is a fail), and the canonical must be a parseable URL (an unparseable one is a fail, flagged by malformed: true). If no canonical is declared, search engines self-canonicalize the page to its own URL, which is fine unless the page has duplicate URLs the audit cannot see. So a missing canonical is surfaced as information, not graded.
Expected: present
Value: https://www.usatoday.com/story/news/nation/2026/06/01/highest-dog-attacks-usps-mail-carriers-state-city-ranking/90355663007/
Source: html
Malformed (unparseable): false
Conflict between HTML and Link header: false
canonical points to this page
[ + ] [ + ]Whether the declared canonical points back at the URL we fetched: value true means it points at this page, false means it points elsewhere. When the canonical is missing or unparseable there's nothing to compare, so this is informational (a note, no status); the canonical finding above carries the detail. If it points elsewhere (false), Google likely treats this page as a duplicate, consolidates ranking signals to the canonical target, and usually shows that URL instead — though a cross-domain canonical is a strong hint Google can still override. Pointing elsewhere is usually deliberate (syndicated content crediting the original), so it's a warn, not a fail. The crossDomain field flags an off-domain canonical as informational, doesn't change status.
Expected: true
Value: false
Canonical URL: https://www.usatoday.com/story/news/nation/2026/06/01/highest-dog-attacks-usps-mail-carriers-state-city-ranking/90355663007/
Cross-domain: true
robots meta tag
[ + ] [ + ]The robots meta tag controls whether search engines index this page and follow its links. If absent, Google assumes "index, follow". A noindex value keeps the page out of search results; often intentional (admin pages, staging environments, internal search results) which is why this surfaces as a warn rather than a fail. Same logic as canonicalMatchesSelf: page is opting out of indexing, we surface it but don't presume to grade it.
Expected: no noindex directive
Value: index, follow, max-image-preview:large
lang attribute on <html> tag
The lang attribute on the top-level <html> tag tells search engines and screen readers what language the page is in. Helps with accessibility and international SEO.
Expected: present
Value: en-US
viewport
[ + ] [ + ]The viewport meta tag tells mobile browsers how to size the page. Pages without it are flagged as not mobile-friendly, which is a ranking factor.
Expected: present
Value: width=device-width, initial-scale=1
hreflang: no hreflang tags declared
structured data blocks
[ + ] [ + ]JSON-LD structured data makes pages eligible for rich results in search (recipe cards, product listings, review stars, etc). itemCount is the number of top-level items Google can evaluate. @graph arrays are expanded so each node counts as its own item, the way Google reads them. types lists the distinct top-level item types; nestedTypes lists supporting entity types found inside those items (an author Person, a logo ImageObject, breadcrumb ListItems) and is informational, since Google treats them as properties of their parent item rather than standalone items. At least one typed item makes the page eligible.
Expected: ≥1 item
Item count (top-level): 2
Item types: NewsArticle, VideoObject
Nested types: Organization, ImageObject, Person
exactly one <h1>
Search engines treat the h1 as the page's primary topic. Multiple h1s dilute the signal; zero h1s leave the page without a clear subject.
Expected: 1
Count: 1
headings hierarchy
[ + ] [ + ]Heading levels should descend without skipping (h2 → h3, not h2 → h4). Skipped levels confuse screen readers and weaken the document's logical structure.
Expected: no skips
Skips found: (none)
word count: 2695
Visible text word count after stripping HTML tags, scripts, and styles. Under ~300 words is the classic thin-content threshold — but context matters: a 150-word product page with price, specs, and a buy button is not thin content. Use alongside content/HtmlRatio for a fuller picture.
content/HTML ratio: 2.2%
Ratio of visible text bytes to total HTML bytes, as a percentage. A very low ratio (e.g. under 10%) suggests the page is mostly markup and boilerplate with little actual content. Complements wordCount — a 150-word page at 40% text is different from a 150-word page at 2% text.
total images on page: 61
images missing alt text
[ + ] [ + ]Alt text describes images for screen readers and shows up when images fail to load. Search engines also use it to understand image content. Empty alt="" is counted as missing here — decorative images legitimately use empty alt, but on SEO-targeted pages this is rare and worth flagging.
Expected: 0
Count: 57
images missing width/height
[ + ] [ + ]Width and height attributes prevent Cumulative Layout Shift (CLS), a Core Web Vitals metric and a ranking factor. Without them, the page jumps around as images load.
Expected: 0
Count: 17
total links: 230 (internal: 90, external: 140)
in-page anchor links: 1
nofollow links: 5
top internal link targets: 10 unique
Internal pages this page links to most. Counts dedupe query strings and fragments so /pricing?ref=x and /pricing#plans both count as /pricing. Anchor text variants are listed when more than one was used.
https://www.yahoo.com/ — 8× ("News" ×3, "USEnglish" ×2, "Return to Homepage", "Yahoo!")https://www.yahoo.com/news/ — 5× ("Today's news" ×2, "The 360")https://www.yahoo.com/news/us/ — 2× ("US" ×2)https://www.yahoo.com/news/politics/ — 2× ("Politics" ×2)https://www.yahoo.com/news/world/ — 2× ("World" ×2)https://www.yahoo.com/issues/climate-change/ — 2× ("Climate change" ×2)https://www.yahoo.com/news/science/ — 2× ("Science" ×2)https://www.yahoo.com/guides/originals/ — 2× ("Originals" ×2)https://www.yahoo.com/games — 2× ("Games" ×2)https://www.yahoo.com/lifestyle/ — 2× ("Life" ×2)top external domains: 40 unique
External domains this page links out to most.
health.yahoo.com — 26×sports.yahoo.com — 24×finance.yahoo.com — 19×shopping.yahoo.com — 8×tech.yahoo.com — 4×legal.yahoo.com — 3×weather.yahoo.com — 2×news.yahoo.com — 2×travel.yahoo.com — 2×autos.yahoo.com — 2×links with empty text
[ + ] [ + ]Counts links with no visible text, no wrapped image, and no aria-label attribute. Screen readers and search engines have nothing to announce or index for these. Icon and SVG links with aria-label are accessible and excluded from this count. Empty link text is also a Google ranking concern because Google uses anchor text to understand what a link points to.
Expected: 0
Count: 3
Open Graph tags
[ + ] [ + ]Open Graph tags control how the page renders when shared on Facebook, LinkedIn, Slack, and most other platforms. og:title, og:description, og:image, and og:type are the minimum required set.
Expected: og:title, og:description, og:image, og:type
Present: og:title, og:description, og:image, og:type
Missing: (none)
og:url points to this page
[ + ] [ + ]Whether og:url points back at the URL we fetched: value true means it points at this page, false means elsewhere. Social platforms use og:url as the 'canonical URL for sharing'; it determines which URL accumulates engagement (likes, shares) and is shown as the destination in the share card. Pointing elsewhere (false) is a warn, often intentional for syndicated content. When og:url is absent this is informational (a note). Platforms fall back to the shared URL, a non-issue. A present-but-unparseable og:url is a fail (a note, no boolean value).
Expected: true
Value: true
og:url: https://www.yahoo.com/news/us/articles/states-had-most-dog-attacks-202320752.html
Cross-domain: false
Twitter Card tags
[ + ] [ + ]Twitter Card tags control rendering on X / Twitter. twitter:card, twitter:title, and twitter:image are the ideal set, but X falls back to Open Graph when a twitter tag is absent — twitter:title to og:title, twitter:image to og:image, and the card itself renders off og:image. This audit credits that fallback: a twitter tag is only counted as missing when its Open Graph equivalent is also absent, so a page with solid Open Graph tags passes even with no twitter-specific tags. The presentViaOpenGraphFallback field lists which fields are covered by Open Graph rather than declared directly.
Expected: twitter:card, twitter:title, twitter:image
Present: twitter:card, twitter:title, twitter:image
Covered by Open Graph fallback: (none)
Missing: (none)
{
"success": true,
"results": [
{
"data": {
"summary": {
"pass": 17,
"warn": 6,
"fail": 1
},
"requestUrl": "https://www.yahoo.com/news/us/articles/states-had-most-dog-attacks-202320752.html",
"url": "https://www.yahoo.com/news/us/articles/states-had-most-dog-attacks-202320752.html",
"responseStatusCode": {
"status": "pass",
"expected": 200,
"value": 200
},
"responseHeaders": {
"date": {
"value": "Tue, 16 Jun 2026 19:43:17 GMT"
},
"x-robots-tag": {
"status": "pass",
"expected": "no noindex directive",
"value": null
},
"content-type": {
"status": "pass",
"expected": "text/html",
"value": "text/html; charset=utf-8"
},
"cache-control": {
"status": "pass",
"expected": "present",
"value": "max-age=0, private"
},
"strict-transport-security": {
"status": "warn",
"expected": "present",
"present": false
}
},
"compliance": {
"robotsTxt": {
"status": "pass",
"expected": "allowed",
"allowed": true,
"userAgent": "minifetch/1.0 (+https://minifetch.com/site-owner-faq)"
},
"https": {
"status": "pass",
"expected": "https",
"value": "https"
},
"mixedContent": {
"status": "fail",
"expected": 0,
"count": 1,
"resources": [
"http://informeddelivery.usps.com"
],
"omitted": 0
}
},
"metadata": {
"title": {
"status": "warn",
"expected": "30-60",
"value": "Which states had the most dog attacks on USPS mail carriers? See list",
"length": 69
},
"description": {
"status": "pass",
"expected": "70-155",
"value": "A new report from the USPS, released ahead of National Dog Bite Awareness Week, highlighted the issue and urged owners to exercise caution.",
"length": 139
},
"canonical": {
"status": "pass",
"expected": "present",
"value": "https://www.usatoday.com/story/news/nation/2026/06/01/highest-dog-attacks-usps-mail-carriers-state-city-ranking/90355663007/",
"source": "html",
"malformed": false,
"conflictWithLinkHeader": false
},
"canonicalMatchesSelf": {
"status": "warn",
"expected": true,
"value": false,
"canonicalUrl": "https://www.usatoday.com/story/news/nation/2026/06/01/highest-dog-attacks-usps-mail-carriers-state-city-ranking/90355663007/",
"crossDomain": true
},
"robots": {
"status": "pass",
"expected": "no noindex directive",
"value": "index, follow, max-image-preview:large"
},
"lang": {
"status": "pass",
"expected": "present",
"value": "en-US"
},
"viewport": {
"status": "pass",
"expected": "present",
"value": "width=device-width, initial-scale=1"
}
},
"hreflang": {
"note": "no hreflang tags declared",
"count": 0
},
"jsonld": {
"status": "pass",
"expected": "≥1 item",
"itemCount": 2,
"types": [
"NewsArticle",
"VideoObject"
],
"nestedTypes": [
"Organization",
"ImageObject",
"Person"
]
},
"headings": {
"h1": {
"status": "pass",
"expected": 1,
"count": 1
},
"hierarchy": {
"status": "pass",
"expected": "no skips",
"skips": []
}
},
"content": {
"wordCount": 2695,
"contentHtmlRatio": 2.2
},
"images": {
"total": 61,
"missingAlt": {
"status": "warn",
"expected": 0,
"count": 57
},
"missingDimensions": {
"status": "warn",
"expected": 0,
"count": 17
}
},
"links": {
"total": 230,
"anchorCount": 1,
"nofollowCount": 5,
"internal": {
"count": 90,
"uniqueTargets": 10,
"topInternalTargets": [
{
"url": "https://www.yahoo.com/",
"count": 8,
"anchorTexts": [
{
"text": "News",
"count": 3
},
{
"text": "USEnglish",
"count": 2
},
{
"text": "Return to Homepage",
"count": 1
},
{
"text": "Yahoo!",
"count": 1
}
]
},
{
"url": "https://www.yahoo.com/news/",
"count": 5,
"anchorTexts": [
{
"text": "Today's news",
"count": 2
},
{
"text": "The 360",
"count": 1
}
]
},
{
"url": "https://www.yahoo.com/news/us/",
"count": 2,
"anchorTexts": [
{
"text": "US",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/news/politics/",
"count": 2,
"anchorTexts": [
{
"text": "Politics",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/news/world/",
"count": 2,
"anchorTexts": [
{
"text": "World",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/issues/climate-change/",
"count": 2,
"anchorTexts": [
{
"text": "Climate change",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/news/science/",
"count": 2,
"anchorTexts": [
{
"text": "Science",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/guides/originals/",
"count": 2,
"anchorTexts": [
{
"text": "Originals",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/games",
"count": 2,
"anchorTexts": [
{
"text": "Games",
"count": 2
}
]
},
{
"url": "https://www.yahoo.com/lifestyle/",
"count": 2,
"anchorTexts": [
{
"text": "Life",
"count": 2
}
]
}
]
},
"external": {
"count": 140,
"uniqueDomains": 40,
"topExternalDomains": [
{
"domain": "health.yahoo.com",
"count": 26
},
{
"domain": "sports.yahoo.com",
"count": 24
},
{
"domain": "finance.yahoo.com",
"count": 19
},
{
"domain": "shopping.yahoo.com",
"count": 8
},
{
"domain": "tech.yahoo.com",
"count": 4
},
{
"domain": "legal.yahoo.com",
"count": 3
},
{
"domain": "weather.yahoo.com",
"count": 2
},
{
"domain": "news.yahoo.com",
"count": 2
},
{
"domain": "travel.yahoo.com",
"count": 2
},
{
"domain": "autos.yahoo.com",
"count": 2
}
]
},
"emptyLinkText": {
"status": "warn",
"expected": 0,
"count": 3
}
},
"social": {
"openGraph": {
"status": "pass",
"expected": "og:title, og:description, og:image, og:type",
"present": [
"og:title",
"og:description",
"og:image",
"og:type"
],
"missing": []
},
"openGraphUrlMatchesSelf": {
"status": "pass",
"expected": true,
"value": true,
"ogUrl": "https://www.yahoo.com/news/us/articles/states-had-most-dog-attacks-202320752.html",
"crossDomain": false
},
"twitterCard": {
"status": "pass",
"expected": "twitter:card, twitter:title, twitter:image",
"present": [
"twitter:card",
"twitter:title",
"twitter:image"
],
"presentViaOpenGraphFallback": [],
"missing": []
}
},
"minifetchCache": {
"hit": "false",
"cachedAt": "2026-06-16T19:43:17.233Z",
"expiresAt": "2026-06-16T19:45:17.233Z"
}
}
}
]
}
Technical SEO audit result for yahoo.com — pass/warn/fail checks all major technical SEO signals. Run it on your own URLs.
Full API Docs for /run/seo-page-audit → Fetch another URL →