CINXE.COM
Official Google Webmaster Central Blog: advanced
<!DOCTYPE html> <html class='v2 list-page' dir='ltr' itemscope='' itemtype='http://schema.org/Blog' lang='en' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> <head> <link href='https://www.blogger.com/static/v1/widgets/3566091532-css_bundle_v2.css' rel='stylesheet' type='text/css'/> <title> Official Google Webmaster Central Blog: advanced </title> <script type='text/javascript'> var newhost = 'https://developers.google.com'; var target_blog_path = '/search/blog' var target_search_path = '/s/results/search/blog/?q=' var pathname = window.location.pathname if (pathname.startsWith('/search/label/')) { pathname = target_search_path.concat(pathname.slice(14)); } else if (pathname.endsWith('.html')) { pathname = target_blog_path.concat(pathname.slice(0, -5)); } else { pathname = target_blog_path; } var redir_target = newhost.concat(pathname); window.location.href = redir_target; </script> <meta content='evCklrdiBeZ3REnk8pXEV6_6iEdNf1ZLgUpwH9XirGg' name='google-site-verification'/> <meta content='width=device-width, height=device-height, minimum-scale=1.0, initial-scale=1.0, user-scalable=0' name='viewport'/> <meta content='IE=Edge' http-equiv='X-UA-Compatible'/> <meta content='Official Google Webmaster Central Blog' property='og:title'/> <meta content='Official news on crawling and indexing sites for the Google index' property='og:description'/> <meta content='en_US' property='og:locale'/> <meta content='https://webmasters.googleblog.com/search/label/advanced' property='og:url'/> <meta content='Official Google Webmaster Central Blog' property='og:site_name'/> <!-- Twitter Card properties --> <meta content='Official Google Webmaster Central Blog' property='og:title'/> <meta content='Official news on crawling and indexing sites for the Google index' property='twitter:description'/> <meta content='summary' name='twitter:card'/> <meta content='@googlewmc' name='twitter:creator'/> <link href='https://fonts.googleapis.com/css?family=Roboto:400italic,400,500,500italic,700,700italic' rel='stylesheet' type='text/css'/> <link href='https://fonts.googleapis.com/icon?family=Material+Icons' rel='stylesheet'/> <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js' type='text/javascript'></script> <!-- End --> <style id='page-skin-1' type='text/css'><!-- /* <Group description="Header Color" selector="header"> <Variable name="header.background.color" description="Header Background" type="color" default="#ffffff"/> </Group> */ .header-outer { border-bottom: 1px solid #e0e0e0; background: #ffffff; } html, .Label h2, #sidebar .rss a, .BlogArchive h2, .FollowByEmail h2.title, .widget .post h2 { font-family: Roboto, sans-serif; } .plusfollowers h2.title, .post h2.title, .widget h2.title { font-family: Roboto, sans-serif; } .widget-item-control { height: 100%; } .widget.Header, #header { position: relative; height: 100%; width: 100%; } } .widget.Header .header-logo1 { float: left; margin-right: 15px; padding-right: 15px; border-right: 1px solid #ddd; } .header-title h2 { color: rgba(0,0,0,.54); display: inline-block; font-size: 40px; font-family: Roboto, sans-serif; font-weight: normal; line-height: 48px; vertical-align: top; } .header-inner { background-repeat: no-repeat; background-position: right 0px; } .post-author, .byline-author { font-size: 14px; font-weight: normal; color: #757575; color: rgba(0,0,0,.54); } .post-content .img-border { border: 1px solid rgb(235, 235, 235); padding: 4px; } .header-title a { text-decoration: none !important; } pre { border: 1px solid #bbbbbb; margin-top: 1em 0 0 0; padding: 0.99em; overflow-x: auto; overflow-y: auto; } pre, code { font-size: 9pt; background-color: #fafafa; line-height: 125%; font-family: monospace; } pre, code { color: #060; font: 13px/1.54 "courier new",courier,monospace; } .header-left .header-logo1 { width: 128px !important; } .header-desc { line-height: 20px; margin-top: 8px; } .fb-custom img, .twitter-custom img, .gplus-share img { cursor: pointer; opacity: 0.54; } .fb-custom img:hover, .twitter-custom img:hover, .gplus-share img:hover { opacity: 0.87; } .fb-like { width: 80px; } .post .share { float: right; } #twitter-share{ border: #CCC solid 1px; border-radius: 3px; background-image: -webkit-linear-gradient(top,#ffffff,#dedede); } .twitter-follow { background: url(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgCqNmeVJSIp9EYGk0-d8ScFMrhQri2E5oiIe_wCB-iIf4iefN9xnmLKurx839utT42R76mVmed7FkHd-6nUhw_fEg8XVL_Gn8tamWEtM7QPe7OZcOkWNXN0qSNmnp8qdoYt1KVg/s1600/twitter-bird.png) no-repeat left center; padding-left: 18px; font: normal normal normal 11px/18px 'Helvetica Neue',Arial,sans-serif; font-weight: bold; text-shadow: 0 1px 0 rgba(255,255,255,.5); cursor: pointer; margin-bottom: 10px; } .twitter-fb { padding-top: 2px; } .fb-follow-button { background: -webkit-linear-gradient(#4c69ba, #3b55a0); background: -moz-linear-gradient(#4c69ba, #3b55a0); background: linear-gradient(#4c69ba, #3b55a0); border-radius: 2px; height: 18px; padding: 4px 0 0 3px; width: 57px; border: #4c69ba solid 1px; } .fb-follow-button a { text-decoration: none !important; text-shadow: 0 -1px 0 #354c8c; text-align: center; white-space: nowrap; font-size: 11px; color: white; vertical-align: top; } .fb-follow-button a:visited { color: white; } .fb-follow { padding: 0px 5px 3px 0px; width: 14px; vertical-align: bottom; } .gplus-wrapper { margin-top: 3px; display: inline-block; vertical-align: top; } .twitter-custom, .gplus-share { margin-right: 12px; } .fb-follow-button{ margin: 10px auto; } /** CUSTOM CODE **/ --></style> <style id='template-skin-1' type='text/css'><!-- .header-outer { clear: both; } .header-inner { margin: auto; padding: 0px; } .footer-outer { background: #f5f5f5; clear: both; margin: 0; } .footer-inner { margin: auto; padding: 0px; } .footer-inner-2 { /* Account for right hand column elasticity. */ max-width: calc(100% - 248px); } .google-footer-outer { clear: both; } .cols-wrapper, .google-footer-outer, .footer-inner, .header-inner { max-width: 978px; margin-left: auto; margin-right: auto; } .cols-wrapper { margin: auto; clear: both; margin-top: 60px; margin-bottom: 60px; overflow: hidden; } .col-main-wrapper { float: left; width: 100%; } .col-main { margin-right: 278px; max-width: 660px; } .col-right { float: right; width: 248px; margin-left: -278px; } /* Tweaks for layout mode. */ body#layout .google-footer-outer { display: none; } body#layout .header-outer, body#layout .footer-outer { background: none; } body#layout .header-inner { height: initial; } body#layout .cols-wrapper { margin-top: initial; margin-bottom: initial; } --></style> <!-- start all head --> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta content='blogger' name='generator'/> <link href='https://webmasters.googleblog.com/favicon.ico' rel='icon' type='image/x-icon'/> <link href='https://webmasters.googleblog.com/search/label/advanced' rel='canonical'/> <link rel="alternate" type="application/atom+xml" title="Official Google Webmaster Central Blog - Atom" href="https://webmasters.googleblog.com/feeds/posts/default" /> <link rel="alternate" type="application/rss+xml" title="Official Google Webmaster Central Blog - RSS" href="https://webmasters.googleblog.com/feeds/posts/default?alt=rss" /> <link rel="service.post" type="application/atom+xml" title="Official Google Webmaster Central Blog - Atom" href="https://www.blogger.com/feeds/32069983/posts/default" /> <!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> <meta content='Official news on crawling and indexing sites for the Google index' name='description'/> <meta content='https://webmasters.googleblog.com/search/label/advanced' property='og:url'/> <meta content='Official Google Webmaster Central Blog' property='og:title'/> <meta content='Official news on crawling and indexing sites for the Google index' property='og:description'/> <!-- end all head --> <base target='_self'/> <style> html { font-family: Roboto, sans-serif; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } body { padding: 0; /* This ensures that the scroll bar is always present, which is needed */ /* because content render happens after page load; otherwise the header */ /* would "bounce" in-between states. */ min-height: 150%; } h2 { font-size: 16px; } h1, h2, h3, h4, h5 { line-height: 2em; } html, h4, h5, h6 { font-size: 14px; } a, a:visited { color: #4184F3; text-decoration: none; } a:focus, a:hover, a:active { text-decoration: none; } .Header { margin-top: 15px; } .Header h1 { font-size: 32px; font-weight: 300; line-height: 32px; height: 42px; } .header-inner .Header .titlewrapper { padding: 0; margin-top: 30px; } .header-inner .Header .descriptionwrapper { padding: 0; margin: 0; } .cols-wrapper { margin-top: 56px; } .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 60px; } .header-inner { height: 256px; position: relative; } html, .header-inner a { color: #212121; color: rgba(0,0,0,.87); } .header-inner .google-logo { display: inline-block; background-size: contain; z-index: 1; height: 46px; overflow: hidden; margin-top: 4px; margin-right: 8px; } .header-left { position: absolute; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); margin-top: 12px; width: 100%; } .google-logo { margin-left: -4px; } #google-footer { position: relative; font-size: 13px; list-style: none; text-align: right; } #google-footer a { color: #444; } #google-footer ul { margin: 0; padding: 0; height: 144px; line-height: 144px; } #google-footer ul li { display: inline; } #google-footer ul li:before { color: #999; content: "\00b7"; font-weight: bold; margin: 5px; } #google-footer ul li:first-child:before { content: ''; } #google-footer .google-logo-dark { left: 0; margin-top: -16px; position: absolute; top: 50%; } /** Sitemap links. **/ .footer-inner-2 { font-size: 14px; padding-top: 42px; padding-bottom: 74px; } .footer-inner-2 .HTML h2 { color: #212121; color: rgba(0,0,0,.87); font-size: 14px; font-weight: 500; padding-left: 0; margin: 10px 0; } .footer-inner-2 .HTML ul { font-weight: normal; list-style: none; padding-left: 0; } .footer-inner-2 .HTML li { line-height: 24px; padding: 0; } .footer-inner-2 li a { color: rgba(65,132,243,.87); } /** Archive widget. **/ .BlogArchive { font-size: 13px; font-weight: normal; } .BlogArchive .widget-content { display: none; } .BlogArchive h2, .Label h2 { color: #4184F3; text-decoration: none; } .BlogArchive .hierarchy li { display: inline-block; } /* Specificity needed here to override widget CSS defaults. */ .BlogArchive #ArchiveList ul li, .BlogArchive #ArchiveList ul ul li { margin: 0; padding-left: 0; text-indent: 0; } .BlogArchive .intervalToggle { cursor: pointer; } .BlogArchive .expanded .intervalToggle .new-toggle { -ms-transform: rotate(180deg); transform: rotate(180deg); } .BlogArchive .new-toggle { float: right; padding-top: 3px; opacity: 0.87; } #ArchiveList { text-transform: uppercase; } #ArchiveList .expanded > ul:last-child { margin-bottom: 16px; } #ArchiveList .archivedate { width: 100%; } /* Months */ .BlogArchive .items { max-width: 150px; margin-left: -4px; } .BlogArchive .expanded .items { margin-bottom: 10px; overflow: hidden; } .BlogArchive .items > ul { float: left; height: 32px; } .BlogArchive .items a { padding: 0 4px; } .Label { font-size: 13px; font-weight: normal; } .sidebar-icon { display: inline-block; width: 24px; height: 24px; vertical-align: middle; margin-right: 12px; margin-top: -1px } .Label a { margin-right: 4px; } .Label .widget-content { display: none; } .FollowByEmail { font-size: 13px; font-weight: normal; } .FollowByEmail h2 { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-position: 0 50%; text-indent: 30px; } .FollowByEmail .widget-content { display: none; } .searchBox input { border: 1px solid #eee; color: #212121; color: rgba(0,0,0,.87); font-size: 14px; padding: 8px 8px 8px 40px; width: 164px; font-family: Roboto, sans-serif; background: url("https://www.gstatic.com/images/icons/material/system/1x/search_grey600_24dp.png") 8px center no-repeat; } .searchBox ::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color: rgba(0,0,0,.54); } .searchBox :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #000; opacity: 0.54; } .searchBox ::-moz-placeholder { /* Mozilla Firefox 19+ */ color: #000; opacity: 0.54; } .searchBox :-ms-input-placeholder { /* Internet Explorer 10-11 */ color: #757575; } .widget-item-control { margin-top: 0px; } .section { margin: 0; padding: 0; } #sidebar-top { border: 1px solid #eee; } #sidebar-top > div { margin: 16px 0; } .widget ul { line-height: 1.6; } /*main post*/ .post { margin-bottom:30px; } #main .post .title { margin: 0; } #main .post .title a { color: #212121; color: rgba(0,0,0,.87); font-weight: normal; font-size: 24px; } #main .post .title a:hover { text-decoration:none; color:#4184F3; } .message, #main .post .post-header { margin: 0; padding: 0; } #main .post .post-header .caption, #main .post .post-header .labels-caption, #main .post .post-footer .caption, #main .post .post-footer .labels-caption { color: #444; font-weight: 500; } #main .tr-caption-container td { text-align: left; } #main .post .tr-caption { color: #757575; color: rgba(0,0,0,.54); display: block; max-width: 560px; padding-bottom: 20px; } #main .post .tr-caption-container { line-height: 24px; margin: -1px 0 0 0 !important; padding: 4px 0; text-align: left; } #main .post .post-header .published{ font-size:11px; font-weight:bold; } .post-header .publishdate { font-size: 17px; font-weight:normal; color: #757575; color: rgba(0,0,0,.54); } #main .post .post-footer{ font-size:12px; padding-bottom: 21px; } .label-footer { margin-bottom: 12px; margin-top: 12px; } .comment-img { margin-right: 16px; opacity: 0.54; vertical-align: middle; } #main .post .post-header .published { margin-bottom: 40px; margin-top: -2px; } .post .post-content { color: #212121; color: rgba(0,0,0,.87); font-size: 17px; margin: 25px 0 36px 0; line-height: 32px; } .post-body .post-content ul, .post-body .post-content ol { margin: 16px 0; padding: 0 48px; } .post-summary { display: none; } /* Another old-style caption. */ .post-content div i, .post-content div + i { font-size: 14px; font-style: normal; color: #757575; color: rgba(0,0,0,.54); display: block; line-height: 24px; margin-bottom: 16px; text-align: left; } /* Another old-style caption (with link) */ .post-content a > i { color: #4184F3 !important; } /* Old-style captions for images. */ .post-content .separator + div:not(.separator) { margin-top: -16px; } /* Capture section headers. */ .post-content br + br + b, .post-content .space + .space + b, .post-content .separator + b { display: inline-block; margin-bottom: 8px; margin-top: 24px; } .post-content li { line-height: 32px; } /* Override all post images/videos to left align. */ .post-content .separator, .post-content > div { text-align: left; } .post-content .separator > a, .post-content .separator > span { margin-left: 0 !important; } .post-content img { max-width: 100%; height: auto; width: auto; } .post-content .tr-caption-container img { margin-bottom: 12px; } .post-content iframe, .post-content embed { max-width: 100%; } .post-content .carousel-container { margin-bottom: 48px; } #main .post-content b { font-weight: 500; } /* These are the main paragraph spacing tweaks. */ #main .post-content br { content: ' '; display: block; padding: 4px; } .post-content .space { display: block; height: 8px; } .post-content iframe + .space, .post-content iframe + br { padding: 0 !important; } #main .post .jump-link { margin-bottom:10px; } .post-content img, .post-content iframe { margin: 30px 0 20px 0; } .post-content > img:first-child, .post-content > iframe:first-child { margin-top: 0; } .col-right .section { padding: 0 16px; } #aside { background:#fff; border:1px solid #eee; border-top: 0; } #aside .widget { margin:0; } #aside .widget h2, #ArchiveList .toggle + a.post-count-link { color: #212121; color: rgba(0,0,0,.87); font-weight: 400 !important; margin: 0; } #ArchiveList .toggle { float: right; } #ArchiveList .toggle .material-icons { padding-top: 4px; } #sidebar .tab { cursor: pointer; } #sidebar .tab .arrow { display: inline-block; float: right; } #sidebar .tab .icon { display: inline-block; vertical-align: top; height: 24px; width: 24px; margin-right: 13px; margin-left: -1px; margin-top: 1px; color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget-content > :first-child { padding-top: 8px; } #sidebar .active .tab .arrow { -ms-transform: rotate(180deg); transform: rotate(180deg); } #sidebar .arrow { color: #757575; color: rgba(0,0,0,.54); } #sidebar .widget h2 { font-size: 14px; line-height: 24px; display: inline-block; } #sidebar .widget .BlogArchive { padding-bottom: 8px; } #sidebar .widget { border-bottom: 1px solid #eee; box-shadow: 0px 1px 0 white; margin-bottom: 0; padding: 14px 0; min-height: 20px; } #sidebar .widget:last-child { border-bottom: none; box-shadow: none; margin-bottom: 0; } #sidebar ul { margin: 0; padding: 0; } #sidebar ul li { list-style:none; padding:0; } #sidebar ul li a { line-height: 32px; } #sidebar .archive { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE1JREFUeNpiNDY23s9AAWBioBCwYBM8c+YMVsUmJibEGYBNMS5DaeMFfDYSZQA2v9I3FrB5AZeriI4FmnrBccCT8mhmGs1MwyAzAQQYAKEWG9zm9QFEAAAAAElFTkSuQmCC"); height: 24px; line-height: 24px; padding-left: 30px; } #sidebar .labels { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUxJREFUeNpiNDY23s9AAMycOfM7UF05kHkZmzwTMkdSUhKrIcXFxZy3bt3qBjIN8RrS09PDsHnzZjCNDr58+cKQlpbGDjSoHcg1w2oIyAUODg5gARCNzUVIBrUCuVYYhjx//pzhwIEDYAEQDeJjA1CDWIAGNQK59jBxRuSABbkAlwHIgIeHh2HWrFn/1NTU2oDcvSgBS4wBSC5iArqoCsj1YGIgEyAZVMoEchqlBjEB/cZAiUHg2AEGznpKDAImxOeM////B4VLKtBvEUCngZ1ILKivr3/u6+ubBzJAGZQ9gC5aQoqLgAY8BhkAZL4BuQQkxgXE34A4BuiiZEIuAhrwEGhAEZD5DpzYoIaA2UAM4kQADUrHZRDUgAIg8wO2XAwzbQXQa5OweQ1owB10AyA6gS7BgX1u3ry5397eHow3bdo0EyjGi00tQIABANPgyAH1q1eaAAAAAElFTkSuQmCC"); height: 20px; line-height: 20px; padding-left: 30px; } #sidebar .rss a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAX5JREFUeNqsVDGSgkAQHL2rIiIikohIc/EBRkbwAIwuwgfwAXiAD9AHSI7kEkECRCb6AIyINDLx7K0aa6kT7uq0q7YYtnZ7umdnt7darXbr9Zpegeu61DNNc0dvwCcH4/GYJpMJnc9nOhwOVJbl/4hAAokMECZJQtvt9k+kH7qufyEYDAakqqqYxFdRFBqNRmTbNg2HQ0rTlK7XayvR0xqBdDqdkuM4dE/0ULhYLOh4PHYrknG5XGi/31MYhuL/nkwonM1mlGUZ1XXdrsiyLGEDhY7juJEZ1u5tIixDGdYhmYw+B7CAzPP5nDabjdgIAgCksMX1832/3drtdqPT6SQWapomiGEFNkDEdpDMMAzK81ys/7XYy+XyoQgq2WoURSIJ2iIIgp/WZCCTvFm2wgeAU31aI3Q2GhIDMeB53qPYPIcm5VrxXIOIOxsDMStjVawAc1VViRgN22lNBiuQN3GR+SY07hpOoStmFQAKXRRFY93bnpG+fONfedi+BRgAbkS8Fxp7QQIAAAAASUVORK5CYII="); } #sidebar .subscription a { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAALCAYAAACZIGYHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAUBJREFUeNrMkSGLAlEUhb+ZB4JFi8mx2cz+ApvhRUGTcUCrNqNJDYIi+DO0GUwmQXDK2DSIoGgZcSaIjDrzwrK4ssvChj1w0733O+fdp+m6PozH4yQSCfb7Pa7r8pOi0SjJZBLP8zgej4gAIMvlMuPxmADIYrHger1+C6lUKmo+NJ/NZojb7SZDWiwWo1qtks1msW2bw+HwZdkwDHq9HvV6nel0SqvVYrvdIh6Ph3Qch+VyqRYLhQJSSjRNw7IsfN9XgGKxSLfbJZfL0e/3aTabrFYr7vc7IujLcOh8PqunrNdr0uk0pVKJVCpFJBJRgEajweVyod1uMxgM2O12BAGUgRbU8DV2JpOhVquRz+cRQii3+XxOp9NRN3jVR5LPOp1OjEYjlSL8hclkgmmabDabt4d+m+S30vkD/R/IU4ABAPTZgnZdmG/PAAAAAElFTkSuQmCC"); } #sidebar-bottom { background: #f5f5f5; border-top:1px solid #eee; } #sidebar-bottom .widget { border-bottom: 1px solid #e0e0e0; padding: 15px 0; text-align: center; } #sidebar-bottom > div:last-child { border-bottom: 0; } #sidebar-bottom .text { line-height: 20px; } /* Home, forward, and backward pagination. */ .blog-pager { border-top : 1px #e0e0e0 solid; padding-top: 10px; margin-top: 15px; text-align: right !important; } #blog-pager { margin-botom: 0; margin-top: -14px; padding: 16px 0 0 0; } #blog-pager a { display: inline-block; } .blog-pager i.disabled { opacity: 0.2 !important; } .blog-pager i { color: black; margin-left: 16px; opacity: 0.54; } .blog-pager i:hover, .blog-pager i:active { opacity: 0.87; } #blog-pager-older-link, #blog-pager-newer-link { float: none; } .gplus-profile { background-color: #fafafa; border: 1px solid #eee; overflow: hidden; width: 212px; } .gplus-profile-inner { margin-left: -1px; margin-top: -1px; } /* Sidebar follow buttons. */ .followgooglewrapper { padding: 12px 0 0 0; } .loading { visibility: hidden; } .detail-page .post-footer .cmt_iframe_holder { padding-top: 40px !important; } /** Desktop **/ @media (max-width: 900px) { .col-right { display: none; } .col-main { margin-right: 0; min-width: initial; } .footer-outer { display: none; } .cols-wrapper { min-width: initial; } .google-footer-outer { background-color: #f5f5f5; } } /** Tablet **/ @media (max-width: 712px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 40px; } } /* An extra breakpoint accommodating for long blog titles. */ @media (max-width: 600px) { .header-left { height: 100%; top: inherit; margin-top: 0; -webkit-transform: initial; transform: initial; } .header-title { margin-top: 18px; } .header-inner .google-logo { height: 40px; margin-top: 3px; } .header-inner .google-logo img { height: 42px; } .header-title h2 { font-size: 32px; line-height: 40px; } .header-desc { bottom: 24px; position: absolute; } } /** Mobile/small desktop window; also landscape. **/ @media (max-width: 480px), (max-height: 480px) { .header-outer, .cols-wrapper, .footer-outer, .google-footer-outer { padding: 0 16px; } .cols-wrapper { margin-top: 0; } .post-header .publishdate, .post .post-content { font-size: 16px; } .post .post-content { line-height: 28px; margin-bottom: 30px; } .post { margin-top: 30px; } .byline-author { display: block; font-size: 12px; line-height: 24px; margin-top: 6px; } #main .post .title a { font-weight: 500; color: #4c4c4c; color: rgba(0,0,0,.70); } #main .post .post-header { padding-bottom: 12px; } #main .post .post-header .published { margin-bottom: -8px; margin-top: 3px; } .post .read-more { display: block; margin-top: 14px; } .post .tr-caption { font-size: 12px; } #main .post .title a { font-size: 20px; line-height: 30px; } .post-content iframe { /* iframe won't keep aspect ratio when scaled down. */ max-height: 240px; } .post-content .separator img, .post-content .tr-caption-container img, .post-content iframe { margin-left: -16px; max-width: inherit; width: calc(100% + 32px); } .post-content table, .post-content td { width: 100%; } #blog-pager { margin: 0; padding: 16px 0; } /** List page tweaks. **/ .list-page .post-original { display: none; } .list-page .post-summary { display: block; } .list-page .comment-container { display: none; } .list-page #blog-pager { padding-top: 0; border: 0; margin-top: -8px; } .list-page .label-footer { display: none; } .list-page #main .post .post-footer { border-bottom: 1px solid #eee; margin: -16px 0 0 0; padding: 0 0 20px 0; } .list-page .post .share { display: none; } /** Detail page tweaks. **/ .detail-page .post-footer .cmt_iframe_holder { padding-top: 32px !important; } .detail-page .label-footer { margin-bottom: 0; } .detail-page #main .post .post-footer { padding-bottom: 0; } .detail-page #comments { display: none; } } [data-about-pullquote], [data-is-preview], [data-about-syndication] { display: none; } </style> <noscript> <style> .loading { visibility: visible }</style> </noscript> <script type='text/javascript'> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-18009-4', 'auto', 'blogger'); ga('blogger.send', 'pageview'); </script> <link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=32069983&zx=8855dad6-3029-4476-9a6a-423344a04200' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=32069983&zx=8855dad6-3029-4476-9a6a-423344a04200' rel='stylesheet'/></noscript> <meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> <meta name='google-adsense-platform-domain' content='blogspot.com'/> </head> <body> <script type='text/javascript'> //<![CDATA[ var axel = Math.random() + ""; var a = axel * 10000000000000; document.write('<iframe src="https://2542116.fls.doubleclick.net/activityi;src=2542116;type=gblog;cat=googl0;ord=ord=' + a + '?" width="1" height="1" frameborder="0" style="display:none"></iframe>'); //]]> </script> <noscript> <img alt='' height='1' src='https://ad.doubleclick.net/ddm/activity/src=2542116;type=gblog;cat=googl0;ord=1?' width='1'/> </noscript> <!-- Header --> <div class='header-outer'> <div class='header-inner'> <div class='section' id='header'><div class='widget Header' data-version='1' id='Header1'> <div class='header-left'> <div class='header-title'> <a class='google-logo' href='https://webmasters.googleblog.com/?hl=en'> <img height='50' src='https://www.gstatic.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png'/> </a> <a href='/'> <h2> Webmaster Central Blog </h2> </a> </div> <div class='header-desc'> Official news on crawling and indexing sites for the Google index </div> </div> </div></div> </div> </div> <!-- all content wrapper start --> <div class='cols-wrapper loading'> <div class='col-main-wrapper'> <div class='col-main'> <div class='section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> <div class='post' data-id='9148735357724833140' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2016/11/an-update-on-googles-feature-phone.html?hl=en' itemprop='url' title='An update on Google's feature-phone crawling & indexing'> An update on Google's feature-phone crawling & indexing </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, November 30, 2016 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>Limited mobile devices, "<a href="https://www.google.com/search?q=wap+OR+wml+feature+phones&source=lnms&tbm=isch">feature-phones</a>", require a special form of markup or a transcoder for web content. Most websites don't provide feature-phone-compatible content in WAP/WML any more. Given these developments, we've made changes in how we crawl feature-phone content (note: these changes don't affect smartphone content):</p> <p><strong>1. We've retired the feature-phone Googlebot</strong></p> <p>We won't be using the feature-phone user-agents for crawling for search going forward. </p> <p><strong>2. Use "handheld" link annotations for dynamic serving of feature-phone content.</strong></p> <p>Some sites provide content for feature-phones through dynamic serving, based on the user's user-agent. To understand this configuration, make sure your desktop and smartphone pages have a self-referential alternate URL link for handheld (feature-phone) devices:</p> <p><pre><link rel="alternate" media="handheld" href="[current page URL]" /></pre></p> <p>This is a change from our previous guidance of only using the "vary: user-agent" HTTP header. We've updated our documentation on <a href="https://developers.google.com/webmasters/mobile-sites/mobile-seo/other-devices?hl=en#feature-phones">making feature-phone pages</a> accordingly. We hope adding this link element is possible on your side, and thank you for your help in this regard. We'll continue to show feature-phone URLs in search when we can recognize them, and when they're appropriate for users.</p> <p><strong>3. We're retiring feature-phone tools in Search Console</strong></p> <p>Without the feature-phone Googlebot, special sitemaps extensions for feature-phone, the Fetch as Google feature-phone options, and feature-phone crawl errors are no longer needed. We continue to support <a href="http://sitemaps.org/">sitemaps</a> and other sitemaps extensions (such as for <a href="https://developers.google.com/webmasters/videosearch/sitemaps">videos</a> or <a href="https://support.google.com/news/publisher/answer/74288">Google News</a>), as well as the other <a href="https://support.google.com/webmasters/answer/6066468">Fetch as Google</a> options in <a href="https://www.google.com/webmasters/tools">Search Console</a>. </p> <br><p>We've worked to make these changes as minimal as possible. Most websites don't serve feature-phone content, and wouldn't be affected. If your site has been providing feature-phone content, we thank you for your help in bringing the Internet to feature-phone users worldwide!</p> <p>For any questions, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">Webmaster Help Forums</a>!</p> <span class="byline-author">Posted by <a href="https://google.me/+johnmueller?rel=theauthor">John Mueller</a>, Webmaster Trends Analyst, Google Switzerland</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>Limited mobile devices, "<a href="https://www.google.com/search?q=wap+OR+wml+feature+phones&source=lnms&tbm=isch">feature-phones</a>", require a special form of markup or a transcoder for web content. Most websites don't provide feature-phone-compatible content in WAP/WML any more. Given these developments, we've made changes in how we crawl feature-phone content (note: these changes don't affect smartphone content):</p> <p><strong>1. We've retired the feature-phone Googlebot</strong></p> <p>We won't be using the feature-phone user-agents for crawling for search going forward. </p> <p><strong>2. Use "handheld" link annotations for dynamic serving of feature-phone content.</strong></p> <p>Some sites provide content for feature-phones through dynamic serving, based on the user's user-agent. To understand this configuration, make sure your desktop and smartphone pages have a self-referential alternate URL link for handheld (feature-phone) devices:</p> <p><pre><link rel="alternate" media="handheld" href="[current page URL]" /></pre></p> <p>This is a change from our previous guidance of only using the "vary: user-agent" HTTP header. We've updated our documentation on <a href="https://developers.google.com/webmasters/mobile-sites/mobile-seo/other-devices?hl=en#feature-phones">making feature-phone pages</a> accordingly. We hope adding this link element is possible on your side, and thank you for your help in this regard. We'll continue to show feature-phone URLs in search when we can recognize them, and when they're appropriate for users.</p> <p><strong>3. We're retiring feature-phone tools in Search Console</strong></p> <p>Without the feature-phone Googlebot, special sitemaps extensions for feature-phone, the Fetch as Google feature-phone options, and feature-phone crawl errors are no longer needed. We continue to support <a href="http://sitemaps.org/">sitemaps</a> and other sitemaps extensions (such as for <a href="https://developers.google.com/webmasters/videosearch/sitemaps">videos</a> or <a href="https://support.google.com/news/publisher/answer/74288">Google News</a>), as well as the other <a href="https://support.google.com/webmasters/answer/6066468">Fetch as Google</a> options in <a href="https://www.google.com/webmasters/tools">Search Console</a>. </p> <br><p>We've worked to make these changes as minimal as possible. Most websites don't serve feature-phone content, and wouldn't be affected. If your site has been providing feature-phone content, we thank you for your help in bringing the Internet to feature-phone users worldwide!</p> <p>For any questions, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">Webmaster Help Forums</a>!</p> <span class="byline-author">Posted by <a href="https://google.me/+johnmueller?rel=theauthor">John Mueller</a>, Webmaster Trends Analyst, Google Switzerland</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:An update on Google's feature-phone crawling & indexing&url=https://webmasters.googleblog.com/2016/11/an-update-on-googles-feature-phone.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2016/11/an-update-on-googles-feature-phone.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2016/11/an-update-on-googles-feature-phone.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/mobile?hl=en' rel='tag'> mobile </a> </span> </div> </div> </div> <div class='post' data-id='156979147313381852' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2016/11/building-indexable-progressive-web-apps.html?hl=en' itemprop='url' title='Building Indexable Progressive Web Apps'> Building Indexable Progressive Web Apps </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, November 09, 2016 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p><a href="https://developers.google.com/web/progressive-web-apps/">Progressive Web Apps</a> (PWAs) are taking advantage of new technologies to bring the best of mobile sites and native applications to users -- and they’re one of the most exciting new ideas on the web. But to truly have an impact, it's important that they’re indexable and linkable. Every recommendation presented in this article is an existing best practice for indexability -- regardless of whether you're building a Progressive Web App or a simple static website. Nonetheless, we have collated these best practices to provide a checklist to guide you:</p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgVKTQB5hnuptyyfnJ8YRWMJk_CXL0Vn86oYlbVeLDI1tE68GM71kiK6izDCUdzwLhP-q301t-IhnZNrjrDGqvnhpxPon62wyCZXM2Gj00kN6sy8qP9uLk7raNh9CQrHcssG1/s1600/pwa_roadshow_summit.JPG" imageanchor="1" ><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgVKTQB5hnuptyyfnJ8YRWMJk_CXL0Vn86oYlbVeLDI1tE68GM71kiK6izDCUdzwLhP-q301t-IhnZNrjrDGqvnhpxPon62wyCZXM2Gj00kN6sy8qP9uLk7raNh9CQrHcssG1/s400/pwa_roadshow_summit.JPG" width="400" /></a> <h3>Make Your Content Crawlable</h3> <p><b>Why?</b> Historically, websites would always generate or render their HTML on the server which is the simplest way to ensure your content is directly linkable. Web applications popularised the concept of client-side rendering in which content is updated dynamically on the page as the users navigates without requiring the page to be reloaded.</p> <p>The modern approach is hybrid rendering, in which server-side rendering is used when a user navigates directly to a URL and client-side rendering is used after the initial page load for subsequent navigation and asynchronous requests.</p> <p>Our <a href="https://server-dot-indexable-pwa.appspot.com">server-side PWA sample</a> demonstrates pure server-side rendering, while our <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid PWA sample</a> demonstrates the combined approach.</p> <p>If you are unfamiliar with the <b>server-side</b> and <b>client-side</b> rendering terminology, check out these articles on the web read <a href="http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/">here</a> and <a href="https://www.smashingmagazine.com/2016/03/server-side-rendering-react-node-express/">here.</a></p> <style> .boxbox { width: 100%; word-wrap:break-word; padding: 0.2em; } .badbox { background-color: #eba; } .goodbox { background-color: #ded; } .avoidbox { background-color: #ffd; } .boxbox h5 { font-size: 1em; font-weight: bold; margin: 0;} .boxbox p { margin-top: 0.6em; margin-bottom: 0.6em; } br.endboxen { clear: both; } h3.subhead { margin-top: 2em; } </style> <!-- yeah, maybe not https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiDo1cnZ20Nt74nTxpmAjsKzuyLRYZ1Y6NDJGNceOHckDhGdGJJCkXduzty3nNFmIOHYEVrY0RQF-WGQ2yjshYSqRU1HrGC2UiLhPT_AQ212KJlR-joBSC-Xy_3-nPltMFHVL0/s1600/css.gif <style> .boxbox { float:left; min-width: 31%; max-width: 300px; word-wrap:break-word; padding: 0.2em;} .badbox { background-color: #eba; } .goodbox { background-color: #ded; } .avoidbox { background-color: #ffd; } .boxbox h5 { font-size: 1em; font-weight: bold; margin: 0.5em 0;} br.endboxen { clear: both; } </style> --> <!-- <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>box</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>box</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>box</p> </div> <br class="endboxen" /> --> <div class="boxbox goodbox"> <h5 class="subhead">Best Practice:</h5> <p>Use server-side or hybrid rendering so users receive the content in the initial payload of their web request.</p> <p>Always ensure your URLs are independently accessible:</p> <p>https://www.example.com/product/25/</p> <p>The above should deep link to that particular resource.</p> <p>If you can’t support server-side or hybrid rendering for your Progressive Web App and you decide to use client-side rendering, we recommend using the Google Search Console “Fetch as Google tool” to verify your content successfully renders for our search crawler.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don't redirect users accessing deep links back to your web app's homepage.</p> <p>Additionally, serving an error page to users instead of deep linking should also be avoided.</p> </div> <br class="endboxen" /> <h3 class="subhead">Provide Clean URLs</h3> <p><b>Why?</b> Fragment identifiers (#user/24601/ or #!user/24601/) were an effective workaround for browsers to AJAX new content from a server without reloading the page. This design is known as client-side rendering.</p> <p>However, the fragment identifier syntax isn’t compatible with some web tools, frameworks and protocols such as <a href="http://ogp.me/">Facebook’s Open Graph protocol</a>.</p> <p>The <a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API">History API</a> enables us to update the URL without fragment identifiers while still fetching resources asynchronously and therefore avoiding page reloads -- it’s the best of both worlds. The AJAX crawling scheme (with its #! / escaped-fragment URLs) made sense at its time, but is now no longer recommended. </p> <p>Our <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid PWA</a> and <a href="https://client-dot-indexable-pwa.appspot.com">client-side PWA samples</a> demonstrate the History API.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Provide clean URLs without fragment identifiers (# or #!) such as:</p> <p>https://www.example.com/product/25/</p> <p>If using client-side or hybrid rendering be sure to support browser navigation with the History API.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>Using the #! URL structure to drive unique URLs is discouraged:</p> <p>https://www.example.com/#!product/25/</p> <p>It was introduced as a workaround before the advent of the History API. It is considered a separate pattern to the purely # URL structure.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Using the # URL structure without the accompanying ! symbol is unsupported:</p> <p>https://www.example.com/#product/25/</p> <p>This URL structure is already a concept in the web and relates to deep linking into content on a particular page.</p> </div> <br class="endboxen" /> <h3 class="subhead">Specify Canonical URLs</h3> <p><b>Why?</b> The best way to eliminate confusion for indexing when the same content is available under multiple URLs (be it the same or different domains) is to mark one page as the canonical, and all other pages that duplicate that content to refer to it.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Include the following tag across all pages mirroring a particular piece of content:</p> <p><pre><link rel="canonical" href="https://www.example.com/your-url/" /></pre></p> <p>If you are supporting Accelerated Mobile Pages be sure to correctly use its counterpart rel=”amphtml” instruction as well.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>Avoid purposely duplicating content across multiple URLs and not using the rel="canonical" link element.</p> <p>For example, the rel="canonical" link element can reduce ambiguity for URLs with tracking parameters.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid creating conflicting canonical references between your pages.</p> </div> <br class="endboxen" /> <h3 class="subhead">Design for Multiple Devices</h3> <p><b>Why?</b> It’s important that all your users get the best experience possible when viewing your website, regardless of their device. </p> <p>Make your site <a href="https://developers.google.com/web/fundamentals/design-and-ui/responsive/fundamentals/?hl=en">responsive in its design</a> -- fonts, margins, paddings, buttons and general design of your site should scale dynamically based on screen resolutions and device viewports. </p> <p>Small images scaled up for desktop or tablet devices give a poor experience. Conversely, super high resolution images take a long time to download on mobile phones and may impact mobile scroll performance.</p> <p>Read more <a href="https://medium.com/@owencm/designing-great-uis-for-progressive-web-apps-dd38c1d20f7#.c0avg96qb">UX for PWAs here</a>.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use <a href="https://developers.google.com/web/fundamentals/design-and-ui/media/images/images-in-markup?hl=en">“srcset” attribute</a> to fetch different resolution images for different density screens to avoid downloading images larger than the device’s screen is capable of displaying.</p> <p>Scale your font size and line height to ensure your text is legible no matter the size of the device. Similarly ensure the padding and margins of elements also scale sensibly.</p> <p>Test <a href="https://developers.google.com/web/tools/chrome-devtools/iterate/device-mode/emulate-mobile-viewports?hl=en">various screen resolutions</a> using the <a href="https://developers.google.com/web/tools/chrome-devtools/iterate/device-mode/?hl=en">Chrome Developer Tool’s Device Mode</a> feature and <a href="https://search.google.com/search-console/mobile-friendly">Mobile Friendly Test tool</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don't show different content to users than you show to Google. If you use <a href="https://support.google.com/webmasters/answer/2604723?hl=en">redirects or user agent detection</a> (a.k.a. browser sniffing or <a href="https://developers.google.com/webmasters/mobile-sites/mobile-seo/dynamic-serving?hl=en">dynamic serving</a>) to alter the design of your site for different devices it’s important that the content itself remains the same.</p> <p>Use the Search Console “Fetch as Google” tool to verify the content fetched by Google matches the content a user sees.</p> <p>For usability reasons, avoid using fixed-size fonts.</p> </div> <br style="clear: both" /> <h3 class="subhead">Develop Iteratively</h3> <p><b>Why?</b> One of the safest paths to take when adding features to a web application is to make changes iteratively. If you add features one at a time you can observe the impact of each individual change.</p> <p>Alternatively many developers prefer to view their progressive web application as an opportunity to overhaul their mobile site in one fell swoop -- developing the new web app in an isolated environment and swapping it with their existing mobile site once ready.</p> <p>When developing features iteratively try to break the changes into separate pieces. For example, if you intend to move from server-side rendering to hybrid rendering then tackle that as a single iteration -- rather than in combination with other features.</p> <p>Both approaches have their own pros and cons. Iterating reduces the complexity of dealing with search indexability as the transition is continuous. However, iterating might result in a slower development process and potentially a less innovative overhaul if development is not starting from scratch.</p> <p>In either case, the most sensitive areas to keep an eye on are your canonical URLs and your site’s robots.txt configuration.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Iterate on your website incrementally by adding new features piece by piece.</p> <p>For example, if don’t support HTTPS yet then start by migrating to a secure site.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>If you’ve developed your progressive web app in an isolated environment, then avoid launching it without checking the rel-canonical links and robots.txt are setup appropriately.</p> <p>Ensure your rel-canonical links point to the real site and that your robots.txt configuration allows crawlers to crawl your new site.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>It’s logical to prevent crawlers from indexing your in-development site before launch but don’t forget to unblock crawlers from accessing your new site when you launch.</p> </div> <br class="endboxen" /> <h3 class="subhead">Use Progressive Enhancement</h3> <p><b>Why?</b> Wherever possible it’s important to detect browser features before using them. Feature detection is also better than testing for browsers that you believe support a given feature.</p> <p>A common bad practice in the past was to enable or disable features by testing which browser the user had. However, as browsers are constantly evolving with features this technique is strongly discouraged.</p> <p>Service Worker is a relatively new technology and it’s important to not break compatibility in the pursuit of progress -- it's a perfect example of when to use progressive enhancement.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Before registering a Service Worker check for the availability of its API:</p> <p><pre>if ('serviceWorker' in navigator) { ... </pre> <p>Use per API detection method for all your website’s features.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Never use the browser’s user agent to enable or disable features in your web app. Always check whether the feature’s API is available and gracefully degrade if unavailable.</p> <p>Avoid updating or launching your site without testing across multiple browsers! Check your site analytics to learn which browsers are most popular among your user base.</p> </div> <br class="endboxen" /> <h3 class="subhead">Test with Search Console</h3> <p><b>Why?</b> It’s important to understand how Google Search views your site’s content. You can use <a href="https://www.google.com/webmasters/tools/home?hl=en">Search Console</a> to <a href="https://support.google.com/webmasters/answer/6066468?hl=en">fetch individual URLs from your site</a> and see how Google Search views them using the “Crawl > Fetch as Google“ feature. Search Console will process your JavaScript and render the page when that option is selected; otherwise only the raw HTML response is shown </p> <p>Google Search Console also analyses the content on your page in a variety of ways including detecting the presence of Structured Data, Rich Cards, Sitelinks & Accelerated Mobile Pages.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Monitor your site using Search Console and explore its features including “Fetch as Google”.</p> <p>Provide a Sitemap via Search Console “Crawl > Sitemaps” It can be an effective way to ensure Google Search is aware of all your site’s pages.</p> </div> <br class="endboxen" /> <h3 class="subhead">Annotate with Schema.org structured data</h3> <p><b>Why?</b> <a href="https://schema.org/">Schema.org</a> structured data is a flexible vocabulary for summarizing the most important parts of your page as machine-processable data. This can be as general as simply saying that a page is a NewsArticle, or as specific as detailing the location, band name, venue and ticket vendor for a touring band, or summarizing the ingredients and steps for a recipe.</p> <p>The use of this metadata may not make sense for every page on your web application but it’s recommended where it’s sensible. Google extracts it after the page is rendered.</p> <p>There are a variety of data types including “NewsArticle”, “Recipe” & “Product” to name a few. Explore all the <a href="https://developers.google.com/search/docs/data-types/data-type-selector">supported data types here</a>.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Verify that your Schema.org meta data is correct using Google’s <a href="https://search.google.com/structured-data/testing-tool/">Structured Data Testing Tool</a>.</p> <p>Check that the data you provided is appearing and there are no errors present.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid using a data type that doesn’t match your page’s actual content. For example don’t use “Recipe” for a T-Shirt you’re selling -- use “Product” instead.</p> </div> <br class="endboxen" /> <h3 class="subhead">Annotate with Open Graph & Twitter Cards</h3> <p><b>Why?</b> In addition to the Schema.org metadata it can be helpful to add support for Facebook’s Open Graph protocol and Twitter rich cards as well.</p> <p>These metadata formats improve the user experience when your content is shared on their corresponding social networks.</p> <p>If your existing site or web application utilises these formats it’s important to ensure they are included in your progressive web application as well for optimal virality.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Test your Open Graph markup with the <a href="https://developers.facebook.com/tools/debug/">Facebook Object Debugger Tool</a>.</p> <p>Familiarise yourself with <a href="https://dev.twitter.com/cards/overview">Twitter’s metadata format</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don’t forget to include these formats if your existing site supports them.</p> </div> <br class="endboxen" /> <h3 class="subhead">Test with Multiple Browsers</h3> <p><b>Why?</b> Clearly from a user perspective it’s important that a website behaviors the same across all browsers. While the experience might adapt for different screen sizes we all expect a mobile site to work the same on similarly sized devices whether it’s an iPhone or an Android mobile phone.</p> <p>While the web can be perceived as fragmented due to number of browsers in use around the world, this variety and competition is part of what makes the web such an innovative platform. Thankfully, web standards have never been more mature than they are now and modern tools enable developers to build rich, cross browser compatible websites with confidence.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use cross browser testing tools such as <a href="https://www.browserstack.com/">BrowserStack.com</a>, <a href="https://www.browserling.com/">Browserling.com</a> or <a href="http://browsershots.org/">BrowserShots.org</a> to ensure your PWA is cross browser compatible.</p> </div> <br class="endboxen" /> <h3 class="subhead">Measure Page Load Performance</h3> <p><b>Why?</b> The faster a website loads for a user the better their user experience will be. Optimizing for page speed is already a well known focus in web development but sometimes when developing a new version of a site the necessary optimizations are not considered a high priority.</p> <p>When developing a progressive web application we recommend measuring the performance of your page load speed and optimizing before launching the site for the best results. </p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use tools such as <a href="https://developers.google.com/speed/pagespeed/insights/">Page Speed Insights</a> and <a href="http://webpagetest.org">Web Page Test</a> to measure the page load performance of your site. While Googlebot has a bit more patience in rendering, <a href="https://www.thinkwithgoogle.com/articles/mobile-page-speed-load-time.html">research has shown</a> that 40% of consumers will leave a page that takes longer than three seconds to load..</p> <p>Read more about our web page performance recommendations and the <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/">critical rendering path here</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid leaving optimization as a post-launch step. If your website’s content loads quickly before migrating to a new progressive web application then it’s important to not regress in your optimizations.</p> </div> <br class="endboxen" /> <p>We hope that the above checklist is useful and provides the right guidance to help you develop your Progressive Web Applications with indexability in mind. </p> <p>As you get started, be sure to check out our <a href="https://github.com/google/indexable-pwa-samples">Progressive Web App indexability samples</a> that demonstrate <a href="https://server-dot-indexable-pwa.appspot.com">server-side</a>, <a href="https://client-dot-indexable-pwa.appspot.com">client-side</a> and <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid</a> rendering. As always, if you have any questions, please reach out on our <a href="https://support.google.com/webmasters/go/community">Webmaster Forums</a>. </p> <br> <span class="byline-author">Posted by Tom Greenaway, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p><a href="https://developers.google.com/web/progressive-web-apps/">Progressive Web Apps</a> (PWAs) are taking advantage of new technologies to bring the best of mobile sites and native applications to users -- and they’re one of the most exciting new ideas on the web. But to truly have an impact, it's important that they’re indexable and linkable. Every recommendation presented in this article is an existing best practice for indexability -- regardless of whether you're building a Progressive Web App or a simple static website. Nonetheless, we have collated these best practices to provide a checklist to guide you:</p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgVKTQB5hnuptyyfnJ8YRWMJk_CXL0Vn86oYlbVeLDI1tE68GM71kiK6izDCUdzwLhP-q301t-IhnZNrjrDGqvnhpxPon62wyCZXM2Gj00kN6sy8qP9uLk7raNh9CQrHcssG1/s1600/pwa_roadshow_summit.JPG" imageanchor="1" ><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVgVKTQB5hnuptyyfnJ8YRWMJk_CXL0Vn86oYlbVeLDI1tE68GM71kiK6izDCUdzwLhP-q301t-IhnZNrjrDGqvnhpxPon62wyCZXM2Gj00kN6sy8qP9uLk7raNh9CQrHcssG1/s400/pwa_roadshow_summit.JPG" width="400" /></a> <h3>Make Your Content Crawlable</h3> <p><b>Why?</b> Historically, websites would always generate or render their HTML on the server which is the simplest way to ensure your content is directly linkable. Web applications popularised the concept of client-side rendering in which content is updated dynamically on the page as the users navigates without requiring the page to be reloaded.</p> <p>The modern approach is hybrid rendering, in which server-side rendering is used when a user navigates directly to a URL and client-side rendering is used after the initial page load for subsequent navigation and asynchronous requests.</p> <p>Our <a href="https://server-dot-indexable-pwa.appspot.com">server-side PWA sample</a> demonstrates pure server-side rendering, while our <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid PWA sample</a> demonstrates the combined approach.</p> <p>If you are unfamiliar with the <b>server-side</b> and <b>client-side</b> rendering terminology, check out these articles on the web read <a href="http://openmymind.net/2012/5/30/Client-Side-vs-Server-Side-Rendering/">here</a> and <a href="https://www.smashingmagazine.com/2016/03/server-side-rendering-react-node-express/">here.</a></p> <style> .boxbox { width: 100%; word-wrap:break-word; padding: 0.2em; } .badbox { background-color: #eba; } .goodbox { background-color: #ded; } .avoidbox { background-color: #ffd; } .boxbox h5 { font-size: 1em; font-weight: bold; margin: 0;} .boxbox p { margin-top: 0.6em; margin-bottom: 0.6em; } br.endboxen { clear: both; } h3.subhead { margin-top: 2em; } </style> <!-- yeah, maybe not https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiDo1cnZ20Nt74nTxpmAjsKzuyLRYZ1Y6NDJGNceOHckDhGdGJJCkXduzty3nNFmIOHYEVrY0RQF-WGQ2yjshYSqRU1HrGC2UiLhPT_AQ212KJlR-joBSC-Xy_3-nPltMFHVL0/s1600/css.gif <style> .boxbox { float:left; min-width: 31%; max-width: 300px; word-wrap:break-word; padding: 0.2em;} .badbox { background-color: #eba; } .goodbox { background-color: #ded; } .avoidbox { background-color: #ffd; } .boxbox h5 { font-size: 1em; font-weight: bold; margin: 0.5em 0;} br.endboxen { clear: both; } </style> --> <!-- <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>box</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>box</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>box</p> </div> <br class="endboxen" /> --> <div class="boxbox goodbox"> <h5 class="subhead">Best Practice:</h5> <p>Use server-side or hybrid rendering so users receive the content in the initial payload of their web request.</p> <p>Always ensure your URLs are independently accessible:</p> <p>https://www.example.com/product/25/</p> <p>The above should deep link to that particular resource.</p> <p>If you can’t support server-side or hybrid rendering for your Progressive Web App and you decide to use client-side rendering, we recommend using the Google Search Console “Fetch as Google tool” to verify your content successfully renders for our search crawler.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don't redirect users accessing deep links back to your web app's homepage.</p> <p>Additionally, serving an error page to users instead of deep linking should also be avoided.</p> </div> <br class="endboxen" /> <h3 class="subhead">Provide Clean URLs</h3> <p><b>Why?</b> Fragment identifiers (#user/24601/ or #!user/24601/) were an effective workaround for browsers to AJAX new content from a server without reloading the page. This design is known as client-side rendering.</p> <p>However, the fragment identifier syntax isn’t compatible with some web tools, frameworks and protocols such as <a href="http://ogp.me/">Facebook’s Open Graph protocol</a>.</p> <p>The <a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API">History API</a> enables us to update the URL without fragment identifiers while still fetching resources asynchronously and therefore avoiding page reloads -- it’s the best of both worlds. The AJAX crawling scheme (with its #! / escaped-fragment URLs) made sense at its time, but is now no longer recommended. </p> <p>Our <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid PWA</a> and <a href="https://client-dot-indexable-pwa.appspot.com">client-side PWA samples</a> demonstrate the History API.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Provide clean URLs without fragment identifiers (# or #!) such as:</p> <p>https://www.example.com/product/25/</p> <p>If using client-side or hybrid rendering be sure to support browser navigation with the History API.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>Using the #! URL structure to drive unique URLs is discouraged:</p> <p>https://www.example.com/#!product/25/</p> <p>It was introduced as a workaround before the advent of the History API. It is considered a separate pattern to the purely # URL structure.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Using the # URL structure without the accompanying ! symbol is unsupported:</p> <p>https://www.example.com/#product/25/</p> <p>This URL structure is already a concept in the web and relates to deep linking into content on a particular page.</p> </div> <br class="endboxen" /> <h3 class="subhead">Specify Canonical URLs</h3> <p><b>Why?</b> The best way to eliminate confusion for indexing when the same content is available under multiple URLs (be it the same or different domains) is to mark one page as the canonical, and all other pages that duplicate that content to refer to it.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Include the following tag across all pages mirroring a particular piece of content:</p> <p><pre><link rel="canonical" href="https://www.example.com/your-url/" /></pre></p> <p>If you are supporting Accelerated Mobile Pages be sure to correctly use its counterpart rel=”amphtml” instruction as well.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>Avoid purposely duplicating content across multiple URLs and not using the rel="canonical" link element.</p> <p>For example, the rel="canonical" link element can reduce ambiguity for URLs with tracking parameters.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid creating conflicting canonical references between your pages.</p> </div> <br class="endboxen" /> <h3 class="subhead">Design for Multiple Devices</h3> <p><b>Why?</b> It’s important that all your users get the best experience possible when viewing your website, regardless of their device. </p> <p>Make your site <a href="https://developers.google.com/web/fundamentals/design-and-ui/responsive/fundamentals/?hl=en">responsive in its design</a> -- fonts, margins, paddings, buttons and general design of your site should scale dynamically based on screen resolutions and device viewports. </p> <p>Small images scaled up for desktop or tablet devices give a poor experience. Conversely, super high resolution images take a long time to download on mobile phones and may impact mobile scroll performance.</p> <p>Read more <a href="https://medium.com/@owencm/designing-great-uis-for-progressive-web-apps-dd38c1d20f7#.c0avg96qb">UX for PWAs here</a>.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use <a href="https://developers.google.com/web/fundamentals/design-and-ui/media/images/images-in-markup?hl=en">“srcset” attribute</a> to fetch different resolution images for different density screens to avoid downloading images larger than the device’s screen is capable of displaying.</p> <p>Scale your font size and line height to ensure your text is legible no matter the size of the device. Similarly ensure the padding and margins of elements also scale sensibly.</p> <p>Test <a href="https://developers.google.com/web/tools/chrome-devtools/iterate/device-mode/emulate-mobile-viewports?hl=en">various screen resolutions</a> using the <a href="https://developers.google.com/web/tools/chrome-devtools/iterate/device-mode/?hl=en">Chrome Developer Tool’s Device Mode</a> feature and <a href="https://search.google.com/search-console/mobile-friendly">Mobile Friendly Test tool</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don't show different content to users than you show to Google. If you use <a href="https://support.google.com/webmasters/answer/2604723?hl=en">redirects or user agent detection</a> (a.k.a. browser sniffing or <a href="https://developers.google.com/webmasters/mobile-sites/mobile-seo/dynamic-serving?hl=en">dynamic serving</a>) to alter the design of your site for different devices it’s important that the content itself remains the same.</p> <p>Use the Search Console “Fetch as Google” tool to verify the content fetched by Google matches the content a user sees.</p> <p>For usability reasons, avoid using fixed-size fonts.</p> </div> <br style="clear: both" /> <h3 class="subhead">Develop Iteratively</h3> <p><b>Why?</b> One of the safest paths to take when adding features to a web application is to make changes iteratively. If you add features one at a time you can observe the impact of each individual change.</p> <p>Alternatively many developers prefer to view their progressive web application as an opportunity to overhaul their mobile site in one fell swoop -- developing the new web app in an isolated environment and swapping it with their existing mobile site once ready.</p> <p>When developing features iteratively try to break the changes into separate pieces. For example, if you intend to move from server-side rendering to hybrid rendering then tackle that as a single iteration -- rather than in combination with other features.</p> <p>Both approaches have their own pros and cons. Iterating reduces the complexity of dealing with search indexability as the transition is continuous. However, iterating might result in a slower development process and potentially a less innovative overhaul if development is not starting from scratch.</p> <p>In either case, the most sensitive areas to keep an eye on are your canonical URLs and your site’s robots.txt configuration.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Iterate on your website incrementally by adding new features piece by piece.</p> <p>For example, if don’t support HTTPS yet then start by migrating to a secure site.</p> </div> <div class="boxbox avoidbox"> <h5>Avoid:</h5> <p>If you’ve developed your progressive web app in an isolated environment, then avoid launching it without checking the rel-canonical links and robots.txt are setup appropriately.</p> <p>Ensure your rel-canonical links point to the real site and that your robots.txt configuration allows crawlers to crawl your new site.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>It’s logical to prevent crawlers from indexing your in-development site before launch but don’t forget to unblock crawlers from accessing your new site when you launch.</p> </div> <br class="endboxen" /> <h3 class="subhead">Use Progressive Enhancement</h3> <p><b>Why?</b> Wherever possible it’s important to detect browser features before using them. Feature detection is also better than testing for browsers that you believe support a given feature.</p> <p>A common bad practice in the past was to enable or disable features by testing which browser the user had. However, as browsers are constantly evolving with features this technique is strongly discouraged.</p> <p>Service Worker is a relatively new technology and it’s important to not break compatibility in the pursuit of progress -- it's a perfect example of when to use progressive enhancement.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Before registering a Service Worker check for the availability of its API:</p> <p><pre>if ('serviceWorker' in navigator) { ... </pre> <p>Use per API detection method for all your website’s features.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Never use the browser’s user agent to enable or disable features in your web app. Always check whether the feature’s API is available and gracefully degrade if unavailable.</p> <p>Avoid updating or launching your site without testing across multiple browsers! Check your site analytics to learn which browsers are most popular among your user base.</p> </div> <br class="endboxen" /> <h3 class="subhead">Test with Search Console</h3> <p><b>Why?</b> It’s important to understand how Google Search views your site’s content. You can use <a href="https://www.google.com/webmasters/tools/home?hl=en">Search Console</a> to <a href="https://support.google.com/webmasters/answer/6066468?hl=en">fetch individual URLs from your site</a> and see how Google Search views them using the “Crawl > Fetch as Google“ feature. Search Console will process your JavaScript and render the page when that option is selected; otherwise only the raw HTML response is shown </p> <p>Google Search Console also analyses the content on your page in a variety of ways including detecting the presence of Structured Data, Rich Cards, Sitelinks & Accelerated Mobile Pages.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Monitor your site using Search Console and explore its features including “Fetch as Google”.</p> <p>Provide a Sitemap via Search Console “Crawl > Sitemaps” It can be an effective way to ensure Google Search is aware of all your site’s pages.</p> </div> <br class="endboxen" /> <h3 class="subhead">Annotate with Schema.org structured data</h3> <p><b>Why?</b> <a href="https://schema.org/">Schema.org</a> structured data is a flexible vocabulary for summarizing the most important parts of your page as machine-processable data. This can be as general as simply saying that a page is a NewsArticle, or as specific as detailing the location, band name, venue and ticket vendor for a touring band, or summarizing the ingredients and steps for a recipe.</p> <p>The use of this metadata may not make sense for every page on your web application but it’s recommended where it’s sensible. Google extracts it after the page is rendered.</p> <p>There are a variety of data types including “NewsArticle”, “Recipe” & “Product” to name a few. Explore all the <a href="https://developers.google.com/search/docs/data-types/data-type-selector">supported data types here</a>.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Verify that your Schema.org meta data is correct using Google’s <a href="https://search.google.com/structured-data/testing-tool/">Structured Data Testing Tool</a>.</p> <p>Check that the data you provided is appearing and there are no errors present.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid using a data type that doesn’t match your page’s actual content. For example don’t use “Recipe” for a T-Shirt you’re selling -- use “Product” instead.</p> </div> <br class="endboxen" /> <h3 class="subhead">Annotate with Open Graph & Twitter Cards</h3> <p><b>Why?</b> In addition to the Schema.org metadata it can be helpful to add support for Facebook’s Open Graph protocol and Twitter rich cards as well.</p> <p>These metadata formats improve the user experience when your content is shared on their corresponding social networks.</p> <p>If your existing site or web application utilises these formats it’s important to ensure they are included in your progressive web application as well for optimal virality.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Test your Open Graph markup with the <a href="https://developers.facebook.com/tools/debug/">Facebook Object Debugger Tool</a>.</p> <p>Familiarise yourself with <a href="https://dev.twitter.com/cards/overview">Twitter’s metadata format</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Don’t forget to include these formats if your existing site supports them.</p> </div> <br class="endboxen" /> <h3 class="subhead">Test with Multiple Browsers</h3> <p><b>Why?</b> Clearly from a user perspective it’s important that a website behaviors the same across all browsers. While the experience might adapt for different screen sizes we all expect a mobile site to work the same on similarly sized devices whether it’s an iPhone or an Android mobile phone.</p> <p>While the web can be perceived as fragmented due to number of browsers in use around the world, this variety and competition is part of what makes the web such an innovative platform. Thankfully, web standards have never been more mature than they are now and modern tools enable developers to build rich, cross browser compatible websites with confidence.</p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use cross browser testing tools such as <a href="https://www.browserstack.com/">BrowserStack.com</a>, <a href="https://www.browserling.com/">Browserling.com</a> or <a href="http://browsershots.org/">BrowserShots.org</a> to ensure your PWA is cross browser compatible.</p> </div> <br class="endboxen" /> <h3 class="subhead">Measure Page Load Performance</h3> <p><b>Why?</b> The faster a website loads for a user the better their user experience will be. Optimizing for page speed is already a well known focus in web development but sometimes when developing a new version of a site the necessary optimizations are not considered a high priority.</p> <p>When developing a progressive web application we recommend measuring the performance of your page load speed and optimizing before launching the site for the best results. </p> <div class="boxbox goodbox"> <h5>Best Practice:</h5> <p>Use tools such as <a href="https://developers.google.com/speed/pagespeed/insights/">Page Speed Insights</a> and <a href="http://webpagetest.org">Web Page Test</a> to measure the page load performance of your site. While Googlebot has a bit more patience in rendering, <a href="https://www.thinkwithgoogle.com/articles/mobile-page-speed-load-time.html">research has shown</a> that 40% of consumers will leave a page that takes longer than three seconds to load..</p> <p>Read more about our web page performance recommendations and the <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/">critical rendering path here</a>.</p> </div> <div class="boxbox badbox"> <h5>Don’t:</h5> <p>Avoid leaving optimization as a post-launch step. If your website’s content loads quickly before migrating to a new progressive web application then it’s important to not regress in your optimizations.</p> </div> <br class="endboxen" /> <p>We hope that the above checklist is useful and provides the right guidance to help you develop your Progressive Web Applications with indexability in mind. </p> <p>As you get started, be sure to check out our <a href="https://github.com/google/indexable-pwa-samples">Progressive Web App indexability samples</a> that demonstrate <a href="https://server-dot-indexable-pwa.appspot.com">server-side</a>, <a href="https://client-dot-indexable-pwa.appspot.com">client-side</a> and <a href="https://hybrid-dot-indexable-pwa.appspot.com">hybrid</a> rendering. As always, if you have any questions, please reach out on our <a href="https://support.google.com/webmasters/go/community">Webmaster Forums</a>. </p> <br> <span class="byline-author">Posted by Tom Greenaway, Developer Advocate</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Building Indexable Progressive Web Apps&url=https://webmasters.googleblog.com/2016/11/building-indexable-progressive-web-apps.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2016/11/building-indexable-progressive-web-apps.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2016/11/building-indexable-progressive-web-apps.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/general%20tips?hl=en' rel='tag'> general tips </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/mobile-friendly?hl=en' rel='tag'> mobile-friendly </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/performance?hl=en' rel='tag'> performance </a> </span> </div> </div> </div> <div class='post' data-id='5192867457269807148' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html?hl=en' itemprop='url' title='Deprecating our AJAX crawling scheme'> Deprecating our AJAX crawling scheme </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 14, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>tl;dr: We are no longer recommending the <a href="https://developers.google.com/webmasters/ajax-crawling/">AJAX crawling</a> proposal we made <a href="http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html">back in 2009</a>.</p> <p>In 2009, we made a <a href="http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html">proposal to make AJAX pages crawlable</a>. Back then, our systems were not able to render and understand pages that use JavaScript to present content to users. Because "<a href="https://developers.google.com/webmasters/ajax-crawling/docs/learn-more">crawlers … [were] not able to see any content … created dynamically</a>," we proposed a set of practices that webmasters can follow in order to ensure that their AJAX-based applications are indexed by search engines.</p> <p>Times have changed. Today, as long as you're not blocking Googlebot from crawling your JavaScript or CSS files, we are generally able to <a href="http://googlewebmastercentral.blogspot.com/2014/05/understanding-web-pages-better.html">render and understand your web pages like modern browsers</a>. To reflect this improvement, we recently <a href="http://googlewebmastercentral.blogspot.com/2014/10/updating-our-technical-webmaster.html">updated our technical Webmaster Guidelines</a> to recommend against disallowing Googlebot from crawling your site's CSS or JS files. </p> <p>Since the assumptions for our 2009 proposal are no longer valid, we recommend following the principles of <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>. For example, you can use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API">History API pushState()</a> to ensure accessibility for a wider range of browsers (and our systems).</p> <p><b>Questions and answers</b></p> <p>Q: My site currently follows your recommendation and supports _escaped_fragment_. Would my site stop getting indexed now that you've deprecated your recommendation? <br>A: No, the site would still be indexed. In general, however, we recommend you implement industry best practices when you're making the next update for your site. Instead of the _escaped_fragment_ URLs, we'll generally crawl, render, and index the #! URLs.</p> <p>Q: Is moving away from the AJAX crawling proposal to industry best practices considered a site move? Do I need to implement redirects? <br>A: If your current setup is working fine, you should not have to immediately change anything. If you're building a new site or restructuring an already existing site, simply avoid introducing _escaped_fragment_ urls. .</p> <p>Q: I use a JavaScript framework and my webserver serves a pre-rendered page. Is that still ok? <br>A: In general, websites shouldn't pre-render pages only for Google -- we expect that you might pre-render pages for performance benefits for users and that you would follow progressive enhancement guidelines. If you pre-render pages, make sure that the content served to Googlebot matches the user's experience, both how it looks and how it interacts. Serving Googlebot different content than a normal user would see is considered cloaking, and would be against our Webmaster Guidelines.</p> <p>If you have any questions, feel free to post them here, or<a href="https://support.google.com/webmasters/go/community"> in the webmaster help forum</a>.</p> <br> <span class="byline-author">Posted by <a rel="author" href="https://plus.google.com/+KazushiNagayama/">Kazushi Nagayama</a>, Search Quality Analyst</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>tl;dr: We are no longer recommending the <a href="https://developers.google.com/webmasters/ajax-crawling/">AJAX crawling</a> proposal we made <a href="http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html">back in 2009</a>.</p> <p>In 2009, we made a <a href="http://googlewebmastercentral.blogspot.com/2009/10/proposal-for-making-ajax-crawlable.html">proposal to make AJAX pages crawlable</a>. Back then, our systems were not able to render and understand pages that use JavaScript to present content to users. Because "<a href="https://developers.google.com/webmasters/ajax-crawling/docs/learn-more">crawlers … [were] not able to see any content … created dynamically</a>," we proposed a set of practices that webmasters can follow in order to ensure that their AJAX-based applications are indexed by search engines.</p> <p>Times have changed. Today, as long as you're not blocking Googlebot from crawling your JavaScript or CSS files, we are generally able to <a href="http://googlewebmastercentral.blogspot.com/2014/05/understanding-web-pages-better.html">render and understand your web pages like modern browsers</a>. To reflect this improvement, we recently <a href="http://googlewebmastercentral.blogspot.com/2014/10/updating-our-technical-webmaster.html">updated our technical Webmaster Guidelines</a> to recommend against disallowing Googlebot from crawling your site's CSS or JS files. </p> <p>Since the assumptions for our 2009 proposal are no longer valid, we recommend following the principles of <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a>. For example, you can use the <a href="https://developer.mozilla.org/en-US/docs/Web/API/History_API">History API pushState()</a> to ensure accessibility for a wider range of browsers (and our systems).</p> <p><b>Questions and answers</b></p> <p>Q: My site currently follows your recommendation and supports _escaped_fragment_. Would my site stop getting indexed now that you've deprecated your recommendation? <br>A: No, the site would still be indexed. In general, however, we recommend you implement industry best practices when you're making the next update for your site. Instead of the _escaped_fragment_ URLs, we'll generally crawl, render, and index the #! URLs.</p> <p>Q: Is moving away from the AJAX crawling proposal to industry best practices considered a site move? Do I need to implement redirects? <br>A: If your current setup is working fine, you should not have to immediately change anything. If you're building a new site or restructuring an already existing site, simply avoid introducing _escaped_fragment_ urls. .</p> <p>Q: I use a JavaScript framework and my webserver serves a pre-rendered page. Is that still ok? <br>A: In general, websites shouldn't pre-render pages only for Google -- we expect that you might pre-render pages for performance benefits for users and that you would follow progressive enhancement guidelines. If you pre-render pages, make sure that the content served to Googlebot matches the user's experience, both how it looks and how it interacts. Serving Googlebot different content than a normal user would see is considered cloaking, and would be against our Webmaster Guidelines.</p> <p>If you have any questions, feel free to post them here, or<a href="https://support.google.com/webmasters/go/community"> in the webmaster help forum</a>.</p> <br> <span class="byline-author">Posted by <a rel="author" href="https://plus.google.com/+KazushiNagayama/">Kazushi Nagayama</a>, Search Quality Analyst</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Deprecating our AJAX crawling scheme&url=https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2015/10/deprecating-our-ajax-crawling-scheme.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> </span> </div> </div> </div> <div class='post' data-id='3841450457060983078' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2015/03/deprecation-of-old-webmaster-tools-api.html?hl=en' itemprop='url' title='Deprecation of the old Webmaster Tools API'> Deprecation of the old Webmaster Tools API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, March 12, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Last fall we announced the <a href="http://googlewebmastercentral.blogspot.ch/2014/09/an-update-to-webmaster-tools-api.html">new Webmaster Tools API</a>, which helps you to automate a number of important aspects using code. With the <a href="http://googledevelopers.blogspot.ch/2015/02/reminder-clientlogin-shutdown-scheduled.html">pending shutdown of ClientLogin</a>, we're going to turn down the <a href="http://googlewebmastercentral.blogspot.ch/2008/06/get-cooking-with-webmaster-tools-api.html">old Webmaster Tools API</a> on April 20, 2015. </p> <p>If you're still using the old API, getting started with the new one is fairly easy. The new API covers everything from the old version except for messages and keywords. We have examples in <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-python">Python</a>, <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-java">Java</a>, as well as <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-oacurl">OACurl</a> (for command-line fans & quick testing). Additionally, there's the <a href="https://developers.google.com/site-verification/">Site Verification API</a> to add sites programmatically to your account. The <a href="http://googlewebmastercentral.blogspot.ch/2011/12/download-search-queries-data-using.html">Python search query data download</a> will continue to be available for the moment, and replaced by an API in the upcoming quarters. </p> <p>As always, should you have any questions, feel free to comment here, or post in our <a href="https://support.google.com/webmasters/go/community">Webmaster Help Forum</a>. </p> <br> <span class="byline-author">Posted by <a href="//google.com/+johnmueller?rel=next">John Mueller</a>, fan of command lines & APIs, Google Zuerich</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Last fall we announced the <a href="http://googlewebmastercentral.blogspot.ch/2014/09/an-update-to-webmaster-tools-api.html">new Webmaster Tools API</a>, which helps you to automate a number of important aspects using code. With the <a href="http://googledevelopers.blogspot.ch/2015/02/reminder-clientlogin-shutdown-scheduled.html">pending shutdown of ClientLogin</a>, we're going to turn down the <a href="http://googlewebmastercentral.blogspot.ch/2008/06/get-cooking-with-webmaster-tools-api.html">old Webmaster Tools API</a> on April 20, 2015. </p> <p>If you're still using the old API, getting started with the new one is fairly easy. The new API covers everything from the old version except for messages and keywords. We have examples in <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-python">Python</a>, <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-java">Java</a>, as well as <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-oacurl">OACurl</a> (for command-line fans & quick testing). Additionally, there's the <a href="https://developers.google.com/site-verification/">Site Verification API</a> to add sites programmatically to your account. The <a href="http://googlewebmastercentral.blogspot.ch/2011/12/download-search-queries-data-using.html">Python search query data download</a> will continue to be available for the moment, and replaced by an API in the upcoming quarters. </p> <p>As always, should you have any questions, feel free to comment here, or post in our <a href="https://support.google.com/webmasters/go/community">Webmaster Help Forum</a>. </p> <br> <span class="byline-author">Posted by <a href="//google.com/+johnmueller?rel=next">John Mueller</a>, fan of command lines & APIs, Google Zuerich</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Deprecation of the old Webmaster Tools API&url=https://webmasters.googleblog.com/2015/03/deprecation-of-old-webmaster-tools-api.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2015/03/deprecation-of-old-webmaster-tools-api.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2015/03/deprecation-of-old-webmaster-tools-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='2491904437626700142' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2015/02/finding-more-mobile-friendly-search.html?hl=en' itemprop='url' title='Finding more mobile-friendly search results'> Finding more mobile-friendly search results </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, February 26, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: all</p> <p>When it comes to search on mobile devices, users should get the most relevant and timely results, no matter if the information lives on mobile-friendly web pages or apps. As more people use mobile devices to access the internet, our <a href="//www.google.com/insidesearch/howsearchworks/algorithms.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">algorithms</a> have to adapt to these usage patterns. In the past, we’ve made updates to ensure a site is <a href="http://googlewebmastercentral.blogspot.com/2013/06/changes-in-rankings-of-smartphone_11.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">configured properly</a> and <a href="http://googlewebmastercentral.blogspot.com/2014/07/promoting-modern-websites-for-modern.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">viewable on modern devices</a>. We’ve made it easier for users to <a href="http://googlewebmastercentral.blogspot.com/2014/11/helping-users-find-mobile-friendly-pages.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">find mobile-friendly web pages</a> and we’ve introduced <a href="https://developers.google.com/app-indexing/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">App Indexing</a> to surface useful content from apps. Today, we’re announcing two important changes to help users discover more mobile-friendly content: </p> <h4>1. More mobile-friendly websites in search results</h4> <p>Starting April 21, we will be expanding our use of mobile-friendliness as a ranking signal. This change will affect mobile searches in all languages worldwide and will have a significant impact in our search results. Consequently, users will find it easier to get relevant, high quality search results that are optimized for their devices. </p> <p>To get help with making a mobile-friendly site, check out our <a href="https://developers.google.com/webmasters/mobile-sites/get-started/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">guide to mobile-friendly sites</a>. If you’re a webmaster, you can get ready for this change by using the following tools to see how Googlebot views your pages:</p> <ul><li>If you want to test a few pages, you can use the <a href="https://www.google.com/webmasters/tools/mobile-friendly/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Mobile-Friendly Test</a>. </li> <li>If you have a site, you can use your Webmaster Tools account to get a full list of mobile usability issues across your site using the <a href="https://www.google.com/webmasters/tools/mobile-usability?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Mobile Usability Report</a>. </li></ul> <h4>2. More relevant app content in search results</h4> <p>Starting today, we will begin to use information from indexed apps as a factor in ranking for signed-in users who have the app installed. As a result, we may now surface content from indexed apps more prominently in search. To find out how to implement App Indexing, which allows us to surface this information in search results, have a look at our <a href="https://developers.google.com/app-indexing/webmasters/details?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">step-by-step guide</a> on the developer site. </p> <p>If you have questions about either mobile-friendly websites or app indexing, we’re always happy to chat in our <a href="https://productforums.google.com/forum/#!categories/webmasters/mobile?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Webmaster Help Forum</a>.</p> <br> <span class="byline-author">Posted by Takaki Makino, Chaesang Jung, and Doantam Phan</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: all</p> <p>When it comes to search on mobile devices, users should get the most relevant and timely results, no matter if the information lives on mobile-friendly web pages or apps. As more people use mobile devices to access the internet, our <a href="//www.google.com/insidesearch/howsearchworks/algorithms.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">algorithms</a> have to adapt to these usage patterns. In the past, we’ve made updates to ensure a site is <a href="http://googlewebmastercentral.blogspot.com/2013/06/changes-in-rankings-of-smartphone_11.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">configured properly</a> and <a href="http://googlewebmastercentral.blogspot.com/2014/07/promoting-modern-websites-for-modern.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">viewable on modern devices</a>. We’ve made it easier for users to <a href="http://googlewebmastercentral.blogspot.com/2014/11/helping-users-find-mobile-friendly-pages.html?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">find mobile-friendly web pages</a> and we’ve introduced <a href="https://developers.google.com/app-indexing/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">App Indexing</a> to surface useful content from apps. Today, we’re announcing two important changes to help users discover more mobile-friendly content: </p> <h4>1. More mobile-friendly websites in search results</h4> <p>Starting April 21, we will be expanding our use of mobile-friendliness as a ranking signal. This change will affect mobile searches in all languages worldwide and will have a significant impact in our search results. Consequently, users will find it easier to get relevant, high quality search results that are optimized for their devices. </p> <p>To get help with making a mobile-friendly site, check out our <a href="https://developers.google.com/webmasters/mobile-sites/get-started/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">guide to mobile-friendly sites</a>. If you’re a webmaster, you can get ready for this change by using the following tools to see how Googlebot views your pages:</p> <ul><li>If you want to test a few pages, you can use the <a href="https://www.google.com/webmasters/tools/mobile-friendly/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Mobile-Friendly Test</a>. </li> <li>If you have a site, you can use your Webmaster Tools account to get a full list of mobile usability issues across your site using the <a href="https://www.google.com/webmasters/tools/mobile-usability?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Mobile Usability Report</a>. </li></ul> <h4>2. More relevant app content in search results</h4> <p>Starting today, we will begin to use information from indexed apps as a factor in ranking for signed-in users who have the app installed. As a result, we may now surface content from indexed apps more prominently in search. To find out how to implement App Indexing, which allows us to surface this information in search results, have a look at our <a href="https://developers.google.com/app-indexing/webmasters/details?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">step-by-step guide</a> on the developer site. </p> <p>If you have questions about either mobile-friendly websites or app indexing, we’re always happy to chat in our <a href="https://productforums.google.com/forum/#!categories/webmasters/mobile?utm_source=wmc-blog&utm_medium=referral&utm_campaign=mobile-friendly">Webmaster Help Forum</a>.</p> <br> <span class="byline-author">Posted by Takaki Makino, Chaesang Jung, and Doantam Phan</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Finding more mobile-friendly search results&url=https://webmasters.googleblog.com/2015/02/finding-more-mobile-friendly-search.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2015/02/finding-more-mobile-friendly-search.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2015/02/finding-more-mobile-friendly-search.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/mobile?hl=en' rel='tag'> mobile </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/search%20results?hl=en' rel='tag'> search results </a> </span> </div> </div> </div> <div class='post' data-id='4726570543374501253' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2015/02/case-studies-fixing-hacked-sites.html?hl=en' itemprop='url' title='Case Studies: Fixing Hacked Sites'> Case Studies: Fixing Hacked Sites </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, February 18, 2015 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster Level: All</p> <p>Every day, thousands of websites get hacked. Hacked sites can harm users by serving malicious software, collecting personal information, or redirecting them to sites they didn't intend to visit. Webmasters want to fix hacked sites quickly, but unfortunately recovering from a hack can be a complicated process.</p> <p>We're trying to make the process of recovering from a hack easier for webmasters with features like <a href="https://www.google.com/webmasters/tools/security-issues">Security Issues</a>, <a href="//www.google.com/webmasters/hacked/">Help for Hacked Sites</a>, and <a href="https://productforums.google.com/forum/#!categories/webmasters/malware--hacked-sites">a section of our forum just for hacked sites</a>. Recently we talked to two webmasters with hacked sites to learn more about how they were able to fix their sites. We're sharing their stories with the hope that they might provide ideas to other webmasters who have been victims of hacking. We're also using these stories and other feedback for improving our documentation for hacked sites to make the process easier for everyone going forward.</p> <h4>Case Study #1: Restaurant website with multiple hack-injected scripts</h4> <p>A restaurant website using Wordpress received a message from Google in their Webmaster Tools account, alerting them that their site had been altered by hackers. To protect Google users, the website was labelled as hacked in Google's search results. The webmaster of the site, Sam, looked at the source code and noticed many unfamiliar links on the site with pharmaceuticals terms such as "viagra" and "cialis." She also noticed many pages where the meta description tags (in the HTML) had added content such as "buy valtrex in florida." There were also hidden div tags (also in the HTML) of many pages that linked to many sites. None of these links were added by Sam. </p> <p>Sam removed all of the hacked content she found and filed a reconsideration request. The request was rejected but in the message she received from Google, she was advised to check for any unfamiliar scripts in the any PHP files (or any other server files), as well as changes to the <a href="http://httpd.apache.org/docs/trunk/howto/htaccess.html">.htaccess</a> file. These files are likely to have scripts added by the hackers that modify the site. These scripts typically only show the hacked content to search engines, while hiding the content from a normal user. Sam checked out all of the .php files and compared them to the clean copies she had in her backup. She found new content added to her footer.php, index.php, and functions.php. When she replaced those files with the clean backups, she could no longer find any hacked content on her site. When she filed another reconsideration request, she got a response from Google notifying her that her site was free from hacked content!</p> <p>Even though Sam had cleaned up the hacked content on her site, she knew that she would need to continue to <a href="http://codex.wordpress.org/Hardening_WordPress">secure her site</a> against future attacks. She followed the steps below to keep her site safe in the future:</p> <ul><li>Keep the CMS (content management system like WordPress, Joomla, Drupal, etc) up to date with the most current version. Make sure plugins are up to date as well.</li> <li>Make sure the account used to access the administrative features of the CMS uses a difficult and unique password.</li> <li>If the CMS supports it, enable <a href="http://en.support.wordpress.com/security/two-step-authentication/">2-step verification</a> for login. (This might also be called two factor authentication or two step authentication.) This is recommended for the account being used for password recovery as well. Most email providers, like <a href="https://www.google.com/landing/2step/">Google</a>, <a href="http://windows.microsoft.com/en-us/windows/two-step-verification-faq">Microsoft</a>, <a href="https://help.yahoo.com/kb/activate-sign-in-verification-sln5013.html">Yahoo</a> all support this!</li> <li>Make sure the plugins and themes installed are from a reputable source - pirated plugins or themes can often contain code that makes it even easier for hackers to get in! </li></ul> <h4>Case Study #2: Professional website with lots of hard to find hacked pages </h4> <p>A small business owner named Maria who also manages her own website received a message in her Webmaster Tools that her site was hacked. The message provided an example of a page added by hackers: <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>. She talked to her hosting provider who looked at the source code on the homepage but could not find any pharmaceutical keywords. When the hosting provider visited <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>, it returned an error page. Maria also bought a malware scanning service but the service was not able to find any malicious content on her site.</p> <p>Maria then went to Webmaster Tools and used the Fetch as Google tool on the example URL Google had provided (<code>http://example.com/where-to-buy-cialis-over-the-counter/</code>) which returned no content. Confused, she filed a reconsideration request and received a rejection message which advised her to do two things:</p> <ol><li>Verify the non-www version of her site as hackers often try to hide content in folders that may be overlooked by the webmaster. <p>While it may seem like <code>http://example.com</code> and <code>http://www.example.com</code> are the same site, Google actually treats these as different sites. <code>http://example.com</code> is referred to as the "root domain" while <code>http://www.example.com</code> is called the subdomain. Maria had <code>http://www.example.com</code> verified but not <code>http://example.com</code> verified which is important because the pages added by hackers were non-www pages like <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>. Once she verified <code>http://example.com</code> she was able to successfully see the hacked content on the provided URL with the Fetch as Google tool in Webmaster Tools.</p> </li> <li>Check her .htaccess file for new rules. <p>Maria talked to her hosting provider who showed her how to access her .htaccess file. She noticed right away that her .htaccess file had some strange content that she had not added:</p> <p><code><IfModule mod_rewrite.c><br> RewriteEngine On<br> RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|bing) [OR]<br> RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol|bing)<br> RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]<br> </IfModule></code></p> <p>The <a href="http://httpd.apache.org/docs/2.0/misc/rewriteguide.html">mod_rewrite</a> rule you see above was inserted by the hacker and redirects anyone coming from certain search engines, as well as search engine crawlers, to main.php, which generates all of the hacked content. It's also possible that these rules can redirect users accessing the site on a mobile device. On the same day, she also saw that a recent malware scan found suspicious content on the main.php file. One top of that, she also noticed an unknown user in the ftp users area of her website development software. </p> </li> </ol> <p>She removed the main.php file, the .htaccess file, and removed the unknown user from her FTP users area and her site was no longer hacked!</p> <h4>Steps to prevent getting hacked in the future</h4> <ul><li>Avoid using FTP when transferring files to your servers. FTP does not encrypt any traffic, including passwords. Instead, use SFTP, which will encrypt everything, including your password, as a protection against eavesdroppers examining network traffic.</li> <li>Check the permissions on sensitive files like .htaccess. Your hosting provider may be able to assist you if you need help. The .htaccess file can be used to improve and protect your site, but it can also be used for malicious hacks if they are able to gain access to it.</li> <li>Be vigilant and look for new and unfamiliar users in your administrative panel and any other place where there may be users that can modify your site. </li></ul> <p>We hope your site never gets hacked, but if it does, we have many resources for hacked webmasters on our <a href="//www.google.com/webmasters/hacked/">Help for Hacked Sites page</a>. If you need more help or would like to share your own tips, you can post in our <a href="https://productforums.google.com/forum/#!categories/webmasters/malware--hacked-sites">Webmaster Help Forum</a>. If you do post to the forum or submit a reconsideration request for your site, please include <code>#NoHacked</code>.</p> <span class="byline-author">Posted by Julian Prentice and Yuan Niu, Search Quality Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster Level: All</p> <p>Every day, thousands of websites get hacked. Hacked sites can harm users by serving malicious software, collecting personal information, or redirecting them to sites they didn't intend to visit. Webmasters want to fix hacked sites quickly, but unfortunately recovering from a hack can be a complicated process.</p> <p>We're trying to make the process of recovering from a hack easier for webmasters with features like <a href="https://www.google.com/webmasters/tools/security-issues">Security Issues</a>, <a href="//www.google.com/webmasters/hacked/">Help for Hacked Sites</a>, and <a href="https://productforums.google.com/forum/#!categories/webmasters/malware--hacked-sites">a section of our forum just for hacked sites</a>. Recently we talked to two webmasters with hacked sites to learn more about how they were able to fix their sites. We're sharing their stories with the hope that they might provide ideas to other webmasters who have been victims of hacking. We're also using these stories and other feedback for improving our documentation for hacked sites to make the process easier for everyone going forward.</p> <h4>Case Study #1: Restaurant website with multiple hack-injected scripts</h4> <p>A restaurant website using Wordpress received a message from Google in their Webmaster Tools account, alerting them that their site had been altered by hackers. To protect Google users, the website was labelled as hacked in Google's search results. The webmaster of the site, Sam, looked at the source code and noticed many unfamiliar links on the site with pharmaceuticals terms such as "viagra" and "cialis." She also noticed many pages where the meta description tags (in the HTML) had added content such as "buy valtrex in florida." There were also hidden div tags (also in the HTML) of many pages that linked to many sites. None of these links were added by Sam. </p> <p>Sam removed all of the hacked content she found and filed a reconsideration request. The request was rejected but in the message she received from Google, she was advised to check for any unfamiliar scripts in the any PHP files (or any other server files), as well as changes to the <a href="http://httpd.apache.org/docs/trunk/howto/htaccess.html">.htaccess</a> file. These files are likely to have scripts added by the hackers that modify the site. These scripts typically only show the hacked content to search engines, while hiding the content from a normal user. Sam checked out all of the .php files and compared them to the clean copies she had in her backup. She found new content added to her footer.php, index.php, and functions.php. When she replaced those files with the clean backups, she could no longer find any hacked content on her site. When she filed another reconsideration request, she got a response from Google notifying her that her site was free from hacked content!</p> <p>Even though Sam had cleaned up the hacked content on her site, she knew that she would need to continue to <a href="http://codex.wordpress.org/Hardening_WordPress">secure her site</a> against future attacks. She followed the steps below to keep her site safe in the future:</p> <ul><li>Keep the CMS (content management system like WordPress, Joomla, Drupal, etc) up to date with the most current version. Make sure plugins are up to date as well.</li> <li>Make sure the account used to access the administrative features of the CMS uses a difficult and unique password.</li> <li>If the CMS supports it, enable <a href="http://en.support.wordpress.com/security/two-step-authentication/">2-step verification</a> for login. (This might also be called two factor authentication or two step authentication.) This is recommended for the account being used for password recovery as well. Most email providers, like <a href="https://www.google.com/landing/2step/">Google</a>, <a href="http://windows.microsoft.com/en-us/windows/two-step-verification-faq">Microsoft</a>, <a href="https://help.yahoo.com/kb/activate-sign-in-verification-sln5013.html">Yahoo</a> all support this!</li> <li>Make sure the plugins and themes installed are from a reputable source - pirated plugins or themes can often contain code that makes it even easier for hackers to get in! </li></ul> <h4>Case Study #2: Professional website with lots of hard to find hacked pages </h4> <p>A small business owner named Maria who also manages her own website received a message in her Webmaster Tools that her site was hacked. The message provided an example of a page added by hackers: <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>. She talked to her hosting provider who looked at the source code on the homepage but could not find any pharmaceutical keywords. When the hosting provider visited <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>, it returned an error page. Maria also bought a malware scanning service but the service was not able to find any malicious content on her site.</p> <p>Maria then went to Webmaster Tools and used the Fetch as Google tool on the example URL Google had provided (<code>http://example.com/where-to-buy-cialis-over-the-counter/</code>) which returned no content. Confused, she filed a reconsideration request and received a rejection message which advised her to do two things:</p> <ol><li>Verify the non-www version of her site as hackers often try to hide content in folders that may be overlooked by the webmaster. <p>While it may seem like <code>http://example.com</code> and <code>http://www.example.com</code> are the same site, Google actually treats these as different sites. <code>http://example.com</code> is referred to as the "root domain" while <code>http://www.example.com</code> is called the subdomain. Maria had <code>http://www.example.com</code> verified but not <code>http://example.com</code> verified which is important because the pages added by hackers were non-www pages like <code>http://example.com/where-to-buy-cialis-over-the-counter/</code>. Once she verified <code>http://example.com</code> she was able to successfully see the hacked content on the provided URL with the Fetch as Google tool in Webmaster Tools.</p> </li> <li>Check her .htaccess file for new rules. <p>Maria talked to her hosting provider who showed her how to access her .htaccess file. She noticed right away that her .htaccess file had some strange content that she had not added:</p> <p><code><IfModule mod_rewrite.c><br> RewriteEngine On<br> RewriteCond %{HTTP_USER_AGENT} (google|yahoo|msn|aol|bing) [OR]<br> RewriteCond %{HTTP_REFERER} (google|yahoo|msn|aol|bing)<br> RewriteRule ^([^/]*)/$ /main.php?p=$1 [L]<br> </IfModule></code></p> <p>The <a href="http://httpd.apache.org/docs/2.0/misc/rewriteguide.html">mod_rewrite</a> rule you see above was inserted by the hacker and redirects anyone coming from certain search engines, as well as search engine crawlers, to main.php, which generates all of the hacked content. It's also possible that these rules can redirect users accessing the site on a mobile device. On the same day, she also saw that a recent malware scan found suspicious content on the main.php file. One top of that, she also noticed an unknown user in the ftp users area of her website development software. </p> </li> </ol> <p>She removed the main.php file, the .htaccess file, and removed the unknown user from her FTP users area and her site was no longer hacked!</p> <h4>Steps to prevent getting hacked in the future</h4> <ul><li>Avoid using FTP when transferring files to your servers. FTP does not encrypt any traffic, including passwords. Instead, use SFTP, which will encrypt everything, including your password, as a protection against eavesdroppers examining network traffic.</li> <li>Check the permissions on sensitive files like .htaccess. Your hosting provider may be able to assist you if you need help. The .htaccess file can be used to improve and protect your site, but it can also be used for malicious hacks if they are able to gain access to it.</li> <li>Be vigilant and look for new and unfamiliar users in your administrative panel and any other place where there may be users that can modify your site. </li></ul> <p>We hope your site never gets hacked, but if it does, we have many resources for hacked webmasters on our <a href="//www.google.com/webmasters/hacked/">Help for Hacked Sites page</a>. If you need more help or would like to share your own tips, you can post in our <a href="https://productforums.google.com/forum/#!categories/webmasters/malware--hacked-sites">Webmaster Help Forum</a>. If you do post to the forum or submit a reconsideration request for your site, please include <code>#NoHacked</code>.</p> <span class="byline-author">Posted by Julian Prentice and Yuan Niu, Search Quality Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Case Studies: Fixing Hacked Sites&url=https://webmasters.googleblog.com/2015/02/case-studies-fixing-hacked-sites.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2015/02/case-studies-fixing-hacked-sites.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2015/02/case-studies-fixing-hacked-sites.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/hacked%20sites?hl=en' rel='tag'> hacked sites </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> </span> </div> </div> </div> <div class='post' data-id='2286682456271755376' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/12/google-public-dns-and-location.html?hl=en' itemprop='url' title='Google Public DNS and Location-Sensitive DNS Responses'> Google Public DNS and Location-Sensitive DNS Responses </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, December 15, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: advanced</p> <p>Recently the Google Public DNS team, in collaboration with Akamai, reached an important milestone: Google Public DNS now propagates client location information to Akamai nameservers. This effort significantly improves the accuracy of approximately 30% of the location-sensitive DNS responses returned by Google Public DNS. In other words, client requests to Akamai hosted content can be routed to closer servers with lower latency and greater data transfer throughput. Overall, Google Public DNS resolvers serve 400 billion responses per day and more than 50% of them are location-sensitive.</p> <p>DNS is often used by Content Distribution Networks (CDNs) such as Akamai to achieve location-based load balancing by constructing responses based on clients’ IP addresses. However, CDNs usually see the DNS resolvers’ IP address instead of the actual clients’ and are therefore forced to assume that the resolvers are close to the clients. Unfortunately, the assumption is not always true. Many resolvers, especially those open to the Internet at large, are not deployed at every single local network.</p> <p>To solve this issue, a group of DNS and content providers, including Google, <a href="http://googlecode.blogspot.com/2010/01/proposal-to-extend-dns-protocol.html?utm_campaign=locdns-1214&utm_source=gdbc&utm_medium=blog">proposed an approach</a> to allow resolvers to forward the client’s subnet to CDN nameservers in an extension field in the DNS request. The subnet is a portion of the client’s IP address, truncated to preserve privacy. The approach is officially named <a href="http://www.afasterinternet.com/ietfdraft.htm">edns-client-subnet</a> or ECS.</p> <p>This solution requires that both resolvers and CDNs adopt the new DNS extension. Google Public DNS resolvers automatically probe to discover ECS-aware nameservers and have observed the footprint of ECS support from CDNs expanding steadily over the past years. By now, more than 4000 nameservers from approximately 300 content providers support ECS. The Google-Akamai collaboration marks a significant milestone in our ongoing efforts to ensure DNS contributes to keeping the Internet fast. We encourage more CDNs to join us by supporting the ECS option.</p> <p>For more information about Google Public DNS, please visit <a href="https://developers.google.com/speed/public-dns?utm_campaign=locdns-1214&utm_source=gdbc&utm_medium=blog">our website</a>. For CDN operators, please also visit “<a href="http://www.afasterinternet.com/">A Faster Internet</a>” for more technical details.</p> <br><span class="byline-author">Posted by Yunhong Gu, Tech Lead, Google Public DNS</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: advanced</p> <p>Recently the Google Public DNS team, in collaboration with Akamai, reached an important milestone: Google Public DNS now propagates client location information to Akamai nameservers. This effort significantly improves the accuracy of approximately 30% of the location-sensitive DNS responses returned by Google Public DNS. In other words, client requests to Akamai hosted content can be routed to closer servers with lower latency and greater data transfer throughput. Overall, Google Public DNS resolvers serve 400 billion responses per day and more than 50% of them are location-sensitive.</p> <p>DNS is often used by Content Distribution Networks (CDNs) such as Akamai to achieve location-based load balancing by constructing responses based on clients’ IP addresses. However, CDNs usually see the DNS resolvers’ IP address instead of the actual clients’ and are therefore forced to assume that the resolvers are close to the clients. Unfortunately, the assumption is not always true. Many resolvers, especially those open to the Internet at large, are not deployed at every single local network.</p> <p>To solve this issue, a group of DNS and content providers, including Google, <a href="http://googlecode.blogspot.com/2010/01/proposal-to-extend-dns-protocol.html?utm_campaign=locdns-1214&utm_source=gdbc&utm_medium=blog">proposed an approach</a> to allow resolvers to forward the client’s subnet to CDN nameservers in an extension field in the DNS request. The subnet is a portion of the client’s IP address, truncated to preserve privacy. The approach is officially named <a href="http://www.afasterinternet.com/ietfdraft.htm">edns-client-subnet</a> or ECS.</p> <p>This solution requires that both resolvers and CDNs adopt the new DNS extension. Google Public DNS resolvers automatically probe to discover ECS-aware nameservers and have observed the footprint of ECS support from CDNs expanding steadily over the past years. By now, more than 4000 nameservers from approximately 300 content providers support ECS. The Google-Akamai collaboration marks a significant milestone in our ongoing efforts to ensure DNS contributes to keeping the Internet fast. We encourage more CDNs to join us by supporting the ECS option.</p> <p>For more information about Google Public DNS, please visit <a href="https://developers.google.com/speed/public-dns?utm_campaign=locdns-1214&utm_source=gdbc&utm_medium=blog">our website</a>. For CDN operators, please also visit “<a href="http://www.afasterinternet.com/">A Faster Internet</a>” for more technical details.</p> <br><span class="byline-author">Posted by Yunhong Gu, Tech Lead, Google Public DNS</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Google Public DNS and Location-Sensitive DNS Responses&url=https://webmasters.googleblog.com/2014/12/google-public-dns-and-location.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/12/google-public-dns-and-location.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/12/google-public-dns-and-location.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> </span> </div> </div> </div> <div class='post' data-id='4889956120899854939' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/12/the-four-steps-to-appiness.html?hl=en' itemprop='url' title='The four steps to appiness '> The four steps to appiness </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, December 09, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>Webmaster Level: intermediate to advanced</p> <p><a href="https://developers.google.com/app-indexing/?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">App deep links</a> are the new kid on the block in organic search, and they’re picking up speed faster than you can say “schema.org ViewAction”! For signed-in users, 15% of Google searches on Android now return deep links to apps through App Indexing. And over just the past quarter, we've seen the number of clicks on app deep links jump by 10x.</p> <p>We’ve gotten a lot of feedback from developers and seen a lot of implementations gone right and others that were good learning experiences since we <a href="http://googlewebmastercentral.blogspot.ch/2014/06/android-app-indexing-is-now-open-for.html?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">opened up App Indexing back in June</a>. We’d like to share with you four key steps to monitor app performance and drive user engagement:</p> <h3>1. Give your app developer access to Webmaster Tools</h3> <p>App indexing is a team effort between you (as a webmaster) and your app development team. We show information in Webmaster Tools that is key for your app developers to do their job well. Here’s what’s available right now: <ul> <li>Errors in indexed pages within apps</li> <li>Weekly clicks and impressions from app deep link via Google search</li> <li>Stats on your sitemap (if that’s how you implemented the app deep links)</li> </ul> ...and we plan to add a lot more in the coming months!</p> <p>We’ve noticed that very few developers have access to Webmaster Tools. So if you want your app development team to get all of the information they need to fix app-related issues, it’s essential for them to have access to Webmaster Tools.</p> <p>Any verified site owner can <a href="https://www.google.com/webmasters/tools/user-admin?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">add a new user</a>. Pick restricted or full permissions, depending on the <a href="https://support.google.com/webmasters/answer/2451999?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">level of access</a> you’d like to give:</p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjteTh3Tn9xTh5tL0DE5KUqhGavjWV1Ot8j9jJHlAMnukd_AVySXlOLZtJV8UbkDdsyDH-B56r-GsBpBLlwgD_PGC1ujmqbwLFhlnVhKFlM_q55LJ1S8OxTpLQR6nssMhahSkB6/s1600/webmaster+tools+add+user.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjteTh3Tn9xTh5tL0DE5KUqhGavjWV1Ot8j9jJHlAMnukd_AVySXlOLZtJV8UbkDdsyDH-B56r-GsBpBLlwgD_PGC1ujmqbwLFhlnVhKFlM_q55LJ1S8OxTpLQR6nssMhahSkB6/s550/webmaster+tools+add+user.png" /></a></div> <h3>2. Understand how your app is doing in search results</h3> <p>How are users engaging with your app from search results? We’ve introduced two new ways for you to track performance for your app deep links: <ul> <li>We now send a weekly clicks and impressions update to the <a href="https://support.google.com/webmasters/answer/140528?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Message center</a> in your Webmaster Tools account.</li> <li>You can now track how much traffic app deep links drive to your app using referrer information - specifically, the referrer extra in the <span style="font-family:courier">ACTION_VIEW</span> intent. We're working to integrate this information with Google Analytics for even easier access. Learn <a href="https://developers.google.com/app-indexing/webmasters/referrer?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">how to track referrer information</a> on our Developer site.</li> </ul></p> <h3>3. Make sure key app resources can be crawled</h3> <p>Blocked resources are one of the top reasons for the “content mismatch” errors you see in Webmaster Tools’ <a href="https://www.google.com/webmasters/tools/crawl-errors?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Crawl Errors report</a>. We need access to all the resources necessary to render your app page. This allows us to assess whether your associated web page has the same content as your app page.</p> <p>To help you find and fix these issues, we now show you the specific resources we can’t access that are critical for rendering your app page. If you see a content mismatch error for your app, look out for the list of blocked resources in “Step 5” of the details dialog:</p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Z29aZG8jAt8K1C6BBitgZ_HWr0F8WtxA0qVYNKI38TBv8VsYjn9AC4g3SW3Dl-4o_Pt_m55FAC7a1JPX1giOnjv2nG2Ru94403q0Iod5odmHtf7R5ojm55gsmGB16soQtrPU/s1600/apps+roboted+content.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Z29aZG8jAt8K1C6BBitgZ_HWr0F8WtxA0qVYNKI38TBv8VsYjn9AC4g3SW3Dl-4o_Pt_m55FAC7a1JPX1giOnjv2nG2Ru94403q0Iod5odmHtf7R5ojm55gsmGB16soQtrPU/s640/apps+roboted+content.png" /></a></div> <h3>4. Watch out for Android App errors</h3> <p>To help you identify errors when indexing your app, we’ll send you messages for all app errors we detect, and will also display most of them in the “Android apps” tab of the <a href="https://www.google.com/webmasters/tools/crawl-errors?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Crawl errors report</a>.</p> <p>In addition to the currently available “Content mismatch” and “Intent URI not supported” error alerts, we’re introducing three new error types: <ul> <li><strong>APK not found</strong>: we can’t find the package corresponding to the app.</li> <li><strong>No <a href="http://googlewebmastercentral.blogspot.com/2008/10/first-click-free-for-web-search.html?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">first-click free</a></strong>: the link to your app does not lead directly to the content, but requires login to access.</li> <li><strong>Back button violation</strong>: after following the link to your app, the back button did not return to search results.</li> </ul></p> <p>In our experience, the majority of errors are usually caused by a general setting in your app (e.g. a blocked resource, or a region picker that pops up when the user tries to open the app from search). Taking care of that generally resolves it for all involved URIs.</p> <p>Good luck in the pursuit of appiness! As always, if you have questions, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">Webmaster help forum</a>.</p> <span class="byline-author">Posted by <a href="//google.com/+MariyaMoeva?rel=app-indexing-enthusiast">Mariya Moeva</a>, Webmaster Trends Analyst</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <p>Webmaster Level: intermediate to advanced</p> <p><a href="https://developers.google.com/app-indexing/?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">App deep links</a> are the new kid on the block in organic search, and they’re picking up speed faster than you can say “schema.org ViewAction”! For signed-in users, 15% of Google searches on Android now return deep links to apps through App Indexing. And over just the past quarter, we've seen the number of clicks on app deep links jump by 10x.</p> <p>We’ve gotten a lot of feedback from developers and seen a lot of implementations gone right and others that were good learning experiences since we <a href="http://googlewebmastercentral.blogspot.ch/2014/06/android-app-indexing-is-now-open-for.html?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">opened up App Indexing back in June</a>. We’d like to share with you four key steps to monitor app performance and drive user engagement:</p> <h3>1. Give your app developer access to Webmaster Tools</h3> <p>App indexing is a team effort between you (as a webmaster) and your app development team. We show information in Webmaster Tools that is key for your app developers to do their job well. Here’s what’s available right now: <ul> <li>Errors in indexed pages within apps</li> <li>Weekly clicks and impressions from app deep link via Google search</li> <li>Stats on your sitemap (if that’s how you implemented the app deep links)</li> </ul> ...and we plan to add a lot more in the coming months!</p> <p>We’ve noticed that very few developers have access to Webmaster Tools. So if you want your app development team to get all of the information they need to fix app-related issues, it’s essential for them to have access to Webmaster Tools.</p> <p>Any verified site owner can <a href="https://www.google.com/webmasters/tools/user-admin?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">add a new user</a>. Pick restricted or full permissions, depending on the <a href="https://support.google.com/webmasters/answer/2451999?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">level of access</a> you’d like to give:</p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjteTh3Tn9xTh5tL0DE5KUqhGavjWV1Ot8j9jJHlAMnukd_AVySXlOLZtJV8UbkDdsyDH-B56r-GsBpBLlwgD_PGC1ujmqbwLFhlnVhKFlM_q55LJ1S8OxTpLQR6nssMhahSkB6/s1600/webmaster+tools+add+user.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjteTh3Tn9xTh5tL0DE5KUqhGavjWV1Ot8j9jJHlAMnukd_AVySXlOLZtJV8UbkDdsyDH-B56r-GsBpBLlwgD_PGC1ujmqbwLFhlnVhKFlM_q55LJ1S8OxTpLQR6nssMhahSkB6/s550/webmaster+tools+add+user.png" /></a></div> <h3>2. Understand how your app is doing in search results</h3> <p>How are users engaging with your app from search results? We’ve introduced two new ways for you to track performance for your app deep links: <ul> <li>We now send a weekly clicks and impressions update to the <a href="https://support.google.com/webmasters/answer/140528?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Message center</a> in your Webmaster Tools account.</li> <li>You can now track how much traffic app deep links drive to your app using referrer information - specifically, the referrer extra in the <span style="font-family:courier">ACTION_VIEW</span> intent. We're working to integrate this information with Google Analytics for even easier access. Learn <a href="https://developers.google.com/app-indexing/webmasters/referrer?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">how to track referrer information</a> on our Developer site.</li> </ul></p> <h3>3. Make sure key app resources can be crawled</h3> <p>Blocked resources are one of the top reasons for the “content mismatch” errors you see in Webmaster Tools’ <a href="https://www.google.com/webmasters/tools/crawl-errors?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Crawl Errors report</a>. We need access to all the resources necessary to render your app page. This allows us to assess whether your associated web page has the same content as your app page.</p> <p>To help you find and fix these issues, we now show you the specific resources we can’t access that are critical for rendering your app page. If you see a content mismatch error for your app, look out for the list of blocked resources in “Step 5” of the details dialog:</p> <div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Z29aZG8jAt8K1C6BBitgZ_HWr0F8WtxA0qVYNKI38TBv8VsYjn9AC4g3SW3Dl-4o_Pt_m55FAC7a1JPX1giOnjv2nG2Ru94403q0Iod5odmHtf7R5ojm55gsmGB16soQtrPU/s1600/apps+roboted+content.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Z29aZG8jAt8K1C6BBitgZ_HWr0F8WtxA0qVYNKI38TBv8VsYjn9AC4g3SW3Dl-4o_Pt_m55FAC7a1JPX1giOnjv2nG2Ru94403q0Iod5odmHtf7R5ojm55gsmGB16soQtrPU/s640/apps+roboted+content.png" /></a></div> <h3>4. Watch out for Android App errors</h3> <p>To help you identify errors when indexing your app, we’ll send you messages for all app errors we detect, and will also display most of them in the “Android apps” tab of the <a href="https://www.google.com/webmasters/tools/crawl-errors?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">Crawl errors report</a>.</p> <p>In addition to the currently available “Content mismatch” and “Intent URI not supported” error alerts, we’re introducing three new error types: <ul> <li><strong>APK not found</strong>: we can’t find the package corresponding to the app.</li> <li><strong>No <a href="http://googlewebmastercentral.blogspot.com/2008/10/first-click-free-for-web-search.html?utm_source=wmc-blog&utm_medium=direct&utm_campaign=appiness-2014-12-09">first-click free</a></strong>: the link to your app does not lead directly to the content, but requires login to access.</li> <li><strong>Back button violation</strong>: after following the link to your app, the back button did not return to search results.</li> </ul></p> <p>In our experience, the majority of errors are usually caused by a general setting in your app (e.g. a blocked resource, or a region picker that pops up when the user tries to open the app from search). Taking care of that generally resolves it for all involved URIs.</p> <p>Good luck in the pursuit of appiness! As always, if you have questions, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">Webmaster help forum</a>.</p> <span class="byline-author">Posted by <a href="//google.com/+MariyaMoeva?rel=app-indexing-enthusiast">Mariya Moeva</a>, Webmaster Trends Analyst</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:The four steps to appiness &url=https://webmasters.googleblog.com/2014/12/the-four-steps-to-appiness.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/12/the-four-steps-to-appiness.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/12/the-four-steps-to-appiness.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/apps?hl=en' rel='tag'> apps </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/feedback%20and%20communication?hl=en' rel='tag'> feedback and communication </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/verification?hl=en' rel='tag'> verification </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='9061039975879024791' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/12/are-you-robot-introducing-no-captcha.html?hl=en' itemprop='url' title='Are you a robot? Introducing “No CAPTCHA reCAPTCHA”'> Are you a robot? Introducing “No CAPTCHA reCAPTCHA” </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, December 03, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> <a href="https://www.google.com/recaptcha">reCAPTCHA</a> protects the websites you love from spam and abuse. So, when you go online—say, for some last-minute holiday shopping—you won't be competing with robots and abusive scripts to access sites. For years, we’ve prompted users to confirm they aren’t robots by asking them to read distorted text and type it into a box, like this:<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHp_fd-sGP5oUrTNB_L7NilL62cvIXUr46AVsGZf2CY77bt00ixrBhsZn9mOHXgdco87UXD9A28r1gcnat2tQ3N14kJyOiK_psG7cq5ltoV1tAtuW54hMFAR73NqEDz50x2aYPkA/s1600/reCAPTCHA_OldAPI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHp_fd-sGP5oUrTNB_L7NilL62cvIXUr46AVsGZf2CY77bt00ixrBhsZn9mOHXgdco87UXD9A28r1gcnat2tQ3N14kJyOiK_psG7cq5ltoV1tAtuW54hMFAR73NqEDz50x2aYPkA/s1600/reCAPTCHA_OldAPI.png" width="320" /></a></div> But, we figured it would be easier to just directly ask our users whether or not they are robots—so, we did! We’ve begun rolling out a new API that radically simplifies the reCAPTCHA experience. We’re calling it the “No CAPTCHA reCAPTCHA” and this is how it looks:<br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQf_1q3HUZVFuQJmrPw1JkUVRgQ6uTSfRoszjmca3r9R-KkegACzaUCq6xH1F90wHRYlElIjMtqMfOvSMGBJ9fU2LncoRLQc4cqzfUy-DbbcPn4xJTMb8TQnOzyRm2jgsGnQB0w/s1600/Recaptcha_anchor@2x.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQf_1q3HUZVFuQJmrPw1JkUVRgQ6uTSfRoszjmca3r9R-KkegACzaUCq6xH1F90wHRYlElIjMtqMfOvSMGBJ9fU2LncoRLQc4cqzfUy-DbbcPn4xJTMb8TQnOzyRm2jgsGnQB0w/s1600/Recaptcha_anchor@2x.gif" width="400" /></a></div> On websites using this new API, a significant number of users will be able to securely and easily verify they’re human without actually having to solve a CAPTCHA. Instead, with just a single click, they’ll confirm they are not a robot.<br /> <div style="text-align: center;"> <iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/jwslDn3ImM0" width="560"></iframe></div> <b>A brief history of CAPTCHAs </b><br /> <br /> While the new reCAPTCHA API may sound simple, there is a high degree of sophistication behind that modest checkbox. CAPTCHAs have long relied on the inability of robots to solve distorted text. However, <a href="http://googleonlinesecurity.blogspot.com/2014/04/street-view-and-recaptcha-technology.html">our research recently showed</a> that today’s Artificial Intelligence technology can solve even the most difficult variant of distorted text at 99.8% accuracy. Thus distorted text, on its own, is no longer a dependable test.<br /> <br /> To counter this, last year we <a href="http://googleonlinesecurity.blogspot.com/2013/10/recaptcha-just-got-easier-but-only-if.html">developed</a> an Advanced Risk Analysis backend for reCAPTCHA that actively considers a user’s entire engagement with the CAPTCHA—before, during, and after—to determine whether that user is a human. This enables us to rely less on typing distorted text and, in turn, offer a better experience for users. We talked about this in our <a href="http://googleonlinesecurity.blogspot.com/2014/02/captchas-that-capture-your-heart.html">Valentine’s Day post</a> earlier this year.<br /> <br /> The new API is the next step in this steady evolution. Now, humans can just check the box and in most cases, they’re through the challenge.<br /> <br /> <b>Are you <i>sure</i> you’re not a robot?</b><br /> <br /> However, CAPTCHAs aren't going away just yet. In cases when the risk analysis engine can't confidently predict whether a user is a human or an abusive agent, it will prompt a CAPTCHA to elicit more cues, increasing the number of security checkpoints to confirm the user is valid.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikWH1g7oFDVD9-G4npS4glukAnaI3nyxP_8OvB5RhZK6SoAkmnjKYpUciHJ9whKjvfJSiZHLthVPXkqT87DuXeb1o4XnK4fzckTfD-cM7aHhG1KWJ9d32M0Yrx-BvoDMRYfBPlhw/s1600/CAPTCHA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikWH1g7oFDVD9-G4npS4glukAnaI3nyxP_8OvB5RhZK6SoAkmnjKYpUciHJ9whKjvfJSiZHLthVPXkqT87DuXeb1o4XnK4fzckTfD-cM7aHhG1KWJ9d32M0Yrx-BvoDMRYfBPlhw/s1600/CAPTCHA.png" width="400" /></a></div> <b>Making reCAPTCHAs mobile-friendly</b><br /> <br /> This new API also lets us experiment with new types of challenges that are easier for us humans to use, particularly on mobile devices. In the example below, you can see a CAPTCHA based on a classic <a href="http://en.wikipedia.org/wiki/Computer_vision">Computer Vision</a> problem of image labeling. In this version of the CAPTCHA challenge, you’re asked to select all of the images that correspond with the clue. It's much easier to tap photos of cats or turkeys than to tediously type a line of distorted text on your phone.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioqHj5r_yx3VXDXmvzU-dXX8y9V2Huv1ldIeBlPflGskoWmdhOZ2p9bBcI1wjWw3JsDb43Oh0eZ7255eIcIB3Q2e7w9iytDqFAcPlODFjhOOZRnG6z2wKX7pC_mGetEVxMFSlKA/s1600/turkey_captcha.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioqHj5r_yx3VXDXmvzU-dXX8y9V2Huv1ldIeBlPflGskoWmdhOZ2p9bBcI1wjWw3JsDb43Oh0eZ7255eIcIB3Q2e7w9iytDqFAcPlODFjhOOZRnG6z2wKX7pC_mGetEVxMFSlKA/s1600/turkey_captcha.png" width="300" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3y-q-EGH0r_UJ2udpZ7p1A9q4r_hodkgtUtGyucElrSXD4nlrFJuP7QPeKfrAa1lk5IbD3If9P6ziKFFJ-9rBZjeYLE4Efhwxy7HrwiNeqobuCVXfKK4kv5im_8Bnp0eHdo8bSQ/s1600/cat_captcha.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3y-q-EGH0r_UJ2udpZ7p1A9q4r_hodkgtUtGyucElrSXD4nlrFJuP7QPeKfrAa1lk5IbD3If9P6ziKFFJ-9rBZjeYLE4Efhwxy7HrwiNeqobuCVXfKK4kv5im_8Bnp0eHdo8bSQ/s1600/cat_captcha.png" width="300" /></a></div> <div class="separator" style="clear: both; text-align: left;"> <b>Adopting the new API on your site</b></div> <br /> As more websites adopt the new API, more people will see "No CAPTCHA reCAPTCHAs". Early adopters, like <a href="https://support.snapchat.com/login2?next=/">Snapchat</a>, <a href="https://wordpress.org/support/register.php">WordPress</a>, <a href="https://www.humblebundle.com/">Humble Bundle</a>, and several others are already seeing great results with this new API. For example, in the last week, more than 60% of WordPress’ traffic and more than 80% of Humble Bundle’s traffic on reCAPTCHA encountered the No CAPTCHA experience—users got to these sites faster. To adopt the new reCAPTCHA for your website, <a href="https://www.google.com/recaptcha">visit our site</a> to learn more.<br /> <br /> Humans, we'll continue our work to keep the Internet safe and easy to use. Abusive bots and scripts, it’ll only get worse—sorry we’re (still) not sorry. <br><br> <span class="byline-author">Posted by Vinay Shet, Product Manager, reCAPTCHA</span><br /> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> <a href="https://www.google.com/recaptcha">reCAPTCHA</a> protects the websites you love from spam and abuse. So, when you go online—say, for some last-minute holiday shopping—you won't be competing with robots and abusive scripts to access sites. For years, we’ve prompted users to confirm they aren’t robots by asking them to read distorted text and type it into a box, like this:<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHp_fd-sGP5oUrTNB_L7NilL62cvIXUr46AVsGZf2CY77bt00ixrBhsZn9mOHXgdco87UXD9A28r1gcnat2tQ3N14kJyOiK_psG7cq5ltoV1tAtuW54hMFAR73NqEDz50x2aYPkA/s1600/reCAPTCHA_OldAPI.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="130" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHp_fd-sGP5oUrTNB_L7NilL62cvIXUr46AVsGZf2CY77bt00ixrBhsZn9mOHXgdco87UXD9A28r1gcnat2tQ3N14kJyOiK_psG7cq5ltoV1tAtuW54hMFAR73NqEDz50x2aYPkA/s1600/reCAPTCHA_OldAPI.png" width="320" /></a></div> But, we figured it would be easier to just directly ask our users whether or not they are robots—so, we did! We’ve begun rolling out a new API that radically simplifies the reCAPTCHA experience. We’re calling it the “No CAPTCHA reCAPTCHA” and this is how it looks:<br /> <div class="separator" style="clear: both; text-align: center;"> </div> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQf_1q3HUZVFuQJmrPw1JkUVRgQ6uTSfRoszjmca3r9R-KkegACzaUCq6xH1F90wHRYlElIjMtqMfOvSMGBJ9fU2LncoRLQc4cqzfUy-DbbcPn4xJTMb8TQnOzyRm2jgsGnQB0w/s1600/Recaptcha_anchor@2x.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNQf_1q3HUZVFuQJmrPw1JkUVRgQ6uTSfRoszjmca3r9R-KkegACzaUCq6xH1F90wHRYlElIjMtqMfOvSMGBJ9fU2LncoRLQc4cqzfUy-DbbcPn4xJTMb8TQnOzyRm2jgsGnQB0w/s1600/Recaptcha_anchor@2x.gif" width="400" /></a></div> On websites using this new API, a significant number of users will be able to securely and easily verify they’re human without actually having to solve a CAPTCHA. Instead, with just a single click, they’ll confirm they are not a robot.<br /> <div style="text-align: center;"> <iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/jwslDn3ImM0" width="560"></iframe></div> <b>A brief history of CAPTCHAs </b><br /> <br /> While the new reCAPTCHA API may sound simple, there is a high degree of sophistication behind that modest checkbox. CAPTCHAs have long relied on the inability of robots to solve distorted text. However, <a href="http://googleonlinesecurity.blogspot.com/2014/04/street-view-and-recaptcha-technology.html">our research recently showed</a> that today’s Artificial Intelligence technology can solve even the most difficult variant of distorted text at 99.8% accuracy. Thus distorted text, on its own, is no longer a dependable test.<br /> <br /> To counter this, last year we <a href="http://googleonlinesecurity.blogspot.com/2013/10/recaptcha-just-got-easier-but-only-if.html">developed</a> an Advanced Risk Analysis backend for reCAPTCHA that actively considers a user’s entire engagement with the CAPTCHA—before, during, and after—to determine whether that user is a human. This enables us to rely less on typing distorted text and, in turn, offer a better experience for users. We talked about this in our <a href="http://googleonlinesecurity.blogspot.com/2014/02/captchas-that-capture-your-heart.html">Valentine’s Day post</a> earlier this year.<br /> <br /> The new API is the next step in this steady evolution. Now, humans can just check the box and in most cases, they’re through the challenge.<br /> <br /> <b>Are you <i>sure</i> you’re not a robot?</b><br /> <br /> However, CAPTCHAs aren't going away just yet. In cases when the risk analysis engine can't confidently predict whether a user is a human or an abusive agent, it will prompt a CAPTCHA to elicit more cues, increasing the number of security checkpoints to confirm the user is valid.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikWH1g7oFDVD9-G4npS4glukAnaI3nyxP_8OvB5RhZK6SoAkmnjKYpUciHJ9whKjvfJSiZHLthVPXkqT87DuXeb1o4XnK4fzckTfD-cM7aHhG1KWJ9d32M0Yrx-BvoDMRYfBPlhw/s1600/CAPTCHA.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikWH1g7oFDVD9-G4npS4glukAnaI3nyxP_8OvB5RhZK6SoAkmnjKYpUciHJ9whKjvfJSiZHLthVPXkqT87DuXeb1o4XnK4fzckTfD-cM7aHhG1KWJ9d32M0Yrx-BvoDMRYfBPlhw/s1600/CAPTCHA.png" width="400" /></a></div> <b>Making reCAPTCHAs mobile-friendly</b><br /> <br /> This new API also lets us experiment with new types of challenges that are easier for us humans to use, particularly on mobile devices. In the example below, you can see a CAPTCHA based on a classic <a href="http://en.wikipedia.org/wiki/Computer_vision">Computer Vision</a> problem of image labeling. In this version of the CAPTCHA challenge, you’re asked to select all of the images that correspond with the clue. It's much easier to tap photos of cats or turkeys than to tediously type a line of distorted text on your phone.<br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioqHj5r_yx3VXDXmvzU-dXX8y9V2Huv1ldIeBlPflGskoWmdhOZ2p9bBcI1wjWw3JsDb43Oh0eZ7255eIcIB3Q2e7w9iytDqFAcPlODFjhOOZRnG6z2wKX7pC_mGetEVxMFSlKA/s1600/turkey_captcha.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiioqHj5r_yx3VXDXmvzU-dXX8y9V2Huv1ldIeBlPflGskoWmdhOZ2p9bBcI1wjWw3JsDb43Oh0eZ7255eIcIB3Q2e7w9iytDqFAcPlODFjhOOZRnG6z2wKX7pC_mGetEVxMFSlKA/s1600/turkey_captcha.png" width="300" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3y-q-EGH0r_UJ2udpZ7p1A9q4r_hodkgtUtGyucElrSXD4nlrFJuP7QPeKfrAa1lk5IbD3If9P6ziKFFJ-9rBZjeYLE4Efhwxy7HrwiNeqobuCVXfKK4kv5im_8Bnp0eHdo8bSQ/s1600/cat_captcha.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3y-q-EGH0r_UJ2udpZ7p1A9q4r_hodkgtUtGyucElrSXD4nlrFJuP7QPeKfrAa1lk5IbD3If9P6ziKFFJ-9rBZjeYLE4Efhwxy7HrwiNeqobuCVXfKK4kv5im_8Bnp0eHdo8bSQ/s1600/cat_captcha.png" width="300" /></a></div> <div class="separator" style="clear: both; text-align: left;"> <b>Adopting the new API on your site</b></div> <br /> As more websites adopt the new API, more people will see "No CAPTCHA reCAPTCHAs". Early adopters, like <a href="https://support.snapchat.com/login2?next=/">Snapchat</a>, <a href="https://wordpress.org/support/register.php">WordPress</a>, <a href="https://www.humblebundle.com/">Humble Bundle</a>, and several others are already seeing great results with this new API. For example, in the last week, more than 60% of WordPress’ traffic and more than 80% of Humble Bundle’s traffic on reCAPTCHA encountered the No CAPTCHA experience—users got to these sites faster. To adopt the new reCAPTCHA for your website, <a href="https://www.google.com/recaptcha">visit our site</a> to learn more.<br /> <br /> Humans, we'll continue our work to keep the Internet safe and easy to use. Abusive bots and scripts, it’ll only get worse—sorry we’re (still) not sorry. <br><br> <span class="byline-author">Posted by Vinay Shet, Product Manager, reCAPTCHA</span><br /> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Are you a robot? Introducing “No CAPTCHA reCAPTCHA”&url=https://webmasters.googleblog.com/2014/12/are-you-robot-introducing-no-captcha.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/12/are-you-robot-introducing-no-captcha.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/12/are-you-robot-introducing-no-captcha.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/general%20tips?hl=en' rel='tag'> general tips </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/products%20and%20services?hl=en' rel='tag'> products and services </a> </span> </div> </div> </div> <div class='post' data-id='7755858943001194763' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/10/tracking-mobile-usability-in-webmaster.html?hl=en' itemprop='url' title='Tracking mobile usability in Webmaster Tools'> Tracking mobile usability in Webmaster Tools </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, October 29, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster Level: intermediate</p> <p>Mobile is growing at a fantastic pace - in usage, not just in screen size. To keep you informed of issues mobile users might be seeing across your website, we've added the <a href="https://www.google.com/webmasters/tools/mobile-usability">Mobile Usability feature</a> to <a href="https://www.google.com/webmasters/tools/">Webmaster Tools</a>. </p> <p>The new feature shows mobile usability issues we’ve identified across your website, complete with graphs over time so that you see the progress that you've made. </p> <p>A mobile-friendly site is one that you can easily read & use on a smartphone, by only having to scroll up or down. Swiping left/right to search for content, zooming to read text and use UI elements, or not being able to see the content at all make a site harder to use for users on mobile phones. To help, the Mobile Usability reports show the following issues: Flash content, <a href="https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/set-the-viewport">missing viewport</a> (a critical meta-tag for mobile pages), <a href="https://developers.google.com/speed/docs/insights/UseLegibleFontSizes">tiny fonts</a>, fixed-width viewports, <a href="https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/size-content-to-the-viewport">content not sized to viewport</a>, and <a href="https://developers.google.com/speed/docs/insights/SizeTapTargetsAppropriately">clickable links/buttons too close</a> to each other. </p> <p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLkASsWoItbFPm3JTkpCC1TVO4lPh61dKxcyBxNzEUzFoptCEUtC4btHuc37Ol1OY-tbVzEmuzHfP4Ke4pq2Ba56az4nj38uz_VW4sO-v6VTJX_U8BsgbLsissWOrWe1UM9S_G/s1600/mobileusa.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLkASsWoItbFPm3JTkpCC1TVO4lPh61dKxcyBxNzEUzFoptCEUtC4btHuc37Ol1OY-tbVzEmuzHfP4Ke4pq2Ba56az4nj38uz_VW4sO-v6VTJX_U8BsgbLsissWOrWe1UM9S_G/s640/mobileusa.png" /></a> </p> <p>We strongly recommend you take a look at these issues in Webmaster Tools, and think about how they might be resolved; sometimes it's just a matter of tweaking your site's template! More information on how to make a great mobile-friendly website can be found in our <a href="https://developers.google.com/web/fundamentals/">Web Fundamentals</a> website (with more information to come soon).</p> <p>If you have any questions, feel free to join us in our <a href="https://productforums.google.com/forum/#!forum/webmasters">webmaster help forums</a> (on your phone too)!</p> <span class="byline-author">Posted by <a href="https://google.me/+JohnMueller?rel=author">John Mueller</a>, Webmaster Trends Analyst, Zurich</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster Level: intermediate</p> <p>Mobile is growing at a fantastic pace - in usage, not just in screen size. To keep you informed of issues mobile users might be seeing across your website, we've added the <a href="https://www.google.com/webmasters/tools/mobile-usability">Mobile Usability feature</a> to <a href="https://www.google.com/webmasters/tools/">Webmaster Tools</a>. </p> <p>The new feature shows mobile usability issues we’ve identified across your website, complete with graphs over time so that you see the progress that you've made. </p> <p>A mobile-friendly site is one that you can easily read & use on a smartphone, by only having to scroll up or down. Swiping left/right to search for content, zooming to read text and use UI elements, or not being able to see the content at all make a site harder to use for users on mobile phones. To help, the Mobile Usability reports show the following issues: Flash content, <a href="https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/set-the-viewport">missing viewport</a> (a critical meta-tag for mobile pages), <a href="https://developers.google.com/speed/docs/insights/UseLegibleFontSizes">tiny fonts</a>, fixed-width viewports, <a href="https://developers.google.com/web/fundamentals/layouts/rwd-fundamentals/size-content-to-the-viewport">content not sized to viewport</a>, and <a href="https://developers.google.com/speed/docs/insights/SizeTapTargetsAppropriately">clickable links/buttons too close</a> to each other. </p> <p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLkASsWoItbFPm3JTkpCC1TVO4lPh61dKxcyBxNzEUzFoptCEUtC4btHuc37Ol1OY-tbVzEmuzHfP4Ke4pq2Ba56az4nj38uz_VW4sO-v6VTJX_U8BsgbLsissWOrWe1UM9S_G/s1600/mobileusa.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLkASsWoItbFPm3JTkpCC1TVO4lPh61dKxcyBxNzEUzFoptCEUtC4btHuc37Ol1OY-tbVzEmuzHfP4Ke4pq2Ba56az4nj38uz_VW4sO-v6VTJX_U8BsgbLsissWOrWe1UM9S_G/s640/mobileusa.png" /></a> </p> <p>We strongly recommend you take a look at these issues in Webmaster Tools, and think about how they might be resolved; sometimes it's just a matter of tweaking your site's template! More information on how to make a great mobile-friendly website can be found in our <a href="https://developers.google.com/web/fundamentals/">Web Fundamentals</a> website (with more information to come soon).</p> <p>If you have any questions, feel free to join us in our <a href="https://productforums.google.com/forum/#!forum/webmasters">webmaster help forums</a> (on your phone too)!</p> <span class="byline-author">Posted by <a href="https://google.me/+JohnMueller?rel=author">John Mueller</a>, Webmaster Trends Analyst, Zurich</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Tracking mobile usability in Webmaster Tools&url=https://webmasters.googleblog.com/2014/10/tracking-mobile-usability-in-webmaster.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/10/tracking-mobile-usability-in-webmaster.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/10/tracking-mobile-usability-in-webmaster.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/mobile?hl=en' rel='tag'> mobile </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='1602604405175822426' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/10/best-practices-for-xml-sitemaps-rssatom.html?hl=en' itemprop='url' title='Best practices for XML sitemaps & RSS/Atom feeds'> Best practices for XML sitemaps & RSS/Atom feeds </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, October 16, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: intermediate-advanced</p><p><a href="https://support.google.com/webmasters/answer/183669?hl=en">Submitting sitemaps</a> can be an important part of optimizing websites. Sitemaps enable search engines to discover all pages on a site and to download them quickly when they change. This blog post explains which fields in sitemaps are important, when to use XML sitemaps and RSS/Atom feeds, and how to optimize them for Google.</p><h3>Sitemaps and feeds</h3><p>Sitemaps can be in <a href="http://www.sitemaps.org">XML sitemap</a>, <a href="http://en.wikipedia.org/wiki/RSS">RSS</a>, or <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a> formats. The important difference between these formats is that XML sitemaps describe the whole set of URLs within a site, while RSS/Atom feeds describe recent changes. This has important implications:</p><ul><li>XML sitemaps are usually large; RSS/Atom feeds are small, containing only the most recent updates to your site.</li> <li>XML sitemaps are downloaded less frequently than RSS/Atom feeds.</li> </ul><p>For optimal crawling, we recommend using both XML sitemaps and RSS/Atom feeds. XML sitemaps will give Google information about all of the pages on your site. RSS/Atom feeds will provide all updates on your site, helping Google to keep your content fresher in its index. Note that submitting sitemaps or feeds does not guarantee the indexing of those URLs.</p><p>Example of an XML sitemap:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <br /> <url> <br /> <loc>http://example.com/mypage</loc> <br /> <lastmod>2011-06-27T19:34:00+01:00</lastmod> <br /> <!-- optional additional tags --> <br /> </url> <br /> <url> <br /> ... <br /> </url> <br /> </urlset> </code> <p>Example of an RSS feed:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <rss> <br /> <channel> <br /> <!-- other tags --> <br /> <item> <br /> <!-- other tags --> <br /> <link>http://example.com/mypage</link> <br /> <pubDate>Mon, 27 Jun 2011 19:34:00 +0100</pubDate> <br /> </item> <br /> <item> <br /> ... <br /> </item> <br /> </channel> <br /> </rss> </code> <p>Example of an Atom feed:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <feed xmlns="http://www.w3.org/2005/Atom"> <br /> <!-- other tags --> <br /> <entry> <br /> <link href="http://example.com/mypage" /> <br /> <updated>2011-06-27T19:34:00+01:00</updated> <br /> <!-- other tags --> <br /> </entry> <br /> <entry> <br /> ... <br /> </entry> <br /> </feed> </code> <p>“other tags” refer to both optional and required tags by their respective standards. We recommend that you specify the required tags for Atom/RSS as they will help you to appear on other properties that might use these feeds, in addition to Google Search.</p><h3>Best practices</h3><h4>Important fields</h4><p>XML sitemaps and RSS/Atom feeds, in their core, are lists of URLs with metadata attached to them. The two most important pieces of information for Google are the URL itself and its last modification time: </p><h5>URLs</h5><p>URLs in XML sitemaps and RSS/Atom feeds should adhere to the following guidelines:</p><ul><li>Only include URLs that can be fetched by <a href="https://support.google.com/webmasters/answer/182072?hl=en">Googlebot</a>. A common mistake is including URLs disallowed by robots.txt — which cannot be fetched by Googlebot, or including URLs of pages that don't exist.</li> <li>Only include <a href="https://support.google.com/webmasters/answer/139066?hl=en">canonical</a> URLs. A common mistake is to include URLs of duplicate pages. This increases the load on your server without improving indexing.</li> </ul><h5>Last modification time</h5><p>Specify a last modification time for each URL in an XML sitemap and RSS/Atom feed. The last modification time should be the last time the content of the page changed meaningfully. If a change is meant to be visible in the search results, then the last modification time should be the time of this change.</p><ul><li>XML sitemap uses <code> <lastmod></code> </li> <li>RSS uses <code><pubDate></code> </li> <li>Atom uses <code><updated></code></li> </ul><p>Be sure to set or update last modification time correctly:</p><ul><li>Specify the time in the correct format: <a href="http://www.w3.org/TR/NOTE-datetime">W3C Datetime</a> for XML sitemaps, <a href="https://www.ietf.org/rfc/rfc3339.txt">RFC3339</a> for Atom and <a href="http://www.w3.org/Protocols/rfc822/">RFC822</a> for RSS.</li> <li>Only update modification time when the content changed meaningfully.</li> <li>Don’t set the last modification time to the current time whenever the sitemap or feed is served.</li> </ul><h4>XML sitemaps</h4><p>XML sitemaps should contain URLs of all pages on your site. They are often large and update infrequently. Follow these guidelines:</p><ul><li>For a single XML sitemap: update it at least once a day (if your site changes regularly) and <a href="http://www.sitemaps.org/protocol.html#submit_ping">ping</a> Google after you update it.</li> <li>For a set of XML sitemaps: maximize the number of URLs in each XML sitemap. The limit is 50,000 URLs or a maximum size of 10MB uncompressed, whichever is reached first. <a href="http://www.sitemaps.org/protocol.html#submit_ping">Ping</a> Google for each updated XML sitemap (or once for the sitemap index, if that's used) every time it is updated. A common mistake is to put only a handful of URLs into each XML sitemap file, which usually makes it harder for Google to download all of these XML sitemaps in a reasonable time. </li> </ul><h4>RSS/Atom</h4><p>RSS/Atom feeds should convey recent updates of your site. They are usually small and updated frequently. For these feeds, we recommend:</p><ul><li>When a new page is added or an existing page meaningfully changed, add the URL and the modification time to the feed.</li> <li>In order for Google to not miss updates, the RSS/Atom feed should have all updates in it since at least the last time Google downloaded it. The best way to achieve this is by using <a href="https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html">PubSubHubbub</a>. The hub will propagate the content of your feed to all interested parties (RSS readers, search engines, etc.) in the fastest and most efficient way possible.</li> </ul><br /> <p>Generating both XML sitemaps and Atom/RSS feeds is a great way to optimize crawling of a site for Google and other search engines. The key information in these files is the canonical URL and the time of the last modification of pages within the website. Setting these properly, and notifying Google and other search engines through sitemaps pings and PubSubHubbub, will allow your website to be crawled optimally, and represented accordingly in search results.</p><p>If you have any questions, feel free to post them here, or to join other webmasters in the <a href="https://productforums.google.com/forum/#!categories/webmasters/sitemaps">webmaster help forum section on sitemaps</a>.</p><span class="byline-author">Posted by Alkis Evlogimenos, Google Feeds Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: intermediate-advanced</p><p><a href="https://support.google.com/webmasters/answer/183669?hl=en">Submitting sitemaps</a> can be an important part of optimizing websites. Sitemaps enable search engines to discover all pages on a site and to download them quickly when they change. This blog post explains which fields in sitemaps are important, when to use XML sitemaps and RSS/Atom feeds, and how to optimize them for Google.</p><h3>Sitemaps and feeds</h3><p>Sitemaps can be in <a href="http://www.sitemaps.org">XML sitemap</a>, <a href="http://en.wikipedia.org/wiki/RSS">RSS</a>, or <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom</a> formats. The important difference between these formats is that XML sitemaps describe the whole set of URLs within a site, while RSS/Atom feeds describe recent changes. This has important implications:</p><ul><li>XML sitemaps are usually large; RSS/Atom feeds are small, containing only the most recent updates to your site.</li> <li>XML sitemaps are downloaded less frequently than RSS/Atom feeds.</li> </ul><p>For optimal crawling, we recommend using both XML sitemaps and RSS/Atom feeds. XML sitemaps will give Google information about all of the pages on your site. RSS/Atom feeds will provide all updates on your site, helping Google to keep your content fresher in its index. Note that submitting sitemaps or feeds does not guarantee the indexing of those URLs.</p><p>Example of an XML sitemap:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <br /> <url> <br /> <loc>http://example.com/mypage</loc> <br /> <lastmod>2011-06-27T19:34:00+01:00</lastmod> <br /> <!-- optional additional tags --> <br /> </url> <br /> <url> <br /> ... <br /> </url> <br /> </urlset> </code> <p>Example of an RSS feed:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <rss> <br /> <channel> <br /> <!-- other tags --> <br /> <item> <br /> <!-- other tags --> <br /> <link>http://example.com/mypage</link> <br /> <pubDate>Mon, 27 Jun 2011 19:34:00 +0100</pubDate> <br /> </item> <br /> <item> <br /> ... <br /> </item> <br /> </channel> <br /> </rss> </code> <p>Example of an Atom feed:</p><code> <?xml version="1.0" encoding="utf-8"?> <br /> <feed xmlns="http://www.w3.org/2005/Atom"> <br /> <!-- other tags --> <br /> <entry> <br /> <link href="http://example.com/mypage" /> <br /> <updated>2011-06-27T19:34:00+01:00</updated> <br /> <!-- other tags --> <br /> </entry> <br /> <entry> <br /> ... <br /> </entry> <br /> </feed> </code> <p>“other tags” refer to both optional and required tags by their respective standards. We recommend that you specify the required tags for Atom/RSS as they will help you to appear on other properties that might use these feeds, in addition to Google Search.</p><h3>Best practices</h3><h4>Important fields</h4><p>XML sitemaps and RSS/Atom feeds, in their core, are lists of URLs with metadata attached to them. The two most important pieces of information for Google are the URL itself and its last modification time: </p><h5>URLs</h5><p>URLs in XML sitemaps and RSS/Atom feeds should adhere to the following guidelines:</p><ul><li>Only include URLs that can be fetched by <a href="https://support.google.com/webmasters/answer/182072?hl=en">Googlebot</a>. A common mistake is including URLs disallowed by robots.txt — which cannot be fetched by Googlebot, or including URLs of pages that don't exist.</li> <li>Only include <a href="https://support.google.com/webmasters/answer/139066?hl=en">canonical</a> URLs. A common mistake is to include URLs of duplicate pages. This increases the load on your server without improving indexing.</li> </ul><h5>Last modification time</h5><p>Specify a last modification time for each URL in an XML sitemap and RSS/Atom feed. The last modification time should be the last time the content of the page changed meaningfully. If a change is meant to be visible in the search results, then the last modification time should be the time of this change.</p><ul><li>XML sitemap uses <code> <lastmod></code> </li> <li>RSS uses <code><pubDate></code> </li> <li>Atom uses <code><updated></code></li> </ul><p>Be sure to set or update last modification time correctly:</p><ul><li>Specify the time in the correct format: <a href="http://www.w3.org/TR/NOTE-datetime">W3C Datetime</a> for XML sitemaps, <a href="https://www.ietf.org/rfc/rfc3339.txt">RFC3339</a> for Atom and <a href="http://www.w3.org/Protocols/rfc822/">RFC822</a> for RSS.</li> <li>Only update modification time when the content changed meaningfully.</li> <li>Don’t set the last modification time to the current time whenever the sitemap or feed is served.</li> </ul><h4>XML sitemaps</h4><p>XML sitemaps should contain URLs of all pages on your site. They are often large and update infrequently. Follow these guidelines:</p><ul><li>For a single XML sitemap: update it at least once a day (if your site changes regularly) and <a href="http://www.sitemaps.org/protocol.html#submit_ping">ping</a> Google after you update it.</li> <li>For a set of XML sitemaps: maximize the number of URLs in each XML sitemap. The limit is 50,000 URLs or a maximum size of 10MB uncompressed, whichever is reached first. <a href="http://www.sitemaps.org/protocol.html#submit_ping">Ping</a> Google for each updated XML sitemap (or once for the sitemap index, if that's used) every time it is updated. A common mistake is to put only a handful of URLs into each XML sitemap file, which usually makes it harder for Google to download all of these XML sitemaps in a reasonable time. </li> </ul><h4>RSS/Atom</h4><p>RSS/Atom feeds should convey recent updates of your site. They are usually small and updated frequently. For these feeds, we recommend:</p><ul><li>When a new page is added or an existing page meaningfully changed, add the URL and the modification time to the feed.</li> <li>In order for Google to not miss updates, the RSS/Atom feed should have all updates in it since at least the last time Google downloaded it. The best way to achieve this is by using <a href="https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html">PubSubHubbub</a>. The hub will propagate the content of your feed to all interested parties (RSS readers, search engines, etc.) in the fastest and most efficient way possible.</li> </ul><br /> <p>Generating both XML sitemaps and Atom/RSS feeds is a great way to optimize crawling of a site for Google and other search engines. The key information in these files is the canonical URL and the time of the last modification of pages within the website. Setting these properly, and notifying Google and other search engines through sitemaps pings and PubSubHubbub, will allow your website to be crawled optimally, and represented accordingly in search results.</p><p>If you have any questions, feel free to post them here, or to join other webmasters in the <a href="https://productforums.google.com/forum/#!categories/webmasters/sitemaps">webmaster help forum section on sitemaps</a>.</p><span class="byline-author">Posted by Alkis Evlogimenos, Google Feeds Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Best practices for XML sitemaps & RSS/Atom feeds&url=https://webmasters.googleblog.com/2014/10/best-practices-for-xml-sitemaps-rssatom.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/10/best-practices-for-xml-sitemaps-rssatom.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/10/best-practices-for-xml-sitemaps-rssatom.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/sitemaps?hl=en' rel='tag'> sitemaps </a> </span> </div> </div> </div> <div class='post' data-id='8668225219911250902' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/09/an-update-to-webmaster-tools-api.html?hl=en' itemprop='url' title='An update to the Webmaster Tools API'> An update to the Webmaster Tools API </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, September 11, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"><p>Webmaster level: advanced</p><p>Over the summer the Webmaster Tools team has been cooking up an update to the <a href="https://developers.google.com/webmaster-tools/">Webmaster Tools API</a>. The new API is consistent with other Google APIs, makes it easier to authenticate for apps or web-services, and provides access to some of the main features of Webmaster Tools.</p><p>If you've used other Google APIs, getting started with the new Webmaster Tools API will be easy! We have examples for <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-python">Python</a>, <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-java">Java</a>, as well as <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-oacurl">OACurl</a> (for fans of command lines). </p><p>This API allows you to:</p><ul><li>list, add, or remove sites from your account (you can currently have up to 500 sites in your account)</li> <li>list, add, or remove sitemaps for your websites</li> <li>get warning, error, and indexed counts for individual sitemaps</li> <li>get a time-series of all kinds of crawl errors for your site</li> <li>list crawl error samples for specific types of errors</li> <li>mark individual crawl errors as "fixed" (this doesn't change how they're processed, but can help simplify the UI for you)</li> </ul><p>We'd love to see what you're building with our APIs! Feel free to link to your projects in the comments below. Should you have any questions about the usage of the API, feel free to post in our <a href="https://productforums.google.com/forum/#!categories/webmasters/webmaster-tools">help forum</a> as well.</p><br /> <span class="byline-author">Posted by <a href="//google.com/+johnmueller?rel=AUTHOR">John Mueller</a>, fan of long command lines, Google Zürich</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"><p>Webmaster level: advanced</p><p>Over the summer the Webmaster Tools team has been cooking up an update to the <a href="https://developers.google.com/webmaster-tools/">Webmaster Tools API</a>. The new API is consistent with other Google APIs, makes it easier to authenticate for apps or web-services, and provides access to some of the main features of Webmaster Tools.</p><p>If you've used other Google APIs, getting started with the new Webmaster Tools API will be easy! We have examples for <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-python">Python</a>, <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-java">Java</a>, as well as <a href="https://developers.google.com/webmaster-tools/v3/quickstart/quickstart-oacurl">OACurl</a> (for fans of command lines). </p><p>This API allows you to:</p><ul><li>list, add, or remove sites from your account (you can currently have up to 500 sites in your account)</li> <li>list, add, or remove sitemaps for your websites</li> <li>get warning, error, and indexed counts for individual sitemaps</li> <li>get a time-series of all kinds of crawl errors for your site</li> <li>list crawl error samples for specific types of errors</li> <li>mark individual crawl errors as "fixed" (this doesn't change how they're processed, but can help simplify the UI for you)</li> </ul><p>We'd love to see what you're building with our APIs! Feel free to link to your projects in the comments below. Should you have any questions about the usage of the API, feel free to post in our <a href="https://productforums.google.com/forum/#!categories/webmasters/webmaster-tools">help forum</a> as well.</p><br /> <span class="byline-author">Posted by <a href="//google.com/+johnmueller?rel=AUTHOR">John Mueller</a>, fan of long command lines, Google Zürich</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:An update to the Webmaster Tools API&url=https://webmasters.googleblog.com/2014/09/an-update-to-webmaster-tools-api.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/09/an-update-to-webmaster-tools-api.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/09/an-update-to-webmaster-tools-api.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/apps?hl=en' rel='tag'> apps </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/sitemaps?hl=en' rel='tag'> sitemaps </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='1797760683057398772' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/09/optimizing-for-bandwidth-on-apache-and.html?hl=en' itemprop='url' title='Optimizing for Bandwidth on Apache and Nginx'> Optimizing for Bandwidth on Apache and Nginx </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Thursday, September 04, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: advanced</p> <p>Everyone wants to use less bandwidth: hosts want lower bills, mobile users want to stay under their limits, and no one wants to wait for unnecessary bytes. The web is full of opportunities to save bandwidth: pages served without gzip, stylesheets and JavaScript served unminified, and unoptimized images, just to name a few.</p> <p>So why isn't the web already optimized for bandwidth? If these savings are good for everyone then why haven't they been fixed yet? Mostly it's just been too much hassle. Web designers are encouraged to "save for web" when exporting their artwork, but they don't always remember. JavaScript programmers don't like working with minified code because it makes debugging harder. You can set up a custom pipeline that makes sure each of these optimizations is applied to your site every time as part of your development or deployment process, but that's a lot of work.</p> <p>An easy solution for web users is to use an optimizing proxy, like <a href="https://developer.chrome.com/multidevice/data-compression">Chrome's</a>. When users opt into this service their HTTP traffic goes via Google's proxy, which optimizes their page loads and cuts bandwidth usage by 50%. While this is great for these users, it's limited to people using Chrome who turn the feature on and it can't optimize HTTPS traffic.</p> <p>With <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">Optimize for Bandwidth</a>, the PageSpeed team is bringing this same technology to webmasters so that everyone can benefit: users of other browsers, secure sites, desktop users, and site owners who want to bring down their outbound traffic bills. Just install the <a href="https://developers.google.com/speed/pagespeed/module">PageSpeed module</a> on your Apache or Nginx server [1], <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">turn on</a> Optimize for Bandwidth in your configuration, and PageSpeed will do the rest.</p> <p>If you later decide you're interested in PageSpeed's more advanced optimizations, from <a href="https://developers.google.com/speed/pagespeed/module/filter-cache-extend">cache extension</a> and <a href="https://developers.google.com/speed/pagespeed/module/filter-js-inline">inlining</a> to the more aggressive <a href="https://developers.google.com/speed/pagespeed/module/filter-lazyload-images">image lazyloading</a> and <a href="https://developers.google.com/speed/pagespeed/module/filter-js-defer">defer JavaScript</a>, it's just a matter of enabling them in your PageSpeed configuration.</p> <p>Learn more about <a href="https://developers.google.com/speed/pagespeed/module">installing PageSpeed</a> or <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">enabling Optimize for Bandwidth</a>.</p> <br><span class="byline-author">Posted by Jeff Kaufman, Make the Web Fast</span> <br><br> <br>[1] If you're using a different web server, consider running PageSpeed on an Apache or Nginx proxy. And it's all <a href="https://code.google.com/p/modpagespeed/">open source</a>, with porting efforts underway for <a href="http://www.iispeed.com/">IIS</a>, <a href="http://www.atspagespeed.com/">ATS</a>, and others. <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: advanced</p> <p>Everyone wants to use less bandwidth: hosts want lower bills, mobile users want to stay under their limits, and no one wants to wait for unnecessary bytes. The web is full of opportunities to save bandwidth: pages served without gzip, stylesheets and JavaScript served unminified, and unoptimized images, just to name a few.</p> <p>So why isn't the web already optimized for bandwidth? If these savings are good for everyone then why haven't they been fixed yet? Mostly it's just been too much hassle. Web designers are encouraged to "save for web" when exporting their artwork, but they don't always remember. JavaScript programmers don't like working with minified code because it makes debugging harder. You can set up a custom pipeline that makes sure each of these optimizations is applied to your site every time as part of your development or deployment process, but that's a lot of work.</p> <p>An easy solution for web users is to use an optimizing proxy, like <a href="https://developer.chrome.com/multidevice/data-compression">Chrome's</a>. When users opt into this service their HTTP traffic goes via Google's proxy, which optimizes their page loads and cuts bandwidth usage by 50%. While this is great for these users, it's limited to people using Chrome who turn the feature on and it can't optimize HTTPS traffic.</p> <p>With <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">Optimize for Bandwidth</a>, the PageSpeed team is bringing this same technology to webmasters so that everyone can benefit: users of other browsers, secure sites, desktop users, and site owners who want to bring down their outbound traffic bills. Just install the <a href="https://developers.google.com/speed/pagespeed/module">PageSpeed module</a> on your Apache or Nginx server [1], <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">turn on</a> Optimize for Bandwidth in your configuration, and PageSpeed will do the rest.</p> <p>If you later decide you're interested in PageSpeed's more advanced optimizations, from <a href="https://developers.google.com/speed/pagespeed/module/filter-cache-extend">cache extension</a> and <a href="https://developers.google.com/speed/pagespeed/module/filter-js-inline">inlining</a> to the more aggressive <a href="https://developers.google.com/speed/pagespeed/module/filter-lazyload-images">image lazyloading</a> and <a href="https://developers.google.com/speed/pagespeed/module/filter-js-defer">defer JavaScript</a>, it's just a matter of enabling them in your PageSpeed configuration.</p> <p>Learn more about <a href="https://developers.google.com/speed/pagespeed/module">installing PageSpeed</a> or <a href="https://developers.google.com/speed/pagespeed/module/optimize-for-bandwidth">enabling Optimize for Bandwidth</a>.</p> <br><span class="byline-author">Posted by Jeff Kaufman, Make the Web Fast</span> <br><br> <br>[1] If you're using a different web server, consider running PageSpeed on an Apache or Nginx proxy. And it's all <a href="https://code.google.com/p/modpagespeed/">open source</a>, with porting efforts underway for <a href="http://www.iispeed.com/">IIS</a>, <a href="http://www.atspagespeed.com/">ATS</a>, and others. <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Optimizing for Bandwidth on Apache and Nginx&url=https://webmasters.googleblog.com/2014/09/optimizing-for-bandwidth-on-apache-and.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/09/optimizing-for-bandwidth-on-apache-and.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/09/optimizing-for-bandwidth-on-apache-and.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/performance?hl=en' rel='tag'> performance </a> </span> </div> </div> </div> <div class='post' data-id='6150648882756211470' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/08/https-as-ranking-signal.html?hl=en' itemprop='url' title='HTTPS as a ranking signal'> HTTPS as a ranking signal </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, August 06, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: all</p><p>Security is a top priority for Google. We invest a lot in making sure that our services use industry-leading security, like <a href="http://googleonlinesecurity.blogspot.com/2011/11/protecting-data-for-long-term-with.html?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">strong HTTPS encryption by default</a>. That means that people using Search, Gmail and Google Drive, for example, automatically have a secure connection to Google. </p><p>Beyond our own stuff, we’re also working to make the Internet safer more broadly. A big part of that is making sure that websites people access from Google are secure. For instance, we have created resources to help webmasters <a href="https://www.google.com/webmasters/hacked/?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">prevent and fix security breaches</a> on their sites. </p><p>We want to go even further. At <a href="https://www.google.com/events/io?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Google I/O</a> a few months ago, we called for “<a href="https://www.youtube.com/watch?v=cBhZ6S0PFCY&utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">HTTPS everywhere</a>” on the web. </p><p>We’ve also seen more and more webmasters adopting <a href="https://en.wikipedia.org/wiki/HTTP_Secure">HTTPS</a> (also known as HTTP over <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>, or Transport Layer Security), on their website, which is encouraging. </p><p>For these reasons, over the past few months we’ve been running tests taking into account whether sites use secure, encrypted connections as a signal in our search ranking algorithms. We've seen positive results, so we're starting to use HTTPS as a ranking signal. For now it's only a very lightweight signal — affecting fewer than 1% of global queries, and carrying less weight than other signals such as <a href="https://support.google.com/webmasters/answer/6001093?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">high-quality content</a> — while we give webmasters time to switch to HTTPS. But over time, we may decide to strengthen it, because we’d like to encourage all website owners to switch from HTTP to HTTPS to keep everyone safe on the web.</p><br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkR90j7fc_QVCtHKetMvsAKinh5bsWnBMhdt6nuR-P0y6hNem4KgaIfm8skFhQKKYV8Gt8sZHriGX5FJvFAgIaDJYL5d0ou0CPgxuZbdhnbXaSuvBR5tubL9mYkmZ8C_7qKvBn/s1600/security.png" imageanchor="1" ><img alt="Lock" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkR90j7fc_QVCtHKetMvsAKinh5bsWnBMhdt6nuR-P0y6hNem4KgaIfm8skFhQKKYV8Gt8sZHriGX5FJvFAgIaDJYL5d0ou0CPgxuZbdhnbXaSuvBR5tubL9mYkmZ8C_7qKvBn/s400/security.png"/></a> <p><br /> In the coming weeks, we’ll publish detailed best practices (it's in our <a href="https://support.google.com/webmasters/answer/6073543?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">help center</a> now) to make TLS adoption easier, and to avoid common mistakes. Here are some basic tips to get started:</p><ul><li>Decide the kind of certificate you need: single, multi-domain, or wildcard certificate</li> <li>Use 2048-bit key certificates</li> <li>Use relative URLs for resources that reside on the same secure domain</li> <li>Use protocol relative URLs for all other domains</li> <li>Check out our <a href="https://support.google.com/webmasters/answer/6033049?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Site move article</a> for more guidelines on how to change your website’s address</li> <li>Don’t block your HTTPS site from crawling using robots.txt</li> <li>Allow indexing of your pages by search engines where possible. Avoid the noindex robots meta tag.</li> </ul><p>If your website is already serving on HTTPS, you can test its security level and configuration with the <a href="https://www.ssllabs.com/ssltest/">Qualys Lab tool</a>. If you are concerned about TLS and your site’s performance, have a look at <a href="https://istlsfastyet.com/?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Is TLS fast yet?</a>. And of course, if you have any questions or concerns, please feel free to post in our <a href="https://support.google.com/webmasters/go/community?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Webmaster Help Forums</a>.</p><p>We hope to see more websites using HTTPS in the future. Let’s all make the web more secure!</p><span class="byline-author">Posted by <a href="https://plus.google.com/+ZinebAitBahajji?rel=author">Zineb Ait Bahajji</a> and <a href="https://plus.google.com/+GaryIllyes">Gary Illyes</a>, Webmaster Trends Analysts</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: all</p><p>Security is a top priority for Google. We invest a lot in making sure that our services use industry-leading security, like <a href="http://googleonlinesecurity.blogspot.com/2011/11/protecting-data-for-long-term-with.html?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">strong HTTPS encryption by default</a>. That means that people using Search, Gmail and Google Drive, for example, automatically have a secure connection to Google. </p><p>Beyond our own stuff, we’re also working to make the Internet safer more broadly. A big part of that is making sure that websites people access from Google are secure. For instance, we have created resources to help webmasters <a href="https://www.google.com/webmasters/hacked/?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">prevent and fix security breaches</a> on their sites. </p><p>We want to go even further. At <a href="https://www.google.com/events/io?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Google I/O</a> a few months ago, we called for “<a href="https://www.youtube.com/watch?v=cBhZ6S0PFCY&utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">HTTPS everywhere</a>” on the web. </p><p>We’ve also seen more and more webmasters adopting <a href="https://en.wikipedia.org/wiki/HTTP_Secure">HTTPS</a> (also known as HTTP over <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>, or Transport Layer Security), on their website, which is encouraging. </p><p>For these reasons, over the past few months we’ve been running tests taking into account whether sites use secure, encrypted connections as a signal in our search ranking algorithms. We've seen positive results, so we're starting to use HTTPS as a ranking signal. For now it's only a very lightweight signal — affecting fewer than 1% of global queries, and carrying less weight than other signals such as <a href="https://support.google.com/webmasters/answer/6001093?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">high-quality content</a> — while we give webmasters time to switch to HTTPS. But over time, we may decide to strengthen it, because we’d like to encourage all website owners to switch from HTTP to HTTPS to keep everyone safe on the web.</p><br /> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkR90j7fc_QVCtHKetMvsAKinh5bsWnBMhdt6nuR-P0y6hNem4KgaIfm8skFhQKKYV8Gt8sZHriGX5FJvFAgIaDJYL5d0ou0CPgxuZbdhnbXaSuvBR5tubL9mYkmZ8C_7qKvBn/s1600/security.png" imageanchor="1" ><img alt="Lock" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkR90j7fc_QVCtHKetMvsAKinh5bsWnBMhdt6nuR-P0y6hNem4KgaIfm8skFhQKKYV8Gt8sZHriGX5FJvFAgIaDJYL5d0ou0CPgxuZbdhnbXaSuvBR5tubL9mYkmZ8C_7qKvBn/s400/security.png"/></a> <p><br /> In the coming weeks, we’ll publish detailed best practices (it's in our <a href="https://support.google.com/webmasters/answer/6073543?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">help center</a> now) to make TLS adoption easier, and to avoid common mistakes. Here are some basic tips to get started:</p><ul><li>Decide the kind of certificate you need: single, multi-domain, or wildcard certificate</li> <li>Use 2048-bit key certificates</li> <li>Use relative URLs for resources that reside on the same secure domain</li> <li>Use protocol relative URLs for all other domains</li> <li>Check out our <a href="https://support.google.com/webmasters/answer/6033049?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Site move article</a> for more guidelines on how to change your website’s address</li> <li>Don’t block your HTTPS site from crawling using robots.txt</li> <li>Allow indexing of your pages by search engines where possible. Avoid the noindex robots meta tag.</li> </ul><p>If your website is already serving on HTTPS, you can test its security level and configuration with the <a href="https://www.ssllabs.com/ssltest/">Qualys Lab tool</a>. If you are concerned about TLS and your site’s performance, have a look at <a href="https://istlsfastyet.com/?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Is TLS fast yet?</a>. And of course, if you have any questions or concerns, please feel free to post in our <a href="https://support.google.com/webmasters/go/community?utm_source=wmx_blog&utm_medium=referral&utm_campaign=tls_en_post">Webmaster Help Forums</a>.</p><p>We hope to see more websites using HTTPS in the future. Let’s all make the web more secure!</p><span class="byline-author">Posted by <a href="https://plus.google.com/+ZinebAitBahajji?rel=author">Zineb Ait Bahajji</a> and <a href="https://plus.google.com/+GaryIllyes">Gary Illyes</a>, Webmaster Trends Analysts</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:HTTPS as a ranking signal&url=https://webmasters.googleblog.com/2014/08/https-as-ranking-signal.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/08/https-as-ranking-signal.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/08/https-as-ranking-signal.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/https?hl=en' rel='tag'> https </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/search%20results?hl=en' rel='tag'> search results </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/security?hl=en' rel='tag'> security </a> </span> </div> </div> </div> <div class='post' data-id='289332834064467915' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/08/introducing-google-news-publisher-center.html?hl=en' itemprop='url' title='Introducing the Google News Publisher Center'> Introducing the Google News Publisher Center </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, August 04, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on">(Cross-posted on the <a href="http://googlenewsblog.blogspot.com/2014/08/introducing-google-news-publisher-center.html">Google News Blog</a>)<br /> <br /> Webmaster level: All<br /> <br /> <b>UPDATE</b>: Great News -- The Publisher Center is now available in all countries where Google News has an edition.<br /> <br /> If you're a news publisher, your website has probably evolved and changed over time -- just like your stories. But in the past, when you made changes to the structure of your site, we might not have discovered your new content. That meant a lost opportunity for your readers, and for you. Unless you regularly checked Webmaster Tools, you might not even have realized that your new content wasn’t showing up in Google News. To prevent this from happening, we are letting you make changes to our record of your news site using the just launched <a href="https://partnerdash.google.com/partnerdash/d/news">Google News Publisher Center</a>.<br /> <br /> With the Publisher Center, your potential readers can be more informed about the articles they’re clicking on and you benefit from better discovery and classification of your news content. After verifying ownership of your site using Google Webmaster Tools, you can use the Publisher Center to directly make the following changes:<br /> <br /> <ul style="text-align: left;"><li><b>Update your news site details</b>, including changing your site name and labeling your publication with any relevant source labels (e.g., “Blog”, “Satire” or “Opinion”)</li> <li><b>Update your section URLs</b> when you change your site structure (e.g., when you add a new section such as <i>http://example.com/2014commonwealthgames</i> or <i>http://example.com/elections2014</i>)</li> <li><b>Label your sections</b> with a specific topic (e.g., “Technology” or “Politics”)</li> </ul><br /> Whenever you make changes to your site, we’d recommend also checking our record of it in the Publisher Center and updating it if necessary.<br /> <br /> <a href="https://partnerdash.google.com/partnerdash/d/news">Try it out</a>, or learn more about <a href="https://support.google.com/news/publisher/topic/3189759">how to get started</a>.<br /> <br /> At the moment the tool is only available to publishers in the U.S. but we plan to introduce it in other countries soon and add more features. In the meantime, we’d love to <a href="https://www.google.com/tools/feedback/intl/en/">hear from you</a> about what works well and what doesn’t. Ultimately, our goal is to make this a platform where news publishers and Google News can work together to provide readers with the best, most diverse news on the web.<br /> <br /> <span class="byline-author">Posted by <a href="https://plus.google.com/+EricWeigleWork?rel=author">Eric Weigle</a>, Software Engineer</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on">(Cross-posted on the <a href="http://googlenewsblog.blogspot.com/2014/08/introducing-google-news-publisher-center.html">Google News Blog</a>)<br /> <br /> Webmaster level: All<br /> <br /> <b>UPDATE</b>: Great News -- The Publisher Center is now available in all countries where Google News has an edition.<br /> <br /> If you're a news publisher, your website has probably evolved and changed over time -- just like your stories. But in the past, when you made changes to the structure of your site, we might not have discovered your new content. That meant a lost opportunity for your readers, and for you. Unless you regularly checked Webmaster Tools, you might not even have realized that your new content wasn’t showing up in Google News. To prevent this from happening, we are letting you make changes to our record of your news site using the just launched <a href="https://partnerdash.google.com/partnerdash/d/news">Google News Publisher Center</a>.<br /> <br /> With the Publisher Center, your potential readers can be more informed about the articles they’re clicking on and you benefit from better discovery and classification of your news content. After verifying ownership of your site using Google Webmaster Tools, you can use the Publisher Center to directly make the following changes:<br /> <br /> <ul style="text-align: left;"><li><b>Update your news site details</b>, including changing your site name and labeling your publication with any relevant source labels (e.g., “Blog”, “Satire” or “Opinion”)</li> <li><b>Update your section URLs</b> when you change your site structure (e.g., when you add a new section such as <i>http://example.com/2014commonwealthgames</i> or <i>http://example.com/elections2014</i>)</li> <li><b>Label your sections</b> with a specific topic (e.g., “Technology” or “Politics”)</li> </ul><br /> Whenever you make changes to your site, we’d recommend also checking our record of it in the Publisher Center and updating it if necessary.<br /> <br /> <a href="https://partnerdash.google.com/partnerdash/d/news">Try it out</a>, or learn more about <a href="https://support.google.com/news/publisher/topic/3189759">how to get started</a>.<br /> <br /> At the moment the tool is only available to publishers in the U.S. but we plan to introduce it in other countries soon and add more features. In the meantime, we’d love to <a href="https://www.google.com/tools/feedback/intl/en/">hear from you</a> about what works well and what doesn’t. Ultimately, our goal is to make this a platform where news publishers and Google News can work together to provide readers with the best, most diverse news on the web.<br /> <br /> <span class="byline-author">Posted by <a href="https://plus.google.com/+EricWeigleWork?rel=author">Eric Weigle</a>, Software Engineer</span></div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Introducing the Google News Publisher Center&url=https://webmasters.googleblog.com/2014/08/introducing-google-news-publisher-center.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/08/introducing-google-news-publisher-center.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/08/introducing-google-news-publisher-center.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='8035351528402989220' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/07/testing-robotstxt-files-made-easier.html?hl=en' itemprop='url' title='Testing robots.txt files made easier'> Testing robots.txt files made easier </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, July 16, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <p>Webmaster level: intermediate-advanced</p> <p>To crawl, or not to crawl, that is the robots.txt question.</p> <p>Making and maintaining correct robots.txt files can sometimes be difficult. While most sites have it easy (tip: they often don't even need a robots.txt file!), finding the directives within a large robots.txt file that are or were blocking individual URLs can be quite tricky. To make that easier, we're now announcing an updated <a href="https://www.google.com/webmasters/tools/robots-testing-tool">robots.txt testing tool</a> in Webmaster Tools.</p> <p>You can find the updated testing tool in <a href="https://www.google.com/webmasters/tools/">Webmaster Tools</a> within the Crawl section:</p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQyqXRYbELLymmDmQk9c2e32Zl3YOnqzfJjPEVWxJUZO331-uFf-94QdT3TfeQuHMwt9LhVB4ozyTYEPnzSuavKhFBnzFnnhso7uMOuGEGPtoLgIO5ZYJO4WcaurRXeMsZEK/s1600/robots.txt.gif.jpg.bmp.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQyqXRYbELLymmDmQk9c2e32Zl3YOnqzfJjPEVWxJUZO331-uFf-94QdT3TfeQuHMwt9LhVB4ozyTYEPnzSuavKhFBnzFnnhso7uMOuGEGPtoLgIO5ZYJO4WcaurRXeMsZEK/s400/robots.txt.gif.jpg.bmp.png" /></a> <p>Here you'll see the current robots.txt file, and can test new URLs to see whether they're disallowed for crawling. To guide your way through complicated directives, it will highlight the specific one that led to the final decision. You can make changes in the file and test those too, you'll just need to upload the new version of the file to your server afterwards to make the changes take effect. Our developers site has <a href="https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt">more about robots.txt directives and how the files are processed</a>. </p> <p>Additionally, you'll be able to review older versions of your robots.txt file, and see when access issues block us from crawling. For example, if Googlebot sees a 500 server error for the robots.txt file, we'll generally pause further crawling of the website. </p> <p>Since there may be some errors or warnings shown for your existing sites, we recommend double-checking their robots.txt files. You can also combine it with other parts of Webmaster Tools: for example, you might use the updated <a href="https://support.google.com/webmasters/answer/158587">Fetch as Google tool</a> to render important pages on your website. If any blocked URLs are reported, you can use this robots.txt tester to find the directive that's blocking them, and, of course, then improve that. A common problem we've seen comes from old robots.txt files that block CSS, JavaScript, or mobile content — fixing that is often trivial once you've seen it.</p> <p>We hope this updated tool makes it easier for you to test & maintain the robots.txt file. Should you have any questions, or need help with crafting a good set of directives, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">webmaster's help forum</a>!</p> <span class="byline-author">Posted by Asaph Arnon, Webmaster Tools team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <p>Webmaster level: intermediate-advanced</p> <p>To crawl, or not to crawl, that is the robots.txt question.</p> <p>Making and maintaining correct robots.txt files can sometimes be difficult. While most sites have it easy (tip: they often don't even need a robots.txt file!), finding the directives within a large robots.txt file that are or were blocking individual URLs can be quite tricky. To make that easier, we're now announcing an updated <a href="https://www.google.com/webmasters/tools/robots-testing-tool">robots.txt testing tool</a> in Webmaster Tools.</p> <p>You can find the updated testing tool in <a href="https://www.google.com/webmasters/tools/">Webmaster Tools</a> within the Crawl section:</p> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQyqXRYbELLymmDmQk9c2e32Zl3YOnqzfJjPEVWxJUZO331-uFf-94QdT3TfeQuHMwt9LhVB4ozyTYEPnzSuavKhFBnzFnnhso7uMOuGEGPtoLgIO5ZYJO4WcaurRXeMsZEK/s1600/robots.txt.gif.jpg.bmp.png" imageanchor="1" ><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQyqXRYbELLymmDmQk9c2e32Zl3YOnqzfJjPEVWxJUZO331-uFf-94QdT3TfeQuHMwt9LhVB4ozyTYEPnzSuavKhFBnzFnnhso7uMOuGEGPtoLgIO5ZYJO4WcaurRXeMsZEK/s400/robots.txt.gif.jpg.bmp.png" /></a> <p>Here you'll see the current robots.txt file, and can test new URLs to see whether they're disallowed for crawling. To guide your way through complicated directives, it will highlight the specific one that led to the final decision. You can make changes in the file and test those too, you'll just need to upload the new version of the file to your server afterwards to make the changes take effect. Our developers site has <a href="https://developers.google.com/webmasters/control-crawl-index/docs/robots_txt">more about robots.txt directives and how the files are processed</a>. </p> <p>Additionally, you'll be able to review older versions of your robots.txt file, and see when access issues block us from crawling. For example, if Googlebot sees a 500 server error for the robots.txt file, we'll generally pause further crawling of the website. </p> <p>Since there may be some errors or warnings shown for your existing sites, we recommend double-checking their robots.txt files. You can also combine it with other parts of Webmaster Tools: for example, you might use the updated <a href="https://support.google.com/webmasters/answer/158587">Fetch as Google tool</a> to render important pages on your website. If any blocked URLs are reported, you can use this robots.txt tester to find the directive that's blocking them, and, of course, then improve that. A common problem we've seen comes from old robots.txt files that block CSS, JavaScript, or mobile content — fixing that is often trivial once you've seen it.</p> <p>We hope this updated tool makes it easier for you to test & maintain the robots.txt file. Should you have any questions, or need help with crafting a good set of directives, feel free to drop by our <a href="https://support.google.com/webmasters/go/community">webmaster's help forum</a>!</p> <span class="byline-author">Posted by Asaph Arnon, Webmaster Tools team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Testing robots.txt files made easier&url=https://webmasters.googleblog.com/2014/07/testing-robotstxt-files-made-easier.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/07/testing-robotstxt-files-made-easier.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/07/testing-robotstxt-files-made-easier.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='4524226224841631085' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/05/rendering-pages-with-fetch-as-google.html?hl=en' itemprop='url' title='Rendering pages with Fetch as Google'> Rendering pages with Fetch as Google </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, May 27, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster level: all <br /> <br /> The <a href="https://support.google.com/webmasters/answer/158587">Fetch as Google feature in Webmaster Tools</a> provides webmasters with the results of Googlebot attempting to fetch their pages. The server headers and HTML shown are useful to diagnose technical problems and hacking side-effects, but sometimes make double-checking the response hard: <em>Help! What do all of these codes mean? Is this really the same page as I see it in my browser? Where shall we have lunch?</em> We can't help with that last one, but for the rest, we've recently expanded this tool to also show how Googlebot would be able to render the page. <br /> <h4> Viewing the rendered page</h4> In order to render the page, Googlebot will try to find all the external files involved, and fetch them as well. Those files frequently include images, CSS and JavaScript files, as well as other files that might be indirectly embedded through the CSS or JavaScript. These are then used to render a preview image that shows Googlebot's view of the page. <br /> <br /> You can find the <a href="https://www.google.com/webmasters/tools/googlebot-fetch">Fetch as Google feature</a> in the Crawl section of <a href="https://www.google.com/webmasters/tools">Google Webmaster Tools</a>. After submitting a URL with "Fetch and render," wait for it to be processed (this might take a moment for some pages). Once it's ready, just click on the response row to see the results. <br /><Br> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7insf8Uz61KsBugSI4CoNduvcJairQL_tN5pYEYmggd-n2Gch8_Kb8Yfp0iQ3ZhqvmIToUFYFqK7uuZb76StmZ0jCDy4XMNUtsk8mOaWzKjktWj_DbMekTHAOY6yXb1qalZhm/s1600/fetch-as-google-rendered-analytics-42-is-a-good-number.png" imageanchor="1"><img alt="Fetch as Google" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7insf8Uz61KsBugSI4CoNduvcJairQL_tN5pYEYmggd-n2Gch8_Kb8Yfp0iQ3ZhqvmIToUFYFqK7uuZb76StmZ0jCDy4XMNUtsk8mOaWzKjktWj_DbMekTHAOY6yXb1qalZhm/s400/fetch-as-google-rendered-analytics.png" /></a> <br /> <h4> Handling resources blocked by robots.txt</h4> Googlebot follows the <a href="https://support.google.com/webmasters/answer/156449">robots.txt directives</a> for all files that it fetches. If you are disallowing crawling of some of these files (or if they are embedded from a third-party server that's disallowing Googlebot's crawling of them), we won't be able to show them to you in the rendered view. Similarly, if the server fails to respond or returns errors, then we won't be able to use those either (you can find similar issues in the <a href="https://support.google.com/webmasters/answer/35120">Crawl Errors</a> section of Webmaster Tools). If we run across either of these issues, we'll show them below the preview image. <br /> <br /> We recommend making sure Googlebot can access any embedded resource that meaningfully contributes to your site's visible content, or to its layout. That will make Fetch as Google easier for you to use, and will make it possible for Googlebot to find and index that content as well. Some types of content – such as social media buttons, fonts or website-analytics scripts – tend not to meaningfully contribute to the visible content or layout, and can be left disallowed from crawling. For more information, please see our previous blog post on <a href="http://www.googlewebmastercentral.blogspot.com/2014/05/understanding-web-pages-better.html">how Google is working to understand the web better</a>. <br /> <br /> We hope this update makes it easier for you to diagnose these kinds of issues, and to discover content that's accidentally blocked from crawling. If you have any comments or questions, let us know here or drop by in the <a href="https://productforums.google.com/forum/#!categories/webmasters/webmaster-tools">webmaster help forum</a>. <br /> <br /> <span class="post-author">Posted by Shimi Salant, Webmaster Tools team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster level: all <br /> <br /> The <a href="https://support.google.com/webmasters/answer/158587">Fetch as Google feature in Webmaster Tools</a> provides webmasters with the results of Googlebot attempting to fetch their pages. The server headers and HTML shown are useful to diagnose technical problems and hacking side-effects, but sometimes make double-checking the response hard: <em>Help! What do all of these codes mean? Is this really the same page as I see it in my browser? Where shall we have lunch?</em> We can't help with that last one, but for the rest, we've recently expanded this tool to also show how Googlebot would be able to render the page. <br /> <h4> Viewing the rendered page</h4> In order to render the page, Googlebot will try to find all the external files involved, and fetch them as well. Those files frequently include images, CSS and JavaScript files, as well as other files that might be indirectly embedded through the CSS or JavaScript. These are then used to render a preview image that shows Googlebot's view of the page. <br /> <br /> You can find the <a href="https://www.google.com/webmasters/tools/googlebot-fetch">Fetch as Google feature</a> in the Crawl section of <a href="https://www.google.com/webmasters/tools">Google Webmaster Tools</a>. After submitting a URL with "Fetch and render," wait for it to be processed (this might take a moment for some pages). Once it's ready, just click on the response row to see the results. <br /><Br> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7insf8Uz61KsBugSI4CoNduvcJairQL_tN5pYEYmggd-n2Gch8_Kb8Yfp0iQ3ZhqvmIToUFYFqK7uuZb76StmZ0jCDy4XMNUtsk8mOaWzKjktWj_DbMekTHAOY6yXb1qalZhm/s1600/fetch-as-google-rendered-analytics-42-is-a-good-number.png" imageanchor="1"><img alt="Fetch as Google" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7insf8Uz61KsBugSI4CoNduvcJairQL_tN5pYEYmggd-n2Gch8_Kb8Yfp0iQ3ZhqvmIToUFYFqK7uuZb76StmZ0jCDy4XMNUtsk8mOaWzKjktWj_DbMekTHAOY6yXb1qalZhm/s400/fetch-as-google-rendered-analytics.png" /></a> <br /> <h4> Handling resources blocked by robots.txt</h4> Googlebot follows the <a href="https://support.google.com/webmasters/answer/156449">robots.txt directives</a> for all files that it fetches. If you are disallowing crawling of some of these files (or if they are embedded from a third-party server that's disallowing Googlebot's crawling of them), we won't be able to show them to you in the rendered view. Similarly, if the server fails to respond or returns errors, then we won't be able to use those either (you can find similar issues in the <a href="https://support.google.com/webmasters/answer/35120">Crawl Errors</a> section of Webmaster Tools). If we run across either of these issues, we'll show them below the preview image. <br /> <br /> We recommend making sure Googlebot can access any embedded resource that meaningfully contributes to your site's visible content, or to its layout. That will make Fetch as Google easier for you to use, and will make it possible for Googlebot to find and index that content as well. Some types of content – such as social media buttons, fonts or website-analytics scripts – tend not to meaningfully contribute to the visible content or layout, and can be left disallowed from crawling. For more information, please see our previous blog post on <a href="http://www.googlewebmastercentral.blogspot.com/2014/05/understanding-web-pages-better.html">how Google is working to understand the web better</a>. <br /> <br /> We hope this update makes it easier for you to diagnose these kinds of issues, and to discover content that's accidentally blocked from crawling. If you have any comments or questions, let us know here or drop by in the <a href="https://productforums.google.com/forum/#!categories/webmasters/webmaster-tools">webmaster help forum</a>. <br /> <br /> <span class="post-author">Posted by Shimi Salant, Webmaster Tools team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Rendering pages with Fetch as Google&url=https://webmasters.googleblog.com/2014/05/rendering-pages-with-fetch-as-google.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/05/rendering-pages-with-fetch-as-google.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/05/rendering-pages-with-fetch-as-google.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en' rel='tag'> crawling and indexing </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en' rel='tag'> webmaster tools </a> </span> </div> </div> </div> <div class='post' data-id='6256662899538657963' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/05/making-your-site-more-mobile-friendly.html?hl=en' itemprop='url' title='Making your site more mobile-friendly with PageSpeed Insights'> Making your site more mobile-friendly with PageSpeed Insights </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Monday, May 19, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster level: all<b id="docs-internal-guid-a08b3fac-13e3-3169-7972-5b8ec934aaa5"><br /> </b><br /> <br /> To help developers and webmasters make their pages mobile-friendly, we recently updated PageSpeed Insights with additional recommendations on mobile usability. <b><br /> </b> <b><br /></b><br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6j9M54hRWzBgC8CHadDhJodYbXPdG14xWvWi6k47-bbYUH3vHTgO2tRovXyu5Xy5yRT5GgamHzLwC760TePkw3M2nKCXOUXZ0pwNSb9Pdb4acghTz-7zaSiePxQlHi2YezEev/s1600/psi-webdeiver-torso-edition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6j9M54hRWzBgC8CHadDhJodYbXPdG14xWvWi6k47-bbYUH3vHTgO2tRovXyu5Xy5yRT5GgamHzLwC760TePkw3M2nKCXOUXZ0pwNSb9Pdb4acghTz-7zaSiePxQlHi2YezEev/s1600/psi-webdeiver-torso-edition.png" width="362" /></a></div> <br /> <b><br /> </b> Poor usability can diminish the benefits of a fast page load. We know the average mobile page takes <a href="http://analytics.blogspot.com/2013/04/is-web-getting-faster.html">more than 7 seconds to load</a>, and by using the <a href="https://developers.google.com/speed/pagespeed/insights/?utm_source=blogspot&utm_campaign=mobile_ux">PageSpeed Insights tool</a> and following its speed recommendations, you can make your page <a href="http://googlewebmastercentral.blogspot.com/2013/08/making-smartphone-sites-load-fast.html">load much faster</a>. But suppose your fast mobile site loads in just 2 seconds instead of 7 seconds. If mobile users still have to spend another 5 seconds once the page loads to pinch-zoom and scroll the screen before they can start reading the text and interacting with the page, then that site isn’t really fast to use after all. PageSpeed Insights’ new User Experience rules can help you find and fix these usability issues. <br /> <br /> These new recommendations currently cover the following areas: <br /> <ul> <li><b> Configure the viewport</b>: Without a meta-viewport tag, modern mobile browsers will assume your page is not mobile-friendly, and will fall back to a desktop viewport and possibly apply font-boosting, interfering with your intended page layout. <a href="https://developers.google.com/speed/docs/insights/ConfigureViewport?utm_source=blogspot&utm_campaign=mobile_ux">Configuring the viewport</a> to width=device-width should be your first step in mobilizing your site.<br /><br /> </li> <li><b> Size content to the viewport</b>: Users expect mobile sites to scroll vertically, not horizontally. Once you’ve configured your viewport, make sure your page content <a href="https://developers.google.com/speed/docs/insights/SizeContentToViewport?utm_source=blogspot&utm_campaign=mobile_ux">fits the width of that viewport</a>, keeping in mind that not all mobile devices are the same width.<br /><br /> </li> <li><b> Use legible font sizes</b>: If users have to zoom in just to be able read your article text on their smartphone screen, then your site isn’t mobile-friendly. PageSpeed Insights checks that your site’s <a href="https://developers.google.com/speed/docs/insights/UseLegibleFontSizes?utm_source=blogspot&utm_campaign=mobile_ux">text is large enough</a> for most users to read comfortably. <br /></li> <li><b> Size tap targets appropriately</b>: Nothing’s more frustrating than trying to tap a button or link on a phone or tablet touchscreen, and accidentally hitting the wrong one because your finger pad is much bigger than a desktop mouse cursor. Make sure that your mobile site’s touchscreen <a href="https://developers.google.com/speed/docs/insights/SizeTapTargetsAppropriately?utm_source=blogspot&utm_campaign=mobile_ux">tap targets are large enough</a> to press easily. <br /></li> <li><b> Avoid plugins</b>: Most smartphones don’t support Flash or other browser plugins, so make sure your mobile site <a href="https://developers.google.com/speed/docs/insights/AvoidPlugins?utm_source=blogspot&utm_campaign=mobile_ux">doesn't rely on plugins</a>.</li> </ul> These rules are described in more detail in <a href="https://developers.google.com/speed/docs/insights/rules?utm_source=blogspot&utm_campaign=mobile_ux">our help pages</a>. When you’re ready, you can test your pages and the improvements you make using the <a href="https://developers.google.com/speed/pagespeed/insights/?utm_source=blogspot&utm_campaign=mobile_ux">PageSpeed Insights tool</a>. We’ve also updated PageSpeed Insights to use a mobile friendly design, and we’ve translated our documents into additional languages.<br /> <br /> As always, if you have any questions or feedback, please post in our <a href="https://groups.google.com/forum/#!forum/pagespeed-insights-discuss">discussion group</a>. <br /> <br /> <span class="byline-author">Posted by Matthew Steele and Doantam Phan, PageSpeed Insights team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster level: all<b id="docs-internal-guid-a08b3fac-13e3-3169-7972-5b8ec934aaa5"><br /> </b><br /> <br /> To help developers and webmasters make their pages mobile-friendly, we recently updated PageSpeed Insights with additional recommendations on mobile usability. <b><br /> </b> <b><br /></b><br /> <div class="separator" style="clear: both; text-align: center;"> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6j9M54hRWzBgC8CHadDhJodYbXPdG14xWvWi6k47-bbYUH3vHTgO2tRovXyu5Xy5yRT5GgamHzLwC760TePkw3M2nKCXOUXZ0pwNSb9Pdb4acghTz-7zaSiePxQlHi2YezEev/s1600/psi-webdeiver-torso-edition.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6j9M54hRWzBgC8CHadDhJodYbXPdG14xWvWi6k47-bbYUH3vHTgO2tRovXyu5Xy5yRT5GgamHzLwC760TePkw3M2nKCXOUXZ0pwNSb9Pdb4acghTz-7zaSiePxQlHi2YezEev/s1600/psi-webdeiver-torso-edition.png" width="362" /></a></div> <br /> <b><br /> </b> Poor usability can diminish the benefits of a fast page load. We know the average mobile page takes <a href="http://analytics.blogspot.com/2013/04/is-web-getting-faster.html">more than 7 seconds to load</a>, and by using the <a href="https://developers.google.com/speed/pagespeed/insights/?utm_source=blogspot&utm_campaign=mobile_ux">PageSpeed Insights tool</a> and following its speed recommendations, you can make your page <a href="http://googlewebmastercentral.blogspot.com/2013/08/making-smartphone-sites-load-fast.html">load much faster</a>. But suppose your fast mobile site loads in just 2 seconds instead of 7 seconds. If mobile users still have to spend another 5 seconds once the page loads to pinch-zoom and scroll the screen before they can start reading the text and interacting with the page, then that site isn’t really fast to use after all. PageSpeed Insights’ new User Experience rules can help you find and fix these usability issues. <br /> <br /> These new recommendations currently cover the following areas: <br /> <ul> <li><b> Configure the viewport</b>: Without a meta-viewport tag, modern mobile browsers will assume your page is not mobile-friendly, and will fall back to a desktop viewport and possibly apply font-boosting, interfering with your intended page layout. <a href="https://developers.google.com/speed/docs/insights/ConfigureViewport?utm_source=blogspot&utm_campaign=mobile_ux">Configuring the viewport</a> to width=device-width should be your first step in mobilizing your site.<br /><br /> </li> <li><b> Size content to the viewport</b>: Users expect mobile sites to scroll vertically, not horizontally. Once you’ve configured your viewport, make sure your page content <a href="https://developers.google.com/speed/docs/insights/SizeContentToViewport?utm_source=blogspot&utm_campaign=mobile_ux">fits the width of that viewport</a>, keeping in mind that not all mobile devices are the same width.<br /><br /> </li> <li><b> Use legible font sizes</b>: If users have to zoom in just to be able read your article text on their smartphone screen, then your site isn’t mobile-friendly. PageSpeed Insights checks that your site’s <a href="https://developers.google.com/speed/docs/insights/UseLegibleFontSizes?utm_source=blogspot&utm_campaign=mobile_ux">text is large enough</a> for most users to read comfortably. <br /></li> <li><b> Size tap targets appropriately</b>: Nothing’s more frustrating than trying to tap a button or link on a phone or tablet touchscreen, and accidentally hitting the wrong one because your finger pad is much bigger than a desktop mouse cursor. Make sure that your mobile site’s touchscreen <a href="https://developers.google.com/speed/docs/insights/SizeTapTargetsAppropriately?utm_source=blogspot&utm_campaign=mobile_ux">tap targets are large enough</a> to press easily. <br /></li> <li><b> Avoid plugins</b>: Most smartphones don’t support Flash or other browser plugins, so make sure your mobile site <a href="https://developers.google.com/speed/docs/insights/AvoidPlugins?utm_source=blogspot&utm_campaign=mobile_ux">doesn't rely on plugins</a>.</li> </ul> These rules are described in more detail in <a href="https://developers.google.com/speed/docs/insights/rules?utm_source=blogspot&utm_campaign=mobile_ux">our help pages</a>. When you’re ready, you can test your pages and the improvements you make using the <a href="https://developers.google.com/speed/pagespeed/insights/?utm_source=blogspot&utm_campaign=mobile_ux">PageSpeed Insights tool</a>. We’ve also updated PageSpeed Insights to use a mobile friendly design, and we’ve translated our documents into additional languages.<br /> <br /> As always, if you have any questions or feedback, please post in our <a href="https://groups.google.com/forum/#!forum/pagespeed-insights-discuss">discussion group</a>. <br /> <br /> <span class="byline-author">Posted by Matthew Steele and Doantam Phan, PageSpeed Insights team</span> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Making your site more mobile-friendly with PageSpeed Insights&url=https://webmasters.googleblog.com/2014/05/making-your-site-more-mobile-friendly.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/05/making-your-site-more-mobile-friendly.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/05/making-your-site-more-mobile-friendly.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/mobile?hl=en' rel='tag'> mobile </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/performance?hl=en' rel='tag'> performance </a> </span> </div> </div> </div> <div class='post' data-id='4516540215706140794' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/04/webmaster-guidelines-for-sneaky.html?hl=en' itemprop='url' title='Webmaster Guidelines for sneaky redirects updated'> Webmaster Guidelines for sneaky redirects updated </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Wednesday, April 30, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> Webmaster Level: All<br /> <br /> Redirects are often used by webmasters to help forward visitors from one page to another. They are a normal part of how the web operates, and are very valuable when well used. However, some redirects are designed to manipulate or deceive search engines or to display different content to human users than to search engines. Our <a href="https://support.google.com/webmasters/answer/35769#3">quality guidelines</a> strictly forbid these kinds of redirects.<br /> <br /> For example, desktop users might receive a normal page, while hackers might redirect all mobile users to a completely different spam domain. To help webmasters better recognize problematic redirects, we have updated our quality guidelines for <a href="https://support.google.com/webmasters/answer/2721217?hl=en&ref_topic=2371375">sneaky redirects</a> with examples that illustrate redirect-related violations.<br /> <br /> We have also updated the <a href="https://support.google.com/webmasters/answer/2721435">hacked content guidelines</a> to include redirects on compromised websites. If you believe your site has been compromised, follow these instructions to <a href="https://support.google.com/webmasters/answer/2600721">identify the issues on your site and fix them</a>.<br /> <br /> As with any violation of our quality guidelines, we may take manual action, including removal from our index, in order to maintain the quality of the search results. If you have any questions about our guidelines, feel free to ask in our <a href="https://productforums.google.com/forum/#!forum/webmasters">Webmaster Help Forum</a>.<br /> <br /> <br /> <span class="byline-author">Posted by Aaseesh Marina, Search Quality Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> Webmaster Level: All<br /> <br /> Redirects are often used by webmasters to help forward visitors from one page to another. They are a normal part of how the web operates, and are very valuable when well used. However, some redirects are designed to manipulate or deceive search engines or to display different content to human users than to search engines. Our <a href="https://support.google.com/webmasters/answer/35769#3">quality guidelines</a> strictly forbid these kinds of redirects.<br /> <br /> For example, desktop users might receive a normal page, while hackers might redirect all mobile users to a completely different spam domain. To help webmasters better recognize problematic redirects, we have updated our quality guidelines for <a href="https://support.google.com/webmasters/answer/2721217?hl=en&ref_topic=2371375">sneaky redirects</a> with examples that illustrate redirect-related violations.<br /> <br /> We have also updated the <a href="https://support.google.com/webmasters/answer/2721435">hacked content guidelines</a> to include redirects on compromised websites. If you believe your site has been compromised, follow these instructions to <a href="https://support.google.com/webmasters/answer/2600721">identify the issues on your site and fix them</a>.<br /> <br /> As with any violation of our quality guidelines, we may take manual action, including removal from our index, in order to maintain the quality of the search results. If you have any questions about our guidelines, feel free to ask in our <a href="https://productforums.google.com/forum/#!forum/webmasters">Webmaster Help Forum</a>.<br /> <br /> <br /> <span class="byline-author">Posted by Aaseesh Marina, Search Quality Team</span> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Webmaster Guidelines for sneaky redirects updated&url=https://webmasters.googleblog.com/2014/04/webmaster-guidelines-for-sneaky.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/04/webmaster-guidelines-for-sneaky.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/04/webmaster-guidelines-for-sneaky.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20guidelines?hl=en' rel='tag'> webmaster guidelines </a> </span> </div> </div> </div> <div class='post' data-id='1419231958562608746' itemscope='' itemtype='http://schema.org/BlogPosting'> <h2 class='title' itemprop='name'> <a href='https://webmasters.googleblog.com/2014/04/google-plus-page.html?hl=en' itemprop='url' title='Introducing our global Google+ page for webmasters'> Introducing our global Google+ page for webmasters </a> </h2> <div class='post-header'> <div class='published'> <span class='publishdate' itemprop='datePublished'> Tuesday, April 22, 2014 </span> </div> </div> <div class='post-body'> <div class='post-content' itemprop='articleBody'> <script type='text/template'> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster Level: All<br /> <br /> We’ve recently launched our global <a href="//google.com/+GoogleWebmasters">Google Webmasters Google+ page</a>. Have you checked it out yet? Our page covers a plethora of topics:<br /> <div> <ul> <li>Official news and announcements like <a href="https://plus.google.com/+GoogleWebmasters/posts/YHbxCGrmBpM">when our blog launched en français</a></li> <li>Tips such as <a href="https://plus.google.com/+GoogleWebmasters/posts/VByNiTLZh6r">how to handle 404s correctly</a></li> <li><a href="https://plus.google.com/+GoogleWebmasters/posts/dy8p9QtQDf5">Q&A office hours with our team</a></li> <li>Exclusive behind the scenes including <a href="https://plus.google.com/+GoogleWebmasters/posts/jWyrQhFpJrK">planking puns</a> and <a href="https://plus.google.com/+GoogleWebmasters/posts/cQaXMKQGTzv">adventures with Googlebot</a></li> </ul> Follow us at <a href="//google.com/+GoogleWebmasters">google.com/+GoogleWebmasters</a> and let us know in the comments what else you’d like to see on our page! If you speak <a href="https://plus.google.com/communities/112294948416370608274">Italian</a>, <a href="https://plus.google.com/communities/115069764931066832848">Japanese</a>, <a href="https://plus.google.com/communities/107952911147065863501">Russian</a> or <a href="https://plus.google.com/communities/107174145581457353344">Spanish</a>, be sure to also join one of our webmaster communities to stay up-to-date on language and region-specific news.<br /> <br /> <div> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEichDzI3h2tozJIS6kzaz7-Q6u41VK52BKLUDrOZd4Ayw4Ys3pdWv6UJSxBYWBwVPRNILH8YG0m0CobGf_IRPOuD5FzoUJggi9EddbO0PKgFJeHVPVwiIEwRME1q_jWaU8VQ39S/s1600/collage.jpg" imageanchor="1" ><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEichDzI3h2tozJIS6kzaz7-Q6u41VK52BKLUDrOZd4Ayw4Ys3pdWv6UJSxBYWBwVPRNILH8YG0m0CobGf_IRPOuD5FzoUJggi9EddbO0PKgFJeHVPVwiIEwRME1q_jWaU8VQ39S/s400/collage.jpg" width="400" /></a> </div> </div> <div> <span class="byline-author">Posted by Mary Chen and Andrey Lipattsev, Webmaster Outreach Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </script> <noscript> <div dir="ltr" style="text-align: left;" trbidi="on"> Webmaster Level: All<br /> <br /> We’ve recently launched our global <a href="//google.com/+GoogleWebmasters">Google Webmasters Google+ page</a>. Have you checked it out yet? Our page covers a plethora of topics:<br /> <div> <ul> <li>Official news and announcements like <a href="https://plus.google.com/+GoogleWebmasters/posts/YHbxCGrmBpM">when our blog launched en français</a></li> <li>Tips such as <a href="https://plus.google.com/+GoogleWebmasters/posts/VByNiTLZh6r">how to handle 404s correctly</a></li> <li><a href="https://plus.google.com/+GoogleWebmasters/posts/dy8p9QtQDf5">Q&A office hours with our team</a></li> <li>Exclusive behind the scenes including <a href="https://plus.google.com/+GoogleWebmasters/posts/jWyrQhFpJrK">planking puns</a> and <a href="https://plus.google.com/+GoogleWebmasters/posts/cQaXMKQGTzv">adventures with Googlebot</a></li> </ul> Follow us at <a href="//google.com/+GoogleWebmasters">google.com/+GoogleWebmasters</a> and let us know in the comments what else you’d like to see on our page! If you speak <a href="https://plus.google.com/communities/112294948416370608274">Italian</a>, <a href="https://plus.google.com/communities/115069764931066832848">Japanese</a>, <a href="https://plus.google.com/communities/107952911147065863501">Russian</a> or <a href="https://plus.google.com/communities/107174145581457353344">Spanish</a>, be sure to also join one of our webmaster communities to stay up-to-date on language and region-specific news.<br /> <br /> <div> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEichDzI3h2tozJIS6kzaz7-Q6u41VK52BKLUDrOZd4Ayw4Ys3pdWv6UJSxBYWBwVPRNILH8YG0m0CobGf_IRPOuD5FzoUJggi9EddbO0PKgFJeHVPVwiIEwRME1q_jWaU8VQ39S/s1600/collage.jpg" imageanchor="1" ><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEichDzI3h2tozJIS6kzaz7-Q6u41VK52BKLUDrOZd4Ayw4Ys3pdWv6UJSxBYWBwVPRNILH8YG0m0CobGf_IRPOuD5FzoUJggi9EddbO0PKgFJeHVPVwiIEwRME1q_jWaU8VQ39S/s400/collage.jpg" width="400" /></a> </div> </div> <div> <span class="byline-author">Posted by Mary Chen and Andrey Lipattsev, Webmaster Outreach Team</span></div> </div> <span itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://plus.google.com/116899029375914044550' itemprop='url'/> </span> </noscript> </div> </div> <div class='share'> <span class='twitter-custom social-wrapper' data-href='http://twitter.com/share?text=Official Google Webmaster Central Blog:Introducing our global Google+ page for webmasters&url=https://webmasters.googleblog.com/2014/04/google-plus-page.html?hl=en&via=googlewmc'> <img alt='Share on Twitter' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png' width='24'/> </span> <span class='fb-custom social-wrapper' data-href='https://www.facebook.com/sharer.php?u=https://webmasters.googleblog.com/2014/04/google-plus-page.html?hl=en'> <img alt='Share on Facebook' height='24' src='https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png' width='24'/> </span> </div> <div class='post-footer'> <div class='cmt_iframe_holder' data-href='https://webmasters.googleblog.com/2014/04/google-plus-page.html' data-viewtype='FILTERED_POSTMOD'></div> <a href='https://plus.google.com/112374322230920073195' rel='author' style='display:none;'> Google </a> <div class='label-footer'> <span class='labels-caption'> Labels: </span> <span class='labels'> <a class='label' href='https://webmasters.googleblog.com/search/label/advanced?hl=en' rel='tag'> advanced </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/beginner?hl=en' rel='tag'> beginner </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en' rel='tag'> intermediate </a> , <a class='label' href='https://webmasters.googleblog.com/search/label/webmaster%20community?hl=en' rel='tag'> webmaster community </a> </span> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <a class='home-link' href='https://webmasters.googleblog.com/?hl=en'> <i class='material-icons'>  </i> </a> <i class='material-icons disabled'>  </i> <span id='blog-pager-older-link'> <a class='blog-pager-older-link' href='https://webmasters.googleblog.com/search/label/advanced?updated-max=2014-04-22T12:52:00-07:00&max-results=20&start=20&by-date=false&hl=en' id='Blog1_blog-pager-older-link' title='Older Posts'> <i class='material-icons'>  </i> </a> </span> </div> <div class='clear'></div> </div></div> </div> </div> <div class='col-right'> <div class='section' id='sidebar-top'><div class='widget HTML' data-version='1' id='HTML9'> <div class='widget-content'> <a href="https://www.google.com/webmasters/tools/mobile-friendly/?utm_source=wmc-blog&utm_medium=referral&utm_campaign=blog-nav"><img src="https://lh3.googleusercontent.com/-osGJupx0-HY/VQta1nmaAPI/AAAAAAAACfs/UdMPzubsXFk/w80-h1368-no/blog%2Bpromo.png" align="left" width="80" /></a> Hey! <a href="https://search.google.com/test/mobile-friendly">Check here if your site is mobile-friendly.</a> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML10'> <div class='widget-content'> <div class='searchBox'> <input type='text' title='Search This Blog' placeholder='Search blog ...' /> </div> </div> <div class='clear'></div> </div></div> <div id='aside'> <div class='section' id='sidebar'><div class='widget Label' data-version='1' id='Label1'> <div class='tab'> <img class='sidebar-icon' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNrs2aFuwzAQBmAvKRkMKRjZA4QMDJaWFgyMjuzFRg37DIUlA3uFkoGQSaWzJU+tpri5O9+l/zSfdFJlpe59yTmyVedq1PjfcZMZ70NuQnaF8w8htyE/rABtpviXkLcK88c5HhLkMBfgVan43zfFBNGMjHVGT/s55KP2pAvidbGHd+nzKt1RKSLG3rKF1iPFv6UWiPke8i7kEqGdGsI1O+LYVdqJAjgirwkKYD0ytkJBUNbAMvX8V3q9PhUsYvU1sWD8SO/sQvx2ahxOiNoJCSBCoAHYCEQAC4EKICOQASQEOmAS8RcAFxFN5hiIiugpgC3wk9hQAHH/70EBHXUN7IER5EWMiBgo2+nzOKQv9SCAeEM/OQAkhE/ncccFICB87qzQMia5FsJfOui0zMnmRvipU1ormHQuxGTxUsAcCFLxJQBLBLn4UoAFglW8BkATwS5eC6CBEBWvCShBiIvXBkgQRcVbADiI4uKtABSESvGWgB9EzHt3+tNwyO0qa9SoIYtvAQYAqDJhaWWeMecAAAAASUVORK5CYII='/> <h2> Labels </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content list-label-widget-content'> <ul> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/accessibility?hl=en'> accessibility </a> <span dir='ltr'> 10 </span> </li> <li> <span dir='ltr'> advanced </span> <span dir='ltr'> 195 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/AMP?hl=en'> AMP </a> <span dir='ltr'> 13 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Android?hl=en'> Android </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/API?hl=en'> API </a> <span dir='ltr'> 7 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/apps?hl=en'> apps </a> <span dir='ltr'> 7 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/autocomplete?hl=en'> autocomplete </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/beginner?hl=en'> beginner </a> <span dir='ltr'> 173 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/CAPTCHA?hl=en'> CAPTCHA </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Chrome?hl=en'> Chrome </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/cms?hl=en'> cms </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/crawling%20and%20indexing?hl=en'> crawling and indexing </a> <span dir='ltr'> 158 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/encryption?hl=en'> encryption </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/events?hl=en'> events </a> <span dir='ltr'> 51 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/feedback%20and%20communication?hl=en'> feedback and communication </a> <span dir='ltr'> 83 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/forums?hl=en'> forums </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/general%20tips?hl=en'> general tips </a> <span dir='ltr'> 90 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/geotargeting?hl=en'> geotargeting </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Google%20Assistant?hl=en'> Google Assistant </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Google%20I%2FO?hl=en'> Google I/O </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Google%20Images?hl=en'> Google Images </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Google%20News?hl=en'> Google News </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/hacked%20sites?hl=en'> hacked sites </a> <span dir='ltr'> 12 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/hangout?hl=en'> hangout </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/hreflang?hl=en'> hreflang </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/https?hl=en'> https </a> <span dir='ltr'> 5 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/images?hl=en'> images </a> <span dir='ltr'> 12 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/intermediate?hl=en'> intermediate </a> <span dir='ltr'> 205 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/interstitials?hl=en'> interstitials </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/javascript?hl=en'> javascript </a> <span dir='ltr'> 8 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/job%20search?hl=en'> job search </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/localization?hl=en'> localization </a> <span dir='ltr'> 21 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/malware?hl=en'> malware </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/mobile?hl=en'> mobile </a> <span dir='ltr'> 63 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/mobile-friendly?hl=en'> mobile-friendly </a> <span dir='ltr'> 14 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/nohacked?hl=en'> nohacked </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/performance?hl=en'> performance </a> <span dir='ltr'> 17 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/product%20expert?hl=en'> product expert </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/product%20experts?hl=en'> product experts </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/products%20and%20services?hl=en'> products and services </a> <span dir='ltr'> 63 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/questions?hl=en'> questions </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/ranking?hl=en'> ranking </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/recipes?hl=en'> recipes </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/rendering?hl=en'> rendering </a> <span dir='ltr'> 2 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/Responsive%20Web%20Design?hl=en'> Responsive Web Design </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/rich%20cards?hl=en'> rich cards </a> <span dir='ltr'> 7 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/rich%20results?hl=en'> rich results </a> <span dir='ltr'> 10 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/search%20console?hl=en'> search console </a> <span dir='ltr'> 35 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/search%20for%20beginners?hl=en'> search for beginners </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/search%20queries?hl=en'> search queries </a> <span dir='ltr'> 7 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/search%20results?hl=en'> search results </a> <span dir='ltr'> 140 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/security?hl=en'> security </a> <span dir='ltr'> 12 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/seo?hl=en'> seo </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/sitemaps?hl=en'> sitemaps </a> <span dir='ltr'> 46 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/speed?hl=en'> speed </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/structured%20data?hl=en'> structured data </a> <span dir='ltr'> 33 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/summit?hl=en'> summit </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/TLDs?hl=en'> TLDs </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/url%20removals?hl=en'> url removals </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/UX?hl=en'> UX </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/verification?hl=en'> verification </a> <span dir='ltr'> 8 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/video?hl=en'> video </a> <span dir='ltr'> 6 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/webmaster%20community?hl=en'> webmaster community </a> <span dir='ltr'> 24 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/webmaster%20forum?hl=en'> webmaster forum </a> <span dir='ltr'> 1 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/webmaster%20guidelines?hl=en'> webmaster guidelines </a> <span dir='ltr'> 57 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/webmaster%20tools?hl=en'> webmaster tools </a> <span dir='ltr'> 177 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/webmasters?hl=en'> webmasters </a> <span dir='ltr'> 3 </span> </li> <li> <a dir='ltr' href='https://webmasters.googleblog.com/search/label/youtube%20channel?hl=en'> youtube channel </a> <span dir='ltr'> 6 </span> </li> </ul> <div class='clear'></div> </div> </div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> <div class='tab'> <i class='material-icons icon'>  </i> <h2> Archive </h2> <i class='material-icons arrow'>  </i> </div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy toggle-open'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/?hl=en'> 2020 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate expanded'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2020/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/?hl=en'> 2019 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2019/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/?hl=en'> 2018 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2018/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/?hl=en'> 2017 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2017/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/?hl=en'> 2016 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2016/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/?hl=en'> 2015 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2015/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/?hl=en'> 2014 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2014/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/?hl=en'> 2013 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2013/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/?hl=en'> 2012 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2012/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/?hl=en'> 2011 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2011/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/?hl=en'> 2010 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2010/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/?hl=en'> 2009 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2009/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/?hl=en'> 2008 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2008/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/?hl=en'> 2007 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/07/?hl=en'> Jul </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/06/?hl=en'> Jun </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/05/?hl=en'> May </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/04/?hl=en'> Apr </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/03/?hl=en'> Mar </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/02/?hl=en'> Feb </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2007/01/?hl=en'> Jan </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class='intervalToggle'> <span class='new-toggle' href='javascript:void(0)'> <i class='material-icons arrow'>  </i> </span> <a class='toggle' href='javascript:void(0)' style='display: none'> <span class='zippy'> <i class='material-icons'>  </i>   </span> </a> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/?hl=en'> 2006 </a> </div> <div class='items'> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/12/?hl=en'> Dec </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/11/?hl=en'> Nov </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/10/?hl=en'> Oct </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/09/?hl=en'> Sep </a> </div> <div class='items'> </div> </li> </ul> <ul class='hierarchy'> <li class='archivedate collapsed'> <div class=''> <a class='post-count-link' href='https://webmasters.googleblog.com/2006/08/?hl=en'> Aug </a> </div> <div class='items'> </div> </li> </ul> </div> </li> </ul> </div> </div> <div class='clear'></div> </div> </div><div class='widget HTML' data-version='1' id='HTML6'> <div class='widget-content'> <a href="https://googlewebmastercentral.blogspot.com/atom.xml"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAihJREFUeNrsWa9Pw0AU7viRMDFRBAkzJDMIBIhJJhCzk7NILIqMv4AEhdz+BCY3OYssAlGBoAJREpZwAlHEBO8lr8nSvNeVbu1dyX3JlzTrXfa+u/e9d7c5joWFhYVO1Fa8PwH2gK6m+BRwAvSlAdsrgr8E1jUuMH73GTAEzrkBWymTewZlihhLmgDXIAFuHgGVQOUF7OSYM1p6PgTuA1vAZlUEvAnPdapcMY0VICECekQ0XRfYrqoHsAGNgXfAoMomRiFDEhOZkkL3S88hMaB2LwXp0bj+ps2edpToZpjfoIDQtBeU+xjoDzP2G/gCPKZ5f8WsCAFJoJgOCcFdWSTeL9YQMSvTA1h9BkI5jaiXhLpSCL/8mVZY0UpyJ9ZdOkniu1dmJ96BpzQu9w6s28gcOq9j6pwLdR8/36NK5CQKwJSMrb2MhhSglBpt4UjsrdsnNu0B3J0HCozbCc4TjyY2srEgos/4RQljCzNxl4ireQD8FOq+T+W0mTB2g7njhlR+Sy2jsXFvU658U8YTbeaGpdIu7mWkEAq5ZtIjIhFZdtfX7QHckSvB2B6zC3VdAkZk0kAQwaXTk/CzTXK3wjIExCs6ZJpTnE4uY1KV+KzFzA3KTiFPENHJkOPcsfpLhwe4btoSuvUqAR+6TOxlCE6ZfKUsJLgsqGW8OpqAGx2X+sLxrwUog+JUeQRMDBIwyXOcnlPtPnL0/UsT/8LnOxYWFhZG4leAAQAAQHEaYuzHbAAAAABJRU5ErkJggg==" class="sidebar-icon" /> <h2>Feed</h2> </a> </div> <div class='clear'></div> </div></div> <div class='section' id='sidebar-bottom'><div class='widget HTML' data-version='1' id='HTML5'> <div class='widget-content'> <div class='followgooglewrapper'> <script src="https://apis.google.com/js/plusone.js"></script></div> <div class="g-ytsubscribe class='followgooglewrapper'" data-channel="GoogleWebmasterHelp" data-layout="full"></div> <div class="share followgooglewrapper"> <button data-href="https://twitter.com/intent/follow?original_referer=https://googlewebmastercentral.blogspot.com/&screen_name=googlewmc" onclick='sharingPopup(this);' id='twitter-share'><span class="twitter-follow">Follow @googlewmc</span></button> <script> function sharingPopup (button) { var url = button.getAttribute("data-href"); window.open( url,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); } </script> </div> </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML1'> <div class='widget-content'> Give us feedback in our <a href="https://support.google.com/webmasters/go/community">Product Forums</a>. </div> <div class='clear'></div> </div><div class='widget HTML' data-version='1' id='HTML8'> <h2 class='title'> Subscribe via email </h2> <div class='widget-content'> <form #nsubmit="window.open('https://www.feedburner.com/fb/a/emailverifySubmit?feedId=1092589', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true" action="https://www.feedburner.com/fb/a/emailverify" style="border:1px solid #ccc;padding:3px;text-align:center;" target="popupwindow" method="post"><p>Enter your email address:</p><p><input style="width:140px" name="email" type="text"/></p><input value="https://feeds.feedburner.com/~e?ffid=1092589" name="url" type="hidden"/><input value="Official Google Webmaster Central Blog" name="title" type="hidden"/><input value="en_US" name="loc" type="hidden"/><input value="Subscribe" type="submit"/><p>Delivered by <a href="https://www.feedburner.com" target="_blank">FeedBurner</a></p></form> </div> <div class='clear'></div> </div></div> </div> </div> <div style='clear:both;'></div> </div> <!-- Footer --> <div class='google-footer-outer loading'> <div id='google-footer'> <a href='//www.google.com/'> <img class='google-logo-dark' height='36' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALgAAABICAYAAABFoT/eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACLVJREFUeNrsXd+L20YQ3vOprdLqiMXFXE2qB7dcwEcTSB7ykIc+9A/PQx/yEMq1TWhNuYIpJriNr7XpmZ5IxFEvmW2EKs3Ornb1w50PxIFP0kiz387OzM6uhGAwGAxGP3Ho+f7x7ri1O7LdccPqZjSNA4dEHsLfaHcEFedJom93x9Xu2OyOFTcBo6sED3fHZHeMEELrkAHJF0B8Rr+gDFsZ5n0luLTQ95AXs4W06D/tjpR50xtM4CjD0y48YGB4rnyZxNOzyA7zBHr+nLnDaJLg0mo/ALekCasg3Z4XbM0ZdTEgnDPeHY8bIne+Qz2GvwyGNwsuyT218KWvIIBMcwGpLiipcolecjMxfBDchNyS1EvxLiOSIecp31q6IJ/C3yrIrMqMm4jhg+AxkdwbIO3aUO4KjqqMjCT3uaazMBhWBJfuxH3CtRfiXf66DhSRZWbmlMnNaILgZxrXJQO/eO3wORZwvwm4JUxuhheCjzVBYAbW1ces45YDSoZrFNOEE835M8FT6oyeEnws8Fz3QnBxFKPHBMem4GU+m6fPGb0leCTwWcM5B36MPgeZI01gudyDdw3hPeXfo8L/rmCUWnuMMdqUL2WqWeRbhf+twfVsO7YagZGNC79fw7OthEVtkiJ4jJzTd3KPwf3CRqhhiTu23AP5sl0/0xiwISQXpNwLIJK87mHF+U8ddzzdmgKlGzlPYjyxGJQouIhNT4k9AqWEFkqfguIvagTWbcq3KW1WE3xS3m8NtA9WS451xofwjKT5kkDoK/b6mDk5FfXr1lWDL4BofZEv2/SRsK/EHGlGdBdu8QNRb8HMCFwt7Yy3DDI/QP7fx5z3VLhdlJEIs4rKNuXXJXdxZPdB7kfCzWqwCO4V1LHgLjInX3tQ1KzCR52Cz+vDj1dydeRuS74rcvs2Pi6fT5H8OaaUQPQPYcWwRSGXyhhscn5dpAnEFMkuEZetbfkTAnlSuH4DxisE+aMGeJAQ3lFl7C4LJE6QWCaCd583ORQ1jYAwjFctal7nOs2ZZvicwvlZx+RHGrcoAwKUVX8uwcc/9TT65INeDOr5shL9LDRB6QTeIy3zwfdh3WOi6axLCEhSjXU7F3h6LqggUtvyJxpynwu8tDkD98fXApOxRj8zoZ9MnGveYVIVZKaGrkBXCY65BCYNN9NkjpKOyQ81Q79JgdxS+Jn3SDTEXRI7SWzaiSTB32oI3nU3BvMfM0urhOVYgwKhuiAfc4tM07wXwm1ZRoQYSl2NUwiu01fEAHVcpixd745FvVz4dzUUc0o8rwoLy8ZSwU6CyFx1RP5II9+1bFPEFs9HWbNLiimDXE+vCm7u1CS47cofzD3aEhVY57mxRo5zlqdt+RFC1JUH2S7bcVXg4liTMakaBZZVxiTICRoivcn1sEUBlk24JmaC6kxUbYmWoqvyfck2xZGGnDFYa9MMzkYQ1ijkCX6qidybrgePiQ0QIQqoi6qRLeqQfIoRsEHaQJLBdHOnLGetSdm/IPcymJuS1PAnbQPH0MOw/39C1vL11DiLOqIsbDI8QcHvGiLnySi2qUXBicaqUSxN5LEB0g7Jt3ENXJLPJ5S1tnaZBoWbpRqrmjRE7qHmpSmNHdQcYrEUadoh+TbBnc9ri7iycI1kzPeNcLDIvbiqXpez9Tmdq6zGREPuzECBoxrPMiI2WtvyNwhJba2wy3JZ6ky5dD1lSvmZS3e4SPA1wcf1VTFHKX+cGwZzdUYcqpvUtvwrD/InDttVlyZeAKlNN5MKbAiurHhKIPlUuJvlTCCiDjSKSCsUmCFWbGLZwCESfK07JB8LvMYWVtw0D00JEHV8Mq2HkqPbE0oHLvvK2g0o8ETg+4cfwTlZDT9JDoWygu4uQQE/ivIvtcnfPkaCqhiupz7jWOAzqL/vjtcdkv9G4MVMt+EaylfuImiPAXEUjRF3pjjaHiPPZ6If9TGGAO4ZY0am6jOCb+DQ+ZCqLkIpOIPrdNfIjnFPY6nyFut7TS/fanrziOBOKMupKw94WaLMtuVnSFt9CPrWWdJE6PeltCX432DEBoh+5Dv8RRhdis8YAv9uyq4/JAwtlEApgBe9Cw9xDD3tdk4Jn0MDfiHwPHcRPxBePCMER3GuIx7kGlv9fkZ4V9lolx2Uv4X7hEj7qJ3LDoAMGbTRMRibu4L2xQ8bgt8AyU+Q+x7nYrvDnH4iuO5LxKsYwPVbkPMvKF9Zky9wXzRfVWizi62r9X5VHf55h+WHhDjGBZ4WRhyTr6z5SlCoLMxLSpBZFsQ9F80uQFbF/6aFWi+Ev51vzzsuX+msyzuQXXjUz8zEBy+zpq9yweXAoxJW4JbYrDS6gYDqGHxPl+TKeiBfxj9/EBIElPYeOA4y8/qRQfknjvSzgRgtq0Pw/M1eQeMdOSb2Bnrhr6Led+1vcp2x7oTFHMnedFW+Ivlty062BUt74oHgSj+vHepnhunn0JJAMtBZgDI/qmGtMujRv8DDpo47zBJ8UtPOuAR/7rKn8t9AJ0tBdmBAmJ/Fu71yxp4I3qh+DhyRqbi5Y1ShVPlSb8X7bRNcfgZFl+WRGYo7uecrWq1r8X5bhmzP5OdlDwsGRm1suSxkg5rYm7ConyGQ3Zl+DgSD8V/kPwrWBMG9YcBtyShBnTLdTiHgttw7qAW7cqh/ZnmPKr/6ignOaKsdyxbsToT5UkPsW00bJjijDXficcX/JsLs6w2BwGtherdckH3w/kNXRPVI0OqJQoHX42/66IMfMj/2huRjxIidgKV/W0JS+bsstDoTeAHcrI8E5zTh/sDkqxL5rZup55/3USlswfcHf4IrQplVDgW9XFlOqnwr6pVPMMEZTuC60EttvdzbLbaZ4PsFVa3nohhO+vW+yn/ZB2fUhpysmQrzBcTSai9EszuZMcEZ1lCFVrp9zGXhm69iLyY4oxFIa178lPe12I/P2DAYDAaDwWAwGAwGg8FgMBgMBoPBYDD2Cf8IMADDRGoQTe+E9AAAAABJRU5ErkJggg==' style='margin-top: -16px;' width='92'/> </a> <ul> <li> <a href='//www.google.com/'> Google </a> </li> <li> <a href='//www.google.com/policies/privacy/'> Privacy </a> </li> <li> <a href='//www.google.com/policies/terms/'> Terms </a> </li> </ul> </div> </div> <script type='text/javascript'> //<![CDATA[ // Social sharing popups. var postEl = document.getElementsByClassName('social-wrapper'); var postCount = postEl.length; for(i=0; i<postCount;i++){ postEl[i].addEventListener("click", function(event){ var postUrl = this.getAttribute("data-href"); window.open( postUrl,'popUpWindow','height=500,width=500,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes'); });} //]]> </script> <script type='text/javascript'> //<![CDATA[ var BreakpointHandler = function() { this.initted = false; this.isHomePage = false; this.isMobile = false; }; BreakpointHandler.prototype.finalizeSummary = function(summaryHtml, lastNode) { // Use $.trim for IE8 compatibility summaryHtml = $.trim(summaryHtml).replace(/(<br>|\s)+$/,''); if (lastNode.nodeType == 3) { var lastChar = summaryHtml.slice(-1); if (!lastChar.match(/[.”"?]/)) { if (!lastChar.match(/[A-Za-z]/)) { summaryHtml = summaryHtml.slice(0, -1); } summaryHtml += ' ...'; } } else if (lastNode.nodeType == 1 && (lastNode.nodeName == 'I' || lastNode.nodeName == 'A')) { summaryHtml += ' ...'; } return summaryHtml; }; BreakpointHandler.prototype.generateSummaryFromContent = function(content, numWords) { var seenWords = 0; var summaryHtml = ''; for (var i=0; i < content.childNodes.length; i++) { var node = content.childNodes[i]; var nodeText; if (node.nodeType == 1) { if (node.hasAttribute('data-about-pullquote')) { continue; } nodeText = node.textContent; if (nodeText === undefined) { // innerText for IE8 nodeText = node.innerText; } if (node.nodeName == 'DIV' || node.nodeName == 'B') { // Don't end early if we haven't seen enough words. if (seenWords < 10) { continue; } if (i > 0) { summaryHtml = this.finalizeSummary(summaryHtml, content.childNodes[i-1]); } break; } summaryHtml += node.outerHTML; } else if (node.nodeType == 3) { nodeText = node.nodeValue; summaryHtml += nodeText + ' '; } var words = nodeText.match(/\S+\s*/g); if (!words) { continue; } var remain = numWords - seenWords; if (words.length >= remain) { summaryHtml = this.finalizeSummary(summaryHtml, node); break; } seenWords += words.length; } return summaryHtml; }; BreakpointHandler.prototype.detect = function() { var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, query = window.location.search.substring(1); var urlParams = {}; while (match = search.exec(query)) urlParams[decode(match[1])] = decode(match[2]); this.isListPage = $('html').hasClass('list-page'); this.isMobile = urlParams['m'] === '1'; this.isHomePage = window.location.pathname == '/'; }; BreakpointHandler.prototype.initContent = function() { var self = this; $('.post').each(function(index) { var body = $(this).children('.post-body')[0]; var content = $(body).children('.post-content')[0]; $(content).addClass('post-original'); var data = $(content).children('script').html(); data = self.rewriteForSSL(data); // If exists, extract specified editor's preview. var match = data.match(/([\s\S]+?)<div data-is-preview.+?>([\s\S]+)<\/div>/m); if (match) { data = match[1]; } // Prevent big images from loading when they aren't needed. // This must be done as a pre-injection step, since image loading can't be // canceled once embedded into the DOM. if (self.isListPage && self.isMobile) { data = data.replace(/<(img|iframe) .+?>/g, ''); } // Insert template to be rendered as nodes. content.innerHTML = data; if (self.isListPage) { var summary = document.createElement('div'); $(summary).addClass('post-content'); $(summary).addClass('post-summary'); body.insertBefore(summary, content); if (match) { // Use provided summary. summary.innerHTML = match[2]; } else { // Generate a summary. // Summary generation relies on DOM, so it must occur after content is // inserted into the page. summary.innerHTML = self.generateSummaryFromContent(content, 30); } // Add read more link to summary. var titleAnchor = $(this).find('.title a')[0]; var link = titleAnchor.cloneNode(true); link.innerHTML = 'Read More'; $(link).addClass('read-more'); summary.appendChild(link); } }); // Firefox does not allow for proper styling of BR. if (navigator.userAgent.indexOf('Firefox') > -1) { $('.post-content br').replaceWith('<span class="space"></span>'); } $('.loading').removeClass('loading'); }; BreakpointHandler.prototype.process = function() { if (!this.initted) { var makeInsecureImageRegex = function(hosts) { var whitelist = hosts.join('|').replace(/\./g,'\\.'); // Normal image tags, plus input images (yes, this is possible!) return new RegExp('(<(img|input)[^>]+?src=("|\'))http:\/\/(' + whitelist +')', 'g'); }; this.sslImageRegex = makeInsecureImageRegex(BreakpointHandler.KNOWN_HTTPS_HOSTS); this.sslImageCurrentDomainRegex = makeInsecureImageRegex([window.location.hostname]); this.detect(); this.initContent(); this.initted = true; } }; BreakpointHandler.KNOWN_HTTPS_HOSTS = [ "www.google.org", "www.google.com", "services.google.com", "blogger.com", "draft.blogger.com", "www.blogger.com", "photos1.blogger.com", "photos2.blogger.com", "photos3.blogger.com", "blogblog.com", "img1.blogblog.com", "img2.blogblog.com", "www.blogblog.com", "www1.blogblog.com", "www2.blogblog.com", "0.bp.blogspot.com", "1.bp.blogspot.com", "2.bp.blogspot.com", "3.bp.blogspot.com", "4.bp.blogspot.com", "lh3.googleusercontent.com", "lh4.googleusercontent.com", "lh5.googleusercontent.com", "lh6.googleusercontent.com", "themes.googleusercontent.com", ]; BreakpointHandler.prototype.rewriteForSSL = function(html) { // Handle HTTP -> HTTPS source replacement of images, movies, and other embedded content. return html.replace(this.sslImageRegex, '$1https://$4') .replace(this.sslImageCurrentDomainRegex, '$1//$4') .replace(/(<(embed|iframe)[^>]+?src=("|'))http:\/\/([^"']*?(youtube|picasaweb\.google)\.com)/g, '$1https://$4') // Slideshow SWF takes a image host, so we need to rewrite that parameter. .replace(/(<embed[^>]+?feed=http(?=[^s]))/g, '$1s'); }; $(document).ready(function() { var handler = new BreakpointHandler(); handler.process(); // Top-level navigation. $(".BlogArchive .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); $(".Label .tab").click(function(ev) { ev.preventDefault(); $(this).parent().toggleClass('active'); $(this).siblings().slideToggle(300); }); // Blog archive year expansion. $('.BlogArchive .intervalToggle').click(function(ev) { ev.preventDefault(); if ($(this).parent().hasClass('collapsed')) { $(this).parent().removeClass('collapsed'); $(this).parent().addClass('expanded'); } else { $(this).parent().removeClass('expanded'); $(this).parent().addClass('collapsed'); } }); // Reverse order of months. $('.BlogArchive .intervalToggle + div').each(function(_, items) { var year = $(this); year.children().each(function(_, month) { year.prepend(month); }); }); // Set anchors to open in new tab. $('.post-content img').parent().each(function(_, node) { if (node.nodeName == 'A') { $(this).attr('target', '_blank'); } }); // Process search requests. $('.searchBox input').on("keypress", function(ev) { if (ev.which == 13) { window.location.href = 'https://www.google.com/search?q=site%3A' + window.location.hostname + '%20' + encodeURIComponent ($(this).val()); } }); }); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/984859869-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY7HIvYej1d8C9cNuKzmG4VwDwgf_Q:1732412529877';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d32069983','//webmasters.googleblog.com/search/label/advanced?hl\x3den','32069983'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '32069983', 'title': 'Official Google Webmaster Central Blog', 'url': 'https://webmasters.googleblog.com/search/label/advanced?hl\x3den', 'canonicalUrl': 'https://webmasters.googleblog.com/search/label/advanced', 'homepageUrl': 'https://webmasters.googleblog.com/?hl\x3den', 'searchUrl': 'https://webmasters.googleblog.com/search', 'canonicalHomepageUrl': 'https://webmasters.googleblog.com/', 'blogspotFaviconUrl': 'https://webmasters.googleblog.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': false, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-18009-4', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Official Google Webmaster Central Blog - Atom\x22 href\x3d\x22https://webmasters.googleblog.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Official Google Webmaster Central Blog - RSS\x22 href\x3d\x22https://webmasters.googleblog.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Official Google Webmaster Central Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/32069983/posts/default\x22 /\x3e\n', 'meTag': '', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': false, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/d78375fb222d99b3', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'searchLabel': 'advanced', 'pageName': 'advanced', 'pageTitle': 'Official Google Webmaster Central Blog: advanced', 'metaDescription': 'Official news on crawling and indexing sites for the Google index'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Official Google Webmaster Central Blog', 'description': 'Official news on crawling and indexing sites for the Google index', 'url': 'https://webmasters.googleblog.com/search/label/advanced?hl\x3den', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': false, 'isArchive': false, 'isSearch': true, 'isLabelSearch': true, 'search': {'label': 'advanced', 'resultsMessage': 'Showing posts with the label advanced', 'resultsMessageHtml': 'Showing posts with the label \x3cspan class\x3d\x27search-label\x27\x3eadvanced\x3c/span\x3e'}}}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'navMessage': 'Showing posts with label \x3cb\x3eadvanced\x3c/b\x3e. \x3ca href\x3d\x22https://webmasters.googleblog.com/\x22\x3eShow all posts\x3c/a\x3e'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML9', 'sidebar-top', document.getElementById('HTML9'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML10', 'sidebar-top', document.getElementById('HTML10'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'sidebar', document.getElementById('HTML6'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar-bottom', document.getElementById('HTML5'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar-bottom', document.getElementById('HTML1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-bottom', document.getElementById('HTML8'), {}, 'displayModeFull')); </script> </body> </html>