Category Archives: Uncategorized

PHP, jQuery, Javascript Notes

.serializeArray() – jQuery

The .serializeArray() method creates a JavaScript array of objects, ready to be encoded as a JSON string. It operates on a jQuery object representing a set of form elements. The .serializeArray() method uses the standard W3C rules for successful controls to determine which elements it should include; in particular the element cannot be disabled and must contain a name attribute. No submit button value is serialized since the form was not submitted using a button. Data from file select elements is not serialized. This method can act on a jQuery object that has selected individual form elements, such as <input><textarea>, and <select>. However, it is typically easier to select the <form> tag itself for serialization. This produces the following data structure (provided that the browser supports console.log):

name: "a",
value: "1"
name: "b",
value: "2"
name: "c",
value: "3"
name: "d",
value: "4"
name: "e",
value: "5"


.append() – jQuery

The .append() method inserts the specified content as the last child of each element in the jQuery collection (To insert it as the first child, use .prepend()). With .append(), the selector expression preceding the method is the container into which the content is inserted. Similar to other content-adding methods such as .prepend() and .before().append() also supports passing in multiple arguments as input. Supported input includes DOM elements, jQuery objects, HTML strings, and arrays of DOM elements.

$(“el”) – - name selector – jQuery

An element to search for – by Name. Refers to the tagName of DOM nodes. JavaScript’s getElementsByTagName() function is called to return the appropriate elements when this expression is used.

