Realpython.com - SEO Checker

Overview of the SEO Check
Meta information
100% 
Page quality
48% 
Page structure
100% 
Link structure
28% 
Server
80% 
External factors
100% 
SEO Score
Response time
0.84 s
File size
68.80 kB
Words
496
Media files
21
Number of links
157 internal / 5 external

Task list of SEO Improvements

Meta specifications

Title
(Critically important)
Python Tutorials – Real Python
The length of the page title is perfect. (279 pixels out of 580 max pixel length)
There are no duplicate words in the title
Meta description
(Critically important)
Learn Python online: Python tutorials for developers of all skill levels, Python books and courses, Python news, code examples, articles, and more.
The length of the meta description is perfect. (902 pixels out of 1000 max pixel length)
Crawlability
(Critically important)
There are no problems in accessing the website.
Canonical URL
(Important)
https://realpython.com/
There is a valid canonical link specified.
Language
(Somewhat important)
Language detected in text: en
Language defined in HTML: en
Server location: United States of America
The following language is defined by HTML: en
Alternate/Hreflang Links
(Somewhat important)
There are no alternate links specified on this page.
Other meta tags
(Somewhat important)
There is no rel next meta tag on this page.
There is no rel prev meta tag on this page.
Domain
(Somewhat important)
The domain is no subdomain.
The domain length is good.
The domain does not contain non-latin characters.
Page URL
(Somewhat important)
No parameters were found in the URL.
No session ID was found in the URL.
The URL does not have too many subdirectories.
Charset encoding
(Somewhat important)
The charset encoding (UTF-8) is set correctly.
Doctype
(Nice to have)
The doctype HTML 5 is set correctly.
The doctype is placed at first in the HTML code.
Favicon
(Nice to have)
The favicon is linked correctly.

Meta tags

NameValue
authorReal Python
descriptionLearn Python online: Python tutorials for developers of all skill levels, Python books and courses, Python news, code examples, articles, and more.
keywordsEmpty
viewportwidth=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover
langen
twitter:cardsummary
twitter:creator@realpython
twitter:site@realpython
twitter:image/static/social-default-image.5e1aa4786b3a.png
og:image/static/social-default-image.5e1aa4786b3a.png
og:titlePython Tutorials – Real Python
og:typewebsite
og:urlhttps://realpython.com/
og:descriptionLearn Python online: Python tutorials for developers of all skill levels, Python books and courses, Python news, code examples, articles, and more.
charsetutf-8

Test up to 1.000 webpages of realpython.com with our free plan!

Try For Free
No trial. It's just free!

Page quality

Content
(Critically important)
Only 1 paragraph/s was/were found on this page.
There are only 496 words on this page. Good pages should have about 800 words of useful content.
The average number of words per sentence of 30 words is high.
21% of the text are stop words.
Keywords used in the page title are also used in the page content. That's good!
Words from the H1 heading are used in the page content.
The page contains a listing, which indicates a good text layout.
No placeholders texts or images were found.
There are no duplicates on the site.
Frames
(Critically important)
This page does not use a frameset.
Mobile optimization
(Somewhat important)
No Apple touch icon is specified.
A viewport "width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover" is provided.
Bold and strong tags
(Somewhat important)
The usage of strong and bold tags is perfect. We recommend the use of up to 10 tags for this page.
Image SEO
(Somewhat important)
Alt text (alternative text) is correctly used on all found images.
Social Networks
(Nice to have)
There are only a few social sharing widgets on the page. Make your website popular in social networks with social sharing widgets.
Additional markup
(Nice to have)
No additional page markup was found.
HTTPS
(Somewhat important)
This website uses HTTPS to protect privacy and integrity of the exchanged data.
All included files are also transferred via HTTPS.

Media list

URLAlt attributeTitle
/static/real-python-logo.893c30edea53.svgReal Python
...ce-New-REPL_Watermarked.32f3cd6db89a.jpgPython 3.13 Preview: A Modern REPL
/static/pytrick-dict-merge.4201a0125a5e.pngPython Tricks Dictionary Merge
...hon-Imports_Watermarked.ae72c8a00197.jpgPython import: Advanced Techniques and Tips
...nvironments_Watermarked.4c787192d42f.jpgPython Virtual Environments (venv)
...ing-and-JIT_Watermarked.a5ebf956c5ba.jpgPython 3.13 Preview: Free Threading and a JIT Compiler
...S-Code-Color-Themes-art.cdf459457fd6.jpgVS Code Color Theme Art
...What-is-PIP_Watermarked.4944e95d83ad.jpgUsing Python's pip to Manage Your Projects' Dependencies
...re-in-NumPy_Watermarked.a1b7c35f4084.jpgHow to Use Conditional Expressions With NumPy where()
...-Difference_Watermarked.a96767464f75.jpgWhen Should You Use .__repr__() vs .__str__() in Python?
...n-News_Blue_Watermarked.f56ede474cc7.jpgPython News
...s-in-Python_Watermarked.a52798070b3e.jpgLists vs Tuples in Python
...ic-Showcase_Watermarked.423b9d2e27c6.jpgPydantic: Simplifying Data Validation in Python
...OpenAIs-API_Watermarked.05753350e866.jpgGenerate Images With DALL·E 2 and the OpenAI API
...goDB-Part-1_Watermarked.f246d4df4b36.jpgWeb Scraping With Scrapy and MongoDB
...With-Python_Watermarked.6d2e1401c4f5.jpgUsing-Astropy-for-Astronomy-With-Python_Watermarked
...Setup-Guide_Watermarked.62f654dcab67.jpgPython 3 Installation & Setup Guide
...-Templating_Watermarked.ae90a187545f.jpgJinja Templating Engine
...Astrophysics-Pandas-Art.aeb2f30189c7.jpgAstrophysics With Pandas & Matplotlib Art
...g-in-Python_Watermarked.6cf327c51434.jpgPython Classes: The Power of Object-Oriented Programming
...-3.8-UPDATE_Watermarked.d7eee1fde3ea.jpgThe Walrus Operator: Python's Assignment Expressions

Page structure

H1 heading
(Critically important)
Real Python Tutorials
The H1 heading is perfect.
Headings
(Important)
The heading structure is perfect.

Heading structure

