Chrome 110 Changes How Web Share API Embeds Third Party Content via @sejournal, @martinibuster

Chrome 110, scheduled to roll out on February 7, 2022, contains a change to how it handles the Web Share API that improves privacy and security by requiring a the Web Share API to explicitly allow third-party content.

This might not be something that an individual publisher needs to act on.

It’s probably more relevant on the developer side where they are making things like web apps that use the Web Share API.

Nevertheless, it’s good to know what it is for the rare situation when it might be useful for diagnosing why a webpage doesn’t work.

The Mozilla developer page describes the Web Share API:

“The Web Share API allows a site to share text, links, files, and other content to user-selected share targets, utilizing the sharing mechanisms of the underlying operating system.

These share targets typically include the system clipboard, email, contacts or messaging applications, and Bluetooth or Wi-Fi channels.

…Note: This API should not be confused with the Web Share Target API, which allows a website to specify itself as a share target”

allow=”web-share” Attribute

An attribute is an HTML markup that modifies an HTML element in some way.

For example, the nofollow attribute modifies the anchor element, by signaling the search engines that the link is not trusted.

The

An

Iframes are everywhere, such as in advertisements and embedded videos.

The problem with an iframe that contains content from another site is that it creates the possibility of showing unwanted content or allow malicious activities.

And that’s the problem that the allow=”web-share” attribute solves by setting a permission policy for the iframe.

This specific permission policy (allow=”web-share”) tells the browser that it’s okay to display 3rd party content from within an iframe.

Google’s announcement uses this example of the attribute in use:

Google calls this a “a potentially breaking change in the Web Share API.

The announcement warns:

“If a sharing action needs to happen in a third-party iframe, a recent spec change requires you to explicitly allow the operation.

Do this by adding an allow attribute to the

This tells the browser that the embedding site allows the embedded third-party iframe to trigger the share action.”

Read the announcement at Google’s Chrome webpage:

New requirements for the Web Share API in third-party iframes

Featured image by Shutterstock/Krakenimages.com

Chrome Canary Features For Technical SEO

Building for the web is harder than ever. Better mobile technologies and web standards roll out every day.

So, how are websites keeping up?

Unlimited data plans are a luxury. But how much data gets downloaded when visiting a website, and what’s the environmental impact of our web today?

Google search engine’s mobile-first index prioritizes websites that deliver buttery-smooth page experiences. Does your business ship with search discoverability in mind?

Developers have a lot of influence on how successful a site’s performance is on Google – but do they always focus on search?

Good developers strike a balance between aesthetics and website performance. Is your team setting web performance budgets with measurable goals?

In this piece, I explore ways to improve communication with your dev team. Chrome’s Developer Tools have the data that devs need to fix issues faster.

We’ll see how the Canary browser is a great place to start a technical SEO audit.

I’ll share new feature updates SEO pros should be testing today.

How Chrome Releases New Features

Canary is the early-release version of Google Chrome.

Google releases its features in four stages it calls release channels. The channels are Canary, Dev, Beta, and Stable. Chrome Canary, Beta, and Dev can install side-by-side on Android, Mac, Windows, and Linux.

Chrome engineers test new features on real users to see if they run into any issues before releasing the feature to the next channel.

Google Chrome Developers Chrome Release Channels Staged Rollouts Youtube ScreenshotScreenshot from YouTube, Aug 2022

Canary gets the updates first with nightly releases at 2 AM PST. You get the latest features, browser experiments, and web platform APIs. Updates also include bug fixes, browser improvements, code clean-up, safety, and security.

Features get iterated on over a six-week release cycle before going live to all 3.2B users.

Users get to test upcoming features on their websites, web apps, content management system (CMS), themes, and plugins. They report bugs and give feedback on new features.

Not all features make it past Canary. The experimental browser is used by browser enthusiasts, developers, enterprise users, and technical SEO pros.

Debugging SEO With Developer Tools

Chrome DevTools is a diagnostic browser toolkit for testing websites inside the browser. Developers test, build and maintain websites with instruments that measure page speed performance.

Browser tools test website performance in different conditions. It gives you a head start on getting websites fixed.

For devs, the tools are almost as important as the browser itself.

No need to wait for a long and expensive crawl to finish; You can find technical SEO issues and file them right away with Canary.

Setting Up Chrome Canary For SEO

Websites need to perform well across different locations, devices, and networks. DevTools let you simulate browsing at different places and at slower speeds.

Set Canary up to browse as the Googlebot user agent in Chrome’s settings.

Take a look at what Google sees when it loads a site.

google chrome developers chrome canary setup devtools network conditions screenshotScreenshot from Chrome DevTools Network Conditions Panel, December 2022

Don’t let browser extensions interfere with the accuracy of your tests.

Download Canary as a separate browser dedicated to technical SEO auditing and debugging.

Plug And Scan Technical SEO Troubleshooting In Canary

Chrome DevTools lets you look under the hood of a website.

It tests and prints detailed performance reports in seconds – but it can overwhelm you at first.

Technical SEO pros inspect the web in the same way that mechanics troubleshoot cars; We plug and scan sites into browser tools and analyze how they load and respond.

With Canary you can record and measure key moments like page loading, navigating, and user interactions. You can also get status codes, Core Web Vitals (CWV) readings, waterfall and timeline charts, and much more.

Google chrome developers chrome devtools lcp performance youtube screenshotScreenshot from YouTube, May 2021

Sometimes troubleshooting in Canary only points toward a symptom instead of the problem. More capable tools offer advanced readings, yet the troubleshooting process remains the same.

Technical SEO Auditing With Google Chrome Canary

Google wants websites to load fast, but a page won’t rank well if Googlebot doesn’t understand the main content.

DevTools can measure and help debug website delivery and performance.

Audit and debug Javascript, CSS, and CWV issues with Canary.

Use DevTools to check your pages and templates right away.

google-chrome-developers chrome devtools cwv metrics youtube screenshotScreenshot from YouTube, May 2022

It helps to see how a site is guiding visitors and Google’s crawlers. Check for internal links, content duplication, broken links, missing images, and 404 pages.

Check your on-page metadata to see if it’s all there and optimized. Look for structured data problems, and investigate content Google didn’t index because of JavaScript rendering problems.

Throttle network settings to examine latency across different web conditions, and analyze the website run time performance to identify bottlenecks.

Look for opportunities to optimize your content delivery.

Check how a site’s resources load and render. Not all resources are equal – better resource delivery can improve the user experience.

Using DevTools In Canary For Technical SEO Website Audits

The following are some of the popular use cases in DevTools for SEO pros:

Lighthouse

  • A score-based audit of performance, accessibility, best practices, SEO, and PWA.
  • Actionable insights to improve performance.

Network Panel

  • Search engine crawler emulation.
  • Network condition and speed simulation.
  • Network requests and connections information per frame.
  • Resource loading and rendering information.
  • Waterfall chart visual of website resources as they download.
  • Server responses.

Performance Panel

Other SEO DevTools Workflows

  • Disabling JS setting to debug Javascript SEO issues.
  • Mobile device testing.
  • Accessibility Checks.
  • Remote Headless Browser Testing.
  • Programmatic DevTools browser testing and automation.

Do You Need Help Making A Business Case For SEO?

Use data to prove the value of technical SEO.

Benchmark site performance and compare the content delivery against your competitors.

Competitor benchmarking LCP CRUX field dataScreenshot from Looker Studio, December 2022

Use Canary to keep up with your site as it changes.

Chrome Browser Development Ecosystem

Chrome’s software development strategy runs several rolling and side-by-side deployments. This method lets it run A/B and capacity testing.

Chrome’s engineers automate feature rollbacks and avoid cold starts, and downtimes. It’s a simplified process that gives granular browser version control.

Make sure to track features as they evolve across each channel. Read feature abstracts and understand what business problems they can solve.

Join the conversation.

Chromestatus.com tracks features as they progress. Subscribe to the Chrome Developer’s blog to keep up to date with the Chrome tools and libraries.

Chrome platform status screenshotScreenshot from ChromeStatus.com, December 2022

Experimental DevTools Features In Chrome Canary

New Performance Insights Panel In Chrome DevTools