$(“#el”) – id selector – jQuery

An ID to search for, specified via the id attribute of an element. For id selectors, jQuery uses the JavaScript function document.getElementById(), which is extremely efficient. Calling jQuery() (or $()) with an id selector as its argument will return a jQuery object containing a collection of either zero or one DOM element. Each id value must be used only once within a document. If more than one element has been assigned the same ID, queries that use that ID will only select the first matched element in the DOM. This behavior should not be relied on, however; a document with more than one element using the same ID is invalid. If the id contains characters like periods or colons you have to escape those characters with backslashes.



Return a collection of matched elements either found in the DOM based on passed argument(s) or created by passing an HTML string.

jQuery( selector [, context ] )Returns: jQuery

Description: Accepts a string containing a CSS selector which is then used to match a set of elements.

In the first formulation listed above, jQuery() — which can also be written as $() — searches through the DOM for any elements that match the provided selector and creates a new jQuery object that references these elements:

$( "" );

If no elements match the provided selector, the new jQuery object is “empty”; that is, it contains no elements and has .lengthproperty of 0.

Selector Context

By default, selectors perform their searches within the DOM starting at the document root. However, an alternate context can be given for the search by using the optional second parameter to the $() function. For example, to do a search within an event handler, the search can be restricted like so:

$( "" ).click(function() {
$( "span", this ).addClass( "bar" );

When the search for the span selector is restricted to the context of this, only spans within the clicked element will get the additional class.

Internally, selector context is implemented with the .find() method, so $( "span", this ) is equivalent to $( this ).find( "span" ).

Using DOM elements

The second and third formulations of this function create a jQuery object using one or more DOM elements that were already selected in some other way. When passing an array, each element must be a DOM element; mixed data is not supported. A jQuery object is created from the array elements in the order they appeared in the array; unlike most other multi-element jQuery operations, the elements are not sorted in DOM order.

A common use of single-DOM-element construction is to call jQuery methods on an element that has been passed to a callback function through the keyword this:

$( "" ).click(function() {
$( this ).slideUp();

This example causes elements to be hidden with a sliding animation when clicked. Because the handler receives the clicked item in the this keyword as a bare DOM element, the element must be passed to the $() function before applying jQuery methods to it.

XML data returned from an Ajax call can be passed to the $() function so individual elements of the XML structure can be retrieved using .find() and other DOM traversal methods.

$.post( "url.xml", function( data ) {
var $child = $( data ).find( "child" );


When a jQuery object is passed to the $() function, a clone of the object is created. This new jQuery object references the same DOM elements as the initial one.

As of jQuery 1.4, calling the jQuery() method with no arguments returns an empty jQuery set (with a .length property of 0). In previous versions of jQuery, this would return a set containing the document node.

At present, the only operations supported on plain JavaScript objects wrapped in jQuery are: .data(),.prop(),.on().off().trigger() and .triggerHandler(). The use of .data() (or any method requiring .data()) on a plain object will result in a new property on the object called jQuery{randomNumber} (eg. jQuery123456789). Should .trigger( "eventName" ) be used, it will search for an “eventName” property on the object and attempt to execute it after any attached jQuery handlers are executed. It does not check whether the property is a function or not. To avoid this behavior, .triggerHandler( "eventName" ) should be used instead.


Chosen (v1.1.0)

Chosen has a number of options and attributes that allow you to have full control of your select boxes.


The following options are available to pass into Chosen on instantiation.


    disable_search_threshold: 10,
    no_results_text: "Oops, nothing found!",
    width: "95%"
Option Default Description
allow_single_deselect false When set to true on a single select, Chosen adds a UI element which selects the first elment (if it is blank).
disable_search false When set to true, Chosen will not display the search field (single selects only).
disable_search_threshold 0 Hide the search input on single selects if there are fewer than (n) options.
enable_split_word_search true By default, searching will match on any word within an option tag. Set this option to false if you want to only match on the entire text of an option tag.
inherit_select_classes false When set to true, Chosen will grab any classes on the original select field and add them to Chosen’s container div.
max_selected_options Infinity Limits how many options the user can select. When the limit is reached, the chosen:maxselected event is triggered.
no_results_text “No results match” The text to be displayed when no matching results are found. The current search is shown at the end of the text (e.g., No results match “Bad Search”).
placeholder_text_multiple “Select Some Options” The text to be displayed as a placeholder when no options are selected for a multiple select.
placeholder_text_single “Select an Option” The text to be displayed as a placeholder when no options are selected for a single select.
search_contains false By default, Chosen’s search matches starting at the beginning of a word. Setting this option to trueallows matches starting from anywhere within a word. This is especially useful for options that include a lot of special characters or phrases in ()s and []s.
single_backstroke_delete true By default, pressing delete/backspace on multiple selects will remove a selected choice. When false, pressing delete/backspace will highlight the last choice, and a second press deselects it.
width Original select width. The width of the Chosen select box. By default, Chosen attempts to match the width of the select box you are replacing. If your select is hidden when Chosen is instantiated, you must specify a width or the select will show up with a width of 0.
display_disabled_options true By default, Chosen includes disabled options in search results with a special styling. Setting this option to false will hide disabled results and exclude them from searches.
display_selected_options true

By default, Chosen includes selected options in search results with a special styling. Setting this option to false will hide selected results and exclude them from searches.

Note: this is for multiple selects only. In single selects, the selected result will always be displayed.


Certain attributes placed on the select tag or its options can be used to configure Chosen.


  <select class="my_select_box" data-placeholder="Select Your Options">
    <option value="1">Option 1</option>
    <option value="2" selected>Option 2</option>
    <option value="3" disabled>Option 3</option>
Attribute Description

The text to be displayed as a placeholder when no options are selected for a select. Defaults to “Select an Option” for single selects or “Select Some Options” for multiple selects.

Note:This attribute overrides anything set in the placeholder_text_multiple orplaceholder_text_single options.

multiple The attribute multiple on your select box dictates whether Chosen will render a multiple or single select.
selected, disabled Chosen automatically highlights selected options and disables disabled options.


Classes placed on the select tag can be used to configure Chosen.


  <select class="my_select_box chosen-rtl">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
Classname Description

Chosen supports right-to-left text in select boxes. Add the class chosen-rtl to your select tag to support right-to-left text options.

Note: The chosen-rtl class will pass through to the Chosen select even when theinherit_select_classes option is set to false.

Triggered Events

Chosen triggers a number of standard and custom events on the original select field.


  $('.my_select_box').on('change', function(evt, params) {
    do_something(evt, params);
Event Description

Chosen triggers the standard DOM event whenever a selection is made (it also sends a selected or deselected parameter that tells you which option was changed).

Note: in order to use change in the Prototype version, you have to include the Event.simulate class. The selected and deselected parameters are not available for Prototype.

chosen:ready Triggered after Chosen has been fully instantiated.
chosen:maxselected Triggered if max_selected_options is set and that total is broken.
chosen:showing_dropdown Triggered when Chosen’s dropdown is opened.
chosen:hiding_dropdown Triggered when Chosen’s dropdown is closed.
chosen:no_results Triggered when a search returns no matching results.

Note: all custom Chosen events (those that being with chosen:) also include the chosen object as a parameter.

Triggerable Events

You can trigger several events on the original select field to invoke a behavior in Chosen.


  // tell Chosen that a select has changed
Event Description
chosen:updated This event should be triggered whenever Chosen’s underlying select element changes (such as a change in selected options).
chosen:activate This is the equivalant of focusing a standard HTML select field. When activated, Chosen will capure keypress events as if you had clicked the field directly.
chosen:open This event activates Chosen and also displays the search results.
chosen:close This event deactivates Chosen and hides the search results.

Simple PHP Scraper Class

I gave a presentation entitled “The SEOs Guide to Scraping Everything” on May 10th at the SEOmoz and SEER Interactive Meetup in Philadelphia, PA.  Since I only had 8 minutes to present, I figured I’d augment my presentation by providing a simple PHP scraper class that people can use (and extend) to get started with scraping.

You can download the scraper class here.

There’s a quick sample for how to use the scraper class below my slide deck from the meetup:

Using the Scraper:




And here’s the actual scraper class:


class Eppie_Service_Scraper{

    public function __construct(){
        // set proxies -- you can add your own here or use the setProxies method
        $this->_proxies = array();

    public function scrape($url)
        $this->_url = $url;
        $dom = new DOMDocument();
    	$proxy = $this->_pickProxy();

    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    	curl_setopt($ch, CURLOPT_REFERER, "");
    	curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19");
        	curl_setopt($ch, CURLOPT_PROXY, $proxy);
        	curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    	$body = curl_exec($ch);

    	$this->_curl_result = $body;
    	$this->_dom = $dom;


    public function setProxies($proxies)
        $this->_proxies = $proxies;

    private function _pickProxy()
        if(count($this->_proxies) > 0)
            return $this->_proxies[rand(0, count($this->_proxies) - 1)];
        else return false;

    public function setKeyword($keyword)
        $this->_keyword = $keyword;

    private function _parseDOM()
        $xpath = new DOMXPath($this->_dom);
        $title = $xpath->query("//head/title");
        $meta_desc = $xpath->query("//head/meta[@name='description']/@content");
        $meta_kw = $xpath->query("//head/meta[@name='keywords']/@content");
        $h1 = $xpath->query("//h1");
        $h2 = $xpath->query("//h2");
        $h3 = $xpath->query("//h3");
	$h4 = $xpath->query("//h4");
	$h5 = $xpath->query("//h5");
	$h6 = $xpath->query("//h6");
        $img = $xpath->query("//img");
        $img_alt = $xpath->query("//img[@alt!='']/@alt");
        $strong = $xpath->query("//strong | //b");
        $body = $xpath->query("//body");

        if($title->length > 0)
            $this->_title = $title->item(0)->nodeValue;

        if($meta_desc->length > 0)
            $this->_meta_desc = $meta_desc->item(0)->nodeValue;

        if($meta_kw->length > 0)
            $this->_meta_kw = $meta_kw->item(0)->nodeValue;

        if($h1->length > 0)
            for($i=0; $i < $h1->length; $i++)
                $this->_h1[] = $h1->item($i)->nodeValue;

        if($h2->length > 0)
            for($i=0; $i < $h2->length; $i++)
                $this->_h2[] = $h2->item($i)->nodeValue;

        if($h3->length > 0)
            for($i=0; $i < $h3->length; $i++)
                $this->_h3[] = $h3->item($i)->nodeValue;

	if($h4->length > 0)
            for($i=0; $i < $h4->length; $i++)
                $this->_h4[] = $h4->item($i)->nodeValue;

	if($h5->length > 0)
            for($i=0; $i < $h5->length; $i++)
                $this->_h5[] = $h5->item($i)->nodeValue;

	if($h6->length > 0)
            for($i=0; $i < $h6->length; $i++)
                $this->_h6[] = $h6->item($i)->nodeValue;

        if($img_alt->length > 0)
            for($i=0; $i < $img_alt->length; $i++)
                $this->_img_alt[] = $img_alt->item($i)->nodeValue;

        $this->_img_alt_pct = ($img_alt->length / $img->length)*100;

        if($strong->length > 0)
            for($i=0; $i < $strong->length; $i++)
                $this->_strong[] = $strong->item($i)->nodeValue;



Using DOMXPath for Parsing Page Content in PHP

The DOMXPath class is a convenient and popular means to parse HTML content with XPath.
If you have a small set of HTML pages that you want to scrape data from and then to stuff into a database, Regexes might work fine… this works well for a limited, one-time job (from community Wiki).

If we are to apply XPath methods then, after we upload a content, we had better brush it up to prepare for export into DOM and DOMXPath objects.

Here I’ve summed the basic steps to be done with DOMXPath class usage:
  1. Initialize a DOMDocument class instance from page content (work with HTML as with XML)
  2. Initialize a DOMXPath class instance from DOMDocument class instance.
  3. Parse the DOMXPath object.

1. Initializing a DOMDocument  class instance from page content

  • create a new DOMDocument class instance
$DOM = new DOMDocument;
When using this function be sure to clear your internal error buffer ( libxml_clear_errors() ). If you don’t and you use this in a long running process, you may find that all your memory is used up. Outsourced from here. See the ‘enable user error handling’ bullet point.
  • load the HTML text into the DOMDocument object
if (!$DOM-&gt;loadHTML($page))
  • enable user error handling
    {   $errors=&amp;quot;&amp;quot;;
        foreach (libxml_get_errors() as $error)  {
        print “libxml errors:&lt;br&gt;$errors”;

Now the DOMDocument object (named ‘$DOM’) contains all the target text as a HTML DOM structure. It’s ready for different methods and properties to be applied.

2. Initializing a DOMXPath object from the DOMDocument object

  • Initialize DOMXPath object for further parse
$xpath = new DOMXPath($DOM);

Now XPath methods are applicable to the content

Parsing the DOMXPath object

As a test page I took the Blocks Testing Ground page and wrote a code using XPath to retrieve data.

$case1 = $xpath-&gt;query(‘//*[@id="case1"]‘)-&gt;item(0);
$query = ‘div[not (@class="ads")]/span[1]‘;
$entries = $xpath-&gt;query($query, $case1);
foreach ($entries as $entry) {
    echo ” {$entry-&gt;firstChild-&gt;nodeValue} &lt;br /&gt; “;


How libxml library reacts to a malformed HTML

The libxml library gave no warning about a malformed HTML non-related to the direct DOM structure parse, yet the library has issued an error for the malformed HTML instance that is the subject of a direct parse:

  • No warning for this case: <p><p><p>
  • For a missed bracket: <div prod=’name1′ <div …> and then for the extra opened tag: <div prod=’name1′ ><div>  the library has issued an exception for the DOMXPath ‘query’ method.

The whole Scraper Listing

$curl = curl_init(‘’);
$page = curl_exec($curl);
if(curl_errno($curl)) // check for execution errors
    echo ‘Scraper error: ‘ . curl_error($curl);
$DOM = new DOMDocument;
if (!$DOM->loadHTML($page))
        foreach (libxml_get_errors() as $error)  {
        print “libxml errors:<br>$errors”;
$xpath = new DOMXPath($DOM);
$case1 = $xpath->query(‘//*[@id="case1"]‘)->item(0);
$query = ‘div[not (@class="ads")]/span[1]‘;
$entries = $xpath->query($query, $case1);
foreach ($entries as $entry) {
    echo ” {$entry->firstChild->nodeValue} <br /> “;


Excel VBA – Delete Rows on Condition

We’re getting a lot of questions on our Excel board about how to delete rows in Excel given various conditions. I’ve assembled a few examples which should help you get started if you face such a task. This thread is a collection of code samples – not a tutorial.

There is functionality available to us within the Excel Object Model which, when used correctly, allows us to reliably and efficiently delete unwanted rows of data from our workbooks. Here are some popular variations:

Working With The Range Object’s SpecialCells Method

Working With The Range Object’s Find and AutoFilter Methods

Note – Determining The Last Used Row

Throughout the thread I call the following function to determine the last populated row of a specified range:


Public Function GetLastRow(ByVal rngToCheck As Range) As Long

    Dim rngLast As Range

    Set rngLast = rngToCheck.Find(what:="*", searchorder:=xlByRows, searchdirection:=xlPrevious)

    If rngLast Is Nothing Then
        GetLastRow = rngToCheck.Row
        GetLastRow = rngLast.Row
    End If

End Function

Delete Rows If Cells In A Certain Column Are Empty

Here’s a skeleton procedure to demonstrate quick and simple way to delete each row in Sheet1 if the cells in Column A are empty:


Sub Example1()

    Dim lngLastRow As Long
    Dim rngToCheck As Range

    Application.ScreenUpdating = False

    With Sheet1
        'if the sheet is empty then exit...
        If Application.WorksheetFunction.CountA(.Cells) > 0 Then

            'find the last row in the worksheet
            lngLastRow = GetLastRow(.Cells)

            Set rngToCheck = .Range(.Cells(1, 1), .Cells(lngLastRow, 1))

            If rngToCheck.Count > 1 Then
                'if there are no blank cells then there will be an error
                On Error Resume Next
                On Error GoTo 0
                If VBA.IsEmpty(rngToCheck) Then rngToCheck.EntireRow.Delete
            End If
        End If
    End With

    Application.ScreenUpdating = True

End Sub

SpecialCells From A Single Cell

Note that if rngToCheck is a single cell then the SpecialCells method unexpectedly returns a union related to the blank cells (in this case we used the xlCellTypeBlanks constant) and used range of the sheet so I have defensively coded for this by checking rngToCheck’s Count property (since we are working with a single column the Count property will also be sufficient in Excel 2007 or later – if there is a chance that the cells count could exceed 2,147,483,647 then you should useCountLarge).

Limit Of 8,192 Non-Contiguous Cells

Initially it appears that a great thing about using the range object’s SpecialCells method is that we can avoid having to use any looping structures.

However, one nuance we have to be careful of is that this method will return a reference to the entire qualifier range if there are more than 2^13 (in this case blank) non-contiguous cells. There is a MS Help and Support article describing the issue:
This issue has been resolved in Excel 2010.

So, a more robust solution is to check the cell count of the first area of the specialcells range and, if necessary, introduce a loop which steps through 2^14 cells at a time. Ron De Bruin’s done the hard work for us:

Note: The later examples in this thread will ignore this, but obviously bear it in mind!

Delete Rows If Any Cells In The Row Are Empty

This example expands on the previous one but introduces yet another nuance when working with the range object’sSpecialCells method. This example will delete all rows in the worksheet if the ANY of their cells within columns B to E are empty. Of course, the column intersect you are checking can be changed easily.


Sub Example1()

    Dim lngLastRow As Long
    Dim rngToCheck As Range, rngToDelete As Range

    Application.ScreenUpdating = False

    With Sheet1

        'find the last row on the sheet
        lngLastRow = GetLastRow(.Cells)

        If lngLastRow > 1 Then
            'we want to check the used range in columns B to E
            'except for our header row which is row 1
            Set rngToCheck = .Range(.Cells(2, "b"), .Cells(lngLastRow, "e"))

            'if there are no blank cells then there will be an error
            On Error Resume Next
            Set rngToDelete = rngToCheck.SpecialCells(xlCellTypeBlanks)
            On Error GoTo 0

            'allow for overlapping ranges
            If Not rngToDelete Is Nothing Then _
                    Application.Intersect(.Range("A:A"), rngToDelete.EntireRow).EntireRow.Delete
        End If
    End With

    Application.ScreenUpdating = True
End Sub

The key piece of defensive coding is the part which allows for overlapping ranges. If a single row contains two non-contiguous blank cells with columns B to E then, if we try to delete the entire row directly from the union range returned by the specialcells method, we will get an error:


        'this line of code could cause an error when working with more than 2 columns
        If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete

To allow for this we resolve each empty cell found to the first column of that row and then delete:

        'allow for overlapping ranges
        If Not rngToDelete Is Nothing Then _
                Application.Intersect(.Range("A:A"), rngToDelete.EntireRow).EntireRow.Delete

Delete Rows If A Column Contains A Certain Value

The most traditional approach to tackle this task is to loop through the entire column, check to see if each cell contains the value and, if it does, delete the row. Since Excel shifts rows upwards when they are deleted, it is best to start at the bottom of the column and work upwards thereby negating the row shift effect.

This approach can be quite slow (even with the Application Object’s ScreenUpdating and Calculation properties set to False/Manual) for two reasons:

  1. Deleting a row triggers an Excel recalculation which can be particularly time consuming if there are a lot of formulas or links. So, rather than deleting each row as we identify it, the approach we will use is to take a note of it and then, once we know all the rows that need to be deleted, we delete them altogether in one go. Another approach would be to store the cell contents we want in an array, clear all the cells and then populate them from that array. This would be a good workaround which avoids deleting the rows at all but, issues such as cell formats and formula dependencies, often mean that this option isn’t viable.
  2. Looping through all the cells in a column (or even just the used cells within a column) is time consuming. We can reduce the number of iterations within the loop by using the range object’s Find method or, if the worksheet is set up in a suitable format, we can use the range object’s Autofilter method.

Using The Range Object’s Find Method


Sub Example1()

    Const strTOFIND As String = "Hello"

    Dim rngFound As Range, rngToDelete As Range
    Dim strFirstAddress As String

    Application.ScreenUpdating = False

    With Sheet1.Range("A:A")
        Set rngFound = .Find( _
                            What:=strTOFIND, _
                            Lookat:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _

        If Not rngFound Is Nothing Then
            Set rngToDelete = rngFound

            'note the address of the first found cell so we know where we started.
            strFirstAddress = rngFound.Address

            Set rngFound = .FindNext(After:=rngFound)

            Do Until rngFound.Address = strFirstAddress
                Set rngToDelete = Application.Union(rngToDelete, rngFound)
                Set rngFound = .FindNext(After:=rngFound)
        End If
    End With

    If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete

    Application.ScreenUpdating = True

End Sub

Using The Range Object’s Autofilter Method

This procedure assumes that Row 1 contains field headers.


Sub Example2()

    Const strTOFIND As String = "Hello"

    Dim lngLastRow As Long
    Dim rngToCheck As Range

    Application.ScreenUpdating = False

    With Sheet1
        'find the last row in the Sheet
        lngLastRow = GetLastRow(.Cells)

        Set rngToCheck = .Range(.Cells(1, 1), .Cells(lngLastRow, 1))
    End With

    With rngToCheck
        .AutoFilter Field:=1, Criteria1:=strTOFIND

        'assume the first row had headers
        On Error Resume Next
        .Offset(1, 0).Resize(.Rows.Count - 1, 1). _
        On Error GoTo 0

        'remove the autofilter
    End With

    Application.ScreenUpdating = True

End Sub

Delete Rows If A Column Does Not Contain A Certain Value

This is very similar to the previous post except for an inversion of the logic. Whilst inverting the logic of theRange.Autofilter() approach is very straightforward, a slightly different approach with the Range.Find() method is required.

Using The Range Object’s Find / ColumnDifferences Methods

This procedure is adapted from a post by MS MVPs Richard Schollar and Rory Archibald. We search column A for the string “Hello” – which is the value we wish to keep – and then we use the Range.ColumnDifferences() method to return all the cells in the column which have a different value. Note that the Range.ColumnDifferences() method is also subject to the 8,192 non-contiguous cells limitation mentioned at the beginning of this thread.


Sub Example1()

    Const strTOFIND As String = "Hello"

    Dim lngLastRow As Long
    Dim rngToCheck As Range, rngFound As Range, rngToDelete As Range

    Application.ScreenUpdating = False

    With Sheet1
        lngLastRow = GetLastRow(.Cells)

        If lngLastRow > 1 Then
            'we don't want to delete our header row
            With .Range("A2:A" & lngLastRow)

                Set rngFound = .Find( _
                                    What:=strTOFIND, _
                                    Lookat:=xlWhole, _
                                    SearchOrder:=xlByRows, _
                                    SearchDirection:=xlNext, _
                                    MatchCase:=True _

                If rngFound Is Nothing Then
                    'there are no cells we want to keep!


                    'determine all the cells in the range which have a different value
                    On Error Resume Next
                    Set rngToDelete = .ColumnDifferences(Comparison:=rngFound)
                    On Error GoTo 0

                    If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete

                End If
            End With
        End If
    End With

    Application.ScreenUpdating = True

End Sub

Using The Range Object’s Autofilter Method

The method is exactly the same for the autofilter approach in the previous post except that we change the comparison operator from “=” to “<>”. Again, a proper worksheet table structure is assumed with the field headers in row 1.


Sub Example2()

    Const strTOFIND As String = "Hello"

    Dim lngLastRow As Long
    Dim rngToCheck As Range

    Application.ScreenUpdating = False

    With Sheet1
        'find the last row in the sheet
        lngLastRow = GetLastRow(.Cells)

        Set rngToCheck = .Range(.Cells(1, 1), .Cells(lngLastRow, 1))
    End With

    With rngToCheck
        .AutoFilter field:=1, Criteria1:="<>" & strTOFIND

        'assume the first row had headers
        On Error Resume Next
        .Offset(1, 0).Resize(.Rows.Count - 1, 1). _
        On Error GoTo 0

        'remove the autofilter
    End With

    Application.ScreenUpdating = True

End Sub

Delete Rows If A Column Contains One Of Several Values

An equally common task is to delete a row if any one of a list of words is contained within a certain column.

The discussion on the previous post applies equally and we just have to add an additional loop to iterate through thekeywords. In the examples below I have used an array but you could just as easily use a range.

Using The Range Object’s Find Method


Sub Example1()

    Dim rngFound As Range, rngToDelete As Range
    Dim strFirstAddress As String
    Dim varList As Variant
    Dim lngCounter As Long

    Application.ScreenUpdating = False

    varList = VBA.Array("Here", "There", "Everywhere")

    For lngCounter = LBound(varList) To UBound(varList)

        With Sheet1.Range("A:A")
            Set rngFound = .Find( _
                                What:=varList(lngCounter), _
                                Lookat:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _
                                MatchCase:=True _

            If Not rngFound Is Nothing Then
                If rngToDelete Is Nothing Then
                    Set rngToDelete = rngFound
                    Set rngToDelete = Application.Union(rngToDelete, rngFound)
                End If

                strFirstAddress = rngFound.Address
                Set rngFound = .FindNext(After:=rngFound)

                Do Until rngFound.Address = strFirstAddress
                    Set rngToDelete = Application.Union(rngToDelete, rngFound)
                    Set rngFound = .FindNext(After:=rngFound)
            End If
        End With
    Next lngCounter

    If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete

    Application.ScreenUpdating = True

End Sub

Using The Range Object’s Autofilter Method

Note that this code is only applicable to Excel 2007 or later.


Sub Example2()

    Dim lngLastRow As Long
    Dim rngToCheck As Range
    Dim varList As Variant

    Application.ScreenUpdating = False

    vList = VBA.Array("Here", "There", "Everywhere")

    With Sheet1
        'find the last row in column A
        lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

        Set rngToCheck = .Range(.Cells(1, 1), .Cells(lngLastRow, 1))
    End With

    With rngToCheck
        .AutoFilter _
            Field:=1, _
            Criteria1:=vList, _

        'assume the first row had headers
        On Error Resume Next
        .Offset(1, 0).Resize(.Rows.Count - 1, 1). _
        On Error GoTo 0

        'remove the autofilter
    End With

    Application.ScreenUpdating = True

End Sub

Last edited by Colin Legg; 12-16-2010 at 05:02 PM.

Reply With Quote
Old 09-24-2008, 07:14 AM
Colin Legg's Avatar
Out Of Office

Retired Moderator
* Expert *

Join Date: Mar 2005
Location: London, UK
Posts: 3,398
Default Delete Rows If A Column Does Not Contain One Of Several Values

This is an adaptation of the Range.ColumnDifferences() example a couple of posts ago.

Sub Example1()

    Dim varList As Variant
    Dim lngLastRow As Long, lngCounter As Long
    Dim rngToCheck As Range, rngFound As Range
    Dim rngToDelete As Range, rngDifferences As Range
    Dim blnFound As Boolean

    Application.ScreenUpdating = False

    With Sheet1
        lngLastRow = GetLastRow(.Cells)

        'we don't want to delete our header row
        Set rngToCheck = .Range("A2:A" & lngLastRow)
    End With

    If lngLastRow > 1 Then

        With rngToCheck

            varList = VBA.Array("Here", "There", "Everywhere")

            For lngCounter = LBound(varList) To UBound(varList)

                Set rngFound = .Find( _
                                        What:=varList(lngCounter), _
                                        Lookat:=xlWhole, _
                                        SearchOrder:=xlByRows, _
                                        SearchDirection:=xlNext, _

                'check if we found a value we want to keep
                If Not rngFound Is Nothing Then

                    blnFound = True

                    'if there are no cells with a different value then
                    'we will get an error
                    On Error Resume Next
                    Set rngDifferences = .ColumnDifferences(Comparison:=rngFound)
                    On Error GoTo 0

                    If Not rngDifferences Is Nothing Then
                        If rngToDelete Is Nothing Then
                            Set rngToDelete = rngDifferences
                            Set rngToDelete = Application.Intersect(rngToDelete, rngDifferences)
                        End If
                    End If

                End If

            Next lngCounter
        End With

        If rngToDelete Is Nothing Then
            If Not blnFound Then rngToCheck.EntireRow.Delete
        End If
    End If

    Application.ScreenUpdating = True

End Sub

If you want blanks to be exceptioned then amend the array:

varList = VBA.Array("Here", "There", "Everywhere","")

Last edited by Colin Legg; 12-16-2010 at 05:06 PM. Reason: corrected small bug

Reply With Quote
Old 09-24-2008, 07:36 AM
Colin Legg's Avatar
Out Of Office

Retired Moderator
* Expert *

Join Date: Mar 2005
Location: London, UK
Posts: 3,398
Default Delete Rows From A Worksheet Based On Multiple Conditions

If we are checking for several keywords in an entire worksheet, the range object’s find method is likely to be best way.Again, we prefer to delete all the rows in one go at the end so that the routine runs more quickly.

Sub Example1()

    Dim varList As Variant
    Dim lngarrCounter As Long
    Dim rngFound As Range, rngToDelete As Range
    Dim strFirstAddress As String

    Application.ScreenUpdating = False

    varList = VBA.Array("Here", "There", "Everywhere")

    For lngarrCounter = LBound(varList) To UBound(varList)
        With Sheet1.UsedRange
            Set rngFound = .Find( _
                                What:=varList(lngarrCounter), _
                                Lookat:=xlWhole, _
                                SearchOrder:=xlByRows, _
                                SearchDirection:=xlNext, _

            If Not rngFound Is Nothing Then
                strFirstAddress = rngFound.Address

                If rngToDelete Is Nothing Then
                    Set rngToDelete = rngFound
                    If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                        Set rngToDelete = Application.Union(rngToDelete, rngFound)
                    End If
                End If

                Set rngFound = .FindNext(After:=rngFound)

                Do Until rngFound.Address = strFirstAddress
                    If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                        Set rngToDelete = Application.Union(rngToDelete, rngFound)
                    End If
                    Set rngFound = .FindNext(After:=rngFound)
            End If
        End With
    Next lngarrCounter

    If Not rngToDelete Is Nothing Then rngToDelete.EntireRow.Delete

    Application.ScreenUpdating = True

End Sub

Last edited by Colin Legg; 12-16-2010 at 05:08 PM.

Reply With Quote
Old 09-24-2008, 07:41 AM
Colin Legg's Avatar
Out Of Office

Retired Moderator
* Expert *

Join Date: Mar 2005
Location: London, UK
Posts: 3,398
Default Delete Rows From A Workbook Based On Multiple Conditions

We expand our way up the object heirachy and arrive at the workbook level. Same idea as the previous post except that we introduce an additional For Each… Next Loop to cycle through the Worksheets collection. Note that we use theworksheets collection in preference to the sheets collection because the sheets are not necessarily worksheets and therefore might not have ranges! 

Sub Example1()

    Dim varList As Variant
    Dim lngarrCounter As Long
    Dim wstItem As Worksheet
    Dim rngFound As Range, rngToDelete As Range
    Dim strFirstAddress As String

    Application.ScreenUpdating = False

    varList = VBA.Array("Here", "There", "Everywhere")

    For Each wstItem In Workbooks(1).Worksheets
        For lngarrCounter = LBound(varList) To UBound(varList)
            With wstItem.UsedRange
                Set rngFound = .Find( _
                                    What:=varList(lngarrCounter), _
                                    Lookat:=xlWhole, _
                                    SearchOrder:=xlByRows, _
                                    SearchDirection:=xlNext, _

                If Not rngFound Is Nothing Then
                    strFirstAddress = rngFound.Address

                    If rngToDelete Is Nothing Then
                        Set rngToDelete = rngFound
                        'we can only have one range reference per row.
                        If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                            Set rngToDelete = Application.Union(rngToDelete, rngFound)
                        End If
                    End If

                    Set rngFound = .FindNext(After:=rngFound)

                    Do Until rngFound.Address = strFirstAddress
                        If Application.Intersect(rngToDelete, rngFound.EntireRow) Is Nothing Then
                            Set rngToDelete = Application.Union(rngToDelete, rngFound)
                        End If
                        Set rngFound = .FindNext(After:=rngFound)
                End If
            End With
        Next lngarrCounter

        If Not rngToDelete Is Nothing Then
            'we can't use a non-contiguous 3D range, so we have to delete
            'before looping onto the next worksheet

            'the referenced range has been disposed; we have to 'clear' the reference to it
            'before we iterate onto the next worksheet
            Set rngToDelete = Nothing
        End If
    Next wstItem

    Application.ScreenUpdating = True

End Sub

As noted by the comments in the code, we have to delete the rows and clear the rngToDelete reference on a worksheetby worksheet basis.





Checkout   Browse   Changes   Clones

Powered by Google Project Hosting

Click Through Rates in Google SERPs for Different Types of Queries

 - Posted by  to Behavior & Demographics

This entry was written by one of our members and submitted to our YouMoz section.
The author’s views below are entirely his or her own and may not reflect the views of Moz.

Bluerank specialists have been analyzing web search to provide the best service to our clients. Web search is based on users, and to achieve the best results we have to understand users’ actions.

I was interested in click through rates in Google search engine result pages. It is obvious that the position in search engine result pages is vital. However, it is just as important that there are three main types of keywords, and these keywords might have different click through rates. To find out if that thesis is true, I conducted a study.

Brief methodology

I built a database of 14,507 queries, their CTRs, and average positions. Data was gathered from Google Webmaster Tools from different types of websites (including e-commerce, institution website, company website and classifieds websites). The collected database includes various queries, which gives some broader perspective.

Each query was analyzed and marked as brand if it contained the domain name. Queries were checked and marked as “Product queries” if they contained product names. If the query was neither brand nor product, it was marked as “General.”

You can find expanded methodology at the bottom of the post.

Key findings

The main conclusion of this analysis is that, depending on the type of queries a user chooses, their actions in web search differ. While preparing the plan for long-term SEO projects, we can assume priorities for different types of keywords. The last conclusion concerns the issue of long tail phrases that can’t be ignored. Websites have to be prepared properly so that they are ready to serve good landing pages for long tail queries.

Queries prioritization

queries prioritization

It is obvious that reaching high positions is important. But if you want to prioritize queries and plan to reach the highest positions first with most important queries, it would be best to start with product queries, then with general queries, and after that with brand queries.

Average CTR of all queries

all queries ctr graph

As you can see on the graph above, top1 is most popular (52%) for all the queries (nothing new). More importantly, the total of average CTRs for top 10 queries amounts to 208%. This means that users click more than twice on the first result page. It is obvious that top 5 queries bring huge traffic to the website, but users often go deeper in Google results, and visibility of a website on further positions might also be profitable.

Average CTR of brand queries

graph queries ctr graph

My study concluded that if users search using brand queries, the position in SERP remains less important than on average, for all queries in the study. Although it is important, the total of average CTRs in top 10 queries amounts to 306%, which means that users click more than three times on the first result page. It could be the result of the fact that users don’t care about the positions for such phrases, or they are trying to find what they are looking for on various kind of sources: company websites, blogs, online stores, social profiles, and so on.

Average CTR of product queries

product queries ctr graph

It is clear that when users search for products, the first result is most important for them (average CTR for top1 is 53%). The total of average CTRs is 208%, so we can affirm that users click on more than two results. This might result from comparing offers on different pages. If users don’t find products they search for on the first result page, they will keep looking further in SERPs. (More information about CTRs on further result pages have been presented in the end of this study.)

Average CTR of general queries

general queries ctr graph

For general queries (non branded, and non product) the average CTR graph looks very natural.

Below you can find summarizing graph for all tested queries, including brand, product, and general queries CTRs.

all queries ctrs graph comparison

As you can see on the graph, the average CTRs for all product and general queries are quite similar. Brand queries’ average CTRs seems unnatural, but we can be sure that users care less about position in SERPs while using brand queries.

Long tail queries

Below you can see the average CTRs for long tail queries, containing 3, 4, and 5 words.

long tail 3 words ctr

long tail 4 words ctr

long tail 5 words ctr graph

It is clear that when users make their queries more and more precise, the results are getting more accurate. For queries built with 4 and 5 words, visibility on the highest positions becomes increasingly important.

Let’s take a look on the average CTRs for positions 1 to 10, for long tail phrases built with 3, 4, and 5 words.

table - long tail queries ctr

long tail queries comparison graph

As it can be seen on the graph above, the more precise query, the more important it is to reach higher positions in SERPs. Long tail queries are very important because of the huge quality of traffic they generate. The surprising conclusion is that when users use longer queries, they open more websites from search engine result pages. The total of average CTRs in top 10 results for long tail queries (3 words) is 227%, for long tail queries (4 words) is 233%, and for long tail queries (5 words) it is 249%. We can only presume that this phenomenon occurs because search engine result pages meet the needs of users and it encourages the users to visit more than one website.

Additional data for further result pages

During my analysis, I also gathered the average CTR data for further result pages (positions 11-20, 21-30 and 31-40). We must remember that Google Webmaster Tools provide data for further positions, but denominator used for the CTR calculation is different for result page number 1, 2, 3, and so on. This occurs because it is based on the number of page views, not the number of searches. CTR on further result pages might be also distorted by the universal search, leading me to believe that data for further result pages might be less accurate than for the first one.

Below you can see the average CTRs for further result pages for the following queries:

further positions ctrs

Full methodology

In the first part of study, I built the database of queries, their CTRs, and their average positions. All data was gathered from Google Webmaster Tools from different types of websites.

I took the data from:

  • Clothes e-commerce websites
  • Drugstore e-commerce websites
  • Health and beauty e-commerce websites
  • Higher education institutions websites
  • Jewelry company websites
  • Websites providing song lyrics
  • Two classifieds websites on pets and animals
  • Websites with heavy machinery classifieds

The collected database includes various queries, which gives us some broader perspective. All the queries were collected from Polish websites, although I’m sure that the conclusions would prove right for all languages. The database includes 14507 queries. Having collected all the keywords, I rounded up the average positions.

Finally, each query was analyzed and marked in the appropriate category. The query was marked as a “Brand” if it contained the domain name, but was checked manually in case there were some entries to those websites from the incorrectly written domain names. It turned out that users made some mistakes quite often. For example, if the keyword was containing a small mistake, it was also marked as brand keyword. Queries were checked and marked as “Product” if they contained product names. If the query was neither Brand nor Product, it was marked as “General.”

query types

After the analysis, I was left with:

  • 14507 All queries
  • 418 Brand queries
  • 11684 Product queries
  • 1795 General queries
  • 3538 Long tail queries containing 3 words
  • 1638 Long tail queries containing 4 words
  • 809 Long tail queries containing 5 words

Final conclusions

Depending on the type of queries users choose, their actions in web search differ. We have to remember this fact while planning long-term SEO projects. While scheduling our long-term work, we can prioritize queries and plan to reach the highest positions first with the most important product queries, then with general queries, and after that with brand queries. Putting huge emphasis on website optimization so that it will serve good landing pages for those queries is key.

Do you like this post?

Get your social on

Post Analytics


  • UnderRugSwept

    Marisa Brayman


    I found your one comment interesting:
    “The surprising conclusion is that when users use longer queries, they open more websites from search engine result pages . . . We can only presume that this phenomenon occurs because search engine result pages meet the needs of users and it encourages the users to visit more than one website.”

    I drew the exact opposite conclusion from this. The longer the query, I’d think the less likely you are to find what you’re looking for on the first try. I’d think the reason these searchers are opening so many pages is because they’re NOT finding what they’re looking for. The more specific your query is, the fewer existing websites there will be about it. Personally, when I put in long-tail queries–even in quotes–I usually find myself ending up on page two, still looking for a satisfying answer or result. I’d love to hear others’ experiences with this.

    Of course, really short queries aren’t going to be satisfying either. One word usually isn’t specific enough. It seems like 2-3 words is a happy medium. Of couse, I’m basing this on nothing but assumptions.


    • Roman Bębenista

      Roman Bębenista


      Thanks underrugswept for your very intresting comment. Like i said in the article “We can only presume…

      I think that such behavior depends on the exact query and sometimes my, and sometimes your opinion is true. If user uses properly constructed query, he will get good results and will open more sites. If the query won’t give him good results, he might open more sites with belief, that on one of opened sites, there will be what he is looking for.


    • Borduhh



      I also thing this depends on the type of query you are looking at. For example if you are doing research on a topic and using an informational query you might open up multiple websites to get accurate information versus a transactional query where the multiple windows are most likely because the original website did not bring them to the product they were looking for or such.

      Hence a great follow-up would be these queries with associated landing pages.


  • carl joel

    Carl Joel Määttä



    Really nice post Roman!

    This is great information basis to show anyone who wants to understand that users behave different depending on the type of queries.

    Generally the cost and competition lowers with longer quires. Therefore I agree with you that anyone should have in mind to prioritize important long queries like product queries and not only lay focus on the broad ones.

    One thing more to remember, different types of queries deserves different types of results.


  • shaam



    CTR for the long tail keywords seems to be really interesting and thanks for your detailed report of different queries

  • BWRic



    That’s an interesting article – thanks for sharing the wealth of knowledge.

  • TheeDesign Studio

    Richard Horvath


    Our experience is also the same: longer tale key phrases convert better but your conversion rate also depends on the call-to-action in the meta description.

  • matbennett

    Mat Bennett


    Thanks for sharing this data Roman, really interesting stuff.  It’s certainly going to be useful for in in directing SEO efforts – as you can project the £/$/ € benefits for increasing even a single position.




  • zaheermughal83

    Muhammad Zaheer


    Its really feel good to know the variation of keywords while using GWT.

    The way i optimize a website is that i categorize the keywords in four different forms like Long tail keywords, product keywords, category keywords and then brand keywords in last.
    Product based keywords are at first priority and category based keywords are at secondary to optimize. You probably missed to mention about category based keywords which also have lots of power to generate good sales.


  • Andrew-Martineau

    Andrew Martineau


    Hi Roman,

    Catalyst just released a new eBook that dives into Google CTR that looks at different search queries and the differences in average click through rates by top position, including search intent, query types, and user devices.

    I would suggest giving it a read. You can download the white paper here.



  • Spook SEO

    Spook SEO


    I admire your effort Roman, it’s always enjoyable to read an article written with such thorough analysis even though I cannot read it in one go :) but I promise I’ll be back here to continue reading, great work bro!


  • PhilAmery

    Phil Amery


    just in case you missed, latest (June 2013) Google SERP CTR data are available on Chitika’s website


  • EugeneKoval



    great, product queries is more than rate in your table, but i think it’s more regional key, 4 example in my Ukraine region, the general queries have more preference, product queries is middle preference

  • tarundeep singh

    Tarundeep Singh


    Amazing. I got some of the answers i was looking for regarding CTR. Your post is really helpful for me to atleast check the probability of traffic that one keyword can have. I know we can never estimate the exact amount but can now go somehow close to it.


    Larry Kim


    Hi Roman, interesting research here. thanks for sharing. couple of questions for you: would it make sense to try to normalize your data so that the CTR’s on the page always add up to 100%?

    Also, can you describe how you treated ads in this study? obviously ads take up a ton of space (and clicks) on the SERP these days, particularly for product searches (Google Product Listing Ads) and branded searches.  is this study only based on organic rankings? These CTR’s just seem quite a lot higher than what i’m seeing in my own internal research. thanks for clarifying.


    • Roman Bębenista

      Roman Bębenista



      thanks for interesting questions.

      1. I could normalize data, so that CTR sum would be 100%, but it wouldn’t show the information, that users click more than 1 time on search results.

      2. I used data based only on organic rankings.


  • lethal0r

    Tom Wilkinson


    that CTR on the first page really surprised me. that implies a lot of people are unhappy with where they click first.

    • David Wilson SEO

      David Wilson


      I actually thought it would be lower. I have not really had a Google search return the ideal result, the first time, for ages. In my opinion, the results displayed are not as useful as they once were. It doesn’t matter if I am signed in or on a new browser, the results are always askew from what I wanted.

      • eververs



        This shows that Google still has a way to go to recognize overoptimization in practice. Social validation is not fool proof either, so Google will have to find a new way to identify authority domains.

  • BenjaminBeck

    Benjamin Beck


    Hi Roman,

    I’m liking this data! Thanks for laying it out so well.
    I’ve been using Bings New Web Master tools to look at similar data of my own sites.They show the query, rankings, and click through all in one page.
    Rand & Duane Forrester do a quick review of it in this past Whiteboard Friday. The whole video is great, but the tool i’m talking about is at 6:45.

  • ColumK

    Colum Michael Kelly


    Have you also looked at universal queries (video/images) and the effect it has on CTR?

  • Cornel_Ilea

    Cornel Ilea


    Hi Roman,

    Very interesting to see how many times a user clicks on the results from the first page.

    One question: Have you made this experiment on or

    Thank you



    • Roman Bębenista

      Roman Bębenista


      Hi Cornel,

      i’m glad you like the article:)

      Data was gathered from Google Webmaster Tools. Some websites are available also in other languages, so i suppose, that small percentage of data (less than 1%) might be not from


  • jameshart0

    James Hart


    Nice article.  I have a few clients where we have position one listings and the highest CTR were are getting is around 20% for a non-branded search.  This maybe because it is a UK listing.  Interested in others thoughts


  • Praveen_Sharma

    Praveen Sharma


    Great Post Roman. Must say very well studied data, and useful for many webmasters to choose type of keywords they should target.

    I need to ask you one thing, you have mentioned about long tail keywords (3-4-5 words) and their CTR. But, have you used same word limit (3-4-5) for other three type of keywords as well?


  • jasonmun

    Jason Mun


    Hi Roman,

    Great post and analysis. Your analysis definitely reaffirms the need to concentrate on your short-tail traffic then work your way down to the longer tail.

    Wouldn’t it be cool if the data was correlated with the type of call-to-actions used in the meta-description. For e-commerce websites for example. It would be good to understand if CTR is driven by a specific call-to-action or is price led.

  • Jason_Kamara

    Jason Kamara


    Excellent article, Roman! I think I’ve read almost every major Google CTR study over the past few years and this is the first one segmenting by search intent. The methodology was also clearly outlined.

    Were all of your queries non-localized? or were there some geo-targeted as well (ex. warsaw jewelers)?

    • Roman Bębenista

      Roman Bębenista


      Hi Jason.

      I’m glad you like it :)

      I counted the number of occurrences of names of largest Polish cities, and it’s 287, so that’s 1,98% of all queries.

  • sjwalmet



    Really interesting article although I would like to see the same analysis done with data from B2B websites.

  • Dmitry Pakhomkin

    Dmitry Pakhomkin


    We’re mostly occupy long tail SERPs and 44% of the time when we’re on page 1 we got a click (on average).

  • Borduhh



    I love the effort Roman! I think it was already said but it would be interesting to include pricing metrics into your study. Especially for the e-commerce long tail keywords versus the general queries. I personally think this would really example the enormous cost difference between targeting the long tail versus the short tail as well as the difference in cost based on position.

Blogging Tools

After your blog is set up, after that technical part is over, every new blogger is fundamentally the same. You’re full of excitement and plans. You have a bright, shiny new blog, bursting with potential and ideas.

And zero readers.

Time then becomes the key factor that separates new bloggers into three dramatically different kinds of bloggers. That’s why all the standard advice about the tools you need is confusing. Tools don’t make the blogger. Time does.

Because it’s how much time you can spend studying the top bloggers in your niche, improving your writing and cultivating relationships with readers and influencers that determines how fast your blog will grow. And how fast your blog grows determines the tools you need.

Tools are essential, but time is the magic elixir.

Again, bloggers span a wide spectrum, but fall into three distinct groups. Read the following descriptions, and then jump to each group’s tool section to discover what you need.

The Minimalist Blogger

You have ideas you want to share but you may not be too sure about this blogging thing. You’re willing to dip your toe in the water, because it seems like it could work, but the tech part is still a challenge. You don’t need the fancy tools.

Most of all, you don’t want to spend a lot of time on it yet, or you don’t have a lot of extra time in your life right now. Maybe you just want to write and follow others in your niche. Whether your topic is a passion, a hobby or related to what you do for a living, a blog is a side project that you can give no more than 10 hours per week, if that.

The Serious and Committed Blogger

You’ve gotten your feet wet in blogging,  and you’re committed to what you’re doing. You want to build a business from your blog, but your income and readership are not big enough for you to quit your job. You’re squeezing out as much time as you can, maybe 10 to 20 hours every week, and you need tools that won’t suck up much time but will deliver a big impact.

The Entrepreneur Blogger

You look at blogging differently than everyone else:

You’re not running a blog; you’re operating a business. Blogging is a promotion strategy, but it’s not an end in itself.

Because you’re doing this more or less full time, you have significantly more time to spend experimenting with tools that others can’t.

Because this is your business, you’re willing to invest money in it, so the higher price tags on the more sophisticated services don’t put you off – IF they make sense for growing the business and saving you time and effort that can be used better elsewhere.

The Blogger’s Tool List

We’re listing all tools we’re familiar with and use. Many of the links that follow are affiliate links, for which we’ll earn a small commission if you choose to buy (at no additional cost to you.) Expect additions and changes as we find better tools. We’ll also be adding sections on courses and books that will help you in your blogging business.

We’ve organized it into four sections to match where you’re at as a blogger.

Setting Up Your Blog: This is the tech list. If you’re thinking about starting a blog go here first to find out what you need.

The Minimalist Blogger: Tools to build a solid foundation but nothing fancy.

The Serious and Committed Blogger: Upgrades to many of the basic tools needed as you add products, build your subscriber base and earn money.

The Entrepreneur Blogger: Advanced tools for blogs earning from $10 thousand to $10 million.

Setting Up Your Blog

How to Buy a Domain Name

NameCheap is our favorite cheap domain registrar. There’s no good reason to pay more. We recommend you don’t purchase your domain name through your web hosting company either, because if you decide to switch web hosts later, which is likely, it can be more complicated.

How to Choose a Web Host

The standard advice to go with a large web hosting company for long-term stability is sound. Small web hosting companies still disappear without warning, a terrifying situation. You will also require different levels of bandwidth and service as your blog grows.

For minimalist to serious bloggers, we recommend HostGator, which offers several low-priced plans for new and small blogs. You can purchase shared hosting for as low as $3.96 per month with a three-year contract, a 20% discount is almost always available and the support is excellent.

Why You Must Start with WordPress

We’re adamant on this tool: only WordPress. Forget Blogger, Weebly and all the other free amateur platforms if you want people to take your blog seriously. WordPress has become the industry standard.

Most large web hosts already have WordPress available for installation from within your hosting account. But you can do it yourself by downloading it from It’s customizable to support a range of functions as your blog grows and you can set up a good-looking blog without knowing how to code.

How to Get a Great WordPress Design for Your Blog

WordPress provides the behind-the-scenes guts of your blog. A “theme” provides the template and design. You can pay a web designer or you can buy a customizable WordPress theme. A lot of graphic designers will get angry at us for saying this, but don’t spend money for graphic design at this point. As you will see in a minute, premium WordPress themes can be very attractive by themselves and have robust code, making them more than enough for your beginning needs.

While you can get your blog started on the built-in WordPress theme, your blog will immediately look more professional with a premium theme. We don’t recommend you use a free theme. The differences between free and premium themes are in the backend: While both may look good to visitors, free themes don’t come with a technical support desk and are almost always ignored by their developers when they move onto other projects, leaving you with an outdated theme that will become more vulnerable to hackers and more prone to break over time.

Premium themes are updated regularly to keep pace with WordPress upgrades and new trends. Plus, they maintain support desks that will help you with setup, problems, customization, upgrades and maintenance.

We use themes from ElegantThemes for several sites. It doesn’t take much effort to customize an Elegant theme. For $39 a year you have access to all 86 themes plus customer support. Developer pricing and a lifetime one-time fee are available.

StudioPress is the leader in premium WordPress themes. Built on the Genesis WordPress platform, StudioPress is used by many top social media bloggers. Although pricier than Elegant Themes, you can buy Genesis plus an individual theme or the entire theme package.

A Basic Set of WordPress Plugins

With plugins, more is not always better and in fact more can slow your site down or cause code conflicts. You only need a few basic plugins to add enhanced functionality for social media sharing, email capture, analytics and site performance.

Social sharing: Dozens of social sharing plugins are available for WordPress. We like the free Digg Digg plugin because it floats on the side of the screen and follows the reader up or down the page as they read, so it’s always visible.

Popups: We didn’t like the aggressive way popup boxes take the reader’s screen hostage, so we designed a better one – Unpop, a polite popup that slides up the screen, doesn’t annoy the reader and goes away when your reader tells it to. You can use it to get email subscribers, likes for your Facebook page and register readers for a webinar. Try it for 30 days free at GetUnpop.

Analytics: Be sure to get some form of tracking or analytics code on your blog from the start. Google Analytics is free and easy to install. Later as your traffic increases you may want to invest in a paid analytics program but for the short- and mid-term Google Analytics will provide enough data to make your head spin.

Site performance: We recommend installing WPSuperCache to maximize the speed at which your blog’s pages load for a visitor. Consider it fine-tuning for your blog’s engine; knowing the technical details at this point won’t make you a better blogger but your blog won’t annoy your visitors.

SEO: The degree of SEO (Search Engine Optimization) you need to implement generates intense debate among bloggers. For beginners, we say forget about it. Seriously. Other than creating the very basic metadata so your posts show up correctly in a Google search, your time is better spent writing great content and promoting it.

Many WordPress themes, like StudioPress, have SEO built in that makes the basic set up quick and painless. Don’t overthink this part.

Where to Find Images and Photos

Everyone has their favorite stock photo site, and ours is Bigstockphoto. The prices are inexpensive for small photos, which are the right size and resolution for blog post images. Searching for appropriate images to illustrate a blog post can become a huge time suck, so limit yourself to one or two stock sites.

How to Establish an Email List

Building your email list should be your primary focus as a blogger from the day you start. Relying on RSS or other email collection programs to maintain your list is foolish. You should aim to collect emails from Day One, or earlier.

We recommend you start with the free version of MailChimp. It has a clean, easy-to-use dashboard and you can not only create multiple lists but also create segments of lists as well. One key thing you can’t do with the free version is create a series of autoresponder emails that will be sent out automatically when a visitor signs up to your list.

You’ll need to upgrade to either a paid MailChimp account or another paid email marketing provider when your blog reaches the point where you’re offering a free email class that requires an autoresponder.

The Minimalist Blogger

Social Media Listening Tools

Feedly is a free replacement for Google Reader that you can use for tracking posts from the blogs you’re following in your niche. Set it up with folders by topic or by size or by influence, whatever works best for you.

The free version of Hootsuite is more than enough at this stage to monitor different social media networks in one place as you follow the top bloggers and cool kids in your niche.

Add Custom Email Sign Up Boxes

The free version of MailChimp will still be adequate at this point. As you begin guest posting, you might consider a premium plugin like Optin Skin to add custom email sign up boxes for the readers who visit your site.

The Serious and Committed Blogger

Upgrade Your Email Provider to Create a Free Email Course

You are probably ready to develop a simple email autoresponder course on your topic. For that, you’ll need to upgrade from the free MailChimp account to either a paid MailChimp account or one of those listed below. All of these email providers provide pretty much the same service and are competitively priced. Pick the one you like the best or find easiest to use during a free trial period.

Develop an Audio Course as Your First Product

Now that you’ve whetted your subscribers’ appetites with your free email course, offer an audio course for your first paid product. It’s quick to produce, technically easier to manage and one of the best ways to gauge if you’re hitting the target without a lot of time invested in production. InstantTeleseminar is the most reliable provider we’ve found. It records automatically and customers can join your teleconference calls via phone, Skype or the Internet.

Add a Shopping Cart

You’re wise to keep it simple at this point, until you have multiple products or build an affiliate network. Your best choices are PayPaleJunkie and Clickbank. Each provides a slightly different set of features, so compare them to find your best fit.

Add Landing Pages to Your Blog

Offering products or requiring registration for classes, teleconference calls or webinars requires separate landing pages to make the experience seamless for your customers. We recommend OptimizePress for building simple landing pages.

Schedule Social Media Sharing

You should know by now where your peeps hang out on social media, so use a free Bufferaccount to schedule links to useful and relevant content from other bloggers, quotes, tips and links to your guest posts and blog posts.

Tweak Your WordPress Theme

As you build a reader and subscriber base and tweak your blog angle, you may find your theme doesn’t have the look or features you need. Rather than paying big bucks to have someone design a brand new theme, which can create unwanted technical problems while you’re beginning to make money, search out freelance web designers on Odesk or99Designs for customizing your current theme.

You can find a lot of talent on Odesk if you take the time to search carefully, using the competency scores and feedback from previous clients as gauges. 99Designs uses a contest model rather than a fee per hour model. You determine what you’re willing to pay and the design requirements. Designers who are interested respond with samples for you to choose from and you choose the winner.

Optimize Your Blog for SEO

You should have gained enough traffic, page views and links for Google to notice your blog consistently by now. We recommend the Yoast SEO plugin to optimize the content on your site.

Back Up Your Site

Don’t tempt fate. Install a backup plugin. We use BackWPup and back up to our server, but you can back up to a DropBox or Amazon S3 account automatically.

The Entrepreneur Blogger

Upgrade Your Webhosting

As your traffic grows you’ll want to upgrade your plan and may consider moving to your own server, which you can do with HostGator or web hosts dedicated to blogging and WordPress, such as WPEngine and Synthesis at Copyblogger Media. Both are expensive, but the peace of mind and higher-level customer support for a large site that hosts your business, community and products are worth it.

Upgrade Your Site Protection

As your blog gains traffic and becomes known, expect the hack attacks. It’s not pretty and can destroy overnight the goodwill you earned with your readers and subscribers. Sucuricleaned up the nasties when BBT was hacked last year, and continues to keep them at bay. It’s expensive, but not as expensive as losing hundreds of subscribers it took months to win over.

Choose Email Marketing and Shopping Carts Based on Sales

Your growing traffic, subscriber and customer base demand closer attention and more integration. You have several choices.

Under $10,000 in sales

Expect to outgrow PayPal, eJunkie or Clickbank soon and begin researching other options.

Up to $30,000 in sales

Open a business bank account if you haven’t already. Most accountants and bookkeepers would probably advise you to do it earlier.

Over $30,000 in sales

Open a merchant account either through PowerPay or get a Stripe account, an alternative to a merchant account. You will need either one to have a credit card processor.

Up to $100,000 in sales

Keep your paid email marketing provider and add a shopping cart: We recommendUltraCart. It offers the complete range of shopping cart services, such as order pages and affiliate management, and integrates with all the leading email providers.

Over $100,000 in sales

Upgrade to an integrated email, shopping cart and customer relationship management (CRM) system such as Ontraport (formerly OAP). The difference with an integrated provider is automation – many of the email, list segmentation and billing functions can be automated and integrated with the contact profile. You can also track and group clients and contacts in different ways.

Landing Pages

LeadPages offers dozens of slick page designs for sales, event registration and other types of landing pages plus easy split testing. It’s easy to set up and customize.

Tweak Your Web and Graphic Design

Your blog-based business has finally reached a point where it could benefit from a custom design. Use Dribbble and Behance to find a really good designer.

Expand into Video and Audio Tools

We continually get questions about how Jon creates his videos. The short answer – he’s a geek. The longer answer includes PowerPoint. Seriously. Jon uses advanced PowerPoint animation techniques you can learn from Slideology. He does a screen recording of the presentation in PowerPoint, then imports it into Camtasia, where he records the slideshow with audio, and then renders it as an MP4. On a Mac, you can use the same animation with Keynote and ScreenFlow.

If you like the slides in our webinars, we get the templates from Graphic River.

If you don’t have that much geekiness, you can find a video producer on ODesk or Elancethat knows advanced presentation techniques.

Consider Adding a Membership Site

After you’ve grown a substantial list, it may be time to open the doors to a private membership site to offer exclusive products and information. You need several elements to create that private community.

Wishlist Member is our choice for managing your membership. It integrates seamlessly with WordPress and the expanding list of plugins allow you to customize your members’ experience. It’s a bit more expensive than other options, but versatile.

Most membership sites offer a forum for members to interact. We use Simple:Press in theGuestBlogging Apprenticeship Program, which is a large and active forum. The plugin is still free but the excellent customer support is now fee-based.

Consider Offering Webinars

Up to $100,000 in sales

If you’re hosting small or infrequent webinars, try Meeting Burner or Any Meeting.

Over $100,000 in sales

Consider a subscription to GoToWebinar. The most expensive option, it’s the most reliable despite its occasional glitches.

Take a Look at In-depth Analytics

Up to $100,000 in sales

Tools like CrazyEgg or VisualWebsiteOptimizer make sense for tracking visitor behavior on your landing pages (but not your entire blog). Moz or Raven Tools are also helpful for tracking your traffic from search engines and social media.

Over $100,000 in sales

You have several ultra-sophisticated, pricey options for data-tracking and analysis: Look at KissmetricsMixPanel. You’ll probably need a developer to set up these tools and handle campaigns. At this stage, small tweaks in conversion can equal significant gains, so don’t get lost in analysis paralysis.

Advanced Social Media Tactics

Because your social media following has likely reached a critical mass that now grows organically, reaching out to individual influencers in your niche is a more profitable use of your time. A tool like BuzzStream efficiently helps you search and track your interactions with bloggers, journalists and other people you want to keep your eye on.

Advanced Email Marketing Tactics

Customer IO, which sends emails triggered by user behavior, can help you refine your customer marketing and engagement and increase conversions.

Scalable Affiliate Software

Depending on your particular product mix, you may need to compare affiliate services.IDevAffiliate is popular and robust affiliate tracking software that will scale as you grow.

We’re not finished yet…

This resource guide will evolve, as our business grows, as we require different tools and as new tools are introduced. We’ll add a tab at the top of the blog so you can find this guide easily when you come back, and we will keep you posted on the changes.

…and neither are you!

Wherever you’re at with your blog, you now have the all tools you need to take it to the next level. We’ve done the research and explored all the dead ends – so you don’t have to. Whether you have 10 hours, 20 hours, or 60+ hours a week to work on your blog, using the right tools will help you fully exploit the time you have.

So let’s “tool up” and get your blog ready for prime time.

If you have a question regarding a particular tool, post it in the comments below. We’ll do our best to help you.

About the Author: In addition to helping oversee BBT, Marsha Stopa is an Assistant Instructor at, where she has helped literally thousands of students with their blogs. If you’d like her to help you with yours, click here to visit her consulting page.


What is Google Authorship?

As an online writer, you’re always interested in new ways to get traffic, right?

Of course you are. And with good reason.

You’re serious about your craft, you take pride in your content, and you want – in fact deserve – the widest possible audience.

And more traffic means more readers. More subscribers. Maybe even more customers.

So if Google introduced a new feature, designed to help writers just like you to get more traffic, you’d want to know about it.

You certainly wouldn’t thrust your head in the proverbial sand and pretend it didn’t exist. Or stick your fingers in your ears and go “la-la-la” until it went away.

Well, Google has introduced such a feature. And you may even have heard about it already, but are doing your best to ignore it.

It’s called Google Authorship. And you need to get to grips with it right now.

The Embarrassing Problem Google Needed to Solve

Let’s face it; some people on the web are more trusted than others. They produce great content, have gazillions of followers, and when they speak, people listen. They know their stuff and it shows. They reek of authenticity.

People like Leo Babauta, Chris Brogan, Brian Clark and (ahem) Jon Morrow.

Then there are people we don’t trust. It’s not that they’re sleazy (although they might be); we simply don’t know them. They don’t have a track record online or lots of people vouching for them. They might be awesome, they might be shady, but we just don’t know.

So you’ll naturally pay more attention to something Chris Brogan says online (since you’ve been following him for years) rather than something Kris Brogan says (as you don’t know him at all).

But until recently, Google couldn’t tell the difference between Chris and Kris. Quite embarrassing for a company that wants to tell us which content to trust and which to ignore, huh?

Why Google Doesn’t Trust You as a Writer

Before Google Authorship came along, Google had no idea who was responsible for creating the content it indexed. And so it couldn’t work out which authors it could trust.

Of course it knew all about which sites to trust. The authority of a domain has been a core part of Google’s algorithm since the beginning.  Which is why a new page on Wikipedia about, say, twerking will automatically get a higher ranking than a page about it on your Auntie Jean’s personal blog (which is a shame because Auntie Jean is one hell of a twerker).

But before Google Authorship, Google was completely unable to distinguish one person from another.

Google saw pages; it didn’t see people.

So a totally respected writer posting on a brand-new blog would get no more credibility in the eyes of Google than a completely unknown author posting on the same blog.

Somewhat unfair, right?

Fortunately, Google Authorship changes this and now writers who create great content are finally getting the credit they deserve.

But it doesn’t happen automatically. And unless you act, you’ll remain forever anonymous and untrusted in the eyes of Google.

How Google Authorship Saves You From Being a Nobody

In a nutshell, Google Authorship allows you to assert ownership of the content you create online. It’s simply a way of putting your hand up (digitally speaking) and declaring, “I wrote this.”

In the past, you could do this informally with a simple credit in the post itself, such as “Written by: Joe Bloggs”.

But we still didn’t know who Joe Bloggs actually was in real life – whether he was a trustworthy professional, a pseudonym for someone else, or even if he was the same Joe Bloggs as the Joe Bloggs who also writes on this other blog over here.

Google Authorship fixes this problem by allowing you to link your identity to every blog post you write.

And suddenly, you’re no longer invisible. Google can see you – and the content you’ve written. Once on the radar, you can start to become someone Google trusts.

Why Google Can Finally Start Respecting You as a Writer

Imagine you’re an experienced writer (and guest blogger) with dozens of posts scattered all over the web.

Until Google Authorship came onto the scene, Google had no way to spot the connection between all of those posts – you. And it had no way to reflect your track record in its rankings.

Sure, it understood that all the content on your own blog was somehow connected (by virtue of it being found on the same domain) and could give everything on that site a rankings boost if that content was good.

But it had no idea that this post over here on your brand new blog, or that one over there on that big, popular blog were also written by you.

In other words, Google had no way to build a full picture of you as an online writer, and no way to reflect your reputation in its rankings.


Before Google Authorship: Your content on different blogs is scattered

Google Authorship changes all that. Google Authorship allows all of that other content to be linked to an individual. It finally puts the author at the center of the content equation.


After Google Authorship: All of your content is linked to your identity

And it’s not just the content that can be tied to an individual. All of the other useful indicators of respect and authority associated with that content – such as backlinks and social shares – can be attached to the author too.

Think about it; Google is finally recognizing for itself what other humans have known for a while – you’re someone worth listening to. And next time you write a post, Google can take all of that history into account when deciding how high it should rank your content in its search results.

Why You Need to Take a Hint from Google

Most of the time Google keeps its methods pretty close to its chest.

In fact, an entire industry has grown up around trying to work out how to drive content to Page 1 of the Google search results. There’s even a seedy black-market in sleazy techniques that try to “game” the algorithm. These sometimes work for a while, but Google always catches up with algorithm updates such as Penguin.

Despite the secrecy surrounding the precise mechanics of the search ranking algorithm, Google Authorship is a rare example of Google saying, “Do this.”

“If you are a trustworthy, respectable writer, do this and we will reward you with the rankings you deserve.”

Of course, the scammers and the black hatters won’t like it because they prefer to remain in the shadows.

But if you are in it for the long run and you’re proud of the content you create, the message from Google is clear: claim ownership of it using Google Authorship.

The Final Killer Reason You’d Be Crazy to Ignore Google Authorship

If you’re still not convinced about Google Authorship, one simple reason should make you think again.

Even if you don’t start using it, your competitors will.

Those people in your industry or niche who are currently on your level in terms of respect, authority and traffic will start to creep ahead. And as time moves on, and Google associates more and more quality content with them – and your quality content remains scattered and (effectively) anonymous – you’ll have a more difficult time catching up.

So if you’re serious about making an impact (and perhaps also a living) online with your writing, do yourself a favor: get intimate with Google Authorship.

How Google Authorship Will Help You Get More Traffic

So you now understand the basic ideas behind Google Authorship and you’re persuaded by the potential benefits.

Authorship allows you to proudly stamp your identity on everything you write online, it shows Google you’re serious about building a strong reputation and it gives you a way to set yourself apart from the less savvy writers operating in your niche.

But what may not yet be clear is exactly how enabling Google Authorship will help drive more traffic to your site (which is why you’re reading Boost Blog Traffic in the first place, right?)

3 Ways Google Authorship Unlocks More Traffic

It’s still early days for Google Authorship, and its full impact will only become clear over time, but enabling Authorship will bring you more traffic in the following three ways:

  1. Higher click-through rates from search results
  2. Extra crossover traffic from one post to another
  3. Better longer-term search rankings for your content

So let’s look at each in more detail and explain the rationale for believing each will result – directly or indirectly – from Google Authorship.

1. Higher click-through rates

With Authorship correctly configured, you give Google the opportunity to add what it callsrich snippets to your content in its search results.

Rich snippets are a way of enhancing Google’s search results pages with additional information to help users decide whether each result is relevant to them. These snippets cover a wide range of different types of information, but to see an example, try typing the name of your favorite dish – e.g., “Pad Thai” – into Google.


Example of a rich snippet-enabled recipe

You should notice that for some of the results, Google appears to be aware the result is a recipe so it presents some extra information, like the number of reviews the recipe’s received and a star rating from other users.

But rich snippets can also display additional information about the author of the content behind the search result. This metadata is made possible by Google Authorship, so results can also include a photo of the author, the number of people in their Google+ circles (more on Google+ later) and a link to their main Google+ profile.

The following is an example search showing results with rich snippets generated from Authorship information:


Google search results showing author rich snippets

As you can see, results with the rich snippets stand out compared to the others.

Having your name and photo next to a search result boosts your credibility and authority (particularly if you have a good number of followers on Google+) and increases the chances that people will click your link instead of someone else’s.

In fact, some studies report that rich snippets can improve click-through rates by up to 150% and even more conservative reports suggest 35% more traffic with Authorship enabled.

And even if someone doesn’t click through the first time around, the more familiar they become with your image cropping up in search results, the more likely they are to click next time.

And more click-throughs means more traffic. Which is what you want, right?

Important Note about Author Information
Correctly configuring Authorship does not guarantee that your author information will appear in search results. In fact, Google has recently reduced – by around 15% – the number of results showing author rich snippets, giving priority to more trusted authors and sites.

2. Extra crossover traffic

This one’s a little more subtle, but by prominently featuring your author information in the search results, Google is effectively helping people discover more content written by you.

I call this crossover traffic because it occurs as a result of readers crossing over from one instance of your content to another. Think of it as a sideways step that takes them from the post they originally found to others that might also be of interest.

This all happens via the author’s Google+ profile, which is linked no less than three times from a rich snippet-enabled result.


An authorship-enabled result links to your Google+ profile in three places

Just one click takes the reader from the search results page to your Google+ profile where they can do the following:

Both expose readers to more content written by you – content they may not have found without Google Authorship.

And if they like what you’re writing and sharing, they’ll likely add you to their Google+ circles. This means your updates will appear in their streams, once again putting more of your content where they can see it and click on it.

Which again, in the long run, means more traffic.

3. Better search rankings

While some quick traffic wins arise from Authorship, the most exciting possibility is that Google will at some point start using it to influence search rankings. And that’s exactly where most experts are convinced things are going.

That’s because Google’s core mission is to continue to improve the quality of the search results it returns for any given query. And Authorship allows it to do just that.

Let’s see how.

Why Google Wants to Promote Your Content (But Can’t)

If high-quality content exists on the public web which is genuinely relevant to a particular query, Google wants to show it. In fact, Google is desperate to show it because that’s Google’s fundamental purpose – to connect users with the most relevant content available.

So what’s currently stopping it from highlighting your awesome content?

Simple – it doesn’t trust your content enough. At least, not yet.

Since Google isn’t smart enough to work out how good your content is for itself, it needs hard evidence to demonstrate that others trust your content. Historically that meant you needed lots of backlinks, or at least that you had published your content on a domain with lots of authority.

But what if your content doesn’t have lots of links (yet) and your domain doesn’t have lots of authority (yet)? Before Authorship, you were in trouble (unless you were writing on an obscure topic with little or no competition) because Google would largely ignore you.


Not all topics have fierce competition

However, claiming authorship of your content now allows Google to infer that your latest blog post is valuable by factoring in the other posts you’ve written in the past. So if it knows that this new post over here is written by the same guy who wrote a post that went viral over at that other big blog, then it could easily give that post a boost in the search rankings.

Make sense?

Now, it won’t happen overnight. Google is understandably cautious about updates to its search algorithm. But by establishing Authorship for your content, you’re laying the groundwork. You’ll be ready for the changes when they come.

And as long as your writing is valued by its audience, we believe that content with Authorship enabled will ultimately rank better than content without, because Authorship enables a whole new layer of supporting evidence – proof that your content is trustworthy.

And of course, improved rankings means your content is returned for more searches and gets more clicks.

Which equals more traffic!

Everything You Need to Know to Get More Traffic from Google Authorship

You’re ready to take Google Authorship seriously.

In fact, you can’t wait to get started.

Great! So what comes next?

You need to set it up.

The Missing Link Between You and Your Content

The basic idea behind Google Authorship is to create a trustworthy link between you and your online content. It gives you an easy way to prove to Google that you’re the true author of your work.

Which prompts the question: how do you prove that you’re, well, you?

In the real world, you can use your driver’s license or passport to prove your identity, but online it’s a little trickier. People often have multiple identities on the web and it’s not always obvious how those identities correspond to a real person. (Sometimes that’s part of the fun!)

Google could have used your email address as a digital passport – it’s unique to you and it’s easy to prove you own it. But people change their email addresses periodically, and it’s not something many people would want to publicly attach to their content for fear of spam.

So instead of using an existing mechanism, Google created their own passport and it’s based on their new social network, Google+.

Google+ – Your Passport to More Traffic as a Writer

You’ve almost certainly heard of Google+ and you may even be using it already.

Google+ is Google’s answer to Facebook and Twitter, and its growth as a social network has been impressive. Since its launch in the summer of 2011, it now boasts more than 500 million active users per month.

When you register with Google+, you set up a personal profile, which is effectively your homepage. It’s the Google+ equivalent of your main profile page on Facebook or Twitter.

And like your Facebook and Twitter profile, your Google+ profile has its own URL, which is unique to you. Here’s mine:

This URL is public, there’s no need to change it over time and it’s unique to you as an individual. So guess what? It makes a great online passport. Hell, it even has a photo of you!

So to take advantage of Google Authorship, you first need to be on Google+.

(If you’re already on Google+, well done, you’re ahead of the curve. And it means you can skip this next section.)

How to Create Your Google+ Profile

To create your Google+ profile, you’ll first need a Google account.

You’ll already have a Google account if you use Gmail, have a YouTube account or use any of the following Google products:

If you’re still not sure, a Google account is simply an email address and password combination that you can use to login here.

If you don’t have a Google account yet, you can sign up on this page:


You’ll need to sign up for a Google account to create a Google+ profile

If you created a new Gmail address (or logged in with one) there’s no need to separately create your Google+ profile – Google will do that for you automatically.

On the other hand, if you registered using an existing (non-Gmail) address you’ll need to log in and create your Google+ profile one of the following ways:

  1. Click the You+ button that appears when you click the “grid” icon in the top-right corner of the screen.
  2. Go directly to this page.

Either way, you should see this page:


Creating your new Google+ profile

Follow the prompts to set up your basic profile, and make sure you read the next section before uploading your all-important profile photo.

“Rich Snippets” and the Benefits of a Good Photo

Your profile should have what Google describes as a “good, recognizable headshot,” because Authorship gives Google the ability to display additional information about you – the author – alongside your search results. We’ve already mentioned these rich snippetsand for authors this means your name and photo:


Author name and photo showing in search results via rich snippets

However, Google will only enable this feature (assuming the rest of your configuration is correct) if your photo is a clear and recognizable photo of you. Not a picture of your cat or your masked alter-ego El Diablo Grande.

Once you’ve set up your Google+ profile, you’re ready to configure Authorship.

The Essential Steps to Claiming Your Content with Google Authorship

The next stage is to claim your content (or establish authorship in Google lingo) by creating a link between your Google+ profile and your blog.

(We’ll look at setting up Authorship for other blogs later, e.g., when you’re guest blogging.)

Two separate steps are necessary to claim the content on your blog:

  1. Link your Google+ profile (your identity) to your blog.
  2. Link your blog content back to your Google+ profile.

You can establish authorship in a number of ways, depending on exactly how your blog is set up. But we’ll look at one of the most common scenarios, where you are running a self-hosted WordPress blog. And we’ll show you the easiest and most reliable way of configuring Authorship on your blog – using an WordPress plugin.

But before we do that, we need to tell Google about your blog.

Why Google Authorship Is a Two-Way Relationship
The reason Google Authorship is a two-way “handshake” is all about trust. If only Step 1 were required someone could, for example, claim authorship of content on Boost Blog Traffic they hadn’t actually written. And if only Step 2 were required, they could try to claim that someone else, e.g. Jon Morrow, had written content on their own blog.

How to Link Your Google+ Profile to Your Blog (Step 1)

Firstly, we need to let Google know that you are the author of the posts on your blog – and a section on your Google+ profile is designed just for this.

Log in to your Google account and head over to your Google+ home page (click the+YourName link towards the top-right corner).

Then select “Profile” from the drop-down menu on the left-hand side:


And then select “About” from the horizontal menu at the top of the page, which shows all of the separate pages that make up your profile:


On your About page, you’ll see a number of different panels, such as Story, Work, Education, etc. You may have filled these out earlier, but make sure you do so at some point because they help bring your profile to life. For now, we’re only interested in one – Links.

More about Google+ Profile Pages
Your Google+ profile is divided into a number of different pages such as About, Posts, Photos, etc. You can control which are visible to other users. The default page is Posts, which shows, not surprisingly, your latest Google+ posts.

Scroll down your About page until you find the Links panel and click “Edit” at the bottom of the panel.



Editing the Links on your profile

Find the “Contributor to” section and click “Add custom link.”


Adding a new custom link to your Google+ profile

You should see a new panel with some fields to fill-in. Complete these as follows:


Completing the process of adding a custom link

Finally click “Save” at the bottom of the panel.

You’ve now set up one side of the two-way connection between Google+ and your blog required to enable Authorship.

The second step is to enable Authorship on your blog and complete the circle of trust.

But before we do that, there’s something we’ll need from your Google+ account – your unique Google+ URL.

What’s my Google+ URL?

Every Google+ user has a unique 21-digit ID that appears in various similar URLs you’ll encounter as you navigate Google+.

For instance, the following URL takes you to my latest posts:

You may also see a letter and a number in the middle of the URL, for example:

However, they are functionally the same and both include the same 21-digit ID.

You can find your own Google+ ID by bringing down the main menu at the top-left of the Google+ interface and clicking the “Profile” link again.

Copy this link to your clipboard from your browser’s address bar because we’re going to need it for the next step.

Google+ Custom URLs
Note: Around a year after its launch, Google+ started to introduce custom URLs, which are human-friendly versions of Google+ URLs based. For instance, my custom URL is Where a user has a custom URL, the +Username label is a direct replacement for the 21-digit ID. You can find out more about custom URLs here.

How to Enable Authorship on Your Blog Using the Yoast WordPress SEO Plugin (Step 2)

The Yoast WordPress SEO Plugin is a popular (and free!) plugin that helps you optimize your blog from an SEO perspective.

This plugin is great for a number of reasons, but one handy feature allows you to configure Google Authorship for your blog with ease.

Two separate tasks are required.

a) Install the Plugin

If you don’t already have the plugin installed, you can grab it in the same way as any other plugin in the WordPress directory:

First, select “Add new” from the Plugins menu item in the left-hand WordPress sidebar.


Next, type “WordPress SEO” in the search box and click the “Search Plugins” button.


Then, find “WordPress SEO by Yoast” in the results (it should be at the top), click “Install Now” and then click “Yes” to confirm.


Finally, once the plugin has successfully installed (it may take a few seconds to download), click the “Activate Plugin” link.

(After the plugin has installed and you’re returned to the main Plugins page, you may get the option to help improve the plugin by allowing anonymous tracking on your site. We recommend selecting “Allow tracking” since it does the developer a good turn.)

b) Add Your Google+ URL to Your WordPress Author Profile

Once the plugin is installed, you need to tell WordPress where to find you on Google+. This will give the Yoast WordPress SEO plugin the information it requires to automatically insert Authorship markup (essentially some extra HTML code) into your blog posts and pages.

To do this, first select “All Users” from the “Users” sub-menu in the left-hand WordPress navigation menu:


Then find your own user profile in the list (the one you use to write the posts on your blog) and click “Edit.”


In the Contact Info section, find the field labeled Google+. This is where you’ll need to paste the Google+ URL you copied to your clipboard earlier.


Google+ field on the WordPress Contact Info page

This URL should work fine as-is. However, we prefer to use a shorter, simpler version known as the canonical URL.

The canonical URL takes one of the following forms, depending on whether or not you have chosen a custom username for your profile:

So trim your pasted URL to match one of the templates above.  (For safety, copy and paste the edited URL into a separate browser window and make sure it still takes you to your Google+ profile).

Assuming all is well, click “Update User.”

How to Check the Plugin is Working

And that’s basically it. The Yoast WordPress SEO plugin will start inserting Authorship markup automatically for any post published on your blog where you are identified as the author.

If you want to see what’s going on behind the scenes, view the HTML source of a blog post where Authorship should be enabled and look for a piece of code like the following toward the top of the page:

<link rel="author" href=""/>

If you allow guest posting on your blog, simply set up any guest authors as new users within WordPress (most likely using the “Contributor” role), make sure you add their Google+ URL to the profile as described above (and that the user is identified as the author of the post within WordPress), and presto – Authorship is set up for them too.

Should You Enable Authorship on Your Home Page?

The Yoast WordPress SEO plugin gives you the option (via the Google+ tab on the Social submenu) to specify an author for the home page of your blog.

The idea here is that rich snippet information would also appear for search results that include your home page.

However, experts now believe that this can cause problems with Authorship for other pages – particularly in the case of multi-author blogs – so we recommend that you leave the “Author for homepage” setting as “Don’t show”.


Setting the “Author for homepage” in the Yoast WordPress SEO Plugin

What is the “Google Publisher Page”?

Note that the Yoast WordPress SEO plugin also gives you the option on the tab mentioned above to specify a publisher via the “Google Publisher Page” field.

You don’t have to complete this field to get Authorship working on your blog.

However, if you have a Google+ Page for your blog (Pages generally represent brands, products or businesses rather than individuals – you can set one up here) you’ll enter its Google+ URL here. You’ll also need to enter your blog’s URL in the Page’s About section in Google+ to complete the loop, similar to what you do for Authorship.


Setting a Google+ Publisher Page in the Yoast WordPress SEO plugin

Do You Need a Google+ Page for Your Blog?
There are some advantages to creating a Google+ Page for your blog. A full discussion is outside the scope of this guide, but one example is where your blog gets to the point where you want someone else to manage its social media hubs. Then you can make them a manager of the page without giving them access to your personal Google+ account. In this situation it makes sense to establish the publisher link because it tells Google that the page is the verified page for that website.

How to Make Sure You Didn’t Screw It Up

Although setting up Google Authorship is relatively straightforward (if you follow our instructions), a few things can prevent it from working properly, so it’s wise to test rather than just assume everything is okay.

Fortunately, testing your configuration is simple using Google’s Structured Data Testing Tool.

Introducing: The Structured Data Testing Tool

The Structured Data Testing Tool is a simple web app that attempts to detect any structured data markup (such as Authorship data) in a public web page and displays what it finds.


Google’s Structured Data Testing Tool

All you need to do is paste in the full URL of a post on your blog, which should now have Authorship enabled. Then click “Preview” and the testing tool will give you a report showing whether or not the correct Authorship information has been detected.

Error messages are shown in red. “Yay – things are working” messages are in green.

If you select “Authors” from the “Examples” menu shown above, you can see a sample report:


Preview of example result with rich snippets

Let’s look at the various sections.


The first section, Preview, shows you what the webpage would look like in search results. If you can see your headshot in there, that’s definitely a good sign that things are configured correctly.

Authorship Testing Result

This tells you at a high level whether Google Authorship is working for the webpage. The message you’re hoping for is:

Authorship is working for this webpage.

If something’s not quite right, you’ll see this:

Authorship is not working for this webpage.

This means Google can tell you’re trying to establish authorship (i.e., it’s found Authorship markup in your page) but something is not quite right yet (e.g., your Google+ profile is not yet pointing to your blog).

Sometimes you may see this:

Page does not contain authorship markup. Learn more

This means it can’t find any valid markup at all.

Assuming you’re using the Yoast WordPress SEO plugin, do the following:

  1. Make sure your Google+ URL is entered correctly in the Google+ field of your WordPress user profile (maybe you pasted it into the wrong field).
  2. Double check that the post you’re verifying correctly identifies you as the author within WordPress (and not some other user, e.g., ‘admin’).

Authorship rel=author Markup

This section reports whether Authorship has been successfully established using a rel=author link, which is the method described in this guide.

It checks that both parts of the two-way handshake between the webpage and your Google+ profile have been successfully established.

Authorship Email Verification

This section applies to a method of establishing authorship not covered in the main body of this guide.

Essentially it can be used if you have a working email address on the same domain as your blog, which may or may not be the case.

However, we have found this method to be a little more fragile and so we decided not to cover it here.


This section (not shown on the above report) tells you whether a publisher link has been successfully establish to a Google+ page (as discussed above). If there is a link, you’ll see the message:

Publisher markup is verified for this page.

How to Claim Ownership of Your Guest Posts

So you’ve configured Authorship for your blog. Google is finally able to notice you as a writer and give you credit for the content you create.

Great start! But many bloggers (particularly the smart ones) don’t just post on their own blogs; they write for other blogs too. Otherwise known as guest blogging.

Guest blogging has long been recognized as a smart way to build your authority and drive traffic to your site. In fact, it’s a no brainer. You get exposure to a new audience (usually on a blog bigger than yours) and the blog owner gets quality content they don’t have to write themselves.

But from an Authorship perspective, there’s a small challenge – someone else is in charge of the blog configuration, so you can’t just sail in and start messing around with plugins.

(Also, some blogs worth writing for won’t have caught up with Authorship yet, but don’t worry because the following method ensures it still works for you even if it’s not implemented across the whole blog.)

So how does Authorship work for guest blogging?

First, you need to complete the first step of Authorship setup again, pointing your Google+ profile at the target blog.

This is done by adding a custom link to the blog in the “Contributor to” section of your Google+ profile, exactly as we did before.

How to link your guest post back to your Google+ profile

Once again, we need to create the reciprocal link, from the blog post back to the profile.

If you happen to know (or have worked out by looking at the HTML source) that Authorship is enabled across the whole blog (e.g., by using a plugin as described above), the blog owner will simply need your full Google+ profile URL to enter into his or her author configurations.

But if this isn’t the case, since you don’t have control over the configuration of the target blog yourself, your Authorship details need to be included in the post itself, and the best place to do this is in the author bio at the bottom of the post (sometimes called the byline).

The bio is critical in guest blogging because it’s the part that drives new visitors (and hopefully new subscribers) to your blog.

To establish the authorship connection, you need to include a special link in your author bio, which tells Google you’re the content author by pointing to your Google+ profile using the canonical URL described earlier.

The link looks like a normal HTML link except that it has a special marker that tells Google it refers to the post author.

About the Author: Jon Morrow has asked repeatedly to be called “His Royal Awesomeness” but no one listens to him. So, he settles for CEO of Boost Blog Traffic, LLC. Poor man.

In this example, the hyperlink on the author’s name would link to their Google+ profile and includes the marker – the extra parameter ?rel=author.

(Note that a real hyperlink has not been used in this example to prevent interfering with the correct Authorship attribution for this page of the guide.)

So the full link would be:

Why the Parameter Method is the Smart Choice for Guest Bloggers
There’s actually more than one way to supply the rel=author marker. For instance, you can add a rel=”author” attribute to your HTML hyperlink, but the advantage with the above approach is that it works even if you don’t send your guest post as HTML – e.g., you send it off as a Word document with embedded links.

What should I use for the anchor text?

The recommended anchor text (the visible text which is the clickable part of your link) is your full name as it appears on your Google+ profile.

However, if you particularly want to link your name to something else – like your blog – we recommend using “Google+” as the anchor text.

Glen Long is the Associate Editor of Boost Blog Traffic. Why not circle him onGoogle+?

In this example, the first link is to the blog, the second is to the Google+ profile.

How to Make Sure You’re Getting Full Credit for Your Guest Post

Once your guest post goes live on the host blog, you can test the Authorship using the Structured Data Testing Tool in the same way as before. Simply paste in the full URL to the post and look out for any errors.

And don’t panic if your photo doesn’t immediately appear in search results – it can take a few weeks for Google to register the new information.

How to Boost Your Author Rank – The New Secret Sauce for Better Rankings

You understand the ideas behind Google Authorship and the potential benefits for you as a traffic-hungry blogger. You also know how to configure Authorship for your blog and may have already set it up using our recommended plugin.

So now it’s simply a case of sitting back and waiting for the traffic to roll in, right?

Well, not exactly. Asserting authorship over your content certainly gives you a short-term advantage over bloggers who haven’t done so yet, but that advantage won’t last for long. And what about those other writers who’ve already seen the light and have started claiming their content – how will you get ahead of them?

The true value of Google Authorship is that it paves the way for you to earn better search rankings for your content in the future. But to make that happen, you’ll need to startplaying a bigger game as a writer.

It’s a bit like having a membership to an exclusive gym. While you’ll experience some benefits simply by virtue of being a member (like a flashy membership card and a branded T-shirt), unless you actually visit the gym and start pumping some of that iron, everyone else in the club will kick your butt with ease.

It’s the same with Google Authorship. Unless you start exploiting its full potential, Authorship is just another way to get left behind.

How Google Will Decide If You Deserve Better Rankings

Since anyone online can implement Google Authorship, simply being a member of the Authorship club is no guarantee to Google that you’re a writer worth listening to. Because as time moves on, even the pedestrian and mediocre bloggers will catch on and start establishing authorship on their boring, forgettable blogs too.

So Google still needs a way to determine who’s worth listening to and who deserves to be trusted. In other words, it needs a way to separate the movers-and-shakers from the losers and fakers.

And the answer is Author Rank.

What is Author Rank?

The first thing to know about Author Rank is that it doesn’t exist. At least, not officially.

Author Rank is simply the name given by the SEO community to the idea that Google will start to measure the authority (read: reputation, reliability, trustworthiness, etc.) of individual authors.

Informally, someone who’s written lots of valuable content and is widely recognized as asubject expert would be expected to have a higher Author Rank than someone who has written far less content, or whose content has been largely ignored by others (i.e., few backlinks, shares, tweets, etc.).

The basic idea is that writers with a high Author Rank will ultimately get better search rankings for their content than writers with a low Author Rank.

And of course, better search rankings means more traffic for the content you create.

Why Author Rank is the Stuff of Legend

The reason Author Rank doesn’t officially exist is that much of the speculation is based on a patent filed by Google in 2007 for Agent Rank which describes (in rather dry, technical language) how “the identity of individual agents responsible for content can be used to influence search rankings.”

And while no evidence exists that Google is using any measure of author authority right now to influence search results, most experts firmly believe that’s where they are headed.

To better understand Author Rank (without struggling through the patent), it’s helpful to draw a comparison with another Google authority metric – PageRank.

Author Rank is PageRank for Authors

PageRank has been part of the Google ranking algorithm since the start (in fact, its name is reputedly an in-joke which refers to Google co-founder Larry Page). PageRank measures the authority of an individual webpage and is determined by the number of links to that page and the authority of those linking pages.

So what PageRank does for webpages, Author Rank does for web authors. Simple!

And in the same way that Google uses PageRank (among lots of other factors) to determine how high a page appears in its search results for a particular query, we believe they will also start to use the Author Rank of the person who wrote it.

So, the higher your Author Rank, the better your search rankings. At least that’s the theory.

How will Author Rank be calculated?

While the patent doesn’t dictate a specific implementation of Agent Rank, by looking at it in the context of Google Authorship and Google+, we can make some educated guesses about what is likely to influence your Author Rank score.

And at a high level, it boils down to two main factors:

  1. The authority of your content
  2. Your authority as an individual

Or, more precisely:

  1. The authority of all content linked via Authorship to your Google+ profile
  2. The authority of your Google+ profile within the Google+ ecosystem

Now, measuring content authority is something Google’s been doing for years – it’s the basis of its search algorithm.

And while the idea of measuring an individual’s authority is a little newer, we can once again make some educated guesses about how Google might choose to do it.

Both of these factors give us some strong clues about how you might go about improving your Author Rank over time.

How to Write Your Way to Higher Author Rank

In many respects, Author Rank will likely build upon Google’s existing ranking factors. This means that all of the normal best practices around optimizing your content for SEO still apply.

The key difference is an additional halo effect, which means content that already ranks well on its own merit will also boost the authority of its author, which in turn could be used to increase the rankings of other content by the same author.

The complete list of factors that Google uses to rank content and how much weight each contributes to the ranking are a closely guarded secret, but the following are three high-level factors that are widely accepted to most influence the ranking of a webpage:

  1. Domain-level authority: the number (and authority) of external links to the host domain
  2. Page-level authority: the links to the page itself and the relevance of anchor text on those links
  3. On page factors: this relates to the actual content, including keyword usage, topic focus, etc.

If you can find a way to help your content perform better in these areas, you’ll likely have found a way to boost your Author Rank too.

3 Smart Content Tactics to Boost Your Author Rank

Since your Author Rank is intimately linked to the authority of your content, what can you do as a writer to increase your score?

The following are some specific tactics that should start pushing your Author Rank in the right direction:

Tactic #1: Create Valuable Content People Want to Link to

Despite numerous changes in the Google algorithm over the years, links still reign supreme.

While countless sites have been punished by Google updates such as Penguin for using underhand methods to get more links to their (mostly) low-quality content, the only links that Google truly loves (and will always love) are natural links to high-quality content that deserves a wider audience.

Yes, you also need to promote your content to make sure it gets the links it deserves, but your marketing is only as good as the content it ultimately promotes.

So write great content that your audience will love and that stands the test of time.

Of course, writing awesome content is easier said than done, but the following posts will help you get there:

This tactic is great because it will work wherever your content appears – on your own blog or elsewhere – as long as you’ve claimed your content using Google Authorship.

Which brings us neatly to our next tactic.

Tactic #2: Write Guest Posts for High-Authority Blogs

When you’re starting out, the quality of your content doesn’t matter – your blog and its domain will have low authority.

The traditional advice is to knuckle down and keep writing, slowly building your audience organically until you finally build enough momentum to break out of the close orbit of your own blog. This meant accepting the harsh reality of writing reams of content almost nobody sees, simply because you don’t have an audience yet.

So you keep patiently plugging away until you finally hit upon the holy grail of organic blogging, a post that goes viral and brings you a raft of new traffic.

That approach does work. Sometimes. But it takes a long time (maybe years) to get results, and most bloggers give up through sheer frustration before that ever happens.

However, a smart alternative approach is to borrow the authority of another domain by writing high-quality guest posts. This means writing a blog post (usually for free) for a popular blog in your niche and linking back to your own blog (and of course your Google+ profile) within the post itself.

This should be great for Author Rank for a number of reasons:

But remember, guest blogging can only boost your Author Rank if you’ve configured Google Authorship – otherwise Google won’t know who deserves the credit.

But Isn’t Guest Blogging Dead?
Google’s Matt Cutts recently spoke out against using guest blogging for SEO purposes – we discuss it here. However, Matt was talking about the dubious practice of posting low-quality content on third-party sites with the specific aim of gaining links to another site.

Tactic #3: Write Focused, Keyword-Savvy Content

Stuffing your content with the keywords you want to rank for was once common practice. And it worked for a while. But the result was unnatural-sounding blog posts that looked like someone with a rather limited vocabulary wrote them.

Google algorithm updates like Penguin penalized this practice on the basis that it created a poor user experience. (As it turns out, content written for robots isn’t much fun for humans to read!)

So fortunately, keyword stuffing is mostly a thing of the past. Yet, the specific words you use in your content are still important.

Google has been working hard on a technology called semantic search, which tries to understand the meaning behind your content. And as a result, Google is getting better at working out which topics you write about.

So although you don’t need to obsess over keywords, you do need to use the same broad terms that your audience uses to talk about your topic so Google can easily match their queries to your content.

And make sure that your posts have a clear focus – don’t try to cover too many topics in a single post.

In fact, sticking to a narrow set of topics for all your writing is likely to be good for Author Rank too because Google has publicly said it wants to be able to give a rankings boost to “subject authorities.”

And it stands the test of common sense too. If you’re looking for help with a problem, who would you rather speak to, a Jack of all trades (or topics), or a black-belt ninja master of just one or two?

Bonus Tactic: Write more content!

As long as you can maintain the quality levels and keep producing valuable content that people want to link to (see Tactic #1), more content is definitely better.

Think about it; the person who’s written 100 awesome posts on their topic deserves to carry more weight with Google than the guy who’s written 10, right?

But quality is paramount. Don’t sacrifice quality for quantity.

If you’ve got a good posting rhythm on your own blog, then use this tactic as an excuse to do more guest blogging.

A Simple Blueprint for Boosting Your Author Rank Using Google+

Based on our earlier predictions around what factors will influence Author Rank inside Google+, your main objective becomes simple: increase the number of interactions with high-authority users in your niche.

However, it’s no good frantically sharing and giving +1s (the Google+ equivalent of a like) everything your heroes write, hoping it will magically boost your Author Rank – that’s a bit desperate and, well, a little creepy. Your heroes must reciprocate.

In other words, you need to start building genuine relationships with Google+ heavy hitters who are active in your niche.

Let’s take a look at a simple blueprint for doing just that. Even if you’re already active on Google+, don’t skip the early stages, because you may have missed something important.

Phase #1: Establish a Minimum Viable Presence on Google+

Since you’re ultimately looking to build relationships on Google+, you need to make sure that any early impressions of you are positive. The last thing you want when new people check out your profile is for them to think they’ve wandered into a virtual ghost town.

So this first phase is about doing some simple tasks to build your basic Google+ presence so that it’s working for you and not against you. It also involves establishing a baseline of regular activity to keep your Google+ presence current.

However, remember that this is a minimum viable presence. It needs to pass a cursory inspection. Putting in lots of work is pointless at this stage – few people will notice since few have you on their radar (yet).

So focus your initial efforts on the following:

a) Enhance your basic profile

Assuming you’ve uploaded a rich snippets-friendly profile photo and selected (or uploaded) a professional-looking cover image, the most important thing to focus on is the Story section.

The Story is the most prominent section on your About page and consists of three main elements:

The Tagline is possibly the most important item, as it is shown beneath your name on your hovercard – the floating panel that appears when someone mouses over a link to your Google+ profile.


Google+ Hovercard showing user’s tagline

People can add you to their circles directly from the hovercard, so your tagline plays an important role. Think of it as your Google+ elevator pitch. In just a few words, explain who you are and why it matters to them.

The following are some example taglines from popular Google+ users:

The Tagline is also important because the text is used in the excerpt shown on the results page when your profile appears in a Google search.




The Introduction is your opportunity to explain who you are at greater length. It’s a freeform text section and you can include custom formatting and even external links. Make sure you mention your specific areas of expertise to help visitors know if you’re relevant to their interests.

You can also link to your blog and even some of your most popular posts.

For a good example of a Google+ user who’s made full use of their Introduction section, check out Gabriel Vasile:


The Bragging Rights section allows you to include some fun or interesting detail about yourself.

b) Add some key influencers to your circles

Next, add some of the main influencers in your niche to your Circles. In fact, you could create a new circle called “Influencers” or “Heavy Hitters” specifically for that purpose.

Adding some influential users to your Circles is important for two reasons:

  1. A selection of the people in your circles is displayed on both your About and Posts pages, so it’s important to have something there. (Having some well-known faces in your niche won’t hurt your credibility either.)
  2. Updates from these people will start appearing in your stream, which will help you keep track of what your target influencers are up to on Google+. It will be useful in a moment for another reason too.

For the big names already on your mental hit list, just type them into the “Search for people, pages or posts” box at the top of the Google+ interface to find their user profiles:


Also, to discover influential Google+ users by topic, try Recommended Users, or to search by popularity or even by geographical location, use Circle Count.

c) Create a daily routine of simple updates

In addition to getting your profile information in order, you should start posting regular updates so that when other users visit your Posts page (which is often the first page they will land on), they will see some current activity.

So share some content you think your audience will find interesting. And don’t simply post plain links; make sure you add a little personality by including a short comment to add some context.

Your homepage stream should now feature updates from the influencers you’ve circled, so that should give you some ideas for content to share.

Of course, if you write content for your own blog on a regular basis, it’s a no-brainer to post that too.

Again, you don’t have to go crazy here. Just 15 minutes once or twice a day will keep the “lights on” for your Google+ presence – while you start building some long-term momentum in Phase 2.

d) Start advertising your Google+ presence

This one’s simple, but now that your minimum viable presence is in place, start telling people about it:

Phase #2: Become a Visible and Valued Member of the Google+ Community

So you now have a Google+ presence that won’t embarrass the hell out of you if someone new stops by.

However, you still likely have zero visibility within the community.

It’s as if you’ve moved into a new house in a new neighborhood. You’ve brushed your hair and cleaned your teeth and put on some nice clothes, just on the off chance that someone stops by. They probably won’t, but if they do, you’re ready.

This second phase is about getting out into the Google+ community and starting to make more of an impact.

You’re still not actively going after the big players at this point, but you are making some low-level connections with your peers and building your confidence.

You should do the following in this phase:

a) Join relevant Google+ communities and be helpful to others

Google+ Communities are virtual gathering places within Google+ that focus on a specific topic.

For instance, check out the Google Authorship and Author Rank community.

Google+ Communities are a great place to start meeting and engaging with other users around the topics that interest you.

You can find relevant communities by browsing or searching here (you need to be logged into your Google+ account).

The best way to get noticed in a community is to be genuinely helpful to others. Whatever your level of knowledge and experience of a subject, you will always encounter people who know a little less than you.

But before you jump in with both feet, spend a few days as a casual observer so that you get used to the typical discussions in the community and can identify the most prominent members.

Once you’re comfortable, do the following to build your profile within the community:

A good mindset here is to ask, “What can I do to help this community and its members?” rather than to think “How can I get noticed?”

If the moderators seem like a good match for your heavy hitters list, be sure to add them to your power circle.

As you become more of a familiar face in a handful of communities, you should also find that people start adding you to their circles, thus growing your following. (And don’t be miserly with returning the favor – you can always remove people from your circles if the content they post is not of interest.)

The Advantage of Growing Your Google+ Following
While your circle count alone isn’t thought to be a significant driver for Author Rank, it’s important from a perception point of view. This number is displayed alongside your photo in any Authorship-enabled search result, and a higher number will give you greater credibility and likely more click-throughs.

b) Interact with other users’ content

You should now have a regular flow of updates in your home stream from the users you added to your circles – the heavy hitters and the users you’ve added from the communities where you’ve been active.

It’s time to become a little active by interacting with other users via the content they post to their profiles.

The following are some ways you can interact with someone else’s post on Google+:

In general, focus your efforts on those users who have higher follower counts (although this is an overly simplistic measure of influence) or those who seem very active (i.e., rising Google+ stars).

The aim here is to raise your profile and to encourage a little reciprocation. However, you’re not expecting to get a response from the heavy hitters just yet, just giving them a few opportunities to notice you exist.

c) Become a content curator and creator

In Phase 1 you were doing some basic sharing of other users’ content, primarily as a simple way to get some fresh content in your home stream.

But as your follower count starts to grow, more people can see any updates you post.

So it’s time to start publishing more valuable content to your profile.

Start by finding content that has not been widely shared within your community. Look outside of Google+, or find interesting content in less obvious communities within Google+ to share with your followers.

Also start writing original posts within Google+ itself. These are longer-form updates that have self-contained value. You can think of them as being somewhere between the micro-update of a tweet and a full-length blog post.

Use these posts to share your views and provide valuable how-to information on your core topics. You can add hashtags to flag the specific topic, but Google is actually starting to add these automatically so you don’t need to worry too much about this.


Google+ post showing hashtag

Although we don’t recommend posting reams of original content directly on Google+ (see below), doing so has some advantages. For instance, most experts believe that these native posts will get indexed by Google almost immediately since they are created at source, and certainly Google+ posts are becoming a familiar sight in normal search results.

Some writers are using Google+ posts as a way to test out ideas in short form and then expanding on those that connect with their audience in a longer post on their main blog.

Google+ as a Blogging Platform
Google+ allows you to post long-form updates to your profile, which appear in the home streams of the people that follow you. You can even include basic formatting such as bold, italic and underline. Some people are using Google+ as their primary blogging platform and getting good results, but we still feel safer when your main platform is your own blog on your own domain – an asset you totally control.

Phase #3: Actively Build Connections with Google+ Influencers

By now you have a solid presence on Google+ and you have built a modest – but certainly not embarrassing – following by:

It’s now time to set your sights on some of the bigger Google+ players in your niche.

a) Deepen your list of Google+ targets

Your initial list of influential targets was a good starting point, but it’s time to expand it. This means adding any important top-level influencers you may have missed first time around, but also adding a little depth by looking at the next tier down.

What do I mean by that?

Depending on your niche, some of the big names may be a little too big to realistically connect with directly at this stage. They receive a lot of interactions from other users and you’ll struggle to be heard above the noise.

So the trick is to find other influencers – with more influence than you but less than your main targets – who are in your target’s circles and add them to your hit list.

A simple way to do that is to go to your primary targets’ profile pages and see whose content they are sharing. Chances are these people will already be in their circles and they’ll already have some degree of trust between the two of them.

If you can connect with these middleweight influencers, it will help your credibility when approaching the main targets.

To find these important connectors you can also use a neat feature built into Google+ called Ripples, which shows how a post is shared from one group to another. Read a great post about using it to find influencers here.

b) Engage with your targets’ content

This builds upon the activity from Phase 2 (giving +1s, sharing and leaving comments on other users’ content), but this time it’s a more concerted effort to get the attention of your key influencers. Start with the second-tier influencers and gradually work your way up to the top dogs.

As you work at this you should start to see signs that an influencer has noticed you, for example:

Take your time with this process. Don’t +1, comment on and share everything they post – you’ll look like a crazy stalker.

Instead, use the following simple guidelines:

How else can you get the attention of your influencers?

The following are some other ideas to get on the radar of a valuable target:

Weeks of patient interaction may be necessary to get on the radar of some of your contacts. But before focusing on the biggest names, make sure you have had meaningful interactions with some of the second-tier people that they follow. Ideally you want to be added to their circles so that if they share your content, it is visible to your primary targets.

c) Actively engage with your target

By now you should have had some contact with a number of the key influencers on your list. And while the interactions were primarily in one direction (from you to them), you’ve hopefully received positive signs that they’ve noticed you in some small way.

So it’s now time to start moving slowly away from the periphery of their Google+ network and toward the center.

This means raising the stakes and expecting a little more from your interactions. The distinction here is making small offers or requests that require a response from your target.

You have numerous ways to do this, but the following are a few ideas:

If you don’t get a response on your first approach, don’t worry. Revert to generous interaction with your target’s content and try a direct approach again a little further down the line.

When you do get a response, build these small interactions over time into a genuine relationship.

Why Author Rank May Still Be a Hoax (and Why It Doesn’t Matter)

While Google Authorship is very much a reality, truthfully most of what is understood about Author Rank is enthusiastic speculation.

Only Google insiders really know exactly how Author Rank will be calculated in practice or how any score will ultimately affect the ranking of a specific webpage written by a given author for a particular search term.

A persuasive (though simplistic) argument says that for Google to introduce Google Authorship without using it to enable author-aware search rankings at some point in the future makes little sense.

But a small chance still remains that Author Rank could turn out to be a hoax. A nice idea that Google never intended to actually implement, or an early experiment that didn’t work out and will never fully see the light of day.

The most likely situation right now is that Author Rank exists in some experimental form within the walls of Google’s laboratories but is still evolving and has yet to be rolled out into its public search algorithm.

But even if Author Rank turns out to be a complete myth – unlikely but still possible – the important thing to remember is this:

It doesn’t matter. Not one bit.

It doesn’t matter, because all of the tactics we’ve described for improving your theoretical Author Rank will boost your practical authority (and ultimately your search rankings and traffic) anyway.

Try to wrap your head around that.

If Author Rank proves to be a myth and your track record as a writer doesn’t directly affect the ranking of your content in search, these practices will end up giving you more traffic anyway.

Here’s why.

Firstly, the recommended tactics for raising your content authority outside Google+ are simply smart practice for any online writer who wants to get better search rankings and more traffic.

Secondly, being active on Google+ and building long-term relationships with key influencers in your niche will lead to better rankings and more traffic anyway:

So the message is clear – taking measures to boost your Author Rank is a smart move for online writers even if Author Rank doesn’t exist.

The Future-Proof Guide to Getting More Traffic as a Writer

We’ve covered a lot of ground, so let’s recap.

Google Authorship is a reality. It’s easy to configure (if you follow our instructions) and writers who have already done so are being rewarded with more traffic due to higher click-throughs on their rich snippet-enabled search results.

But the true value of Google Authorship is that it lays the foundation for things to come.

Author Rank is the popular name for a mechanism that would allow Google to use author authority to influence search engine rankings. And while the implementation of Author Rank is not a cast-iron certainty, few in the SEO community would bet against it.

So where does this leave the search-savvy online writer wondering exactly where to focus his or her efforts to get more traffic for their content in the future?

4 Content Trends You Can’t Ignore (and What You Must Do to Thrive)

Looking at current trends, let’s make some predictions about the future of content and try to draw some useful conclusions.

#1 Google will get even better at gauging the quality of your content

Google is obsessed with content quality. Algorithm updates such as Panda have helped it weed out the poorest content, however it still relies on external indicators, such as backlinks, to spot the best.

But as time goes on, Google will start to use other indicators such as social signals – i.e., numbers of tweets, shares, +1s, etc. – to more accurately measure the value of your content.

So anything but the best content will struggle to rank well in Google Search. Low-grade content will be filtered out early on and higher quality content will need to earn its place via the approval of its audience.

Conclusion: You’ll have heard it a hundred times before, but it’s truer than ever. If you want Google to reward you with higher rankings – and more traffic – focus on producing high-quality content. And the definition of quality here is simple: it’s content that people want to read and share.

#2 Google will gain a deeper understanding of the meaning of your content

For a long time Google has relied heavily on keywords to gain a superficial understanding of what your content is about. But eventually it wants to understand what your content actually means.

The key to this is semantic search, where queries are matched to relevant content not simply according to the specific keywords used, but based on a model of what they mean in context.

Consequently, Google will get much better at understanding the topics you write about online, not just the keywords you use. And they have said that they want to be able to give subject authorities a ranking boost for relevant queries.

Conclusion: The benefits of being a topic specialist will become more pronounced as time goes on. So if you currently write on a wide variety of topics, you should consider narrowing your focus. That goes for your blog too. And don’t obsess over the specific keywords you use in your posts but do make sure you write in the same terms that your target audience uses.

#3 Your reputation as a writer will become an increasingly valuable asset

Guest blogging – writing for someone else’s blog as an external contributor – has long been a great way to drive relevant traffic directly to your own blog.

But due to the increase of low-quality guest posts (the blogging equivalent of spam), Google is now committed to cracking down on this practice.

This means that popular sites keen to preserve (and enhance) their search rankings will become much more fussy about what – and whom – they publish. So your track record as a writer will be vital when landing valuable guest blogging opportunities.

Conclusion: Actively manage and enhance your reputation by writing valuable content for the most respected blogs in your niche. Spend time building organic relationships with top bloggers who accept third-party contributions. And if you accept guest posts on your own blog, be very discerning about whom you invite.

#4 Google+ will become the essential social network for content creators

The growth of Google+ has been impressive, but despite its success, it still plays second fiddle – at least in terms of public perception – to its older siblings Facebook and Twitter.

However, Google+ will soon be the de facto choice of social networks for serious content creators. And while ignoring Facebook might be viewed as a valid tactical decision, failing to exploit Google+ will be seen as sheer madness.

Some reasons include:

Conclusion: Take advantage of the fact that it’s still easier to get on the radar of key influencers on Google+ than it is in Facebook or Twitter. Build your network by being visible and generous. Because while the early adopter ship has already sailed, you still have time to gain some serious traction before everyone else tries to do the same.

10 Simple Steps to Jumpstart Your Success as an Online Writer

With all this information, knowing where to start can be a challenge, so use the following 10 simple steps – most taking 5 minutes or less – to set you on your way:

  1. Get on Google+. If you haven’t done so already, create your basic profile, and be sure to upload a “clear and recognizable” photo of yourself to allow rich snippets.
  2. Enhance your profile.  Add detail to your About page under Story and be sure to tell us which subjects you specialize in. Remember to create a compelling Tagline.
  3. Add a Google+ link to your blog. Add your Google+ link to the list of social media links on your blog. Add it to your email signature too.
  4. Configure Google Authorship. Install the Yoast WordPress SEO plugin and be sure to add your blog’s URL to your Contributor to list on your Google+ profile.
  5. Claim your guest posts. If you’ve written for other blogs, make a list of your best posts and email the blog owners asking them to update your byline with your authorship link.
  6. Circle 10 influencers in your niche. You can search for recommended users by topic and add them to your circles. And while you’re at it, why not add me and Jon;-)
  7. Post a link. Link to your latest blog post, or to a favorite post elsewhere on the web so your posts page doesn’t look so empty. If you’re short on ideas, post a link to this guide.
  8. Engage with other users. Find an interesting post in your stream and +1 it, share it or leave a comment.
  9. Join a community. Find a Google+ community related to one of your main topics, join it and post a quick introduction for other members.
  10. Create a Google+ post. Share your thoughts on a topic by creating a native post. If you’re feeling adventurous include some custom formatting and a hashtag.

So that’s it! You now have everything you need to prepare for the content revolution to come.

Are You Ready for the Authorship Revolution?

It won’t happen overnight, but there’s little doubt we’re moving towards a more author-centric world. And that’s great news for writers who are committed to working at the top of their game and creating original, valuable content that serves the most pressing needs and desires of their audience.

And the rest? Those writers who prize quantity over quality and see content as a necessary evil for getting the search rankings they crave?

Who cares? They’ll be irrelevant soon anyway.

Time to get started!

About the AuthorGlen Long is the Managing Editor of Boost Blog Traffic and gets to work with some of the best writers on the web. He’s also the Assistant Instructor on Jon Morrow’s Guest Blogging Apprenticeship Program, where he helps students get published on some of the biggest blogs in the world. If you’d like him to critique your writing, clickhere.

Many thanks to Mark Traphagen for his valuable input on the first draft of this guide. Mark is Senior Online Director of Marketing at Stone Temple Consulting and also runs the Google Authorship & Author Rank community on Google+.

The Epic List of Google Authorship, Author Rank and Google+ Resources

Google Authorship

Google Authorship is a huge development for online writers. Some will want to set it up and forget about it; others will want to dive into the detail. The following resources will allow you to learn as much – or as little – as you want:

Official documentation

Configuring Google Authorship

Our guide describes one of the easiest and most robust ways to configure Google Authorship for your WordPress blog, but there are other mechanisms (and other platforms) you might want to use instead. The follow resources will tell you what you need to know to set it up:

Configuration Instructions for Popular WordPress Frameworks

Our instructions should work for any WordPress blog, but if you don’t want to use a plugin, or prefer instructions more specific to your precise setup, use the following framework-specific instructions:

Troubleshooting Google Authorship

Google Authorship can sometimes be a little tricky to set up. The following additional resources will help you troubleshoot your configuration and get it working quickly:

Google Authorship Discussion

If you want to get help with configuration issues, or simply discuss the latest theories about where Google Authorship is going, check out the following places:

Author Rank

Author Rank is the much-anticipated mechanism behind better search rankings for online writers. Authorship might make you visible to Google, but Author Rank is what will determine your clout as a writer. Expand your knowledge of Author Rank with the following resources:


While epic, ours is certainly not the first online guide to Author Rank. The following resources are among those that led the way and will also help you cement your understanding of the key concepts:

Author Rank Tactics

For more Author Rank-boosting tactics, or an alternative take on some of those we cover in this guide, take a look at the following resources:

Author Rank Tools

Since Author Rank is in its early stages, few tools are available. However, the following may help give some indication of an individual author’s authority, at least relative to other authors:


Google+ is the backbone of Google Authorship but it’s also an important social network in its own right. Succeeding as a writer online means thriving on Google+, and the following resources should help you do just that:

Official documentation

The following resources are a selection of Google’s own documentation for its social network:

Beginner’s Guides to Google+

Google+ is a mature platform with a wide range of features. These guides will help you learn the basics as quickly as possible:

Advanced Guides to Google+

If you already have a good working knowledge of Google+, these more advanced resources should help take your skills to the next level:

Content Creation on Google+

Google+ is a content platform in its own right and the smart writer will include some native posts in their content mix. Here’s how to do it right:

Google+ Pages

Just as Facebook allows you to create a page for your brand or business that is distinct from your personal profile, Google+ has Pages:

Publisher Markup

Google’s Publisher markup does for businesses what its Authorship markup does for individuals by allowing you to link your business website to your Google+ Page:

Google+ Communities

Google+ Communities are places where users can gather around a common interest to share content, plan events and simply connect with like-minded people:

Google+ Hangouts

Google+ Hangouts allow group conversations between Google+ users. They support not just text-based messaging with emoji and photo posting, but also live video chat with up to nine other people:

Google+ for Specific Groups

Different types of people will use Google+ in different ways. The following resources provide targeted advice for various groups:

Google+ for Small Businesses and Startups

Google+ for Writers and Authors

Google+ for Freelancers

Google+ for Creative Types

Latest News

If you want to keep up-to-date with all things Google+, check out the following sites which have categories dedicated to the platform:

Google+ Discussions

The following communities are great places to discuss Google+ with other users: