Google Chrome SEO Without A Plugin

This post tries to cover many SEO items that can be handled via plain vanilla Google Chrome without any tools. There are numerous add-ons for Chrome that handle many SEO data gathering tasks, but those are not covered here. For those that are unsure about the security of those add-ons, or whether they are mining Litecoin in the background and eating up your CPU cycles, this post is for you. But more over, it is just a reason to play around with Google searches, Chrome Developer Tools, and the Console.

Google Searches

In this section we cover a few common Google search operators used in SEO. Please let me know what I missed.

Canonical content check

info:{url}

info:https://www.codeseo.io

canonical

On-page internal link candidates

site:{domain} {keyword}

site:codeseo.io "googlebot"

internal-links
Bonus Points: Also the way to see if the correct page is ranking for a particular query.

Pages that haven't moved to https

site:{domain} -inurl:https

site:amazon.com -inurl:https

https

If your page is cached by Google

cache:{url}

cache:https://codeseo.io

cache

Useful parameters in Google searches

  • nearby={city}: Filters search results to nearby city.
  • filter=0: Remove personalization from Google results.
  • num=100: Display 100 Google results.

Most of the above provided by Victor Pan. Thanks for the idea for this post Victor. Please follow him on Twitter.

Chrome Devloper Tools Console

In this section we cover using the Console in Developer Tools to get data from Google and your pages in Chrome.

$$('h3 a').join('\n')

scrape-google-links

Scrape Google Images


var imgs=$$('a'); var out = [];
for (i in imgs){
  if(imgs[i].href.indexOf("/imgres?imgurl=http")>0){
		out.push(decodeURIComponent(imgs[i].href).split(/=|%|&/)[1].split("?imgref")[0]);
	}
}
out.join('\n')

google-images
Hat tip to Peter Nikolow. Read more at his blog here (Bulgarian).

Count links on a page

$$('a').length

count-links

See the page title

document.title

document-title
Bonus Points:

document.title.length


See the page description

document.all.description.content

document-description
Bonus Points:

document.all.description.content.length


See the robots meta

document.all.robots.content

document-robots

See the canonical

$('link[rel="canonical"]')[0]

canonical-onpage

Easter eggs in Google Search

document.all['easter-egg']

easter

Edit a page live

document.designMode = "on"

designmode

Get Important N-Grams from Google search results


var stopwords = [
  'about', 'after', 'all', 'also', 'am', 'an', 'and', 'another', 'any', 'are', 'as', 'at', 'be',
  'because', 'been', 'before', 'being', 'between', 'both', 'but', 'by', 'came', 'can',
  'come', 'could', 'did', 'do', 'each', 'for', 'from', 'get', 'got', 'has', 'had',
  'he', 'have', 'her', 'here', 'him', 'himself', 'his', 'how', 'if', 'in', 'into',
  'is', 'it', 'like', 'make', 'many', 'me', 'might', 'more', 'most', 'much', 'must',
  'my', 'never', 'now', 'of', 'on', 'only', 'or', 'other', 'our', 'out', 'over',
  'said', 'same', 'see', 'should', 'since', 'some', 'still', 'such', 'take', 'than',
  'that', 'the', 'their', 'them', 'then', 'there', 'these', 'they', 'this', 'those',
  'through', 'to', 'too', 'under', 'up', 'very', 'was', 'way', 'we', 'well', 'were',
  'what', 'where', 'which', 'while', 'who', 'with', 'would', 'you', 'your', 'a', 'i', 's']

function nGrams(sentence, limit) {
	
	ns = [1,2,3,4]; var grams = {};
	var words = sentence.replace(/(?:https?|ftp):\/\/[\n\S]+/g, '').toLowerCase().split(/\W+/).filter(function (value) {return stopwords.indexOf(value.toLowerCase()) === -1})
	for (n of ns){
		var total = words.length - n;
		for(var i = 0; i <= total; i++) {
		var seq = '';
		for (var j = i; j < i + n; j++) { seq += words[j] + ' ';}
		if (seq.trim().length < 3) {continue;}else{seq = seq.trim()}
		grams[seq] = seq in grams ? grams[seq] +  1 : 1;
		}
	}
	var sort =  Object.keys(grams).sort(function(a,b){return grams[b]-grams[a]});
	for (s of sort){ if (grams[s] < limit){break;} console.log(s, ':', grams[s]);}
}
	
var gtext = document.all.search.innerText
var ng = nGrams(gtext, 3)

ngrams

Get Google Analytics info


    for (const [key, value] of Object.entries(ga.getAll()[0].b.data.values) ) {
	if (typeof value === 'string'){
		console.log('%s: %s', key.replace(':',''), value);
	}
}

google-analytics
Bonus Points: Check the hit count for your profiles

gaData

See what Google is storing to the google object on search result pages


for (k of Object.keys(google)){
    if (typeof google[k] !== 'function') {console.log(k,google[k])}
}

google

Get load timings from PerformanceTiming


for (t in window.performance.timing){
	var tAll = window.performance.timing; var t0 = tAll['navigationStart'];
	if (tAll[t] !== "undefined" && (tAll[t]- t0) > 10){
		console.log(t,':', (tAll[t]- t0)/1000, 'secs')
	}
}

timings

Chrome Developer Tools

This section covers some of the best Developer Tools tabs.

Security

In developer tools. Look for the Security tab to ensure your page and loaded resources are secure.
security

Audits

Use the built-in Lighthouse audits to test your webpage for:

  • Speed
  • PWA implementation
  • Accessibility
  • Best Practices
  • SEO

You have to get the Chrome canary build for the SEO audit portion to be available through Developer Tools. Otherwise, use the Chrome plugin for Lighthouse.
lighthouse

Network

I most often find myself using the network view for a couple things. First, it is great for verifying redirect chaining as long as you have "Preserve log" checked.
network-redirect

It is also great for looking at time-to-first-byte (TTFB), the time it took a server to respond to you. Also content download timings for image assets, scripts etc. There is also a nice filmstrip view in the latest canary version which quickly shows rendering progression to time.

network-ttfb

Responsive

In responsive view in Developer Tools, it is easy to add additional devices for Googlebot using the user-agent strings found here, and window sizes found here. This gives you the ability to browse as Googlebot and can uncover strange issues where a particular website either serves bots from different servers or handles those sessions differently. Not a good thing generally.
responsive

Sensors

In addition to the above, you can use the More Tools > Sensors portion of Developer Tools to set the latitude and longitude to appear from in Google searches. There are many services that give you the lat/lon information but I generally rely on Google (Google Maps Api). This option has been glitchy for me in the past. Was brought up by Victor Pan, confirmed working by Dan Hinckley
location

Shortcuts: Full Size Screenshots

This is a great tip from Anthony Nelson.

One of my fave Chrome tips: on Console tab, hit Command+Shift+P to bring up shortcuts. Then type in "screenshot" and select "Capture Full Size Screenshot" - super easy way to get full sized png of a long page.


More Amazing Chrome SEO Tips

That's all I have. If you have anything to add, please comment below or hit me up on Twitter.

SEO