Skip to content

πŸ” A comprehensive list of SEO requirements to rank your page higher

Notifications You must be signed in to change notification settings

flowforfrank/seo-checklist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SEO Checklist

πŸ•΅οΈ The SEO Checklist is a comprehensive list of SEO requirements you need to address to rank higher and elevate your SEO game to the next level. πŸ†™

Learn more about JavaScript and web development Follow on Twitter Follow on Medium
Support on Buy Me A Coffee
β€’ β€’ β€’
πŸ“ˆ Performance Checklist

πŸ—ƒοΈ Table of Contents

  1. πŸ› οΈ Tools
    1.1. Analytics Tools
    1.2. SEO Checkers
    1.3. Chrome Extensions
    1.4. Other Tools

  2. βš™οΈ Technical SEO
    2.1. Identify crawl errors
    2.2. URL inspection
    2.3. No broken links
    2.4. No blocked pages
    2.5. Optimized 404
    2.6. Served over HTTPS
    2.7. Mobile friendly
    2.8. Page speed efficiency

    2.9. Has valid robot.txt
    2.10. Has valid sitemap.xml
    2.11. Structured Data
    2.12. Core web vitals

  3. πŸ“œ On-Site SEO
    3.1. Meta information

    3.2. Document head

    3.3. Document structure

    3.4. Readability

  4. πŸ“Š Off-Site SEO
    4.1. Link building

  5. πŸ“š Other Resources

πŸ› οΈ Tools

ℹ️ If you can't measure it, you can't improve it - The first step is to put analytics tools in place which can help you draw conclusions and locate potential issues

πŸ†“ The tools listed below are free to use

βš™οΈ Technical SEO

ℹ️ The purpose of Technical SEO is to help search engines find and crawl your website without any problems.

β˜‘οΈ Identify crawl errors

Use the coverage tool (previously Crawl Errors Report) in Google's Search Console to see which of your pages have been indexed and any problems encountered during indexing.

πŸ“– Google Search Console - Coverage status report
πŸ“– Google Search Console - Migrating from old Search Console


β˜‘οΈ URL inspection

Make sure your URLs are properly indexed by Google. Google's URL Inspection tool provides information about the indexed version of a specific page. With it, you can perform various tasks such as:

πŸ“– Google Search Console - URL Inspection Tool


β˜‘οΈ No broken links

Pages with unsuccessful HTTP status codes (pages that return 400s, 500s) may not be indexed properly. Make sure that you don't index error pages such as 404.

πŸ“– Web.dev - Page has unsuccessful HTTP status code


β˜‘οΈ No blocked pages

Page is not blocked from indexing. Search engines are unable to include your pages in search results if they don't have permission to crawl them.

πŸ“– Web.dev - Page is blocked from indexing

<!-- this will prevent all crawlers from accessing your page: -->
<meta name="robots" content="noindex" />
# This response header also blocks crawlers
X-Robots-Tag: noindex

β˜‘οΈ Optimized 404

404 (Page not found) pages should be optimized. Default 404 error pages can result in poor user experience. It can mislead users into thinking an entire site is down or broken which increases the chance they leave the site entirely.
Things you can do to optimize your 404 page:

  • Include notification that the page the user is looking for cannot be found
  • Include a link to your home page
  • Include a search bar
  • Your navigation should be present

πŸ“– SEO Site Checkup - 404 Page Test


β˜‘οΈ Served over HTTPS

Ensure that your site's connection is secured with HTTPS. Data sent using HTTPS is encrypted which improves security and makes sure that data cannot be modified during transfer without being detected. Also make sure that you redirect all HTTP requests to the equivalent HTTPS version.

Strong sense of security will build trust over time which will only benefit your business.

πŸ“– Google Search Console - Secure your site with HTTPS


β˜‘οΈ Mobile friendly

Internet usage has turned around in 2016: more people are accessing the web from mobile devices than from desktop. By making your site mobile friendly, you ensure that your pages work properly across all devices.

πŸ› οΈ Google’s Mobile-Friendly Test
πŸ“– Google Developers: Be mobile-friendly
πŸ“– Google Developers: Responsive Web Design Basics
πŸ“– Varvy: Mobile optimization guide