Heading levelContent
H1 Real Python Tutorials
H2 Python 3.13 Preview: A Modern REPL
H2 Explore Real Python
H2 New Releases
H2 Advanced Python import Techniques
H2 Python Virtual Environments: A Primer
H2 Python 3.13 Preview: Free Threading and a JIT Compiler
H2 Customizing VS Code Through Color Themes
H2 Using Python's pip to Manage Your Projects' Dependencies
H2 How to Use Conditional Expressions With NumPy where()
H2 When to Use .__repr__() vs .__str__() in Python
H2 Python News Roundup: September 2024
H2 Lists vs Tuples in Python
H2 Using Pydantic to Simplify Python Data Validation
H2 Generate Images With DALL·E and the OpenAI API
H2 Web Scraping With Scrapy and MongoDB
H2 Using Astropy for Astronomy With Python
H2 How to Install Python on Your System: A Guide
H2 Primer on Jinja Templating
H2 Exploring Astrophysics in Python With pandas and Matplotlib
H2 Python Classes: The Power of Object-Oriented Programming
H2 The Walrus Operator: Python's Assignment Expressions
Some internal links have dynamic parameters. All internal URLs, which are not marked as nofollow, should not contain dynamic parameters.
Some anchor texts are used more than once.
The number of internal links is ok.
None of the anchor texts is too long.
There are 5 external links on this page.
LinkAttributesAnchor text
https://realpython.com/IMG-ALT Real Python
/start-here/Start Here
/search?kind=article&kind=cour...Python Tutorials → In-depth articles and video courses
/learning-paths/Learning Paths → Guided study plans for accelerated learning
https://realpython.com/quizzes/Quizzes → Check your learning progress
/tutorials/all/Browse Topics → Focus on a specific area or skill level
https://realpython.com/community/Community Chat → Learn with other Pythonistas
/office-hours/Office Hours → Live Q&A calls with Python experts
/podcasts/rpp/Podcast → Hear what’s new in the world of Python
/products/books/Books → Round out your knowledge and learn offline
https://realpython.com/mentor/Code Mentor →Beta Personalized code assistance & learning tools
/account/join/Unlock All Content →
/learner-stories/Learner Stories
/newsletter/Python Newsletter
https://www.pythonjobshq.com/New window External Subdomain Python Job Board
https://realpython.com/team/Meet the Team
/write-for-us/Become a Tutorial Writer
/become-an-instructor/Become a Video Instructor
https://realpython.com/searchSearch
A-TITLE Search
https://realpython.com/searchText duplicate A-TITLE Search
/account/join/Join
/account/login/?next=/Sign‑In
/python313-repl/NEW
IMG-ALT Python 3.13 Preview: A Modern REPL
/python313-repl/Python 3.13 Preview: A Modern REPL
/tutorials/basics/basics
/tutorials/python/python
/tutorials/all/Browse Topics
/learning-paths/Guided Learning Paths
/search?level=basicsBasics
/search?level=intermediateIntermediate
/search?level=advancedAdvanced
/tutorials/api/api
/tutorials/best-practices/best-practices
/tutorials/career/career
/tutorials/community/community
/tutorials/databases/databases
/tutorials/data-science/data-science
/tutorials/data-structures/data-structures
/tutorials/data-viz/data-viz
/tutorials/devops/devops
/tutorials/django/django
/tutorials/docker/docker
/tutorials/editors/editors
/tutorials/flask/flask
/tutorials/front-end/front-end
/tutorials/gamedev/gamedev
/tutorials/gui/gui
/tutorials/machine-learning/machine-learning
/tutorials/numpy/numpy
/tutorials/projects/projects
/tutorials/python/Text duplicate python
/tutorials/testing/testing
/tutorials/tools/tools
/tutorials/web-dev/web-dev
/tutorials/web-scraping/web-scraping
/learning-paths/Learning Paths Guided study plans for accelerated learning
/search?kind=article&kind=cour...Python Tutorials In-depth articles and step-by-step video courses
https://realpython.com/quizzes/Quizzes Evaluate your Python knowledge with quick tests
/tutorials/all/Browse Topics Focus on a specific area or skill level
https://realpython.com/community/Community Chat Learn with other Pythonistas
/office-hours/Office Hours Live Q&A calls with experts from Real Python
/podcasts/rpp/Podcast Hear what’s new in the world of Python
/products/books/Books Round out your knowledge and learn offline
https://realpython.com/searchText duplicate A-TITLE Search
/search?order=newestNew Releases
/search?order=newestView All »
/courses/advanced-import-techn...IMG-ALT Python import: Advanced Techniques and Tips
/courses/advanced-import-techn...Advanced Python import Techniques
/tutorials/intermediate/intermediate
/tutorials/python/Text duplicate python
/python-virtual-environments-a...IMG-ALT Python Virtual Environments (venv)
/python-virtual-environments-a...Python Virtual Environments: A Primer
/tutorials/intermediate/Text duplicate intermediate
/tutorials/devops/Text duplicate devops
/tutorials/tools/Text duplicate tools
/python313-free-threading-jit/IMG-ALT Python 3.13 Preview: Free Threading and a JIT Compiler
/python313-free-threading-jit/Text duplicate Python 3.13 Preview: Free Threading and a JIT Compiler
/tutorials/advanced/advanced
/tutorials/python/Text duplicate python
/courses/custom-vs-code-color-...IMG-ALT VS Code Color Theme Art
/courses/custom-vs-code-color-...Customizing VS Code Through Color Themes
/tutorials/basics/Text duplicate basics
/tutorials/gui/Text duplicate gui
/what-is-pip/IMG-ALT Using Python's pip to Manage Your Projects' Dependencies
/what-is-pip/Text duplicate Using Python's pip to Manage Your Projects' Dependencies
/tutorials/basics/Text duplicate basics
/tutorials/tools/Text duplicate tools
/numpy-where-conditional-expre...IMG-ALT How to Use Conditional Expressions With NumPy where()
/numpy-where-conditional-expre...Text duplicate How to Use Conditional Expressions With NumPy where()
/tutorials/intermediate/Text duplicate intermediate
/tutorials/data-science/Text duplicate data-science
/tutorials/numpy/Text duplicate numpy
/account/join/Nofollow Remove ads
/courses/repr-vs-str/IMG-ALT When Should You Use .__repr__() vs .__str__() in Python?
/courses/repr-vs-str/When to Use .__repr__() vs .__str__() in Python
/tutorials/intermediate/Text duplicate intermediate
/tutorials/best-practices/Text duplicate best-practices
/python-news-september-2024/IMG-ALT Python News
/python-news-september-2024/Python News Roundup: September 2024
/tutorials/community/Text duplicate community
/python-lists-tuples/IMG-ALT Lists vs Tuples in Python
/python-lists-tuples/Text duplicate Lists vs Tuples in Python
/tutorials/basics/Text duplicate basics
/tutorials/python/Text duplicate python
/courses/pydantic-simplify-dat...IMG-ALT Pydantic: Simplifying Data Validation in Python
/courses/pydantic-simplify-dat...Using Pydantic to Simplify Python Data Validation
/tutorials/intermediate/Text duplicate intermediate
/tutorials/best-practices/Text duplicate best-practices
/tutorials/data-structures/Text duplicate data-structures
/generate-images-with-dalle-op...IMG-ALT Generate Images With DALL·E 2 and the OpenAI API
/generate-images-with-dalle-op...Generate Images With DALL·E and the OpenAI API
/tutorials/intermediate/Text duplicate intermediate
/tutorials/api/Text duplicate api
/tutorials/data-science/Text duplicate data-science
/web-scraping-with-scrapy-and-...IMG-ALT Web Scraping With Scrapy and MongoDB
/web-scraping-with-scrapy-and-...Text duplicate Web Scraping With Scrapy and MongoDB
/tutorials/intermediate/Text duplicate intermediate
/tutorials/databases/Text duplicate databases
/tutorials/web-scraping/Text duplicate web-scraping
/courses/astropy-astronomy/IMG-ALT Using-Astropy-for-Astronomy-With-Python_Watermarked
/courses/astropy-astronomy/Using Astropy for Astronomy With Python
/tutorials/intermediate/Text duplicate intermediate
/tutorials/data-science/Text duplicate data-science
/installing-python/IMG-ALT Python 3 Installation & Setup Guide
/installing-python/How to Install Python on Your System: A Guide
/tutorials/basics/Text duplicate basics
/tutorials/best-practices/Text duplicate best-practices
/tutorials/tools/Text duplicate tools
/primer-on-jinja-templating/IMG-ALT Jinja Templating Engine
/primer-on-jinja-templating/Primer on Jinja Templating
/tutorials/intermediate/Text duplicate intermediate
/tutorials/django/Text duplicate django
/tutorials/flask/Text duplicate flask
/tutorials/front-end/Text duplicate front-end
/tutorials/web-dev/Text duplicate web-dev
/courses/astrophysics-pandas-m...IMG-ALT Astrophysics With Pandas & Matplotlib Art
/courses/astrophysics-pandas-m...Exploring Astrophysics in Python With pandas and Matplotlib
/tutorials/intermediate/Text duplicate intermediate
/tutorials/data-science/Text duplicate data-science
/tutorials/numpy/Text duplicate numpy
/python-classes/IMG-ALT Python Classes: The Power of Object-Oriented Programming
/python-classes/Text duplicate Python Classes: The Power of Object-Oriented Programming
/tutorials/intermediate/Text duplicate intermediate
/tutorials/python/Text duplicate python
/python-walrus-operator/IMG-ALT The Walrus Operator: Python's Assignment Expressions
/python-walrus-operator/Text duplicate The Walrus Operator: Python's Assignment Expressions
/tutorials/intermediate/Text duplicate intermediate
/tutorials/best-practices/Text duplicate best-practices
https://realpython.com/searchText duplicate A-TITLE Search
/account/join/Nofollow Text duplicate Remove ads
/newsletter/Newsletter
/podcasts/rpp/Podcast
https://www.youtube.com/realpy...External Subdomain YouTube
https://twitter.com/realpythonExternal Twitter
https://facebook.com/LearnReal...External Facebook
https://www.instagram.com/real...External Subdomain Instagram
https://realpython.com/Python Tutorials
https://realpython.com/searchText duplicate Search
/privacy-policy/Privacy Policy
/energy-policy/Energy Policy
/sponsorships/Advertise
https://realpython.com/contact/Contact

