Skip to main content
The checker reports 31 distinct issues. Each carries a stable code, a severity, an importance, and — where a generic fix is possible — a snippet you can paste.
Issue codes are a public contract. New codes get added; existing ones are not renamed or removed without a deprecation. Branch on code, never on title or description, which are prose and may be reworded.

Severity

Importance

required tags every page needs, recommended tags most pages benefit from, optional refinements. Importance is about the tag; severity is about your page.

Score weight

Only some issues move the score, and they move it by different amounts — a missing og:image costs more than a missing og:locale because one of them decides whether anybody clicks. Issues listed below as “no score impact” are advice, not deductions.

Core HTML

missing_title

Missing title — warning, required, costs 10 points. This page has no <title>. It is the single most important piece of metadata, used by search engines and as the fallback for most social previews.
Laravel: Meta::title('Your page title');

empty_title

Empty title — warning, required, no score impact. A <title> tag is present but contains no text.
Laravel: Meta::title('Your page title');

title_too_long

Title may be truncated — tip, recommended, no score impact. Your title is N characters. Some platforms may truncate titles longer than about 60.
No generic fix: this one depends on your own content, so fix is null.

title_too_short

Title is quite short — tip, recommended, no score impact. Your title is N characters. Titles under about 30 often leave useful space unused.
No generic fix: this one depends on your own content, so fix is null.

missing_description

Missing description — warning, recommended, costs 10 points. This page has no meta description. Search engines and social platforms fall back to guessing at page content without one.
Laravel: Meta::description('A short summary of the page.');

description_too_long

Description may be truncated — tip, recommended, no score impact. Your description is N characters. Some platforms may truncate longer descriptions.
No generic fix: this one depends on your own content, so fix is null.

description_too_short

Description is quite short — tip, recommended, no score impact. Your description is N characters. Descriptions under about 70 often under-use the available space.
No generic fix: this one depends on your own content, so fix is null.

missing_canonical

Missing canonical URL — warning, recommended, costs 5 points. No canonical URL is declared. Without one, duplicate or parameterised versions of this page may be treated as separate pages.
Laravel: Meta::canonical(url()->current());

malformed_canonical

Malformed canonical URL — error, required, no score impact. The canonical URL is not an absolute http(s) URL. Canonical URLs must be absolute to be understood correctly.
Laravel: Meta::canonical(url()->current());

duplicate_canonical

More than one canonical URL — error, required, no score impact. This page declares 0 canonical URLs. Search engines may ignore all of them.
No generic fix: this one depends on your own content, so fix is null.

missing_favicon

Missing favicon — warning, recommended, costs 5 points. No favicon link was found. Browsers will fall back to /favicon.ico, which may not exist.
Laravel: Meta::favicon('/favicon.ico');

missing_og_title

Missing og:title — warning, recommended, costs 7 points. Without og:title, social platforms fall back to the page title, which may not be the wording you want when shared.
Laravel: Meta::openGraph()->title('Your page title');

missing_og_description

Missing og:description — warning, recommended, costs 7 points. Without og:description, shared links fall back to the meta description or to nothing at all.
Laravel: Meta::openGraph()->description('A short summary of the page.');

Open Graph

missing_og_url

Missing og:url — warning, recommended, costs 5 points. og:url tells platforms the canonical address of this page, so shares of parameterised URLs consolidate correctly.
Laravel: Meta::canonical(url()->current());

missing_og_type

Missing og:type — tip, recommended, costs 4 points. og:type describes what this page is. Most pages are “website”; articles benefit from “article”.
Laravel: Meta::type('website');

missing_og_image

Missing og:image — warning, recommended, costs 10 points. Without og:image, shared links appear as plain text with no thumbnail, which markedly reduces engagement.
Laravel: Meta::image(asset('og.png'), width: 1200, height: 630, alt: 'Description');

missing_og_image_dimensions

Missing image dimensions — tip, recommended, costs 4 points. og:image:width and og:image:height let platforms reserve layout space before the image loads, avoiding a reflow in the preview.
Laravel: Meta::image(asset('og.png'), width: 1200, height: 630);

missing_og_image_alt

Missing og:image:alt — tip, optional, costs 3 points. Alt text describes the preview image to people using screen readers. Optional, but a small accessibility win.
Laravel: Meta::image(asset('og.png'), alt: 'Description of the image');

missing_og_site_name

Missing og:site_name — tip, optional, costs 2 points. og:site_name lets platforms show your site name alongside the shared link. Optional.
Laravel: Meta::siteName('Your Site');

missing_og_locale

Missing og:locale — tip, optional, costs 2 points. og:locale declares the language and region of this content, such as en_US. Optional.
Laravel: Meta::locale('en_US');

Twitter Cards

missing_twitter_card

Missing twitter:card — warning, recommended, costs 5 points. Without twitter:card, X may render a smaller preview or none at all. “summary_large_image” gives the full-width image card.
Laravel: Meta::twitter()->card('summary_large_image');

missing_twitter_title

Missing twitter:title — tip, optional, costs 4 points. X falls back to og:title when twitter:title is absent, so this only matters if you want different wording there.
Laravel: Meta::twitter()->title('Your title');

missing_twitter_description

Missing twitter:description — tip, optional, costs 4 points. X falls back to og:description when twitter:description is absent.
Laravel: Meta::twitter()->description('A short summary.');

missing_twitter_image

Missing twitter:image — tip, optional, costs 5 points. X falls back to og:image when twitter:image is absent.
Laravel: Meta::twitter()->image(asset('og.png'));

missing_twitter_site

Missing twitter:site — tip, optional, costs 2 points. twitter:site attributes the content to your account handle. Optional.
Laravel: Meta::twitter()->site('@yourhandle');

Images

image_inaccessible

Social image could not be loaded — error, required, costs 2 points. The image at null could not be loaded (unreachable). Platforms will show your link without a thumbnail.
No generic fix: this one depends on your own content, so fix is null.

image_too_small

Social image is small — tip, recommended, no score impact. Your image is N by N. Platforms commonly render large cards at around 1200 by 630, and smaller images may be shown as a thumbnail instead.
No generic fix: this one depends on your own content, so fix is null.

image_dimensions_mismatch

Declared image dimensions do not match the file — warning, recommended, no score impact. The page declares N by N, but the file is N by N. Platforms that trust the declared size may lay the preview out incorrectly.
Laravel: Meta::image(asset('og.png'), width: 600, height: 315);

og_image_too_heavy

Social image is heavy — tip, recommended, no score impact. Your social image is N KB. Nothing will refuse it — the platform limits are several megabytes — but every service that unfurls your link refetches this file, and a 1200 by 630 image usually compresses to well under 500 KB with no visible loss. Only raised when the image was actually fetched and measured; a declared size proves nothing about the file.
No generic fix: re-exporting or recompressing is specific to your image, so fix is null.

Consistency and URLs

metadata_url_not_absolute

Metadata URL is not absolute — error, required, costs 3 points. One or more metadata URLs are relative. Social platforms do not resolve relative URLs and will treat them as missing.
No generic fix: this one depends on your own content, so fix is null.

insecure_metadata_url

Metadata URL uses http on an https page — tip, recommended, no score impact. This page is served over https but references metadata URLs over http. Some platforms decline to load mixed content.
No generic fix: this one depends on your own content, so fix is null.

metadata_inconsistent

Title and og:title differ — tip, optional, costs 3 points. Your <title> and og:title differ. That is often deliberate, but worth confirming it is intentional.
No generic fix: this one depends on your own content, so fix is null.