Professional athletes watch gameplay films to understand their performance. In a similar vein, the Performance Insights panel lets you playback and share recordings of a webpage load.

chrome dev tools performance panel screenshot mobile device viewChrome DevTools Performance Panel, Dec 2022

The new panel shipped with Chrome 102. It’s a streamlined update of the Performance panel which gives insights without requiring a deep technical understanding of browser rendering.

The panel has a simple UI for measuring page load CWV performance. It gives actionable page insights, finds render-blocking requests, layout shifts, and more.

Future releases will expand use cases like testing interactivity.

new performance insights panel screenshot mobile device view

Share network delays in your critical rendering path, and show GPU Activity for dropped frames that cause your site to lag.

Save your devs some time and attach Performance recordings when submitting tickets. Show them exactly what’s wrong with your pages to inspire action right away.

New Recorder Panel Updates In Chrome DevTools

The Recorder panel is an experimental feature that gives user flow insights.

It records runtime performance for multi-step user flows via the Performance Panel.

Use this feature to audit your primary website user flows performance.

Most users interact with your site after it loads. So, it’s a good idea to record user interactions like clicking, scrolling, and navigating. Record and edit your user flows for simulated network conditions.

Also, record an eCommerce checkout flow, and measure checkout performance by setting up different add-to-cart steps.

You can also script a page load and button or link click interaction and measure its CWV.

new-recorder-checkout flow amazon screenshot desktop viewScreenshot from Chrome DevTools Recorder Panel, Dec 2022

Google lists support for several user input properties.

It auto-detects ARIA and CSS selectors. You can also add custom data-* selectors used by popular JS and CSS frameworks. The latest Chrome 108 release expanded support to XPath and text selectors.

Pages can load fast but run slowly – and a poor user experience has an impact on the perception of your brand.

Make sure visitors aren’t abandoning a site because it froze when they clicked around.

Exporting Recorder Panel Scripts For Third-Party Playback

Export your main user-flow recordings into different formats for popular front-end testing tools.

Use the JSON exports to edit flows and import them back into Recorder and watch replays.

Export custom scripts with Chrome extensions.

Support exists for exporting recordings into Google’s Node.js Puppeteer library. You can also use them with Cypress, Nightwatch, Sauce Labs, and TestCafe.

google chrome developers chrome devtools new recorder panel export youtube screenshotScreenshot from Chrome DevTools Recorder Panel, December 2022

Automate Headless Browser Testing With Puppeteer

Headless browsing is when you visit a website without the browser’s UI. You can launch Chrome in your computer’s background and operate browser tools.

Puppeteer Chrome is an API that runs over the DevTools protocol. Puppeteer can also run browser tests without using the Chrome UI via headless mode.

Set up automatic periodic CWV testing, and grab screenshots of your pages loading on different devices and networks. Devs automate form submissions and UI testing.

Automate your page speed performance reporting.

Chrome lets you work smarter, not harder. Devs save a lot of time, and so can you when performing technical SEO audits with Canary.

Automate Timeline Traces For Synthetic Testing

Synthetic tests are timeline trace recordings from different browsers, devices, and networks.

Synthetic simulates performance testing for your user’s real-world experience.

Set up user flow recordings in the Recorder Panel and export the script into a WebPage test. You can export custom Recorder scripts via the WebPage Test Recorder extension.

Web Platform API Testing On Chrome Canary

The Chrome engineering team publishes experimental APIs.

Third-party tools and businesses depend on them for testing new features. Origin Trials are like Feature Flags – they toggle off and don’t always make it to Stable Chrome.

The feature proposal documentation gives context and explains how they can help users.

Check the status of Chrome Feature Flags and APIs on chromestatus.com.

google chrome developers chrome variations telemetry metrics youtube screenshotScreenshot from YouTube, August 2022

Developers use APIs for automated web performance testing. Real User Monitoring (RUM) analytics providers use Chrome’s APIs to track and report real users’ CWVs.

Chrome is built on the Chromium open-source project and bugs are tracked on the Chromium bug tracker.

Back/Forward Cache Testing For Smooth Page Navigation

Modern browsers recently added a feature that loads pages faster using a new type of cache.

The Back/Forward (bfcache) cache captures a snapshot of the page in the browser’s memory when you visit.

bfcache test devtools screenshot amazonScreenshot from Chrome DevTools bfcache test, December 2022

It reloads pages without making a new network request to your server.

Users that navigate back to a previously visited page on your site get a quicker page load experience. Loading from the bfcache is faster than the traditional HTTP cache, as it saves your visitor from downloading extra data.

Chrome 96 Stable release shipped the bfcache test in the Application panel. It checks pages if the Back/Forward caching is being deployed.

Fixing Analytics Underreporting From Bfcache Browser Feature

The bfcache browser optimization is automatic, but it does impact CWV. Analytics tools may underreport pageviews because a page gets loaded from its bfcache.

Is your analytics set up to detect when a page gets loaded from bfcache?

Test your website for bfcache to make sure your important pages are serving it.

Keep an eye on when your pages no longer serve from the bfcache.

New Update To The Back/Forward Cache Testing API

The new NotRestoredReason API feature improves error reporting for bfcache issues. It helps understand why a page isn’t serving the cache to returning visitors.

The API will ship with Stable Chrome 111.

Identifying Render Blocking Resources With The Performance API

RUM tools did not have a simple way to check if a resource was blocking rendering.

Chrome 107 shipped a new feature for the Performance API that identifies render-blocking resources. This update helps RUM users save time and optimize rendering paths.

The Performance Panel helps identify render-blocking resources like CSS, which delay the loading of a site.

When a browser comes across a stylesheet it holds page loading up until it finishes reading the file. A browser needs to understand the layout and design of a page before it can render and paint a website.

Devs can help minimize re-calculation, styling, and repainting to prevent website slowdowns.

Improved HTTP Response Status Codes Reporting For The Resource Timing API

The Resource Timing API did not support failed response code reporting. Chrome 109 will be shipping with a new feature for the Performance API that captures HTTP response codes.

Developers and SEOs can now segment their RUM analytics for page visits that result in 4XX and 5XX response codes.

Chromestatus http response status code in resource timing feature

The Future Of Core Web Vitals Is Here

Google owns 86% of the search engine market share, and Chrome commands 66% of the global browser market share.

Google launched its web performance Core Web Vitals (CWV) metrics in 2020 to help quantify the user experience on a webpage.

First Input Delay (FID) is a CWV that measures a page’s interactivity.

Since it was first launched as a metric, people have been improving the FID of their websites – and today, they are crushing it. 92% of websites now have a good FID score for mobile users, and 100% for desktop users.

But FID only tests for the first user interaction. It does not measure the user experience beyond the initial page load.

According to Jeremey Wagner,

“Chrome usage shows that 90% of a user’s activity happens after the initial page load.”

Google recently launched the experimental Interaction to Next Paint (INP) metric at Google I/O 2022 – and it could soon replace FID as the CWV interactivity field metric.

INP paints a more accurate picture of the interactive user experience. It captures clicking, tapping, keyboard, and scrolled tabbing activity, and also measures the page’s average response time for any interaction that occurs.

js conf korea jeremy Wagner intreraction to next paint youtube screenshotScreenshot from YouTube, November 2022

The HTTP Archive reported a stronger Total Blocking Time (TBT) correlation with INP over FID.

Google continues to experiment on and refine INP.

INP-optimized sites will have a competitive advantage when Google evolves past FID.

Is your website ready for when INP becomes a CWV and affects ranking?

Closing Thoughts On Using Chrome Canary For SEO

In order to perform well and score high on usability, a site must look, feel, navigate, and load fast – and also be accessible. Delightful design and fast browsing allow for better visibility on search.

We’re seeing better-looking websites now, but it can sometimes come at the cost of a good user experience. Dev teams need to consider the environmental cost of shipping bloated websites.

A website loads the way our developers build them.

Devs have to take into account design, content, performance, accessibility, frameworks, networks, and devices. They need to build sites while balancing priorities from marketing, management, and SEO.

SEO pros and devs can work together to drive better website performance. Google’s out-of-the-box tooling offers a great starting point for technical SEO auditing.

DevTools helps cut down time on debugging and troubleshooting, while Canary lets you streamline CWV reporting with browser automation.