β˜‘οΈ Page speed efficiency

Optimizing page speed is a whole topic in itself, but there are some key aspects from which you can leverage the most.

  • βœ”οΈ Browser caching

    Leverage browser caching for static resources such as images or fonts. This way, you can reduce page load time for recurring visitors by storing website information in their cache. Rather than accessing these from the server, they are requested from the cache.

    Browser caching set for images in a .htaccess file

    <IfModule mod_expires.c>
      ExpiresActive On
    
      # Expiration date set for images
      ExpiresByType image/jpeg "access plus 1 year"
      ExpiresByType image/gif "access plus 1 year"
      ExpiresByType image/png "access plus 1 year"
      ExpiresByType image/webp "access plus 1 year"
      ExpiresByType image/svg+xml "access plus 1 year"
      ExpiresByType image/x-icon "access plus 1 year"
    </IfModule>
    
  • βœ”οΈ Compression enabled

    gzip or brotli compression is enabled on the server side. This further reduces the network request size which will result in a faster page load and less bandwidth used.

  • βœ”οΈ Resources minified

    All resources (HTML, CSS, JavaScript) should be minified to reduce their size

  • βœ”οΈ Images and fonts are optimized

    Compressing images and fonts can result in most saved bytes of data.
    Some tips for image optimization:

    • Try to utilize CSS3 effects instead of using images
    • Use vector images, perferably SVG
    • Minify SVG markup
    • Choose the right raster format
      • GIF for animation
      • JPG for fine detailed images
      • PNG-8/24 for transparent / low colour palette images
    • Intrinsic size should be as close to display size as possible
    • Compress

    Some tips for font optimization:

    • Minimize number of font usage (both font family and variants)
    • Subset font face
    • Use rel="preload" to treat resource with high priorty
    • Cache & compress

πŸ“– Webtips.dev - 10 Critical Performance Optimization Steps You Should Take
πŸ“– Webtips.dev - How to Improve Page Speed by Optimizing Content
πŸ“– Webtips.dev - 3 Ways to Benchmark Your JavaScript
πŸ“– Web fundamentals - Measure Performance with the RAIL Model
πŸ“– Web fundamentals - Why Performance Matters
πŸ“– Varvy.com - Leverage browser caching
πŸ“– Varvy.com - Enable gzip compression


β˜‘οΈ Has valid robot.txt

If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed.

πŸ“– Web.dev - robot.txt is not valid

Example for a valid robot.txt file

user-agent: *
disallow: /downloads/

β˜‘οΈ Has valid sitemap.xml

A sitemap is a file where you provide information about the pages on your site. Search engines like Google read this file to more intelligently crawl your site. It tells Google which pages are important in your site.

Cases where you might not need a sitemap:

  • If you only have a landing page or a small site (500 pages or less)
  • You're using a hosting service like Wix or Webflow which generates a sitemap automatically
  • Your site is comprehensively linked internally

πŸ“– Google Search Console - Learn about sitemaps


β˜‘οΈ Structured data

Site has a valid structured data. Run the Structured Data Testing Tool and the Structured Data Linter to validate. Marking up your content with structured data makes it more likely that it will be included in rich search results.

πŸ“– Webtips.dev - How to Use Schema Markup in HTML
πŸ“– Web.dev - Structured data is valid
πŸ“– Learn more - Schema.org


β˜‘οΈ Core web vitals

The core web vitals are three core metrics that focuses on three aspects of the user experience; loading, interactivity, and visual stability. These are measured by the following metrics:

  • βœ”οΈ Largest Contentful Paint

    LCP for short, measures the time it takes for the browser to fully render the main content of your page. LCP is considered good when it happens within 2.5 seconds.

  • βœ”οΈ First Input Delay

    FID for short, measures the time it takes for the first user input to be processed. Anything below 100ms is considered good.

  • βœ”οΈ Cumulative Layout Shift

    CLS for short, measures the amount of layout shifts on your page that causes elements to change position unexpectedly. A good CLS score is less than 0.1.