Server configuration

HTTP redirects
(Critically important)
This page redirects to "https://realpython.com/"
HTTP header
(Important)
No X-Powered HTTP header is sent.
This page uses GZip for compressed data transmission.
Performance
(Somewhat important)
The page response time of 0.84 seconds is longer than the recommended limit of 0.4 seconds. A high response time unnecessarily slows down search engine crawling and results in bad user experience as well.
The file size of the HTML document is fine (69 kB).

HTTP Response Header

NameValue
dateFri, 27 Sep 2024 12:01:10 GMT
content-typetext/html; charset=utf-8
content-length10066
report-to{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1727438470&sid=67ff5de4-ad2b-4112-9289-cf96be89efed&s=v9QRMl84WMJNrXcvdlZI6A2k8viis7zFS7DAehsc19M%3D"}]}
reporting-endpointsheroku-nel=https://nel.heroku.com/reports?ts=1727438470&sid=67ff5de4-ad2b-4112-9289-cf96be89efed&s=v9QRMl84WMJNrXcvdlZI6A2k8viis7zFS7DAehsc19M%3D
nel{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}
x-frame-optionsSAMEORIGIN
varyCookie, Accept-Encoding
strict-transport-securitymax-age=31536000; includeSubDomains; preload
x-content-type-optionsnosniff
referrer-policystrict-origin-when-cross-origin,origin
cross-origin-opener-policysame-origin
content-encodinggzip
set-cookie129 Characters
via1.1 vegur
cf-cache-statusDYNAMIC
servercloudflare
cf-ray8c9b566539912c7d-FRA
statuscode200
http_versionHTTP/2

External factors

Blacklists
(Nice to have)
This website is not classified "for adult only".
This page is referenced by wikipedia.
This website has excellent links from other websites.
This page has backlinks from 9,675 referring domains.
This page has 678,133 backlinks.
This page has backlinks from 6,370 different ip addresses.
Facebook popularity
(Somewhat important)
The page has 0 shares and comments on Facebook.

Robots.txt

User-agent: *
Disallow: 
Disallow: /search
Disallow: *?q=*
Disallow: */api/v*
Disallow: /account/*/login/
Disallow: /account/*next=
Disallow: /feedback/*
Disallow: /practice/*
Disallow: /preview/*

Sitemap: https://realpython.com/sitemap.xml

Search preview

realpython.com
Python Tutorials – Real Python
Learn Python online: Python tutorials for developers of all skill levels, Python books and courses, Python news, code examples, articles, and more.

Most important keywords

Following keywords were found. You can check the keyword optimization of this page for each keyword.

KeywordResultRecheck
Python85%Check
Real81%Check
Real Python79%Check
Python Tutorials77%Check
Python Tutorials Real75%Check
Tutorials73%Check
Python News67%Check
Learn Python65%Check
using Python62%Check
Python Tricks60%Check

Test up to 1.000 webpages of realpython.com with our free plan!

Try For Free
No trial. It's just free!

Cookie Policy

We use cookies to make our site work and also for analytics and advertising purposes. You can enable or disable optional cookies as desired. See the following links for more information.

We need these so the site can function properly

So we can better understand how visitors use our website

So we can serve you tailored ads and promotions