{"id":22535052,"url":"https://github.com/flowforfrank/seo-checklist","last_synced_at":"2026-01-28T18:03:55.698Z","repository":{"id":45795851,"uuid":"230749068","full_name":"flowforfrank/seo-checklist","owner":"flowforfrank","description":"🔍 A comprehensive list of SEO requirements to rank your page higher","archived":false,"fork":false,"pushed_at":"2023-09-14T09:46:33.000Z","size":153,"stargazers_count":119,"open_issues_count":1,"forks_count":24,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-03T16:06:31.629Z","etag":null,"topics":["off-site-seo","on-site-seo","resources","seo","seo-checklist","seo-optimization","technical-seo","tools","webtips"],"latest_commit_sha":null,"homepage":"https://webtips.dev","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flowforfrank.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://www.buymeacoffee.com/webtips"]}},"created_at":"2019-12-29T12:45:09.000Z","updated_at":"2025-05-23T23:51:35.000Z","dependencies_parsed_at":"2025-06-03T05:39:36.338Z","dependency_job_id":"fdf3352e-8378-481e-a022-c8eb61521719","html_url":"https://github.com/flowforfrank/seo-checklist","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flowforfrank/seo-checklist","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowforfrank%2Fseo-checklist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowforfrank%2Fseo-checklist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowforfrank%2Fseo-checklist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowforfrank%2Fseo-checklist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flowforfrank","download_url":"https://codeload.github.com/flowforfrank/seo-checklist/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flowforfrank%2Fseo-checklist/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28848361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["off-site-seo","on-site-seo","resources","seo","seo-checklist","seo-optimization","technical-seo","tools","webtips"],"created_at":"2024-12-07T10:06:20.630Z","updated_at":"2026-01-28T18:03:55.667Z","avatar_url":"https://github.com/flowforfrank.png","language":null,"funding_links":["https://www.buymeacoffee.com/webtips"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/flowforfrank/seo-checklist/master/seo-checklist.png\" alt=\"SEO Checklist\" /\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e🕵️ 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. 🆙\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://webtips.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/webtips.dev-FCC700.svg?labelColor=221F22\u0026logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAWCAYAAABtwKSvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAN4SURBVHgBzVdLUhRBEH3VPaMS4QJPIDdAlmgQwgnQE6An8AiGJ1BvACdwOAFtGILhQuEENDdgYcinP2VW9TSTmZUFLsnNTGdnvcrPy6xq1x3h1AMrYNL3WHvwAse4p9IcYdMBB1znPI4L70ynn+Eei+tl8oP0wFnhe5wlxkiN75N4yz+qzIQcr+jvO64vCjy1QKzylo/wxK3h3LJvf+ALbfJqfKa1u+U63lq2F0dYmQKnwr8WW9ON6J8QV2I1RCSkR1U0Fs18hmY9NrWq+btw9i57onTWdmpg+9L2w6LZ5DH1zNI6anJeZNYXNs1cgZdaVxq6IKGKVIpl6R2Wr79nElViW6sKl+oijEsw6sCOYlilSmls6g+iY5sGsJ1tI9NRXEZv2ZPT/rdMSEyS9sHjJPzGYGgUf0UqIpjuYcYJCrz5lr5zmYpZ2TarOMdu/6ikGi3gh74fgnFG3zhdykzJo5SyOqGZgUzwpNfZ5kPiLmxKxqo2cd3gfwxmcpkGQy9EZh1zjsb5yW22uplpbc2f9dDQ1QoH4C3vksqME2+ozBbOOUB0mPH1+if9Z7OdKPSJOxhtf7FxLilWU/AfODYfGgk2+dEBezfY9G7EDn1rNH+12HYudIImfXPD11ZmuiGA3mNf6C7xGgsP+NlSldeYcVsxNBR28KNz0n7Ebh8Z/eIXLCn4ponhfM7zUofMxXGuNhxtdDPTZvuh8uD4bGgkA6HDLOBbVLOaP9gnwZRXxklLfaKbeaTAdJ3s5fkUG5vW7HCMcmnA1ZUMjW0Minrkf++EfcS2JmE4LJNgkuxhGK/JyewXNkQJSbULvHHSuWq86kyvsKuwd4xBUfG1Gtu4mVT8KlVIP1XfEB1oh49MU/NPAxrfu9ycwN6rS+BNI1tUU9iRkuN/XfmArc8iXW0RDIy+4QC6r+JI51RTmzXKPkkWt3c4nzxXg4IlI3OoVvxRBGP0gZC+ZeCYZ9tlP+KqOCiYtJCVFFheBjIoDd1Cav0BqSsjs6EWW9dxahzTPml4knlwlWXvDfuk8kys6VsYVrP/XRwkniHGhl0GxxvnmUWxqKbK6yEzimZJkCSYXDasxeOGya3boNgoFtVMio3vnEFNCt5iyQSGc80h9ijKbb54smFXJghR5HPBbtm3UDVSjb5AZ/yOlUtUkNDH3SElmA0AuuWb1foHkNJ6z8TJflAAAAAASUVORK5CYII=\" alt=\"Learn more about JavaScript and web development\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://twitter.com/WebtipsHQ\"\u003e\u003cimg src=\"https://img.shields.io/badge/Twitter-15202B.svg?logo=Twitter\" alt=\"Follow on Twitter\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://medium.com/@ferencalmasi\"\u003e\u003cimg src=\"https://img.shields.io/badge/Medium-000.svg?logo=medium\" alt=\"Follow on Medium\"/\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.buymeacoffee.com/webtips\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Support on Buy Me A Coffee\" width=\"150px\"\u003e\u003c/a\u003e\n    \u003cbr /\u003e• • •\u003cbr /\u003e\n    \u003ca href=\"https://github.com/flowforfrank/performance-checklist\" alt=\"Check out the Performance checklist\"\u003e📈 Performance Checklist\u003c/a\u003e\n\u003c/p\u003e\n\n## 🗃️ Table of Contents\n\n1. **🛠️ [Tools](#%EF%B8%8F-tools)**  \n    1.1. [Analytics Tools](#analytics-tools)  \n    1.2. [SEO Checkers](#seo-checkers)  \n    1.3. [Chrome Extensions](#chrome-extensions)  \n    1.4. [Other Tools](#other-tools)\n2. **⚙️ [Technical SEO](#%EF%B8%8F-technical-seo)**  \n    2.1. [Identify crawl errors](#%EF%B8%8F-identify-crawl-errors)  \n    2.2. [URL inspection](#%EF%B8%8F-url-inspection)   \n    2.3. [No broken links](#%EF%B8%8F-no-broken-links)  \n    2.4. [No blocked pages](#%EF%B8%8F-no-blocked-pages)  \n    2.5. [Optimized 404](#%EF%B8%8F-optimized-404)  \n    2.6. [Served over HTTPS](#%EF%B8%8F-served-over-https)  \n    2.7. [Mobile friendly](#%EF%B8%8F-mobile-friendly)  \n    2.8. [Page speed efficiency](#%EF%B8%8F-page-speed-efficiency)\n    - 2.8.1. [Browser caching](#%EF%B8%8F-browser-caching)\n    - 2.8.2. [Compression enabled](#%EF%B8%8F-compression-enabled)\n    - 2.8.3. [Resources minified](#%EF%B8%8F-resources-minified)\n    - 2.8.4. [Images and fonts are optimized](#%EF%B8%8F-images-and-fonts-are-optimized)\n   \n    2.9. [Has valid robot.txt](#%EF%B8%8F-has-valid-robottxt)  \n    2.10. [Has valid sitemap.xml](#%EF%B8%8F-has-valid-sitemapxml)  \n    2.11. [Structured Data](#%EF%B8%8F-structured-data)  \n    2.12. [Core web vitals](#%EF%B8%8F-core-web-vitals)\n    - 2.12.1. [Largest Contentful Paint](#%EF%B8%8F-largest-contentful-paint)\n    - 2.12.2. [First Input Delay](#%EF%B8%8F-first-input-delay)\n    - 2.12.3. [Cumulative Layout Shift](#%EF%B8%8F-cumulative-layout-shift)\n3. **📜 [On-Site SEO](#-on-site-seo)**  \n    3.1. [Meta information](#meta-information)\n    - 3.1.1. [Has meta description](#%EF%B8%8F-has-meta-description)\n    - 3.1.2. [Has meta viewport](#%EF%B8%8F-has-meta-viewport)\n    - 3.1.3. [Has open graph tags](#%EF%B8%8F-has-open-graph-tags)\n    \n    3.2. [Document head](#document-head)\n    - 3.2.1. [Doctype is set to HTML5](#%EF%B8%8F-doctype-is-set-to-html5)\n    - 3.2.2. [Document has a title tag](#%EF%B8%8F-document-has-a-title-tag)\n    - 3.2.3. [Document has a valid hreflang](#%EF%B8%8F-document-has-a-valid-hreflang)\n    - 3.2.4. [Favicon exists](#%EF%B8%8F-favicon-exists)\n\n    3.3. [Document structure](#document-structure)\n    - 3.3.1. [SEO friendly URLs](#%EF%B8%8F-seo-friendly-urls)\n    - 3.3.2. [Headings in order](#%EF%B8%8F-heading-in-order)\n    - 3.3.3. [Image elements have [alt] attributes](#%EF%B8%8F-image-elements-have-alt-attributes)\n    - 3.3.4. [Document uses legible font sizes](#%EF%B8%8F-document-uses-legible-font-sizes)\n    - 3.3.5. [Tap targets are sized appropriately](#%EF%B8%8F-tap-targets-are-sized-appropriately)\n    - 3.3.6. [Document avoids plugins](#%EF%B8%8F-document-avoids-plugins)\n\n    3.4. [Readability](#readability)\n    - 3.4.1. [Title width](#%EF%B8%8F-title-width)\n    - 3.4.2. [Subheading distribution](#%EF%B8%8F-subheading-distribution)\n    - 3.4.3. [Links have descriptive text](#%EF%B8%8F-links-have-descriptive-text)\n    - 3.4.4. [Internal links](#%EF%B8%8F-internal-links)\n    - 3.4.5. [Outbound links](#%EF%B8%8F-outbound-links)\n    - 3.4.6. [Use of keyphrases](#%EF%B8%8F-use-of-keyphrases)\n    - 3.4.7. [Use of passive voice](#%EF%B8%8F-use-of-passive-voice)\n    - 3.4.8. [Use of transition words](#%EF%B8%8F-use-of-transition-words)\n    - 3.4.9. [Text length](#%EF%B8%8F-text-length)\n    - 3.4.10. [Length of paragraphs](#%EF%B8%8F-length-of-paragraphs)\n    - 3.4.11. [Length of sentences](#%EF%B8%8F-length-of-sentences)\n4. **📊 [Off-Site SEO](#-off-site-seo)**  \n    4.1. [Link building](#link-building)\n    - 4.1.1. [Amount of links](#%EF%B8%8F-amount-of-links)\n    - 4.1.2. [Good vs bad links](#%EF%B8%8F-good-vs-bad-links)\n    - 4.1.3. [The use of rel](#%EF%B8%8F-the-use-of-rel)\n5. **📚 [Other Resources](#-other-resources)**\n\n## 🛠️ Tools\nℹ️ *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*\n\n\u003e 🆓 The tools listed below are free to use\n\n- #### Analytics Tools\n    - 📈 [Google Analytics](http://analytics.google.com/) - *Analyse traffic and behaviour of users on your site. Launch experiments and track conversions*\n    - 📈 [Google Search Console](https://search.google.com/search-console/about) - *Measure your site's search traffic and performance, shows click-through rate and issues such as unreachable links*\n    - 📈 [Google Keyword Planner](https://ads.google.com/intl/en_gb/home/tools/keyword-planner/) - *Plan your content around keywords that you want to rank for. Compare keywords to check number of searches and competitiveness*\n    - 📈 [Google Trends](https://trends.google.com/trends) - *Discover what the world is searching for*\n    - 📈 [Bing Webmaster Tools](https://www.bing.com/toolbox/webmaster) - *Track impressions, plan keywords and many more for Bing*\n    - 📈 [SimilarWeb](https://www.similarweb.com/) - *Identify traffic sources*\n    - 📈 [LSIGraph](https://lsigraph.com/) - *Generate latent semantic indexing terms for your keywords*\n    - 📈 [WordPress - Yoast SEO](https://yoast.com/wordpress/plugins/seo/) - *WordPress plugin for on-page content analysis*\n    - 📈 [WordPress - RankMath](https://wordpress.org/plugins/seo-by-rank-math/) - *WordPress plugin for seo analysis*\n    - 📈 [Keyword.com](https://keyword.com/) - *Accurate keyword rank tracking software with daily updates*\n- #### SEO Checkers\n  *Online tools that helps you locating and addressing issues that can hurt your ranking*\n    - ✔️ [Lighthouse](https://developers.google.com/web/tools/lighthouse/) - *Addressing technical and on-site seo issues*\n        - Built inside Chrome DevTools.\n        - Apart from SEO, it can be used to audit for **performance, pwa, best practices and accessibility** issues\n    - ✔️ [Webhint](https://webhint.io/) - *Checks for issues such as: **accessibility, compatibility, pwa, performance, pitfalls and security***\n    - ✔️ [Google’s Mobile-Friendly Test](https://search.google.com/test/mobile-friendly) - *Test if page is mobile friendly*\n    - ✔️ [Varvy SEO tool](https://varvy.com/) - *Checks for:*\n        - Accessibility issues\n        - Excessive amount of links and they are findable\n        - Performance: page speed is optimal\n        - Robots.txt and sitemap are available\n        - Security: page is served over HTTPS\n        - Site availability: Google has access to your CSS and JavaScript resources\n        - Site is responsive\n        - Validates document\n    - ✔️ [SEO Tester Online](https://suite.seotesteronline.com/seo-checker) - *Analyse your site based on 4 different aspects:\n        - Structure of document\n        - Content on page\n        - Web \u0026 mobile performance\n        - Social presence (open graph tags)\n    - ✔️ [Sitechecker Pro](https://sitechecker.pro/)\n    - ✔️ [Seobility](https://www.seobility.net/en/seocheck/) - *Factors includes **meta information, page quality and structure, links and server configuration***\n    - ✔️ [SEO Site Checkup](https://seositecheckup.com/) - *Apart from general SEO, also checks for: **speed, server \u0026 security and mobile usability***\n    - ✔️ [Web Check](https://web-check.xyz/) - *A powerful all-in-one tool for discovering information about a website/host.*\n- #### Chrome Extensions\n    - 💻 [Serpstat Website SEO Checker](https://chrome.google.com/webstore/detail/serpstat-website-seo-chec/fcgbopaomlpldhbinhgebmkcnkfconmn)\n    - 💻 [SEO Checker Tool](https://chrome.google.com/webstore/detail/seo-checker-tool-get-free/ljkhgacfcnhpfafpcdpaadgklajibdak)\n    - 💻 [Website SEO Checker: Free Audit \u0026 Analysis](https://chrome.google.com/webstore/detail/website-seo-checker-free/nljcdkjpjnhlilgepggmmagnmebhadnk)\n    - 💻 [Keywords Everywhere - Chrome \u0026 Firefox](https://keywordseverywhere.com/)\n    - 💻 [Detailed - Chrome \u0026 Firefox](https://detailed.com/extension/)\n- #### Other Tools\n    - 🛠️ [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/sharing/) - *Validate open graph tags*\n    - 🛠️ [JSON-LD Schema Markup Generator](https://www.jamesdflynn.com/json-ld-schema-generator/)\n    - 🛠️ [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/u/0/)\n    - 🛠️ [Structured Data Linter](http://linter.structured-data.org/)\n    - 🛠️ [W3C Markup Validation Service](https://validator.w3.org/)\n    - 🛠️ [LinkedIn Post Inspector](https://www.linkedin.com/post-inspector/)\n    - 🛠️ [Pinterest Rich Pins Validator](https://developers.pinterest.com/tools/url-debugger/)\n    - 🛠️ [Twitter Card Validator](https://cards-dev.twitter.com/validator)\n\n## ⚙️ Technical SEO\nℹ️ *The purpose of Technical SEO is to help search engines find and crawl your website without any problems.*\n\n\u003e #### ☑️ Identify crawl errors\n\u003e Use the [coverage tool](https://search.google.com/search-console/about) *(previously Crawl Errors Report)* in Google's Search Console to see which of your pages have been indexed and any problems encountered during indexing.\n\u003e\n\u003e 📖 [Google Search Console - Coverage status report](https://support.google.com/webmasters/answer/7440203)  \n\u003e 📖 [Google Search Console - Migrating from old Search Console](https://support.google.com/webmasters/answer/9073702?hl=en)\n----------\n\n\u003e #### ☑️ URL inspection\n\u003e 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:\n\u003e - [Test whether your page is able to be indexed](https://support.google.com/webmasters/answer/9012289#test_live_page)\n\u003e - [Request URL to be (re)crawled by Google](https://support.google.com/webmasters/answer/9012289#request_indexing)\n\u003e - [See current status of a URL](https://support.google.com/webmasters/answer/9012289#using_the_tool)\n\u003e - [See how google sees your page](https://support.google.com/webmasters/answer/9012289#view_screenshot)\n\u003e\n\u003e 📖 [Google Search Console - URL Inspection Tool](https://support.google.com/webmasters/answer/9012289)\n----------\n\n\u003e #### ☑️ No broken links\n\u003e 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.\n\u003e\n\u003e 📖 [Web.dev - Page has unsuccessful HTTP status code](https://web.dev/http-status-code/?utm_source=lighthouse\u0026utm_medium=devtools)\n----------\n\n\u003e #### ☑️ No blocked pages\n\u003e 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.\n\u003e\n\u003e 📖 [Web.dev - Page is blocked from indexing](https://web.dev/is-crawable/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003c!-- this will prevent all crawlers from accessing your page: --\u003e\n\u003cmeta name=\"robots\" content=\"noindex\" /\u003e\n```\n\n```txt\n# This response header also blocks crawlers\nX-Robots-Tag: noindex\n```\n----------\n\n\u003e #### ☑️ Optimized 404\n\u003e 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.  \n\u003e Things you can do to optimize your 404 page:\n\u003e - Include notification that the page the user is looking for cannot be found\n\u003e - Include a link to your home page\n\u003e - Include a search bar\n\u003e - Your navigation should be present\n\u003e\n\u003e 📖 [SEO Site Checkup - 404 Page Test](https://seositecheckup.com/tools/custom-404-error-page-test)\n----------\n\n\u003e #### ☑️ Served over HTTPS\n\u003e 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.\n\u003e\n\u003e Strong sense of security will build trust over time which will only benefit your business.\n\u003e\n\u003e 📖 [Google Search Console - Secure your site with HTTPS](https://support.google.com/webmasters/answer/6073543)\n----------\n\n\u003e #### ☑️ Mobile friendly\n\u003e Internet usage has turned around in [2016](https://gs.statcounter.com/download/internet_usage_2009_2016_ww.png): 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.\n\u003e  \n\u003e 🛠️ [Google’s Mobile-Friendly Test](https://search.google.com/test/mobile-friendly)  \n\u003e 📖 [Google Developers: Be mobile-friendly](https://developers.google.com/search/mobile-sites/)  \n\u003e 📖 [Google Developers: Responsive Web Design Basics](https://developers.google.com/web/fundamentals/design-and-ux/responsive)  \n\u003e 📖 [Varvy: Mobile optimization guide](https://varvy.com/mobile/)\n----------\n\n\u003e #### ☑️ Page speed efficiency\n\u003e Optimizing page speed is a whole topic in itself, but there are some key aspects from which you can leverage the most.\n\u003e\n\u003e - ##### ✔️ Browser caching\n\u003e   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.\n\u003e\n\u003e   Browser caching set for images in a `.htaccess` file\n\u003e   ```\n\u003e   \u003cIfModule mod_expires.c\u003e\n\u003e     ExpiresActive On\n\u003e\n\u003e     # Expiration date set for images\n\u003e     ExpiresByType image/jpeg \"access plus 1 year\"\n\u003e     ExpiresByType image/gif \"access plus 1 year\"\n\u003e     ExpiresByType image/png \"access plus 1 year\"\n\u003e     ExpiresByType image/webp \"access plus 1 year\"\n\u003e     ExpiresByType image/svg+xml \"access plus 1 year\"\n\u003e     ExpiresByType image/x-icon \"access plus 1 year\"\n\u003e   \u003c/IfModule\u003e\n\u003e   ```\n\u003e - ##### ✔️ Compression enabled\n\u003e   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.\n\u003e\n\u003e - ##### ✔️ Resources minified\n\u003e   All resources (HTML, CSS, JavaScript) should be minified to reduce their size\n\u003e\n\u003e - ##### ✔️ Images and fonts are optimized\n\u003e   Compressing images and fonts can result in most saved bytes of data.  \n\u003e   Some tips for **image optimization:**\n\u003e   - Try to utilize CSS3 effects instead of using images\n\u003e   - Use vector images, perferably SVG\n\u003e   - Minify SVG markup\n\u003e   - Choose the right raster format\n\u003e     - GIF for animation\n\u003e     - JPG for fine detailed images\n\u003e     - PNG-8/24 for transparent / low colour palette images\n\u003e   - Intrinsic size should be as close to display size as possible\n\u003e   - Compress\n\u003e\n\u003e    Some tips for **font optimization:**\n\u003e    - Minimize number of font usage (both font family and variants)\n\u003e    - Subset font face\n\u003e    - Use `rel=\"preload\"` to treat resource with high priorty\n\u003e    - Cache \u0026 compress\n\u003e  \n\u003e 📖 [Webtips.dev - 10 Critical Performance Optimization Steps You Should Take](https://webtips.dev/10-critical-performance-optimization-steps-you-should-take)  \n\u003e 📖 [Webtips.dev - How to Improve Page Speed by Optimizing Content](https://webtips.dev/how-to-improve-page-speed-by-optimizing-content)  \n\u003e 📖 [Webtips.dev - 3 Ways to Benchmark Your JavaScript](https://webtips.dev/webtips/javascript/benchmark-javascript)  \n\u003e 📖 [Web fundamentals - Measure Performance with the RAIL Model](https://developers.google.com/web/fundamentals/performance/rail)  \n\u003e 📖 [Web fundamentals - Why Performance Matters](https://developers.google.com/web/fundamentals/performance/why-performance-matters)   \n\u003e 📖 [Varvy.com - Leverage browser caching](https://varvy.com/pagespeed/leverage-browser-caching.html)  \n\u003e 📖 [Varvy.com - Enable gzip compression](https://varvy.com/pagespeed/enable-compression.html)\n----------\n\n\u003e #### ☑️ Has valid robot.txt\n\u003e If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed.\n\u003e\n\u003e 📖 [Web.dev - robot.txt is not valid](https://web.dev/robots-txt/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n*Example for a valid robot.txt file*\n\n```txt\nuser-agent: *\ndisallow: /downloads/\n```\n----------\n\n\u003e #### ☑️ Has valid sitemap.xml\n\u003e 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.\n\u003e\n\u003e Cases where you might not need a sitemap:\n\u003e - If you only have a landing page or a small site (500 pages or less)\n\u003e - You're using a hosting service like Wix or Webflow which generates a sitemap automatically\n\u003e - Your site is comprehensively linked internally\n\u003e\n\u003e 📖 [Google Search Console - Learn about sitemaps](https://support.google.com/webmasters/answer/156184)\n----------\n\n\u003e #### ☑️ Structured data\n\u003e Site has a valid structured data. Run the [Structured Data Testing Tool](https://search.google.com/structured-data/testing-tool/u/0/) and the [Structured Data Linter](http://linter.structured-data.org/) to validate.\n\u003e Marking up your content with structured data makes it more likely that it will be included in rich search results.\n\u003e\n\u003e 📖 [Webtips.dev - How to Use Schema Markup in HTML](https://webtips.dev/lessons/schema-markup-in-html)  \n\u003e 📖 [Web.dev - Structured data is valid](https://web.dev/structured-data/?utm_source=lighthouse\u0026utm_medium=devtools)  \n\u003e 📖 [Learn more - Schema.org](http://schema.org/)\n----------\n\n\u003e #### ☑️ Core web vitals\n\u003e 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:\n\u003e\n\u003e - ##### ✔️ Largest Contentful Paint\n\u003e   **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](https://web.dev/lcp/#what-is-a-good-lcp-score).\n\u003e\n\u003e - ##### ✔️ First Input Delay\n\u003e   **FID** for short, measures the time it takes for the first user input to be processed. Anything [below 100ms](https://web.dev/fid/#what-is-a-good-fid-score) is considered good.\n\u003e\n\u003e - ##### ✔️ Cumulative Layout Shift\n\u003e   **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](https://web.dev/cls/#what-is-a-good-cls-score).\n\u003e  \n\u003e 📖 [Webtips.dev - Core Web Vitals](https://webtips.dev/core-web-vitals)  \n\u003e 📖 [Web.dev - Largest Contentful Paint (LCP)](https://web.dev/lcp/)  \n\u003e 📖 [Web.dev - First Input Delay (FID)](https://web.dev/fid/)  \n\u003e 📖 [Web.dev - Cumulative Layout Shift (CLS)](https://web.dev/cls/)\n\n## 📜 On-Site SEO\nℹ️ *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.*\n\n### Meta information\nℹ️ *Meta information provides details about the webpage. Metadata will not be displayed but will be parsed by search engines*\n\n\u003e #### ☑️ Has meta description\n\u003e Meta descriptions provides a summary of a page's content that search engines include in search results\n\u003e\n\u003e 📖 [Web.dev - Document has a meta description](https://web.dev/meta-description/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003cmeta name=\"description\" content=\"Meta descriptions should not be more than 150 characters, but should be above 120 characters\" /\u003e\n```\n----------\n\n\u003e #### ☑️ Has meta viewport\n\u003e Meta viewports optimize your app for mobile screens.\n\u003e\n\u003e 📖 [Web.dev - Document has a viewport meta tag](https://web.dev/viewport/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /\u003e\n```\n----------\n\n\u003e #### ☑️ Has open graph tags\n\u003e 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.  \n\u003e The four required properties are:\n\u003e - `og:title` - The title of the object, usually will match the content of your `title` tag\n\u003e - `og:type` - The type of object, eg.: `article`, `profile`, `website`. *(To see all available object types visit the [object types section](https://ogp.me/#types) on the official page of open graph.)*\n\u003e - `og:image` - The URL of the image which will represent the object\n\u003e - `og:url` - The URL of your site where the object will take the user after interaction\n\u003e\n\u003e To see all other available open graph tags, visit the [official website](https://ogp.me/) of the open graph protocol.\n\u003e\n\u003e 📖 [The Open Graph protocol](https://ogp.me/)  \n\u003e 🛠️ [Facebook - Open Graph Object Debugger](https://developers.facebook.com/tools/debug/og/object)\n\n```html\n\u003c!-- Example markup for the movie \"The Rock\" on IMDB --\u003e\n\u003cmeta property=\"og:title\" content=\"The Rock\" /\u003e\n\u003cmeta property=\"og:type\" content=\"video.movie\" /\u003e\n\u003cmeta property=\"og:url\" content=\"http://www.imdb.com/title/tt0117500/\" /\u003e\n\u003cmeta property=\"og:image\" content=\"http://ia.media-imdb.com/images/rock.jpg\" /\u003e\n```\n----------\n\n### Document head\nℹ️ *Apart from meta tags, there are a number of other tags in the head of the document that you should take care of.*\n\n\u003e #### ☑️ Doctype is set to HTML5\n\u003e The `\u003c!DOCTYPE\u003e` 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.\n\u003e\n\u003e 📖 [W3Schools - HTML \u003c!DOCTYPE\u003e Declaration](https://www.w3schools.com/tags/tag_doctype.asp)  \n\u003e 🛠️ [SEO Site Checkup - Doctype Test](https://seositecheckup.com/tools/doctype-test)\n\n```html\n\u003c!DOCTYPE html\u003e\n```\n----------\n\n\u003e #### ☑️ Document has a title tag\n\u003e 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.\n\u003e Titles shouldn't be too long or too short, try to keep the character count around 50-60.\n\u003e\n\u003e 📖 [Web.dev - Document has a title tag](https://web.dev/document-title/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003c!doctype html\u003e\n\u003chtml lang=\"en\"\u003e\n    \u003chead\u003e\n        …\n        \u003ctitle\u003eSEO Checklist\u003c/title\u003e\n        …\n    \u003c/head\u003e\n    \u003cbody\u003e\n        …\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n----------\n\n\u003e #### ☑️ Document has a valid hreflang\n\u003e hreflang links tell search engines what version of a page they should list in search results for a given language or region.\n\u003e\n\u003e 📖 [Web.dev - Valid href for document](https://web.dev/hreflang/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003clink rel=\"alternate\" hreflang=\"en\" href=\"https://my-site.com\" /\u003e\n\u003clink rel=\"alternate\" hreflang=\"es\" href=\"https://es.my-site.com\" /\u003e\n\u003clink rel=\"alternate\" hreflang=\"de\" href=\"https://de.my-site.com\" /\u003e\n```\n----------\n\n\u003e #### ☑️ Favicon exists\n\u003e If your site has a favion, it can be included in the search results page.\n\u003e\n\u003e 📖 [Google Search Console - Define favicon to show in search results](https://support.google.com/webmasters/answer/9290858?hl=en)\n\n```html\n\u003clink rel=\"shortcut icon\" href=\"/path/to/favicon.ico\" /\u003e\n```\n----------\n\n### Document structure\nℹ️ *Document structure outlines how your html should be built up and shows what are the key factors that can affect your SEO.*\n\n\u003e #### ☑️ SEO friendly URLs\n\u003e 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.\n\u003e\n\u003e 📖 [Google Search Console - Keep a simple URL structure](https://support.google.com/webmasters/answer/76329)  \n\u003e 📖 [Moz - URLs](https://moz.com/learn/seo/url)  \n\u003e 🛠️ [SEO Site Checkup - SEO Friendly URL Test](https://seositecheckup.com/tools/seo-friendly-url-test)\n\n```html\n\u003c!-- 🔴 Don't --\u003e\n\u003ca href=\"https://example.com/index.php?page=articles\u0026order=desc\"\u003eLatest articles\u003c/a\u003e\n\n\u003c!-- ✅ Do --\u003e\n\u003ca href=\"http://example.com/articles/latest\"\u003eLatest articles\u003c/a\u003e\n```\n----------\n\n\u003e #### ☑️ Heading in order\n\u003e 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`.\n\u003e\n\u003e 📖 [Webtips.dev - 10 Best Practices for HTML](https://webtips.dev/10-best-practices-for-html)  \n\u003e 📖 [Yoast - More than one H1](https://yoast.com/academy/seo-copywriting-training/single-h1/)\n\n```html\n\u003c!-- ❌ Don't --\u003e\n\u003ch1\u003eTitle of your page\u003c/h1\u003e\n\u003ch3\u003eHeading\u003c/h3\u003e\n\n\u003c!-- ❌ Don't --\u003e\n\u003ch3\u003eTitle of your page\u003c/h3\u003e\n\u003ch1\u003eHeading\u003c/h1\u003e\n\n\u003c!-- ✔️ Do --\u003e\n\u003ch1\u003eTitle of your page\u003c/h1\u003e\n\u003ch2\u003eHeading\u003c/h2\u003e\n\u003ch3\u003eSub-heading\u003c/h3\u003e\n```\n----------\n\n\u003e #### ☑️ Image elements have [alt] attributes\n\u003e 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`.\n\u003e\n\u003e 📖 [Web.dev - Image elements have [alt] attributes](https://web.dev/image-alt/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003c!-- Images should have a short, descriptive alt text --\u003e\n\u003cimg src=\"...\" alt=\"Diagram showing the steps of critical rendering path\" /\u003e\n\n\u003c!-- If the image doesn't provide any value, still give it an empty alt tag --\u003e\n\u003cimg src=\"...\" alt=\"\" /\u003e\n\n\u003c!-- Use `width` and `height` attributes to avoid layout shifts --\u003e\n\u003c!-- Lazy load off-screen images --\u003e\n\u003c!-- ⚠️ Never lazy load ATF (above-the-fold) images --\u003e\n\u003cimg src=\"...\" alt=\"\" width=\"100\" height=\"100\" loading=\"lazy\" /\u003e\n```\n----------\n\n\u003e #### ☑️ Document uses legible font sizes\n\u003e Font sizes less than 12px are too small to be legible and require mobile visitors to “pinch to zoom” in order to read.\n\u003e\n\u003e 📖 [Web.dev - Document uses legible font sizes](https://web.dev/font-size/?utm_source=lighthouse\u0026utm_medium=devtools)\n----------\n\n\u003e #### ☑️ Tap targets are sized appropriately\n\u003e 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.\n\u003e\n\u003e 📖 [Web.dev - Tap targets are sized appropriately](https://web.dev/tap-targets/?utm_source=lighthouse\u0026utm_medium=devtools)\n----------\n\n\u003e #### ☑️ Document avoids plugins\n\u003e Search engines can't index plugin content, and many devices restrict plugins or don't support them.\n\u003e \n\u003e Elements such as `embed`, `object` or `applet` are checked and if their MIME type matches any of the following:\n\u003e - `application/x-java-applet`\n\u003e - `application/x-java-bean`\n\u003e - `application/x-shockwave-flash`\n\u003e - `application/x-silverlight`\n\u003e - `application/x-silverlight-2`\n\u003e \n\u003e Then it will be flagged as a plugin.\n\u003e\n\u003e 📖 [Web.dev - Document avoids plugins](https://web.dev/plugins/?utm_source=lighthouse\u0026utm_medium=devtools)\n----------\n\n### Readability\n\n\u003e #### ☑️ Title width\n\u003e 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.\n\u003e\n\u003e 📖 [Yoast - The ideal width of title](https://yoast.com/academy/all-around-seo-training/seo-title-width)\n----------\n\n\u003e #### ☑️ Subheading distribution\n\u003e 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.  \n\u003e If you can, also incorporate your main keyphrase in the subheading.\n\u003e\n\u003e 📖 [Yoast - How to improve subheading distribution](https://yoast.com/academy/seo-copywriting-training/subheading-distribution/)\n----------\n\n\u003e #### ☑️ Links have descriptive text\n\u003e Descriptive link text helps search engines understand your content.\n\u003e\n\u003e 📖 [Web.dev - Links have descriptive text](https://web.dev/link-text/?utm_source=lighthouse\u0026utm_medium=devtools)\n\n```html\n\u003c!-- 🔴 Don't --\u003e\n\u003cp\u003eTo see more articles like this, \u003ca href=\"articles.html\"\u003eclick here\u003c/a\u003e.\u003c/p\u003e\n\n\u003c!-- ✅ Do --\u003e\n\u003cp\u003eAre you interesed in more? Check out these \u003ca href=\"articles.html\"\u003esimilar articles\u003c/a\u003e.\u003c/p\u003e\n```\n----------\n\n\u003e #### ☑️ Internal links\n\u003e 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.  \n\u003e By adding internal links, you enable Google to understand:\n\u003e - The relevance of pages\n\u003e - The relationship between the pages\n\u003e - The value of each page\n\u003e\n\u003e Last but not least, it can help both users and search engines to nagivate your site more easily.\n\u003e\n\u003e 📖 [Yoast - Internal linking for SEO: Why and how?](https://yoast.com/internal-linking-for-seo-why-and-how/)\n----------\n\n\u003e #### ☑️ Outbound links\n\u003e 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.\n\u003e\n\u003e 📖 [Moz - External Links](https://moz.com/learn/seo/external-link)\n----------\n\n\u003e #### ☑️ Use of keyphrases\n\u003e 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](https://trends.google.com/trends), [Google Keyword Planner](https://ads.google.com/intl/en_gb/home/tools/keyword-planner/), [Answer The Public](https://answerthepublic.com/) or simply search for your proposed term on Google and let autosuggest show you what other people are searching for.\n\u003e\n\u003e Make sure that your keyphrase:\n\u003e - Appear in the title tag\n\u003e - Appears in subheadings\n\u003e - Appears in first paragraph\n\u003e - is unique, not used it before throughout your site\n\u003e - is used in the slug *(your SEO friendly URL)*\n\u003e - is used in meta description\n\u003e - is used in image [alt] attributes\n\u003e - is not too long\n\u003e - 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%)*\n\u003e\n\u003e 📖 [Yoast - The importance of keyword density](https://yoast.com/academy/seo-copywriting-training/keyphrase-density/)  \n\u003e 📖 [Yoast - The length of your focus keyword](https://yoast.com/academy/keyword-research-training/keyphrase-length/)\n----------\n\n\u003e #### ☑️ Use of passive voice\n\u003e 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.\n\u003e\n\u003e 📖 [Yoast - Using and avoiding the passive voice](https://yoast.com/academy/seo-copywriting-training/passive-voice/)\n----------\n\n\u003e #### ☑️ Use of transition words\n\u003e 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.\n\u003e\n\u003e 📖 [Yoast - Transition words: why and how to use them](https://yoast.com/academy/seo-copywriting-training/transition-words/)\n----------\n\n\u003e #### ☑️ Text length\n\u003e 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.  \n\u003e The reason this will help you rank higher:\n\u003e - Google will have more clue to determine what your page is about\n\u003e - The longer the text, the more often your keywords will appear in it\n\u003e - The more content there is, the more value it can give to users, making your site more relevant\n\u003e\n\u003e 📖 [Yoast - Text length: how long should a blog post be?](https://yoast.com/academy/seo-copywriting-training/text-length/)\n----------\n\n\u003e #### ☑️ Length of paragraphs\n\u003e 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.**\n\u003e\n\u003e 📖 [Yoast - Writing shorter paragraphs: why and how](https://yoast.com/academy/seo-copywriting-training/paragraph-length/)\n----------\n\n\u003e #### ☑️ Length of sentences\n\u003e Longer sentences are generally more difficult to read than shorter sentences. Dividing longer sentences into shorter ones can help improve readability.\n\u003e\n\u003e 📖 [Yoast - Writing shorter sentences](https://yoast.com/academy/seo-copywriting-training/sentence-length/)\n----------\n\n## 📊 Off-Site SEO\n----------\nℹ️ *Off-Site SEO is not about technical details, but about marketing and promotion techniques.*\n\n### Link building\nℹ️ *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.*\n\n\u003e #### ☑️ Amount of links\n\u003e 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.\n\u003e\n\u003e 📖 [Varvy - How many links?](https://varvy.com/howmanylinks.html)  \n\u003e 📖 [Backlinko - Link Building](https://backlinko.com/link-building)\n----------\n\n\u003e #### ☑️ Good vs bad links\n\u003e 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.  \n\u003e We can divide good and bad links into two sub-categories: incoming and outgoing links. Some examples for both are listed below.\n\u003e\n\u003e Links that can be considered **good links:**\n\u003e - Links from high authority websites\n\u003e - Editorial links\n\u003e - Guest posting\n\u003e - Niche specific directories\n\u003e\n\u003e Links that can be considered **bad links:**\n\u003e - Links pointing to user profile pages\n\u003e - Links pointing to comments\n\u003e - Links pointing to dead websites\n\u003e - Links created with link builders\n\u003e - Links from foreign sites\n\u003e - Links from unrelated content\n\u003e - Links from paid links\n\u003e - Links from spammy comments\n\u003e\n\u003e 📖 [Moz - Types of Links](https://moz.com/beginners-guide-to-link-building/types-of-links)  \n\u003e 📖 [Ahrefs - Bad links](https://ahrefs.com/blog/bad-links/)\n----------\n\n\u003e #### ☑️ The use of rel\n\u003e 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.\n\u003e\n\u003e The attribute it can take that is relevant to SEO:\n\u003e - **nofollow:** Indicates that the linked document is not endorsed by the author of this one. Do not confuse with **noopener** or **noreferrer**.\n\u003e\n\u003e 📖 [MDN web docs - Link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)  \n\u003e 📖 [W3Schools - rel attribute](https://www.w3schools.com/TAGS/att_a_rel.asp)\n----------\n\n## 📚 Other Resources\n- 📖 [Google Search Console - SEO Starter Guide](https://support.google.com/webmasters/answer/7451184?hl=en\u0026ref_topic=9460495)\n- 📖 [Google Search Console - Webmaster Guidelines](https://support.google.com/webmasters/answer/35769)\n- 📖 [Moz - SEO Learning Center](https://moz.com/learn/seo)\n- 📖 [Moz - The Beginners Guide to SEO](http://d2eeipcrcdle6.cloudfront.net/guides/Moz-The-Beginners-Guide-To-SEO.pdf)\n- 📖 [TutorialsPoint - SEO Tutorials](http://www.tutorialspoint.com/seo/index.htm)\n- 📖 [Ahrefs - The Noob Friendly Guide To Link Building](https://ahrefs.com/blog/link-building/)\n- 📖 [Mastering SEO for Developers](https://www.git-tower.com/blog/seo-for-developers/)\n- 📺 [Ahrefs - SEO For Beginners](https://www.youtube.com/watch?v=DvwS7cV9GmQ)\n- 📺 [Ahrefs - SEO Checklist 2019](https://www.youtube.com/watch?v=taU9P98zfjk)\n- 📺 [Backlinko - SEO Checklist 2020](https://www.youtube.com/watch?v=SEQBi9LtZjQ)\n- 📺 [WordPress - Yoast SEO Tutorial 2019](https://www.youtube.com/watch?v=uNL82kDhG3w)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowforfrank%2Fseo-checklist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflowforfrank%2Fseo-checklist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflowforfrank%2Fseo-checklist/lists"}