πŸ“– Webtips.dev - Core Web Vitals
πŸ“– Web.dev - Largest Contentful Paint (LCP)
πŸ“– Web.dev - First Input Delay (FID)
πŸ“– Web.dev - Cumulative Layout Shift (CLS)

πŸ“œ On-Site SEO

ℹ️ On-Site SEO is about the structure and content of your page. It's goal is to guide you how to create SEO friendly content that is easily understandable by search engines.

Meta information

ℹ️ Meta information provides details about the webpage. Metadata will not be displayed but will be parsed by search engines

β˜‘οΈ Has meta description

Meta descriptions provides a summary of a page's content that search engines include in search results

πŸ“– Web.dev - Document has a meta description

<meta name="description" content="Meta descriptions should not be more than 150 characters, but should be above 120 characters" />

β˜‘οΈ Has meta viewport

Meta viewports optimize your app for mobile screens.

πŸ“– Web.dev - Document has a viewport meta tag

<meta name="viewport" content="width=device-width, initial-scale=1" />

β˜‘οΈ Has open graph tags

The Open Graph protocol enables any web page to become a rich object in a social graph. To turn a web page into a rich object, you need to add additional meta tags to your head.
The four required properties are:

  • og:title - The title of the object, usually will match the content of your title tag
  • og:type - The type of object, eg.: article, profile, website. (To see all available object types visit the object types section on the official page of open graph.)
  • og:image - The URL of the image which will represent the object
  • og:url - The URL of your site where the object will take the user after interaction

To see all other available open graph tags, visit the official website of the open graph protocol.

πŸ“– The Open Graph protocol
πŸ› οΈ Facebook - Open Graph Object Debugger

<!-- Example markup for the movie "The Rock" on IMDB -->
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="http://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="http://ia.media-imdb.com/images/rock.jpg" />

Document head

ℹ️ Apart from meta tags, there are a number of other tags in the head of the document that you should take care of.

β˜‘οΈ Doctype is set to HTML5

The <!DOCTYPE> declaration must be the very first thing in your HTML document. It tells browsers what version of HTML the page is written in. You should always use the latest version which is HTML5.

πŸ“– W3Schools - HTML <!DOCTYPE> Declaration
πŸ› οΈ SEO Site Checkup - Doctype Test

<!DOCTYPE html>

β˜‘οΈ Document has a title tag

The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search. Titles shouldn't be too long or too short, try to keep the character count around 50-60.

πŸ“– Web.dev - Document has a title tag

<!doctype html>
<html lang="en">
    <head>
        …
        <title>SEO Checklist</title>
        …
    </head>
    <body>
        …
    </body>
</html>

β˜‘οΈ Document has a valid hreflang

hreflang links tell search engines what version of a page they should list in search results for a given language or region.

πŸ“– Web.dev - Valid href for document

<link rel="alternate" hreflang="en" href="https://my-site.com" />
<link rel="alternate" hreflang="es" href="https://es.my-site.com" />
<link rel="alternate" hreflang="de" href="https://de.my-site.com" />

β˜‘οΈ Favicon exists

If your site has a favion, it can be included in the search results page.

πŸ“– Google Search Console - Define favicon to show in search results

<link rel="shortcut icon" href="/path/to/favicon.ico" />

Document structure

ℹ️ Document structure outlines how your html should be built up and shows what are the key factors that can affect your SEO.

β˜‘οΈ SEO friendly URLs

SEO friendly URLs should only contain letters and number, dashes (-) or underscores (_). Try to avoid using spaces, signs or other special characters. Make them short and relevant to the topic. Try to incorporate keywords into them.

πŸ“– Google Search Console - Keep a simple URL structure
πŸ“– Moz - URLs
πŸ› οΈ SEO Site Checkup - SEO Friendly URL Test

<!-- πŸ”΄ Don't -->
<a href="https://example.com/index.php?page=articles&order=desc">Latest articles</a>

<!-- βœ… Do -->
<a href="http://example.com/articles/latest">Latest articles</a>

β˜‘οΈ Heading in order