Find and share the data your devs need to get started fixing SEO issues right away.

More resources: 


Featured Image: Studio Cantath/Shutterstock

SEO Trends 2023, According To 24 Experts [Ebook] via @sejournal, @sejournal

In a fast-paced industry like SEO, a lot can happen over the course of a year – which is why you want to make sure you stay ahead of the curve.

So, how can you gain a competitive edge in 2023?

What SEO strategies and tactics will help you dominate the SERPs and earn more revenue?

In the latest edition of our SEO Trends ebook, you’ll find answers to your most burning questions and tips to influence the way you optimize for search.

We’ve gathered helpful insights from 24 of today’s top experts; they’ll share what happened in SEO over the past year and what they expect to happen next year.

Download SEO Trends 2023 now and discover the retrospective and forward-thinking insights you need to help prepare for 2023.

You’ll learn how to recalibrate your SEO strategy for maximum results by identifying the key trends that will affect the search landscape next year.

Some of the SEO trends covered in this ebook are:

  • Search features and rich results.
  • AI content tools.
  • On-page factors.
  • And more.

SEO Trends 2023, According To 24 Experts [Ebook]

If you’re an SEO professional planning for 2023, this ebook has just what you need to set up a successful SEO strategy.

You’ll learn where the biggest and most impactful changes may happen and how the experts recommend you respond.

This guide will also help you understand the core best practices of SEO to insulate yourself from new updates and shifts in trends.

Grab your copy today; get direct insight and tips straight from the experts about how to succeed in SEO in 2023.

This year’s SEO experts are:

  • Azeem Ahmad, digital marketing lead at Azeem Digital.
  • Rebecca Berbel, product marketing manager at Oncrawl.
  • Jeff Coyle, co-founder & chief strategy officer at MarketMuse.
  • Renee Girard, associate director, SEO at Crate & Barrel Holdings.
  • Chris Haines, senior SEO specialist at Ahrefs.
  • Joshua Hardwick, head of content at Ahrefs.
  • Jeannie Hill, digital marketing consultant & SEO at Hill Web Creations.
  • Kevin Indig, growth advisor.
  • Russ Jeffery, director of ecosystem and product strategy at Duda.
  • Jeremy Knauff, CEO at Spartan Media.
  • Olesia Korobka, SEO entrepreneur at Fajela.com.
  • Christina LeVasseur, SEO consultant at MediaSesh.
  • Ludwig Makhyan, co-founder of Mazeless Enterprise SEO.
  • Jesse McDonald, global SEO strategist and optimization lead at IBM.
  • Joel Mesherghi, senior SEO consultant at Builtvisible.
  • Helen Pollitt, head of SEO at Car & Classic.
  • Adam Riemer, president at Adam Riemer Marketing, LLC.
  • Eli Schwartz, author of “Product-Led SEO”.
  • Andrew Shotland, CEO & founder of Local SEO Guide.
  • Aleyda Solis, international SEO consultant & founder of Orainti.
  • Patrick Stox, product advisor, technical SEO & brand ambassador at Ahrefs.
  • Mark Traphagen, VP of product marketing & training at seoClarity.
  • Martha van Berkel, CEO of Schema App.
  • Andrea Volpini, co-founder & CEO Of WordLift.
How To Optimize The Largest Contentful Paint & Rank Higher In Google via @sejournal, @DebugBear

How To Measure The Largest Contentful Paint Of Your Website

Run a free website speed test to find out. Your LCP speed will be displayed immediately.

The results of your speed test will tell you if:

  • The LCP threshold is met.
  • You need to optimize any other Core Web Vital.

How Is The Largest Contentful Paint Calculated?

Google looks at the 75th percentile of experiences – that means 25% of real website visitors experience LCP load times of 3.09 seconds or higher, while for 75% of users the LCP is below 3.09 seconds.

In this example, the real-user LCP is shown as 3.09 seconds.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of a Core Web Vitals data of DebugBear.com, November 2022

What Are The Lab Test Results On My Core Web Vitals Data?

With this specific web speed test, you’ll also see lab metrics that were collected in a controlled test environment. While these metrics don’t directly impact Google rankings, there are two advantages of this data:

  1. The metrics update as soon as you improve your website, while Google’s real-time data will take 28 days to fully update.
  2. You get detailed reports in addition to the metrics, which can help you optimize your website.

Additionally, PageSpeed Insights also provides lab data, but keep in mind that the data it reports can sometimes be misleading due to the simulated throttling it uses to emulate a slower network connection.

How Do You Find Your Largest Contentful Paint Element?

When you run a page speed test with DebugBear, the LCP element is highlighted in the test result.

Sometimes, the LCP element may be a large image, and other times, it could be a large portion of text.

Regardless of whether your LCP element is an image or a piece of text, the LCP content won’t appear until your page starts rendering.

For example, on the page below, a background image is responsible for the largest paint.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of DebugBear.com, November 2022

In contrast, this page’s LCP is a paragraph of text.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of DebugBear.com, November 2022

To improve the Largest Contentful Paint (LCP) of your website you need to ensure that the HTML element responsible for the LCP appears quickly.

How To Improve The Largest Contentful Paint

To improve the LCP you need to:

  1. Find out what resources are necessary to make the LCP element appear.
  2. See how you can load those resources faster (or not at all).

For example, if the LCP element is a photo, you could reduce the file size of the image.

After running a DebugBear speed test, you can click on each performance metric to view more information on how it could be optimized.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of a detailed Largest Contentful Paint analysis in DebugBear.com, November 2022

Common resources that affect the LCP are:

  • Render-blocking resources.
  • Images that are not optimized.
  • Outdated image formats.
  • Fonts that are not optimized.

How To Reduce Render-Blocking Resources

Render-blocking resources are files that need to be downloaded before the browser can start drawing page content on the screen. CSS stylesheets are typically render-blocking, as are many script tags.

To reduce the performance impact of render-blocking resources you can:

  1. Identify what resources are render-blocking.
  2. Review if the resource is necessary.
  3. Review if the resource needs to block rendering.
  4. See if the resource can be loaded more quickly up, for example using compression.

The Easy Way: In the DebugBear request waterfall, requests for render-blocking resources are marked with a “Blocking” tag.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of DebugBear.com, November 2022

How To Prioritize & Speed Up LCP Image Requests

For this section, we’re going to leverage the new “fetchpriority” attribute on images to help your visitor’s browsers quickly identify what image should load first.

Use this attribute on your LCP element.

Why?

When just looking at the HTML, browsers often can’t immediately tell what images are important. One image might end up being a large background image, while another one might be a small part of the website footer.

Accordingly, all images are initially considered low priority, until the page has been rendered and the browser knows where the image appears.

However, that can mean that the browser only starts downloading the LCP image fairly late.

The new Priority Hints web standard allows website owners to provide more information to help browsers prioritize images and other resources.

In the example below, we can see that the browser spends a lot of time waiting, as indicated by the gray bar.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of a low-priority LCP image on DebugBear.com, November 2022

We would choose this LCP image to add the “fetchpriority” attribute to.

How To Add The “FetchPriority” Attribute To Images

Simply adding the fetchpriority=”high” attribute to an HTML img tag will the browser will prioritize downloading that image as quickly as possible.

fetchpriority="high" />

How To Use Modern Image Formats & Size Images Appropriately

High-resolution images can often have a large file size, which means they take a long time to download.

In the speed test result below you can see that by looking at the dark blue shaded areas. Each line indicates a chunk of the image arriving in the browser.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of a large LCP image on DebugBear.com, November 2022

There are two approaches to reducing image sizes:

  1. Ensure the image resolution is as low as possible. Consider serving images at different resolutions depending on the size of the user’s device.
  2. Use a modern image format like WebP, which can store images of the same quality at a lower file size.

How To Optimize Font Loading Times

If the LCP element is an HTML heading or paragraph, then it’s important to load the font for this chunk of text quickly.

One way to achieve this would be to use preload tags that can tell the browser to load the fonts early.

The font-display: swap CSS rule can also ensure sped-up rendering, as the browser will immediately render the text with a default font before switching to the web font later on.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of web fonts delaying the LCP on DebugBear.com, November 2022

Monitor Your Website To Keep The LCP Fast

Continuously monitoring your website not only lets you verify that your LCP optimizations are working, but also makes sure you get alerted if your LCP gets worse.

DebugBear can monitor the Core Web Vitals and other site speed metrics over time. In addition to running in-depth lab-based tests, the product also keeps track of the real-user metrics from Google.

Try DebugBear with a free 14-day trial.

How To Optimize The Largest Contentful Paint & Rank Higher In GoogleScreenshot of site speed monitoring data on DebugBear.com, November 2022
Transitioning From Excel To Python: Essential Functions For SEO Data Analysis via @sejournal, @williamjnye

Learning to code, whether with PythonJavaScript, or another programming language, has a whole host of benefits, including the ability to work with larger datasets and automate repetitive tasks.

But despite the benefits, many SEO professionals are yet to make the transition – and I completely understand why! It isn’t an essential skill for SEO, and we’re all busy people.

If you’re pressed for time, and you already know how to accomplish a task within Excel or Google Sheets, then changing tack can feel like reinventing the wheel.

When I first started coding, I initially only used Python for tasks that I couldn’t accomplish in Excel – and it’s taken several years to get to the point where it’s my defacto choice for data processing.

Looking back, I’m incredibly glad that I persisted, but at times it was a frustrating experience, with many an hour spent scanning threads on Stack Overflow.

This post is designed to spare other SEO pros the same fate.

Within it, we’ll cover the Python equivalents of the most commonly used Excel formulas and features for SEO data analysis – all of which are available within a Google Colab notebook linked in the summary.

Specifically, you’ll learn the equivalents of:

  • LEN.
  • Drop Duplicates.
  • Text to Columns.
  • SEARCH/FIND.
  • CONCATENATE.
  • Find and Replace.
  • LEFT/MID/RIGHT.
  • IF.
  • IFS.
  • VLOOKUP.
  • COUNTIF/SUMIF/AVERAGEIF.
  • Pivot Tables.

Amazingly, to accomplish all of this, we’ll primarily be using a singular library – Pandas – with a little help in places from its big brother, NumPy.

Prerequisites

For the sake of brevity, there are a few things we won’t be covering today, including:

  • Installing Python.
  • Basic Pandas, like importing CSVs, filtering, and previewing dataframes.

If you’re unsure about any of this, then Hamlet’s guide on Python data analysis for SEO is the perfect primer.

Now, without further ado, let’s jump in.

LEN

LEN provides a count of the number of characters within a string of text.

For SEO specifically, a common use case is to measure the length of title tags or meta descriptions to determine whether they’ll be truncated in search results.

Within Excel, if we wanted to count the second cell of column A, we’d enter:

=LEN(A2)
LEN formula excelScreenshot from Microsoft Excel, November 2022

Python isn’t too dissimilar, as we can rely on the inbuilt len function, which can be combined with Pandas’ loc[] to access a specific row of data within a column:

len(df['Title'].loc[0])

In this example, we’re getting the length of the first row in the “Title” column of our dataframe.

len function python
Screenshot of VS Code, November, 2022

Finding the length of a cell isn’t that useful for SEO, though. Normally, we’d want to apply a function to an entire column!

In Excel, this would be achieved by selecting the formula cell on the bottom right-hand corner and either dragging it down or double-clicking.

When working with a Pandas dataframe, we can use str.len to calculate the length of rows within a series, then store the results in a new column:

df['Length'] = df['Title'].str.len()

Str.len is a ‘vectorized’ operation, which is designed to be applied simultaneously to a series of values. We’ll use these operations extensively throughout this article, as they almost universally end up being faster than a loop.

Another common application of LEN is to combine it with SUBSTITUTE to count the number of words in a cell:

=LEN(TRIM(A2))-LEN(SUBSTITUTE(A2," ",""))+1

In Pandas, we can achieve this by combining the str.split and str.len functions together:

df['No. Words'] = df['Title'].str.split().str.len()

We’ll cover str.split in more detail later, but essentially, what we’re doing is splitting our data based upon whitespaces within the string, then counting the number of component parts.

word count PythonScreenshot from VS Code, November 2022

Dropping Duplicates

Excel’s ‘Remove Duplicates’ feature provides an easy way to remove duplicate values within a dataset, either by deleting entirely duplicate rows (when all columns are selected) or removing rows with the same values in specific columns.

Excel drop duplicatesScreenshot from Microsoft Excel, November 2022

In Pandas, this functionality is provided by drop_duplicates.

To drop duplicate rows within a dataframe type:

df.drop_duplicates(inplace=True)

To drop rows based on duplicates within a singular column, include the subset parameter:

df.drop_duplicates(subset='column', inplace=True)

Or specify multiple columns within a list:

df.drop_duplicates(subset=['column','column2'], inplace=True)

One addition above that’s worth calling out is the presence of the inplace parameter. Including inplace=True allows us to overwrite our existing dataframe without needing to create a new one.

There are, of course, times when we want to preserve our raw data. In this case, we can assign our deduped dataframe to a different variable:

df2 = df.drop_duplicates(subset='column')

Text To Columns

Another everyday essential, the ‘text to columns’ feature can be used to split a text string based on a delimiter, such as a slash, comma, or whitespace.

As an example, splitting a URL into its domain and individual subfolders.

Excel drop duplicatesScreenshot from Microsoft Excel, November 2022

When dealing with a dataframe, we can use the str.split function, which creates a list for each entry within a series. This can be converted into multiple columns by setting the expand parameter to True:

df['URL'].str.split(pat='/', expand=True)
str split PythonScreenshot from VS Code, November 2022

As is often the case, our URLs in the image above have been broken up into inconsistent columns, because they don’t feature the same number of folders.

This can make things tricky when we want to save our data within an existing dataframe.

Specifying the n parameter limits the number of splits, allowing us to create a specific number of columns:

df[['Domain', 'Folder1', 'Folder2', 'Folder3']] = df['URL'].str.split(pat='/', expand=True, n=3)

Another option is to use pop to remove your column from the dataframe, perform the split, and then re-add it with the join function:

df = df.join(df.pop('Split').str.split(pat='/', expand=True))

Duplicating the URL to a new column before the split allows us to preserve the full URL. We can then rename the new columns:🐆

df['Split'] = df['URL']

df = df.join(df.pop('Split').str.split(pat='/', expand=True))

df.rename(columns = {0:'Domain', 1:'Folder1', 2:'Folder2', 3:'Folder3', 4:'Parameter'}, inplace=True)
Split pop join functions PythonScreenshot from VS Code, November 2022

CONCATENATE

The CONCAT function allows users to combine multiple strings of text, such as when generating a list of keywords by adding different modifiers.

In this case, we’re adding “mens” and whitespace to column A’s list of product types:

=CONCAT($F$1," ",A2)
concat Excel
Screenshot from Microsoft Excel, November 2022

Assuming we’re dealing with strings, the same can be achieved in Python using the arithmetic operator:

df['Combined] = 'mens' + ' ' + df['Keyword']

Or specify multiple columns of data:

df['Combined'] = df['Subdomain'] + df['URL']
concat PythonScreenshot from VS Code, November 2022

Pandas has a dedicated concat function, but this is more useful when trying to combine multiple dataframes with the same columns.

For instance, if we had multiple exports from our favorite link analysis tool:

df = pd.read_csv('data.csv')
df2 = pd.read_csv('data2.csv')
df3 = pd.read_csv('data3.csv')

dflist = [df, df2, df3]

df = pd.concat(dflist, ignore_index=True)

SEARCH/FIND

The SEARCH and FIND formulas provide a way of locating a substring within a text string.

These commands are commonly combined with ISNUMBER to create a Boolean column that helps filter down a dataset, which can be extremely helpful when performing tasks like log file analysis, as explained in this guide. E.g.:

=ISNUMBER(SEARCH("searchthis",A2)
isnumber search ExcelScreenshot from Microsoft Excel, November 2022

The difference between SEARCH and FIND is that find is case-sensitive.

The equivalent Pandas function, str.contains, is case-sensitive by default:

df['Journal'] = df['URL'].str.contains('engine', na=False)

Case insensitivity can be enabled by setting the case parameter to False:

df['Journal'] = df['URL'].str.contains('engine', case=False, na=False)

In either scenario, including na=False will prevent null values from being returned within the Boolean column.

One massive advantage of using Pandas here is that, unlike Excel, regex is natively supported by this function – as it is in Google sheets via REGEXMATCH.

Chain together multiple substrings by using the pipe character, also known as the OR operator:

df['Journal'] = df['URL'].str.contains('engine|search', na=False)

Find And Replace

Excel’s “Find and Replace” feature provides an easy way to individually or bulk replace one substring with another.

find replace ExcelScreenshot from Microsoft Excel, November 2022

When processing data for SEO, we’re most likely to select an entire column and “Replace All.”

The SUBSTITUTE formula provides another option here and is useful if you don’t want to overwrite the existing column.

As an example, we can change the protocol of a URL from HTTP to HTTPS, or remove it by replacing it with nothing.

When working with dataframes in Python, we can use str.replace:

df['URL'] = df['URL'].str.replace('http://', 'https://')

Or:

df['URL'] = df['URL'].str.replace('http://', '') # replace with nothing

Again, unlike Excel, regex can be used – like with Google Sheets’ REGEXREPLACE:

df['URL'] = df['URL'].str.replace('http://|https://', '')

Alternatively, if you want to replace multiple substrings with different values, you can use Python’s replace method and provide a list.

This prevents you from having to chain multiple str.replace functions:

df['URL'] = df['URL'].replace(['http://', ' https://'], ['https://www.', 'https://www.’], regex=True)

LEFT/MID/RIGHT

Extracting a substring within Excel requires the usage of the LEFT, MID, or RIGHT functions, depending on where the substring is located within a cell.

Let’s say we want to extract the root domain and subdomain from a URL:

=MID(A2,FIND(":",A2,4)+3,FIND("/",A2,9)-FIND(":",A2,4)-3)
left mid right ExcelScreenshot from Microsoft Excel, November 2022

Using a combination of MID and multiple FIND functions, this formula is ugly, to say the least – and things get a lot worse for more complex extractions.

Again, Google Sheets does this better than Excel, because it has REGEXEXTRACT.

What a shame that when you feed it larger datasets, it melts faster than a Babybel on a hot radiator.

Thankfully, Pandas offers str.extract, which works in a similar way:

df['Domain'] = df['URL'].str.extract('.*://?([^/]+)')
str extract PythonScreenshot from VS Code, November 2022

Combine with fillna to prevent null values, as you would in Excel with IFERROR:

df['Domain'] = df['URL'].str.extract('.*://?([^/]+)').fillna('-')

If

IF statements allow you to return different values, depending on whether or not a condition is met.

To illustrate, suppose that we want to create a label for keywords that are ranking within the top three positions.

Excel IFScreenshot from Microsoft Excel, November 2022

Rather than using Pandas in this instance, we can lean on NumPy and the where function (remember to import NumPy, if you haven’t already):

df['Top 3'] = np.where(df['Position'] <= 3, 'Top 3', 'Not Top 3')

Multiple conditions can be used for the same evaluation by using the AND/OR operators, and enclosing the individual criteria within round brackets:

df['Top 3'] = np.where((df['Position'] <= 3) & (df['Position'] != 0), 'Top 3', 'Not Top 3')

In the above, we’re returning “Top 3” for any keywords with a ranking less than or equal to three, excluding any keywords ranking in position zero.

IFS

Sometimes, rather than specifying multiple conditions for the same evaluation, you may want multiple conditions that return different values.

In this case, the best solution is using IFS:

=IFS(B2<=3,"Top 3",B2<=10,"Top 10",B2<=20,"Top 20")
IFS ExcelScreenshot from Microsoft Excel, November 2022

Again, NumPy provides us with the best solution when working with dataframes, via its select function.

With select, we can create a list of conditions, choices, and an optional value for when all of the conditions are false:

conditions = [df['Position'] <= 3, df['Position'] <= 10, df['Position'] <=20]

choices = ['Top 3', 'Top 10', 'Top 20']

df['Rank'] = np.select(conditions, choices, 'Not Top 20')

It’s also possible to have multiple conditions for each of the evaluations.

Let’s say we’re working with an ecommerce retailer with product listing pages (PLPs) and product display pages (PDPs), and we want to label the type of branded pages ranking within the top 10 results.

The easiest solution here is to look for specific URL patterns, such as a subfolder or extension, but what if competitors have similar patterns?

In this scenario, we could do something like this:

conditions = [(df['URL'].str.contains('/category/')) & (df['Brand Rank'] > 0),
(df['URL'].str.contains('/product/')) & (df['Brand Rank'] > 0),
(~df['URL'].str.contains('/product/')) & (~df['URL'].str.contains('/category/')) & (df['Brand Rank'] > 0)]

choices = ['PLP', 'PDP', 'Other']

df['Brand Page Type'] = np.select(conditions, choices, None)

Above, we’re using str.contains to evaluate whether or not a URL in the top 10 matches our brand’s pattern, then using the “Brand Rank” column to exclude any competitors.

In this example, the tilde sign (~) indicates a negative match. In other words, we’re saying we want every brand URL that doesn’t match the pattern for a “PDP” or “PLP” to match the criteria for ‘Other.’

Lastly, None is included because we want non-brand results to return a null value.

np select PythonScreenshot from VS Code, November 2022

VLOOKUP

VLOOKUP is an essential tool for joining together two distinct datasets on a common column.

In this case, adding the URLs within column N to the keyword, position, and search volume data in columns A-C, using the shared “Keyword” column:

=VLOOKUP(A2,M:N,2,FALSE)
vlookup ExcelScreenshot from Microsoft Excel, November 2022

To do something similar with Pandas, we can use merge.

Replicating the functionality of an SQL join, merge is an incredibly powerful function that supports a variety of different join types.

For our purposes, we want to use a left join, which will maintain our first dataframe and only merge in matching values from our second dataframe:

mergeddf = df.merge(df2, how='left', on='Keyword')

One added advantage of performing a merge over a VLOOKUP, is that you don’t have to have the shared data in the first column of the second dataset, as with the newer XLOOKUP.

It will also pull in multiple rows of data rather than the first match in finds.

One common issue when using the function is for unwanted columns to be duplicated. This occurs when multiple shared columns exist, but you attempt to match using one.

To prevent this – and improve the accuracy of your matches – you can specify a list of columns:

mergeddf = df.merge(df2, how='left', on=['Keyword', 'Search Volume'])

In certain scenarios, you may actively want these columns to be included. For instance, when attempting to merge multiple monthly ranking reports:

mergeddf = df.merge(df2, on='Keyword', how='left', suffixes=('', '_october'))
    .merge(df3, on='Keyword', how='left', suffixes=('', '_september'))

The above code snippet executes two merges to join together three dataframes with the same columns – which are our rankings for November, October, and September.

By labeling the months within the suffix parameters, we end up with a much cleaner dataframe that clearly displays the month, as opposed to the defaults of _x and _y seen in the earlier example.

multi merge PythonScreenshot from VS Code, November 2022

COUNTIF/SUMIF/AVERAGEIF

In Excel, if you want to perform a statistical function based on a condition, you’re likely to use either COUNTIF, SUMIF, or AVERAGEIF.

Commonly, COUNTIF is used to determine how many times a specific string appears within a dataset, such as a URL.

We can accomplish this by declaring the ‘URL’ column as our range, then the URL within an individual cell as our criteria:

=COUNTIF(D:D,D2)
Excel countifScreenshot from Microsoft Excel, November 2022

In Pandas, we can achieve the same outcome by using the groupby function:

df.groupby('URL')['URL'].count()
Python groupbyScreenshot from VS Code, November 2022

Here, the column declared within the round brackets indicates the individual groups, and the column listed in the square brackets is where the aggregation (i.e., the count) is performed.

The output we’re receiving isn’t perfect for this use case, though, because it’s consolidated the data.

Typically, when using Excel, we’d have the URL count inline within our dataset. Then we can use it to filter to the most frequently listed URLs.

To do this, use transform and store the output in a column:

df['URL Count'] = df.groupby('URL')['URL'].transform('count')
Python groupby transformScreenshot from VS Code, November 2022

You can also apply custom functions to groups of data by using a lambda (anonymous) function:

df['Google Count'] = df.groupby(['URL'])['URL'].transform(lambda x: x[x.str.contains('google')].count())

In our examples so far, we’ve been using the same column for our grouping and aggregations, but we don’t have to. Similarly to COUNTIFS/SUMIFS/AVERAGEIFS in Excel, it’s possible to group using one column, then apply our statistical function to another.

Going back to the earlier search engine results page (SERP) example, we may want to count all ranking PDPs on a per-keyword basis and return this number alongside our existing data:

df['PDP Count'] = df.groupby(['Keyword'])['URL'].transform(lambda x: x[x.str.contains('/product/|/prd/|/pd/')].count())
Python groupby countifsScreenshot from VS Code, November 2022

Which in Excel parlance, would look something like this:

=SUM(COUNTIFS(A:A,[@Keyword],D:D,{"*/product/*","*/prd/*","*/pd/*"}))

Pivot Tables

Last, but by no means least, it’s time to talk pivot tables.

In Excel, a pivot table is likely to be our first port of call if we want to summarise a large dataset.

For instance, when working with ranking data, we may want to identify which URLs appear most frequently, and their average ranking position.

pivot table ExcelScreenshot from Microsoft Excel, November 2022

Again, Pandas has its own pivot tables equivalent – but if all you want is a count of unique values within a column, this can be accomplished using the value_counts function:

count = df['URL'].value_counts()

Using groupby is also an option.

Earlier in the article, performing a groupby that aggregated our data wasn’t what we wanted – but it’s precisely what’s required here:

grouped = df.groupby('URL').agg(
     url_frequency=('Keyword', 'count'),
     avg_position=('Position', 'mean'),
     )

grouped.reset_index(inplace=True)
groupby-pivot PythonScreenshot from VS Code, November 2022

Two aggregate functions have been applied in the example above, but this could easily be expanded upon, and 13 different types are available.

There are, of course, times when we do want to use pivot_table, such as when performing multi-dimensional operations.

To illustrate what this means, let’s reuse the ranking groupings we made using conditional statements and attempt to display the number of times a URL ranks within each group.

ranking_groupings = df.groupby(['URL', 'Grouping']).agg(
     url_frequency=('Keyword', 'count'),
     )
python groupby groupingScreenshot from VS Code, November 2022

This isn’t the best format to use, as multiple rows have been created for each URL.

Instead, we can use pivot_table, which will display the data in different columns:

pivot = pd.pivot_table(df,
index=['URL'],
columns=['Grouping'],
aggfunc='size',
fill_value=0,
)
pivot table PythonScreenshot from VS Code, November 2022

Final Thoughts

Whether you’re looking for inspiration to start learning Python, or are already leveraging it in your SEO workflows, I hope that the above examples help you along on your journey.

As promised, you can find a Google Colab notebook with all of the code snippets here.

In truth, we’ve barely scratched the surface of what’s possible, but understanding the basics of Python data analysis will give you a solid base upon which to build.

More resources:


Featured Image: mapo_japan/Shutterstock

Website Performance & Health Monitoring: Tips & Best Practices

Setting up and running a website or ecommerce project is great – however, your work is far from done once your site is up and running.

Without appropriate health and performance monitoring, your website will suffer the consequences – which can be far greater than simply slow load speed.

Let’s turn our attention to a hypothetical, ideal scenario where all the websites in the world are functioning as they should. Did you know that, aside from skyrocketing user satisfaction, we would also contribute to a better environment?

Poorly performing websites not only impact anyone who creates or uses them, but they also leave a larger carbon footprint.

According to the Website Carbon Calculator, websites have a carbon footprint, and the average website page emits 0.5 grams of carbon dioxide per view. That’s just the median.

When looking at the mean, which also considers high-polluting websites, that number goes up to 0.9 grams.

Aside from issues on a global scale, an unhealthy, inadequately-performing website will cost you time, money, and revenue. Website health is similar to our own: it’s easy to neglect and difficult to improve.

You need to be aware of the main components that make up website health to conduct appropriate monitoring practices to help save processing time.

With the emergence of quick and easy website builders, crafting websites has become accessible to everyone. All you need to do is sign up, choose a domain, pick your template, and voila! You have a website in seconds.

However, many website owners dismiss the fact that website creation is only the first step. Appropriate performance maintenance and health monitoring are also crucial.

And on that note, let’s look at some essential website health and performance indicators: what they are, how to monitor them, and how to make improvements.

Aspects To Monitor For A High Website Health Score

Core Web Vitals

High Website Health Score via Core Web VitalsImage from author, October 2022

Google PageSpeed Insights

The first metrics you should consider when conducting performance testing are your Core Web Vitals. These performance indicators show speed, stability, and responsiveness, helping you understand the quality of your website user experience.

Several tools track your Core Web Vitals, but many website owners gravitate towards a simple tool: Google PageSpeed Insights.

After entering your URL into the tool, you will be presented with a report showing whether you passed your Core Web Vitals test and any other aspects you need to keep an eye on. Here are the three key metrics you will see:

Largest Contentful Paint (LCP)

Aim for a score of 2.5 seconds or less.

If your score is over 2.5 seconds, this could indicate the following: your server is lagging, resource load times are not up to par, you have high numbers of render-blocking JavaScript and CSS, or there is slow rendering on the client side.

First Input Delay (FID)

Aim for a score of 100 milliseconds or less.

If your score exceeds that time, you may need to reduce third-party code impact, reduce JavaScript execution time, minimize the main thread work, keep transfer sizes small, and request counts low.

Cumulative Layout Shift (CLS)

Aim for a score of 0.1 or less.

If your score exceeds this, you can avoid random layout shifts by including size attributes on your visual and video content (or reserve the space with CSS aspect ratio boxes). Avoid overlapping your content, and be mindful when animating your transitions.

Page Speed Blockers

Several factors can affect your website load speed. However, if you’re on a time budget and would like to focus on the main culprits first, pay close attention to the following factors:

  • Unused JavaScript and CSS Code.
  • Render blocking JavaScript and CSS Code.
  • Unminified JavaScript and CSS Code.
  • Large image file sizes (more on that below).
  • Too many redirect chains.

In order to improve the load of JavaScript and CSS files, consider preloading them.

Another option would be enabling early hints, which tells the browser in the HTTP server response which resources it should start downloading by taking advantage of “server think-time,” thus speeding up the page load.

To test your website:

  1. Navigate to https://pagespeed.web.dev/
  2. Enter the URL of the page you want to scan.

I would recommend choosing your homepage first.

Another handy tool is WebPageTest.org, which also shows your Core Web Vitals and other metrics that can help you drastically improve your website performance and health. Also, it’s free!

Simply paste a page URL into the search box shown on the site, and it will conduct a full test from a default location.

You can also register as a user and choose from a list of locations to test your website from different countries, devices and browsers.

WebPageTest will show you exactly where your website is in terms of performance, and what could be slowing it down through a Performance Summary composed of four key sections: Opportunities and Experiments, Observed Metrics, Real User Measurements, and Individual Runs.

observed metricsImage from author, October 2022

At UCRAFT, we use a combination of tools such as PageSpeed Insights, Chrome Dev Tools, WebPageTest, and several others, to gain a clear understanding of what we need to work on when it comes to our website performance – especially since the SaaS industry is highly competitive already.

Design Elements

design elementsScreenshot from author, October 2022

When we think about website performance and health monitoring, we usually leave these to the tech team to deal with.

But what if I told you how you design your website, and the elements you choose can make or break your performance?

That’s right – it’s time to get the design team involved.

Image Optimization

Images are great, but they can slow down your website if they are not sized appropriately. Make sure to resize your images, and avoid uploading giant files when they will not be shown in their entirety.

Likewise, compress your images and try out different file types like WebP, JPEG 2000, and JPEG XR instead of opting for heavier JPEG or PNG files.

Consider implementing native lazy loading to ensure that images are loaded when the user views them, instead of loading them all at once.

Almost all browsers, including Chrome, Safari, and Firefox, support loading=”lazy”  attribute on or

Make sure not to lazy load above-the-fold images, as it will degrade the LCP score of your page, and Google recommends using fetchpriority=”high” attribute on images above the fold to improve LCP.

If you use that attribute, no need to preload the images. You should either preload or set “fetchpriority” attribute on images above the fold.

Also, take advantage responsiveness of the “srcset” attribute to load properly sized images based on the screen size, and avoid loading redundantly large images on small screens. This will greatly help to improve LCP score.

Fonts

Extravagant custom fonts are often challenging to read for users without 20/20 vision, but they can also considerably slow down your website.

Switch externally-hosted fonts for more web-safe fonts, and give Google fonts a try – as long as they are hosted through Google’s CDN.

Moreover, consider incorporating variable fonts into the general aesthetic of your website, since this font specification can significantly reduce font file sizes.

Make sure to preload your fonts.

Animations/Additional Features

This goes without saying: Don’t go overboard with animations, videos, special effects, sliders, or other fancy elements.

It’s nice to include some interactive elements here and there, but saturating your website with too many moving “things” can be frustrating for users and your servers alike.

Don’t use non-composited animations, as they cause re-painting of the page, which increases main-thread work – and the webpage may appear visually unstable when it loads.

PWA Solution For Mobile Optimization

Why not go the entire mobile-friendly route and turn your mobile site into a Progressive Web App (PWA)?

Since PWAs are built with service workers, they load cached content at a quicker rate. Not only that, but PWAs resemble native mobile apps, which is great for performance and UX.

Additional Technical Performance Metrics

Uptime

Uptime shows how well your website is functioning.

If your website crashes or is down frequently, it will harm your user experience, Google rankings, and, therefore, your revenue.

If possible, aim to have a 99.999% uptime and test your website from different locations.

Tools for uptime monitoring:

Database Performance

If you’ve checked the basics and your website is still slow to respond, it might be due to poor database performance.

You can check this by monitoring the response time for your queries and pinpointing the database queries that are taking up the most time.

Once you’ve done that, get optimizing! You can use tools such as Blackfire.io to help you easily identify bottlenecks and find solutions based on accurate data.

Web Server’s Hardware

Your website may lag if your disk space is packed with log files, images, videos, and database entries. Make sure to monitor your central processing unit (CPU) load regularly, especially after you’ve implemented updates or design changes.

Tools such as New Relic can help you improve your entire stack through efficient monitoring and debugging.

Search Visibility

A lot of the metrics discussed above already have a significant impact on search visibility.

So when you run your website pages through Google PageSpeed Insights and optimize them, you are also doing important things for your SEO.

You can also opt for website crawling tools such as Semrush or Sitechecker.pro, Screaming Frog, DeepCrawl, or any other tool that best suits your needs.

Website crawlers help find all types of issues, such as:

  • Broken links.
  • Broken images.
  • Monitor core web vital metrics.
  • Redirect chains.
  • Structured data errors.
  • Noindexed pages.
  • Missing headings and meta descriptions.
  • Mixed content.

Make sure you’re all set when it comes to the following points:

  • XML sitemap – Ensure your sitemap is formatted correctly and check whether it’s necessary to make any updates and re-submit your sitemap via Google Search Console.
  • Robots.txt – Ensure you utilize a robots.txt file for your web pages (HTML, PDF, or any other non-media formats that search engines can read) to manage crawl traffic better, especially if you suspect your server may be overwhelmed by requests from Google’s crawler.

Website Security And Caching

Get Your SSL Certificate!

A healthy website is a secure website.

Even if your website loads in perfect time and gets a 100/100 score, there is no way users (or search engines) are going to trust your site if it doesn’t start with https://.

An SSL certificate is essentially a code on your server that builds an encrypted connection, guaranteeing that user data remains secure.

Obtaining an SSL certificate is not a particularly difficult process, but it can be lengthy when done manually.

However, if you are using a well-established hosting provider such as BlueHost, more often than not, your provider will be able to issue a free SSL for your domain.

Consider Using A CDN

Content delivery networks (CDNs) are distributed servers working in unison to deliver fast internet content.

In other words, a CDN is a tool that speeds up the performance of your website by keeping its content on servers close to users, regardless of geographic location. This is also known as caching.

If you have a global presence, a CDN is a must! It will increase your page load speed, decrease your bandwidth costs, spread out your traffic (reducing the chances of your site going down), and increase security via features like DDoS mitigation.

Top players in the industry include Cloudflare, Amazon Cloudfront, and Google Cloud CDN. However, there are many other options, so do your research and pick the best CDN for your website and business requirements.

Setup Web Application Firewall

A Web Application Firewall (WAF) protects web applications by filtering out suspicious HTTP traffic. It is aimed at preventing applications from attacks such as:

  • Cross-site forgery.
  • Cross-site-scripting (XSS).
  • File inclusion.
  • SQL injection.

Below is a list of the most popular and trusted web application firewalls:

Or if you use WordPress, you can consider installing plugins such as:

Verdict

That’s a wrap! As you can tell, website performance and health depend on various aspects.

If your website is lagging, the first logical step is to check your Core Web Vitals and see what you can improve. You can also take a look at other technical metrics and improve on them.

SEO is also vital to your website’s health, so check your search visibility, links, and potential load blockers to see what you can improve on.

And don’t forget about your SSL certificate and caching, either.

Your website design can also impact your load speed and performance, especially if you or your designers are fond of using weighty design elements.

Remember to optimize your images, avoid heavy fonts, and use animations in moderation.

More resources:


Featured Image: JulsIst/Shutterstock

10 Dos And Don’ts For Building A Successful Travel Website via @sejournal, @seo_travel

When it comes to search engine optimization (SEO), your website is the foundation on which all of your hard work will rest.

It doesn’t matter how many keywords you add, meta descriptions you tweak, or plugins you remove: If the building blocks of your tourism website aren’t properly assembled, you’re always going to struggle to get the site to rank as well as it should.

On top of the technical benefits of a well-built website, as a travel brand, your website is one of your most valuable assets.

Here, potential customers can browse available packages, read testimonials from previous guests, and get a taste of the experiences on offer through engaging imagery and text – along with actually booking a holiday directly with your company.

Creating a travel website from scratch is always a significant project, but the benefits of designing a site from the ground up are widespread when it comes to ranking as high as possible on search engines.

So whether you’re a new travel brand that needs a website to start your business journey, or are redesigning your site to reap the benefits of a custom design, here are 10 dos and don’ts for building a successful travel website.

Do: Start With SEO Research

Every well-ranking website design starts with SEO research.

Before you decide on any of the pages or content that’s going to be included on the site, you need to understand which factors will influence how your site ranks on search engines.

High-ranking websites are structured based on keyword research and target phrases, as these influence the topics that landing pages are focused on and the kinds of questions that content needs to answer.

They’re also built to optimize page speed and minimize unnecessary plugins while making it as easy as possible for search engines to understand their intent.

This is one of the key reasons why using a website builder template or trying to cut corners with website design can be such a big problem.

Unless the website for travel is specifically designed with SEO in mind, you’re shooting yourself in the foot right from the start.

Don’t: Opt For A Bad Hosting Platform

If you’re trying to quickly get a new travel website off the ground, it can be tempting to choose a generic hosting platform.

These are often advertised as simple ways to build a functional website, and whilst this is true on the surface, there are plenty of problems that lie beneath.

When you use ‘drag-and-drop’ website builders to put together a website using existing templates, you often end up with a lot of unnecessary code and dependencies in the site’s backend.

This massively impacts how long it takes for pages to load and how smoothly the whole site runs, which will stop the site from ranking highly on search engines, and potentially frustrate users that want to book a holiday or make a purchase.

Using bad platforms to build your site can also limit the features you’re able to add to it later down the line.

Not only can this stifle creativity when you’re trying to come up with the best travel website design, but it can also come back to haunt you in the future when you’re unable to expand your site.

Do: Make Use Of Stock Image Databases

Opting for a custom-built design for your travel website is the route I recommend to ensure that all of your specifications are catered for – but this can be an expensive and time-consuming venture.

Many people will opt to choose a template on a site like WordPress to build their travel website, and the good news is that there are plenty of ways you can customize this to make it look unique.

One of these is the photos that you use on your travel website, which are an incredibly important visual element. One of the key ways you will engage a user is by encouraging them to picture themselves on a trip or in your accommodation, and eye-catching, immersive images are a great way to do that.

Having unique photographs on your website is ideal, but it’s not always possible when building a website, especially if your company is based in a different location. Thankfully, there are plenty of stock image databases you can utilize, offering both free and paid images.

If you’re looking for beautiful free stock photos, Unsplash is a fantastic option. Pixabay and Pexels are also good, but often only have a limited selection of images on offer.

If you’re looking for a greater variety, paid sites like iStock and Shutterstock offer reasonable prices for their images.

Don’t: Try To Cut Costs With A Bad Booking System

Plenty of travel companies have a booking system as part of their website. This element needs to be carefully considered, as some booking platforms can negatively impact a site’s SEO.

It’s worth properly doing your research into the best kind of booking system for your travel website, as many can be difficult to use, time-consuming to update, or are just built with a lot of unnecessary code that can really slow down this section of the website.

Here are some of the best WordPress booking plugins that cater especially to travel businesses:

In some cases, you may be better off building a custom booking system that is much easier to edit and clearly lets customers book what they want without any misunderstanding.

Yes, building a bespoke booking system is another cost if you’re already investing in a unique travel website design. But it is likely to save you a lot of time and money in the future by making this booking system simple and optimized specifically for your brand, minimizing issues later on.

Do: Plan In Time For Content Creation

If you’re working with an agency or a designer, content creation might be included in the website design package that you’re paying for.

But many brands prefer to write their content themselves in order to capture the right tone of voice, so it’s important to factor in how long this is going to take.

You can start writing content for your website once you have a clear plan of the site structure and how many pages are going to be built.

It might be useful to see template designs for different landing pages to know how much text is needed – or your designer might ask you to write the content first, so they can design the pages around this.

If you want your travel website to rank highly when your customers search for your offering, you need to complete keyword research first.

This gives you a list of popular, relevant phrases that you can include in your travel website content that will help the site to rank higher and ensure that genuinely interested web users are arriving on the pages they’re looking for.

There are several different paid and free keyword research databases that you can use for this, with my favorite being Ahrefs.

These databases often have a tool that allows you to enter a word or phrase and then generate a list of related keywords, showing search volume and other useful data.

For travel keyword research, you want to focus on keyword phrases that indicate the user is looking to book a trip, visit a location, or get a recommendation.

For example, ‘family safari in africa’ is a general phrase with broad intent, whereas ‘where is the best place for a family safari?’ or ‘what animals can you see in south africa?’ are likely being searched by someone planning a holiday.

Once you’ve compiled a list of relevant phrases, you can either write landing page content that includes these phrases, or create pages of blog posts that specifically answer questions or focus on a topic with high search volume.

As well as keyword databases like Ahrefs, you can use Google Trends to identify popular travel topics and create content targeting query spikes, capitalizing on seasonal traffic.

Don’t: Forget Headers, Title Tags, And Meta Descriptions

It’s not just chunks of text for landing pages that you need to think about when it comes to website content creation.

Headers, title tags, and meta descriptions need to be carefully considered and written, as they are a key aspect of a website’s SEO.

Every landing page needs a unique heading structure, and you ideally want to fit target keyword phrases into each of these headings. This structure makes it easier for users to navigate a page, along with helping search engines to rank each page more easily, which will boost how well each page ranks.

To create a header structure, start with the page’s title (H1), which will usually contain the target keyword phrase. You can then use keyword research to find similar or related phrases that can be used as headings further down the page.

For example, a page might have the title ‘Luxury Family Safari Holidays’with subheadings including ‘Family Safaris in South Africa,’ ‘How to Book a Family Safari,’ and ‘What to Expect on a Safari Holiday.’

Title tags are an element of a webpage’s HTML that explains the title of the page and appears in the tab at the top of a screen when a website is loaded up on a browser (and on the search engine results page).

Not only do these need to be clear so that the user understands the purpose of the page, but they also impact a page’s SEO, so should contain the target keyword phrase.

Title tags also often contain the brand’s name and occasionally a key phrase that summarises the brand’s offering. To build on the previous example, the title tag might be ‘Luxury Family Safaris | South Africa Safari Holidays | M+J Safari Experiences.’ 

Finally, a meta description is another HTML element that summarizes the content of a page and, again, influences how well it ranks for its target phrase. Meta descriptions should be under 200 characters, so need to be carefully written to provide a concise description of a landing page and include relevant keyword phrases if possible.

An example might be ‘Witness a side of South Africa you’ve never seen before with a luxury family safari holiday from M+J Safari Experiences.’

Do: Implement A Sitemap

A sitemap does what it says on the tin: it maps out where each of the landing pages is on your website and provides a navigation point that directs how to get to each of these.

No matter how you build a travel website, you should implement a sitemap to provide search engines with a way of quickly understanding what the website contains.

Without a sitemap, bots crawling your site to decide where to rank it on search engines will try and interpret your internal linking instead. This can impact your ranking, so it’s best to have a sitemap established in the early stages of building a travel website.

You also need to consider user experience when you’re building a sitemap.

Potential customers on a travel website are likely going to want to browse the experiences you have on offer, see pictures and videos of your service offering, read testimonials to gain social proof, and then look at how to book a trip.

You should design your website so that this journey is easy to follow, with internal links and calls to action (CTAs) guiding the user toward making a purchase.

Don’t: Avoid Internal Linking

Speaking of internal linking, whilst it’s not a substitute for a sitemap, it’s definitely not something that you should avoid.

Internally linking landing pages to one another helps to direct users to different pages and keep them on your site for longer, ideally moving them towards making a booking.

Having lots of internal links throughout your travel website also helps it to rank better, as it helps search engines to identify the key pages on a site.

It also helps new pages to start ranking for phrases faster by associating them with existing pages that are already ranking well.

It’s very straightforward to put internal links in the header and footer of a landing page. But if you really want to reap the benefits of this approach, you should include internal linking in the content on each landing page as well.

Consider the anchor text that you’re adding the link to each time; it needs to be related to the page that it’s linking to, otherwise, the link will be seen as spammy.

Do: Optimize Your Images

It’s not just written content that needs to be optimized.

Travel websites tend to have lots of images on them, but the size of these can affect how quickly a landing page loads, which in turn can affect how well it ranks.

You shouldn’t compromise on image quality, but you should resize and compress each image before it’s uploaded to save space.

Images can also be optimized by ensuring that they have a title and alt text that describes what the image contains. Images should be relevant to each landing page, so this alt text can be used to insert more keyword phrases – or at least phrases that are semantically similar.

Don’t: Overuse Plugins And JavaScript Elements

Finally, whilst we’re talking about elements that impact loading speed, plugins and JavaScript can both cause problems with how fast a landing page loads.

Both can be useful, but both need to be chosen carefully so that your website’s SEO isn’t affected.

Plugins can be used to add a variety of exciting features to a travel website, but overuse will make it impossible to load a page in under a couple of seconds.

Consider the benefits of each plugin before you add them to your website, and regularly review these to ensure you’re still getting what you want.

JavaScript, similarly, can make a website more dynamic; these elements are resource-heavy dependencies that will also impact how quickly a page loads.

Some browsers also have JavaScript disabled, so by using a lot of these elements on a page, you face losing functionality if JavaScript isn’t enabled.

Summary

A new travel website build is often a lengthy process that can come with a hefty price tag if you don’t know what you should be asking for.

The above advice should give you a clear set of guidelines of what to prioritize and avoid when it comes to designing a new website for your travel company, helping to ensure you’re left with a beautiful and functional site for your brand that ranks well on search engines and brings in plenty of business.

Dos For Travel Websites Don’ts For Travel Websites
  • Start with SEO research.
  • Opt for a bad hosting platform.
  • Make use of stock image databases.
  • Try to cut costs with a bad booking system.
  • Plan in time for content creation.
  • Forget headers, title tags,  and meta descriptions.
  • Implement a sitemap.
  • Avoid internal linking.
  • Optimize your mages.
  • Overuse plugins and JavaScript elements.

More resources:


Featured Image: REDPIXEL.PL/Shutterstock