All checks
Every check the crawl performs, by group.
144 checks in 12 groups. The list below covers everything the crawl looks at. The code of each check appears exactly as it is in the report and in the CSV/Excel files.
Threshold values are written in the names (e.g. <100 characters). The severity of a finding (Error, Warning, Info) is set by the measured value: for example, a title of 61–70 characters is info and above 70 is a warning. That is why the list has no single fixed severity column.
#Titles and descriptions
- Title missing
title-yokThe blue headline in search results comes from here; without it Google makes one up.
- Title too short (<30)
title-kisaA short title takes up little space in search results and carries few keywords.
- Title too long (>60 info, >70 warning)
title-uzunIt is cut off in search results, so the important part should come first. 61–70 characters is informational, above 70 is a warning.
- More than one title
title-cokluGoogle chooses which one to use on its own.
- Duplicate title
title-tekrarPages with the same title compete with each other, and Google cannot tell which one to show.
- Meta description missing
meta-yokThe description text in search results is picked at random from the page.
- Meta description too short (<100)
meta-kisaIt does not fill the space in search results and can lower the click-through rate.
- Meta description ends mid-sentence
meta-kesikInfo: the description ends with an unfinished phrase such as "…in which." or "…and"; it looks incomplete in search results, so the text should be finished.
- Meta description too long (>160)
meta-uzunIt is cut off in search results.
- More than one meta description
meta-cokluGoogle chooses which one to use on its own.
- Duplicate meta description
meta-tekrarIt makes it harder to tell pages apart in search results.
- H1 missing
h1-yokThe heading that states the page's main topic is missing.
- More than one H1
h1-cokluUsually not a problem; the main topic should be in a single H1.
- Empty H1
h1-bosA heading tag with nothing in it; most likely a template error.
- A shared suffix/prefix makes titles longer
title-ortak-ekThe template adds the same long text to every title, so titles are cut off in search results. One setting shortens it. Pages that are long even without the addition still get 'title too long' separately.
- Heading level is skipped
baslik-atlamaInfo: jumps such as H2 to H4 break the content structure; screen readers and bots lose the hierarchy.
- Meta description generated from a template
sablon-metaInfo: if the description repeats the title and always ends with the same closing, it loses what is unique to each page.
#Indexing
- Blocked from indexing (noindex)
noindexGoogle will not show this page. Not a problem if it is intentional.
- Blocked from indexing, canonical points to another indexable page (may be intentional)
noindex-kanonik-acikThe page is noindex but its canonical points to another address that returns 200 and can be indexed; this is a common deliberate setup for duplicate and filter pages. If it is not intentional, noindex and canonical together are redundant.
- Canonical tag missing
kanonik-yokOn parameterized or duplicate addresses it is harder for Google to choose the main page.
- Canonical points to another address
kanonik-baskaThis page is left out of the index and the address it points to is indexed instead. An error if it is not intentional.
- Parameterized duplicates correctly linked by canonical
kanonik-parametreli-ozetiInfo: addresses with parameters such as ?sort= are tied to the main page by canonical; this is the correct setup. Search checks such as title and description were not run on these addresses.
- More than one canonical
kanonik-cokluWith conflicting canonicals Google ignores all of them.
- Canonical target is broken
kanonik-hedef-hataliThe canonical points to a page that does not return 200 or is noindex.
- Page-level nofollow
meta-nofollowMeta robots / X-Robots-Tag nofollow: Google does not follow the links on the page and passes no value to inner pages. Usually unwanted on a content page.
- Most pages share one canonical
kanonik-sablonTemplate error: the canonical of most pages points to a single address (often the home page); Google may treat these pages as duplicates and drop them from the index.
- Canonical on another domain
kanonik-baska-alanThe canonical points to another domain (may be an old domain, staging or a mail. subdomain); Google indexes that address instead of the page.
- Canonical is an http:// address
kanonik-httpThe canonical of an https page is an http:// address; it points to a redirecting, insecure address and should be https.
- Home page blocked from indexing
ana-sayfa-noindexThe home page is noindex: the site does not appear in Google with its home page. Unless intentional (a pre-launch setting), remove it right away.
- Most of the site blocked from indexing
site-geneli-noindexMore than half of the crawled pages are noindex; a large part of the site does not appear in Google. Unless intentional, check the plugin/template setting.
#Multilingual
- Invalid hreflang code
hreflang-gecersiz-kodGoogle ignores a language code it does not recognize.
- Same language code more than once
hreflang-tekrarThere should be a single address per language.
- Page itself missing from hreflang
hreflang-kendisi-yokEvery language version should list itself too.
- x-default missing
hreflang-x-default-yokThe version for visitors whose language matches none is not specified.
- Automatic redirect by language
dil-yonlendirmesiInfo: the hreflang target redirects to another language version without a language header and opens when requested in its own language. The page exists (not an error); but search engine crawlers that send no language header may not see this version.
- hreflang target is broken
hreflang-hedef-hataliThe language version it points to does not return 200 or is noindex.
- hreflang is not reciprocal
hreflang-karsilik-yokIf version B does not point back to A, Google does not pair the two.
- Title not translated
yerellestirilmemis-baslikThe language version's title is the same as another language version's or was left in English; the page matches poorly for searches in that language.
- Meta description not translated
yerellestirilmemis-metaThe description is the same as another language version's or was left in English; foreign-language text shows in search results.
- html lang conflicts with hreflang
dil-kodu-celiskiThe page states its own language differently in two places; Google cannot know which one to trust.
- x-default target redirects
hreflang-x-default-yonlenmeInfo: x-default may be a language selector or a root that redirects by language; Google accepts this, it is not counted as an error.
#Internal links
- Broken internal link
ic-baglanti-kirikThe page links to an address that returns 4xx/5xx.
- Internal link to a redirect
ic-baglanti-yonlendirmeEvery redirect uses up crawl budget; the link should point to the final address.
- Orphan page
yetimIt is in the sitemap but no page links to it; Google treats it as unimportant.
- Broken link in the menu/template
sablon-kirik-baglantiMost pages link to a broken target; it comes from the template, such as the menu, header or footer. It is fixed in one place, and the 'broken internal link' findings on all pages go away together.
- Link to a redirect in the menu/template
sablon-yonlendirme-baglantiMost pages link to an address that redirects (menu, header or footer). It is fixed in one place by changing the link to the final address.
- Page with a single internal link
tek-ic-baglantiIt receives a link from only one page; more internal links help it rank.
- Internal link is nofollow
nofollow-ic-baglantiInfo: a nofollow link to your own pages passes no value. Links marked sponsored/ugc (intentional) and external links are not counted.
- Deep page (>3 clicks)
derin-sayfaPages far from the home page are crawled less often and receive less value.
- Generic link text
jenerik-baglanti-metniInfo: texts such as 'click here' or 'read more' do not tell Google what the target page is about.
- Access-restricted internal link (401/403/405)
ic-baglanti-kisitliInfo: the link goes to a members-only/password-protected address or one that only opens via a form submission; not counted as a broken link. Check it if it should be public.
#Sitemap
- Not in the sitemap
harita-disiAn indexable page is missing from the sitemap; Google may take longer to find it.
- Broken address in the sitemap
harita-4xx-5xxThe sitemap should contain only addresses that return 200 and can be indexed.
- Redirecting address in the sitemap
harita-3xxThe sitemap should list the final address, not the one that redirects.
- noindex page in the sitemap
harita-noindexConflicting signal: the sitemap says 'index it', the page says 'do not index'.
- Non-canonical address in the sitemap
harita-kanonik-degilThe sitemap should contain only canonical addresses.
- Sitemap hit the rate limit
harita-hiz-siniriThe site returned 'too many requests' (429/503) while sitemaps were read; this is not a site error, but some pages may be missing from the crawl.
- Sitemap cannot be read
harita-erisilemiyorThe sitemap declared in robots.txt returns 404/5xx; Google cannot discover pages this way.
- Sitemap is not valid XML
harita-xml-bozukA broken sitemap cannot be read by Google, or is read only in part.
- Sitemap exceeds the limit
harita-boyutA single sitemap can hold at most 50,000 addresses and 50 MB; the excess is ignored, so it should be split into a sitemap index.
- lastmod is the same everywhere in the sitemap
harita-lastmod-ayniInfo: Google does not trust a lastmod that does not give real modification dates and ignores it.
- http:// address in the sitemap
harita-http-adresAn http address in the sitemap when the site is https causes redirect and duplicate problems.
- www / non-www version in the sitemap
harita-ikiz-alanThe sitemap addresses are on the www or non-www version of the crawled domain; Google uses a sitemap only for addresses on its own host, so the sitemap should use the site's main domain.
- Other domain in the sitemap
harita-baska-alanA sitemap may contain only addresses of its own domain; the others are ignored.
- Malformed address in the sitemap
harita-bozuk-adresThe domain name of the address is not valid (often the slash after the domain is missing); Google cannot open this address and ignores it.
- Empty sitemap
harita-bosInfo: the sitemap is valid but contains no addresses; not an error, but if the empty file is not used it can be removed from the declarations.
- Sitemap address blocked by robots.txt
harita-robots-engelliThe sitemap submits the address for indexing while robots.txt forbids crawling it; a conflicting signal. Either remove it from the sitemap or lift the block.
- No sitemap
harita-yokNo sitemap was found. A sitemap helps Google find new and deep pages; not required for a very small site.
#Status
- Server error (5xx)
durum-5xxGoogle drops a page that returns errors from its index; if it keeps happening, it also lowers the crawl rate.
- Page not found (4xx)
durum-4xxVisitors and Google land on an empty page, and the value of every link pointing to this address is wasted.
- Redirect (3xx)
durum-3xxNot a problem on its own, but internal links and the sitemap should point straight to the final address.
- No response received
istek-basarisizA timeout or connection error; the server may be slow or unreachable.
- Empty response (200, 0 bytes)
bos-yanitThe server returns a success code but the page has nothing in it; Google may treat this as a 'soft 404'. The page should either exist or return 404. Missing title/description/H1 for the same page is not reported separately.
- Not-found page returning 200 (soft 404)
soft-404-sayfaA page titled 'not found/404' returns 200; Google treats it as a soft 404, and if it really does not exist it should return 404/410.
- Missing address does not return 404 (soft 404)
soft-404A random, non-existent address was requested: it returned 200 (or a redirect). Google treats these as soft 404s; deleted pages and broken links become invisible.
#Images
- Image has no alt text
gorsel-alt-yokIn image search and for screen readers it is unclear what the image shows. (alt="" counts as decorative and is not a finding.)
- Image has no width/height
gorsel-boyut-yokThe page can shift when the image loads (CLS); the browser cannot reserve space. Images whose space is reserved with an overlay class (absolute inset-0) or aspect-* are not counted.
- Images are not WebP/AVIF
gorsel-eski-bicim-ozetiModern formats are noticeably smaller at the same quality, so the page opens faster. The server or image pipeline should produce WebP/AVIF.
- Large image (>200 KB)
gorsel-buyukIt slows down page loading and uses mobile data.
- Very large image (>500 KB)
gorsel-cok-buyukIt seriously reduces page speed (LCP); it should be compressed or made smaller.
- Shared very large image (>500 KB)
sablon-gorsel-cok-buyukThe same large image (logo, banner, background) is loaded from the template on many pages. It is fixed in one place, and the 'very large image' findings on those pages go away together.
- Image size summary
gorsel-boyut-ozetiInfo: total and largest sizes of the site's unique images, measured with HEAD requests.
- First image is lazy-loaded
ilk-gorsel-lazyIf loading=lazy is set on an image at the top of the screen, the largest content (LCP) loads late.
- Image size not certain (sizes unresolved)
gorsel-boyut-belirsizInfo: the sizes value of an image with srcset could not be resolved; the measured candidate is large but the one the browser actually downloads may be smaller.
- Broken image (404)
gorsel-kirikThe image file on the page cannot be found (404/410 in both attempts); visitors see a broken image.
#Structured data
- JSON-LD is broken
jsonld-bozukStructured data that cannot be parsed is ignored entirely by Google.
- Unescaped line break in JSON-LD
jsonld-satir-sonuA text value contains an unescaped line break or tab, which violates the JSON standard. Google usually reads it, but strict parsers cannot; it should be written as \n.
- JSON-LD @context missing
jsonld-baglamWithout @context https://schema.org the markup is not recognized as a schema.
- JSON-LD @type missing
jsonld-tip-yokAn entity with no type is not used, because it is unclear which rich result it qualifies for.
- Placeholder text in JSON-LD
jsonld-yer-tutucuValues such as lorem ipsum / TODO / example.com were left over from the template; they publish wrong information.
- Relative address in JSON-LD
jsonld-goreli-adresurl/image/logo fields must be absolute addresses; a relative address fails validation.
- Schema types that no longer give rich results
jsonld-kalkmis-tip-ozetiInfo: these types no longer give rich results on Google. Harmless; there is no need to remove them.
- Open Graph tag missing
og-eksikThe title/image of a link shared on social networks and messengers comes out broken or random.
- og:url differs from the page address
og-url-farkliShares and likes are recorded against the wrong address; usually a mistake left over from the template.
- twitter:card missing
twitter-card-yokInfo: no large-image card appears when shared on X/Twitter.
- No structured data on the site
yapisal-veri-yokInfo: no page has JSON-LD or Microdata. Organization, WebSite and markup suited to the content type tell Google and AI search who the site is.
#Technical
- Broken external link
dis-baglanti-kirikThe page links to an external address that no longer exists (404/410 in both requests, or the domain is gone); visitors land on an empty page. Sites that block bots or did not respond at the time are not counted as broken.
- robots.txt server error
robots-5xxIf robots.txt returns 5xx, Google may stop crawling the site.
- robots.txt missing
robots-yokNot required, but crawl rules and the sitemap cannot be declared.
- robots.txt could not be read
robots-okunamadirobots.txt could not be reached; the rules could not be checked.
- Googlebot blocked from the whole site
robots-googlebot-engellirobots.txt blocks the root directory; the site will not appear on Google. A development setting may have been left in place.
- No Sitemap line in robots.txt
robots-sitemap-yokThis line is the easiest way for search engines to find the sitemap.
- AI bots blocked
robots-ai-engelliInfo: these bots cannot read your site, so you appear less in AI answers. It may be a deliberate choice.
- CSS/JS blocked by robots.txt
robots-css-js-engelliGoogle cannot render the page visually; mobile friendliness and content may be judged wrongly.
- Redirect chain (≥2 hops)
yonlendirme-zinciriEvery hop slows things down and uses crawl budget; link value can shrink with each hop.
- Redirect loop
yonlendirme-dongusuThe page never opens; visitors and Google see an error.
- http version does not redirect to https
http-https-yonlendirme-yokThe same content is live at two addresses; ranking signals are split and visitors stay on the insecure version.
- Main address redirect chain
ana-adres-zinciriVisitors and Google reach the home page through several hops; dropping from https to http causes a security warning and loses link value.
- Main address goes to another site
baslangic-dis-yonlendirmeThe domain you entered redirects to another site; there are no or very few pages to crawl on this domain.
- Crawl was run on the canonical domain
baslangic-kanonik-gecisThe domain you entered opens, but its pages declare the www or non-www version as canonical; the crawl was run on the domain Google will index.
- Crawl was run on the www / non-www version
baslangic-ikiz-gecisInfo: the domain you entered opens, but the site's internal links almost all go to its www or non-www version; the crawl was run on the domain where the site actually lives. Both domains opening without a redirect is reported separately.
- http→https takes more than one hop
http-https-zincirThe first visit is needlessly slow; a single 301 is enough.
- www / bare domain does not redirect
www-yonlendirme-yokThe site is live on two domains at once; risk of duplicate content and split signals.
- Viewport meta missing
viewport-yokOn mobile the page opens at desktop width; Google indexes mobile-first.
- HTML exceeds 2 MB
html-buyukGooglebot processes only the first 2 MB of HTML; content and links after that are not seen.
- Page redirects with a script
istemci-yonlendirmeInfo: a page with no content sends visitors to another address with JavaScript (location.replace). A server-side 301/302 is more reliable for bots and link value.
- No content in raw HTML (JS shell)
js-kabukIf content arrives only through JavaScript, bots and AI crawlers see an empty page. Reported only when the body is just an empty app root or has no text at all; short pages with real text get 'thin content' instead.
- Server response time distribution
yanit-suresi-ozetiSite-wide: median and 90th percentile response time. It is a pattern, not a momentary fluctuation on one page; slow pages are re-measured before judging.
- Render-blocking script
render-engelleyen-scriptScripts in <head> without async/defer delay the page from appearing (LCP).
- Slow server response (TTFB)
yavas-yanitA slow server lowers both the user experience and Google's crawl rate.
- Long address (>100 characters)
url-uzunLong addresses are hard to share and read, and are cut off in search results.
- Uppercase letters in the address
url-buyuk-harf/Page and /page can count as different addresses; risk of duplicate content.
- Underscore in the address
url-alt-cizgiGoogle prefers hyphens as word separators; underscores join words together.
- Parameterized address can be indexed
url-parametreliParameterized addresses can duplicate the same content; the canonical should point to the main address.
- Inconsistent trailing slash
sonda-egik-cizgi-tutarsizThe same page opens separately at /a and /a/; one should redirect to the other.
- Redirect via meta refresh
meta-yenilemeInfo: the page goes to another address with <meta http-equiv="refresh">; a server 301/302 redirect is more reliable and faster.
- Content arrives via JavaScript (raw HTML checked)
js-kabuk-ozetiInfo: the content of these pages is not in the raw HTML; because our crawler does not run JavaScript, title, description, H1, image and canonical checks were not run on these pages.
- Broken CSS/JS file
kaynak-kirikA CSS or JavaScript file the page loads cannot be found (404/410 in both attempts); appearance or functionality may break.
#Security
- Folder file listing is public
dizin-listesi-acikThe server shows every file in the folder with an 'Index of /…' page; backups, configuration or private files may leak. Turn directory listing off (Options -Indexes) or put an index page in the folder.
- Shared http resource (mixed content)
sablon-karisik-icerikThe same http:// resource (an image, ad or embedded map in the template) is loaded on many https pages. It is fixed in one place, and the 'mixed content' findings on those pages go away together.
- Mixed content (http resource)
karisik-icerikAn https page loads an http:// resource; the browser may block it or show a 'not secure' warning.
- HSTS header missing
baslik-hsts-yokThe browser does not learn to always connect to the site over https; the first visit can fall back to http.
- X-Content-Type-Options missing
baslik-xcto-yokThe browser may guess the file type; 'nosniff' turns this off.
- Referrer-Policy missing
baslik-referrer-yokThe full page address (including parameters) can be passed on when visitors go to other sites.
- Content-Security-Policy missing
baslik-csp-yokInfo: an extra layer of protection against XSS attacks is missing. It does not directly affect SEO.
#Crawl
- Hit a rate limit
tarama-hiz-siniriThe server returned 429. This is not a problem with your site but with the crawler; these pages could not be checked.
- Result not confirmed (single attempt)
dogrulanamadiInfo: the first attempt at this address got an error, but it could not be confirmed at the end of the crawl (the verification pass reached its limit or the server applied a rate limit). It was not counted as an error because it may be temporary; a new scan will confirm it.
- Blocked by bot protection (page)
bot-engeliInfo: the site's firewall showed a verification or block page instead of the page at this address. This is not a site error; the page could not be checked. It will be checked in a new scan once the crawler is allowed.
- Bot protection blocked the crawler
bot-korumasiInfo: the site's bot protection (Cloudflare, Akamai, etc.) returned a verification or block page to our crawler at some addresses. These were not counted as errors; for a full result, allow the AlatliSEO crawler in the firewall.
- Temporary error, fine on re-check
gecici-hata-ozetiInfo: these addresses returned an error during the crawl but opened normally when requested again at the end of the crawl; they were not counted as errors. If this happens often, the server may be unstable under load.
- Crawl stopped at the page limit
tarama-sinira-takildiInfo: part of the site was not crawled; the numbers in the report do not reflect the whole site.
- Crawl incomplete
tarama-yarimInfo: the crawl stopped at its time limit, or only the home page was crawled because robots.txt could not be read; the numbers in the report do not reflect the whole site.
#Content
- Duplicate body text
kopya-govdeThe page's main text (after removing menu/template text) is the same or almost the same as another page; Google shows only one of the duplicates and the others do not appear in search.
- Thin content (<200 words)
ince-icerikPages with little text rank poorly. On helper pages such as contact, privacy, tags and cart it is reported as info (being short is natural); another deliberately short page can be marked 'intentional'.