Headings help Google understand your text and the context of the page. Headings should be created in hierarchical order. This means an h1 should be followed by an h2, and not an h3.

πŸ“– Webtips.dev - 10 Best Practices for HTML
πŸ“– Yoast - More than one H1

<!-- ❌ Don't -->
<h1>Title of your page</h1>
<h3>Heading</h3>

<!-- ❌ Don't -->
<h3>Title of your page</h3>
<h1>Heading</h1>

<!-- βœ”οΈ Do -->
<h1>Title of your page</h1>
<h2>Heading</h2>
<h3>Sub-heading</h3>

β˜‘οΈ Image elements have [alt] attributes

Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute. For images, provide width and height attributes to avoid layout shifts. Always lazy load off-screen images by setting the loading attribute to lazy.

πŸ“– Web.dev - Image elements have [alt] attributes

<!-- Images should have a short, descriptive alt text -->
<img src="..." alt="Diagram showing the steps of critical rendering path" />

<!-- If the image doesn't provide any value, still give it an empty alt tag -->
<img src="..." alt="" />

<!-- Use `width` and `height` attributes to avoid layout shifts -->
<!-- Lazy load off-screen images -->
<!-- ⚠️ Never lazy load ATF (above-the-fold) images -->
<img src="..." alt="" width="100" height="100" loading="lazy" />

β˜‘οΈ Document uses legible font sizes

Font sizes less than 12px are too small to be legible and require mobile visitors to β€œpinch to zoom” in order to read.

πŸ“– Web.dev - Document uses legible font sizes


β˜‘οΈ Tap targets are sized appropriately

Interactive elements like buttons and links should be large enough (48x48px), and have enough space around them, to be easy enough to tap without overlapping onto other elements.

πŸ“– Web.dev - Tap targets are sized appropriately


β˜‘οΈ Document avoids plugins

Search engines can't index plugin content, and many devices restrict plugins or don't support them.

Elements such as embed, object or applet are checked and if their MIME type matches any of the following:

  • application/x-java-applet
  • application/x-java-bean
  • application/x-shockwave-flash
  • application/x-silverlight
  • application/x-silverlight-2

Then it will be flagged as a plugin.

πŸ“– Web.dev - Document avoids plugins


Readability

β˜‘οΈ Title width

The document title not only shows up in the tab but is also shown in the Google search results page as a blue link. This is what users first see about your website on the search result page. To grab user attention, be short and to the point. Titles wider than 600px will be cut off so make sure your title is not too long. Also try to incorporate your main keyword.

πŸ“– Yoast - The ideal width of title


β˜‘οΈ Subheading distribution

Most texts of over 300 words need subheadings to help the reader scan the text more easily. Using subheadings will not only make your text more readable and accessible, but will also help Google figure out what your content is about.
If you can, also incorporate your main keyphrase in the subheading.

πŸ“– Yoast - How to improve subheading distribution


β˜‘οΈ Links have descriptive text

Descriptive link text helps search engines understand your content.

πŸ“– Web.dev - Links have descriptive text

<!-- πŸ”΄ Don't -->
<p>To see more articles like this, <a href="articles.html">click here</a>.</p>

<!-- βœ… Do -->
<p>Are you interesed in more? Check out these <a href="articles.html">similar articles</a>.</p>

β˜‘οΈ Internal links

Use internal links throughout your site. It helps Google get an idea about the structure and hierarchy of your page. You should have the most internal links pointing to a cornerstone content. This ways, the most important content on your site recieves the highest link value.
By adding internal links, you enable Google to understand:

  • The relevance of pages
  • The relationship between the pages
  • The value of each page

Last but not least, it can help both users and search engines to nagivate your site more easily.

πŸ“– Yoast - Internal linking for SEO: Why and how?


β˜‘οΈ Outbound links

Outbound or external links are links that are pointing to other websites from your page. Using external links and linking to other relevant pages on the web can help search engines better understand the context of your site.

πŸ“– Moz - External Links


β˜‘οΈ Use of keyphrases

The focus keyphrase – or keyword – is the search term that you want your page to rank for most. For blog posts, you should usually aim for long-tail keywords (keywords containing multiple words) as competition is lower for these. To help you decide on keywords, you can use tools such as Google Trends, Google Keyword Planner, Answer The Public or simply search for your proposed term on Google and let autosuggest show you what other people are searching for.

Make sure that your keyphrase:

  • Appear in the title tag
  • Appears in subheadings
  • Appears in first paragraph
  • is unique, not used it before throughout your site
  • is used in the slug (your SEO friendly URL)
  • is used in meta description
  • is used in image [alt] attributes
  • is not too long
  • Density is between 1-3% (number of times your keyphrase appears in a copy, eg.: your text is 100 words and 5 of those are your keywords than you have a keyword density of 5%)

πŸ“– Yoast - The importance of keyword density
πŸ“– Yoast - The length of your focus keyword


β˜‘οΈ Use of passive voice

In most cases, active sentences are easier to understand than passive sentences. After writing your text, scan it for passive voice constructions. Always ask yourself: is a better, active alternative available? If there is, use it. If not, use the passive voice.

πŸ“– Yoast - Using and avoiding the passive voice


β˜‘οΈ Use of transition words

Transition words like and, but, so, because make it easier to read and understand a text. Although transition words don’t influence your SEO directly, they are one of the key factors to readability.

πŸ“– Yoast - Transition words: why and how to use them


β˜‘οΈ Text length

You have a higher chance of ranking in Google if you have plenty of content on your page, preferably posts with 1000 words or more.
The reason this will help you rank higher:

  • Google will have more clue to determine what your page is about
  • The longer the text, the more often your keywords will appear in it
  • The more content there is, the more value it can give to users, making your site more relevant

πŸ“– Yoast - Text length: how long should a blog post be?


β˜‘οΈ Length of paragraphs

Paragraphs help break down your text into bite-size and easy-to-understand chunks. Big walls of text are hardly readable and tend to scare off visitors. Try to limit the length of your paragraphs to 200 words.

πŸ“– Yoast - Writing shorter paragraphs: why and how


β˜‘οΈ Length of sentences

Longer sentences are generally more difficult to read than shorter sentences. Dividing longer sentences into shorter ones can help improve readability.

πŸ“– Yoast - Writing shorter sentences


πŸ“Š Off-Site SEO


ℹ️ Off-Site SEO is not about technical details, but about marketing and promotion techniques.

Link building

ℹ️ Link building is the process of getting other websites link back to your site. Backlinks are an important factor for search engines to determine which site to rank higher for which keyword.

β˜‘οΈ Amount of links

Amount of links should not be excessive. Having too many links on a single page can hurt your SEO ranking as it is usually a sign of spam. The limit can depend on the type of site you have, whether you report news or provide services as a freelancer on a single landing page.

πŸ“– Varvy - How many links?
πŸ“– Backlinko - Link Building


β˜‘οΈ Good vs bad links

When dealing with links, quality is more important than quantity. The type of links you use on your website and you receive traffic from, can make or break your ranking.
We can divide good and bad links into two sub-categories: incoming and outgoing links. Some examples for both are listed below.

Links that can be considered good links:

  • Links from high authority websites
  • Editorial links
  • Guest posting
  • Niche specific directories

Links that can be considered bad links:

  • Links pointing to user profile pages
  • Links pointing to comments
  • Links pointing to dead websites
  • Links created with link builders
  • Links from foreign sites
  • Links from unrelated content
  • Links from paid links
  • Links from spammy comments

πŸ“– Moz - Types of Links
πŸ“– Ahrefs - Bad links


β˜‘οΈ The use of rel

The rel attribute on a link tag specifies the relationship between the page and the linked URL. Used by Google to specify whether search spiders should follow the link. Only use if an href attribute is present linking to an external resource.

The attribute it can take that is relevant to SEO:

  • nofollow: Indicates that the linked document is not endorsed by the author of this one. Do not confuse with noopener or noreferrer.

πŸ“– MDN web docs - Link types
πŸ“– W3Schools - rel attribute


πŸ“š Other Resources