[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"cms-page:\u002Fabout\u002Four-team\u002Fchris-rogers":3},{"name":4,"url":5,"description":5,"avatar_urls":6,"acf":8,"social":143,"head_links":144,"breadcrumbs":131,"posts":148,"pages":126,"head":694},"Chris Rogers","",{"24":7,"48":7,"96":7},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=96",{"job_title":9,"full_bio":10,"specialist_service_links":11,"photo":37,"page_content_modules":93,"hero":127},"Senior Technical SEO Specialist","\u003Cp>Senior Technical SEO Specialist. Joined Impression in July 2023.\u003C\u002Fp>\n\u003Cp>With nearly 8 years experience in SEO now, my career has been solely in agencies where I would be doing a bit of everything ranging from technical SEO right through to account management. Over time I found my expertise lies within event tracking and Technical SEO. In the last year or so I\\&#8217;ve been expanding out into SEO Automation, creating tools that help complete tasks.\u003C\u002Fp>\n\u003Cp>At Impression, I help out with answering technical queries as they come in, auditing and reviewing sites or specific scenarios and providing advice on these. I\\&#8217;m always on the hunt to automate SEO tasks and to save time where relevant.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Something that I\\&#8217;m proud of:\u003C\u002Fstrong>\u003Cbr \u002F>\nI was really proud about automating around 45% of the points from my previous agency\\&#8217;s technical SEO audit that saved around 60% of the total time taken to complete one. However I know I can build better tools now and will continue to push my skillset further to achieve this.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Outside of work:\u003C\u002Fstrong>\u003Cbr \u002F>\nI spend the majority of my free time gaming (just not sports games). I\\&#8217;m a major nerd and to boot I\\&#8217;m a completionist too, so you\\&#8217;ll often find me working towards a sweet platinum trophy on my PS5.\u003C\u002Fp>\n",[12,28],{"page":13,"link_text":17},{"ID":14,"post_author":15,"post_date":16,"post_date_gmt":16,"post_content":5,"post_title":17,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":20,"to_ping":5,"pinged":5,"post_modified":21,"post_modified_gmt":21,"post_content_filtered":5,"post_parent":22,"guid":23,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":27},35,"98","2020-03-12 15:02:03","SEO","publish","closed","seo","2026-09-10 09:29:45",0,"\u002F?page_id=35","page","0","raw","\u002Fseo\u002F",{"page":29,"link_text":32},{"ID":30,"post_author":15,"post_date":31,"post_date_gmt":31,"post_content":5,"post_title":32,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":33,"to_ping":5,"pinged":5,"post_modified":34,"post_modified_gmt":34,"post_content_filtered":5,"post_parent":14,"guid":35,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":36},57,"2020-03-12 15:49:37","Technical SEO","technical-seo","2025-10-28 09:41:49","\u002F?page_id=57","\u002Fseo\u002Ftechnical-seo\u002F",{"ID":38,"id":38,"title":39,"filename":40,"filesize":41,"url":42,"link":43,"alt":5,"author":44,"description":5,"caption":5,"name":45,"status":46,"uploaded_to":22,"date":47,"modified":47,"menu_order":22,"mime_type":48,"type":49,"subtype":50,"icon":51,"width":52,"height":53,"sizes":54},24199,"Chris-R","Chris-R.png",416613,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&q=90","\u002Fchris-r\u002F","12","chris-r","inherit","2023-07-21 11:46:51","image\u002Fpng","image","png","\u002Fwp\u002Fwp-includes\u002Fimages\u002Fmedia\u002Fdefault.png",696,600,{"thumbnail":55,"thumbnail-width":56,"thumbnail-height":56,"medium":57,"medium-width":58,"medium-height":59,"medium_large":60,"medium_large-width":61,"medium_large-height":62,"large":63,"large-width":64,"large-height":65,"1536x1536":66,"1536x1536-width":67,"1536x1536-height":68,"2048x2048":69,"2048x2048-width":70,"2048x2048-height":71,"post-thumbnail":72,"post-thumbnail-width":73,"post-thumbnail-height":74,"12_col":75,"12_col-width":76,"12_col-height":77,"default_landscape":78,"default_landscape-width":79,"default_landscape-height":53,"default_portrait":80,"default_portrait-width":53,"default_portrait-height":79,"6_col_and_margin_short":81,"6_col_and_margin_short-width":73,"6_col_and_margin_short-height":77,"11_col_and_margin":82,"11_col_and_margin-width":83,"11_col_and_margin-height":77,"9_col_rectangle":84,"9_col_rectangle-width":85,"9_col_rectangle-height":86,"11_col":87,"11_col-width":88,"11_col-height":77,"staff_image_696_600":89,"staff_image_696_600-width":52,"staff_image_696_600-height":53,"rectangular_thumbnail":90,"rectangular_thumbnail-width":91,"rectangular_thumbnail-height":92},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640","640","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=scale&h=172&q=90&w=200",200,172,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=scale&h=662&q=90&w=768",768,662,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892","1892","1000","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=scale&h=1324&q=90&w=1536",1536,1324,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=scale&h=1766&q=90&w=2048",2048,1766,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860",1860,1180,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880",2880,870,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800",800,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080",3080,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150",2150,1400,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640",2640,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress%2Cformat&fit=crop&h=300&q=90&w=750",750,300,[94],{"acf_fc_layout":95,"reduced":96,"top_overlap":-1,"bottom_underlap":-1,"disable_observer":-1,"title":97,"posts":98},"author_posts",true,"Chris Rogers’ posts",{"data":99,"pages":126},[100,116],{"type_key":101,"title":102,"excerpt":103,"to":104,"postedAt":105,"readingTime":106,"image":107,"authors":108,"category":114},"post","The complete JavaScript SEO guide","\u003Cp>In our complete JavaScript SEO Guide, we will uncover the important elements of JavaScript (also known as JS) that SEOs need to know about. We’ll talk about how Google crawls and indexes JavaScript, why it benefits both users as well as SEOs and most importantly, the best practices you should follow to make your JavaScript [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fjavascript-seo-guide\u002F","2025-03-31T15:46:11",28,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640",[109,111],{"name":4,"image":110},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"name":112,"image":113},"Louisa Holman","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress&fit=crop&fm=jpg&h=150&q=80&w=150&bg=CFE6F9",{"to":115,"name":17},"\u002Fblog\u002Fcategory\u002Fseo\u002F",{"type_key":101,"title":117,"excerpt":118,"to":119,"postedAt":120,"readingTime":121,"image":122,"authors":123,"category":125},"Understanding Google’s Core Web Vitals metric INP and how to measure it","\u003Cp>In March of 2024 Google will be replacing the First Input Delay (FID) Core Web Vitals metric with Interaction to Next Paint (INP), but how important is this change and will it affect your website? We will explore these questions within our blog. What is INP? INP stands for Interaction to Next Paint. INP measures [&hellip;]\u003C\u002Fp>\n","\u002Fblog\u002Fgoogle-core-web-vital-inp\u002F","2026-08-25T09:31:38",10,"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=640&q=90&rect=1050%2C0%2C1350%2C1350&w=640",[124],{"name":4,"image":110},{"to":115,"name":17},"1",{"type":128,"style":129,"title":130,"heading":4,"intro":10,"services":11,"breadcrumbs":131,"photo":55,"social":143},"author","dark","Meet the Team",[132,135,138,141],{"path":133,"name":134},"\u002F","Home",{"path":136,"name":137},"\u002Fabout\u002F","About Us",{"path":139,"name":140},"\u002Fabout\u002Four-team\u002F","Meet the team",{"path":142,"name":4},null,{"twitter":5,"linkedin":5},[145],{"rel":146,"href":147},"canonical","https:\u002F\u002Fwww.impressiondigital.com\u002Fabout\u002Four-team\u002Fchris-rogers\u002F",[149,506],{"id":150,"date":105,"date_gmt":105,"guid":151,"modified":105,"modified_gmt":105,"slug":153,"status":18,"type":101,"link":104,"title":154,"content":155,"excerpt":158,"author":159,"featured_media":160,"comment_status":19,"ping_status":19,"sticky":157,"template":5,"format":161,"meta":162,"categories":165,"collections":168,"coauthors":169,"class_list":172,"acf":181,"head_links":182,"breadcrumbs":183,"url_path":104,"search_description":164,"featured_image_urls":190,"authors":225,"type_nicename":272,"reading_minutes":106,"category":273,"yoast_title":163,"yoast_meta":277,"yoast_json_ld":331,"_links":456},26216,{"rendered":152},"\u002F?p=26216","javascript-seo-guide",{"rendered":102},{"rendered":156,"protected":157},"\n\u003Cp>In our complete JavaScript SEO Guide, we will uncover the important elements of JavaScript (also known as JS) that SEOs need to know about. We’ll talk about how Google crawls and indexes JavaScript, why it benefits both users as well as SEOs and most importantly, the best practices you should follow to make your JavaScript SEO-friendly.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Whether you’re new to SEO and looking to familiarise yourself with the topic or a seasoned developer looking for a fresh perspective, this blog is just what you are looking for.\u003C\u002Fp>\n\n\n\n\u003Cp>Use the links below to navigate to individual sections. And if you’re thinking of partnering with a \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Fjavascript-website-seo\u002F\">JavaScript SEO agency\u003C\u002Fa>, you can get a free consultation by \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fget-in-touch\u002F\">speaking to our team today\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\n\u003Cdiv class=\"table-of-contents\">\u003Cul>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-javascript\">What is JavaScript?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-javascript-seo\">What is JavaScript SEO?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-javascript-rendering\">What is JavaScript rendering?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#server-side-rendering\">Server-side rendering \u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#client-side-rendering\">Client-side rendering \u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#how-does-google-crawl-and-index-javascript\">How does Google crawl and index JavaScript?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#other-important-elements-of-javascript-you-need-to-know\">Other important elements of JavaScript you need to know\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#what-is-ajax\">What is Ajax?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#what-is-the-document-object-model-dom\">What is the Document Object Model (DOM)?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#benefits-of-javascript-for-seo-and-users\">Benefits of JavaScript for SEO and users\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#how-javascript-poses-a-challenge-for-seos\">How JavaScript poses a challenge for SEOs\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#javascript-can-affect-accessibility-if-not-implemented-correctly\">JavaScript can affect accessibility if not implemented correctly\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#javascript-can-affect-crawling-and-indexing\">JavaScript can affect crawling and indexing\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#common-issues-with-javascript-seo\">Common issues with JavaScript SEO\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#internal-linking-issues\">Internal linking issues\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#content-accessibility-for-crawlers\">Content accessibility for crawlers\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#content-accessibility-for-users\">Content accessibility for users\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#obtainability\">Obtainability\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#rendering-issues\">Rendering issues\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#single-page-application-considerations\">Single Page Application considerations\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-happens-if-a-javascript-framework-is-deployed-without-taking-seo-into-consideration\">What happens if a JavaScript framework is deployed without taking SEO into consideration?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#refining-your-approach-to-javascript-seo\">Refining your approach to JavaScript SEO\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#ensure-urls-are-indexable-and-crawlable\">Ensure URLs are indexable and crawlable\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#dont-block-javascript-resources\">Don’t block JavaScript resources\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#include-descriptive-metadata\">Include descriptive metadata\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#improve-the-page-loading-speed\">Improve the page loading speed\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#provide-essential-content-in-the-initial-html-response\">Provide essential content in the initial HTML response\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#add-navigational-elements-to-your-initial-html-response\">Add navigational elements to your initial HTML response\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#regularly-test-and-monitor-performance\">Regularly test and monitor performance\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#useful-javascript-seo-tools\">Useful JavaScript SEO tools\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#url-inspection-tool-in-google-search-console\">URL Inspection Tool in Google Search Console\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#using-your-browsers-inspect-feature\">Using your browser’s “Inspect” feature\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#mobile-friendly-test-and-lighthouse\">Mobile-Friendly Test and Lighthouse\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#page-speed-insights\">Page Speed Insights\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#site-command\">Site: Command\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#diffchecker\">Diffchecker\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#chrome-devtools\">Chrome DevTools\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#crawlers\">Crawlers\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#builtwith\">BuiltWith\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#get-help-with-your-javascript-seo\">Get help with your JavaScript SEO\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Ftechnical-seo\u002F\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"282\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Ftechnical-seo-banner.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32734\"\u002F>\u003C\u002Fa>\u003C\u002Ffigure>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"what-is-javascript\">\u003Cstrong>What is JavaScript?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>JavaScript is a programming language and a core technology of the World Wide Web, along with HTML and CSS. It is commonly abbreviated as JS, hence the capitals within JavaScript.\u003C\u002Fp>\n\n\n\n\u003Cp>JavaScript was first invented in 1995 by Brendan Eich while working at Netscape. Internet Explorer was the first browser to support ES1 (ECMAScript 1), the first edition of JS. JavaScript is currently on its 14th ECMAScript edition (ES14), which was released in 2023. Whilst browsers are looking to support specific features from some of these new releases, we may not see full support up to these later versions for some time to come.\u003C\u002Fp>\n\n\n\n\u003Cp>The computer programming language JavaScript should not be confused with another language, Java, as they are very different. JavaScript has been noted as one of the fastest-growing languages in the world, and it’s unlikely that’s going to change anytime soon.\u003C\u002Fp>\n\n\n\n\u003Cp>Modern web pages are comprised of three major components:\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>HTML – Hypertext Markup Language. Imagine this to be the “skeleton” to the web page’s “physical form” – let’s use a Zebra as an example. As the bones in a Zebra skeleton provide structure, so does HTML for a site. It organises the static content on a site into headings, paragraphs, lists, etc.\u003C\u002Fli>\n\n\n\n\u003Cli>JavaScript – We have what looks like a Zebra now, but it wouldn’t be a great deal of use in the savannah as just skin and bones. JavaScript provides the “muscle” enabling movement to a form and the interactivity to a website. JavaScript is either embedded in the HTML document within script tags, predominantly in the header and footer or linked to a script hosted elsewhere.\u003C\u002Fli>\n\n\n\n\u003Cli>CSS – Cascading Style Sheets. Picture this as the “fur” that covers the &#8216;Zebra&#8217; skeleton. Much like a Zebra has an instantly recognisable black-and-white appearance, the CSS is the design, style and wow factor added to a website, making up the presentation layer of the page.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp>Put simply, as muscles make a Zebra run, JS is a programming language that makes webpages interactive and animated, bringing a page to life to engage a user.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"627\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Fseo-js-zebra-structure.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32735\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>There is currently a wealth of JavaScript (JS) libraries and frameworks. These are essentially tools that offer pre-written code that developers can use to build websites more efficiently. \u003C\u002Fp>\n\n\n\n\u003Cp>Some that we work with here at Impression include jQuery, AngularJS, ReactJS and EmberJS. As well as jQuery UI, Chart.js is a good example of the most visual. The latter is for interactive charts while the former offers a bank of user experience (UX), ‘datepicker’ inputs you see all over the web, scrollers and drag and drop. Then there is Node.js, which focuses on run-time updates, enabling pages to update in real-time.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"what-is-javascript-seo\">\u003Cstrong>What is JavaScript SEO?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>JavaScript SEO is a facet of technical SEO that looks to improve the crawlability and indexability of websites that rely on JavaScript. Much like general SEO, the aim of JavaScript SEO is to improve search visibility and ensure that the website delivers the best experience for the user.&nbsp;&nbsp;&nbsp;&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>JavaScript SEO typically includes things such as\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Optimising content delivered by JavaScript to improve load time through techniques such as lazy loading, minification and bundling. \u003C\u002Fli>\n\n\n\n\u003Cli>Identifying and fixing JavaScript issues&nbsp;\u003C\u002Fli>\n\n\n\n\u003Cli>Following internal linking and mobile SEO best practices&nbsp;\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"what-is-javascript-rendering\">\u003Cstrong>What is JavaScript rendering?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>Rendering focuses on fetching the relevant data to populate a page, and the visual layout templates and components and then merging them to produce HTML that a web browser can display. \u003C\u002Fp>\n\n\n\n\u003Cp>It’s here where we should introduce two fundamental concepts: server-side rendering and client-side rendering. Every SEO managing a JavaScript website must recognise the difference between the two. \u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"server-side-rendering\">Server-side rendering \u003C\u002Fh3>\n\n\n\n\u003Cp>Server-side rendering (SSR) is when the webpage is generated on the server and then sent to the browser fully rendered. This involves a browser or a search engine bot (crawler) receiving HTML markup that describes the page exactly.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Once the content is already in place, your browser or the search engine bot must download the attached assets (CSS, images, etc) to present how the page has been designed. As this is the traditional approach, browsers and bots do not generally have a problem with SSR content.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Websites that use SSR are typically programmed in PHP, ASP or Ruby and might have used popular content management systems like Kentico, WordPress or Magento.&nbsp;&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"client-side-rendering\">Client-side rendering \u003C\u002Fh3>\n\n\n\n\u003Cp>Client-side rendering (CSR) is the opposite of server-side rendering (SSR). In CSR, JavaScript is executed in the user&#8217;s browser or by the search engine bot rather than on the server. This means the browser first loads a basic HTML page and then uses JavaScript to build and display the content dynamically.\u003C\u002Fp>\n\n\n\n\u003Cp>Many search engine bots have been noted to struggle with CSR because, initially, they will see a blank HTML page with very little content. This makes it harder for search engines to immediately understand and index the fully-rendered content as it isn’t visible right away.\u003C\u002Fp>\n\n\n\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"\u002Fabout\u002Four-team\u002Fluke-davis\u002F\">Luke Davis\u003C\u002Fa>, senior technical SEO specialist at Impression, advises the following when choosing the appropriate rendering solution for your site:\u003C\u002Fp>\n\n\n\n\u003Cp class=\"has-vivid-cyan-blue-background-color has-background has-medium-font-size\">\u003Cstrong>\u003Cem>“It’s so important to pick the right rendering solution for your site. You have to carefully balance resources, server costs, and general maintenance and make sure that the content you need users to see is also visible to search engines. That’s why server-side rendering is usually the default solution for many sites: it’s popular, relatively easy to manage, and serves content in a way that works for users and bots.”\u003C\u002Fem>\u003C\u002Fstrong>\u003C\u002Fp>\n\n\n\n\u003Cp>A common workaround suggested by Google in the past was dynamic rendering. This approach offers server-side rendering to bots that can’t render JS-generated content but still serve client-side rendered content to users. While that offers a happy medium, this kind of rendering solution comes with its own problems and resource requirements, making it more of a short-term fix. \u003C\u002Fp>\n\n\n\n\u003Cp>Google now recommends using server-side rendering, static rendering, or hydration as a solution. Static rendering is similar to SSR, but it is triggered at build time (when the website is deployed or updated) rather than at request time. Hydration then takes place after the static content is rendered and delivered to the browser to serve dynamic content and interactivity. \u003C\u002Fp>\n\n\n\n\u003Cp>If you need more advice on choosing the best rendering solution for your website, we can help. Head over to our \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Fjavascript-website-seo\u002F\">JavaScript SEO services\u003C\u002Fa> page to learn more about the support we offer to help improve how search engines crawl, index, and rank your JavaScript-based content.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"how-does-google-crawl-and-index-javascript\">\u003Cstrong>How does Google crawl and index JavaScript?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>Google crawls a website using its ‘Googlebot’ crawler and indexes with the &#8216;Caffeine’ infrastructure. Each performs very different functions – Googlebot is all about discovery.\u003C\u002Fp>\n\n\n\n\u003Cp>Googlebot essentially processes JavaScript in three major stages these being;\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Crawling\u003C\u002Fli>\n\n\n\n\u003Cli>Rendering&nbsp;\u003C\u002Fli>\n\n\n\n\u003Cli>Indexing&nbsp;\u003C\u002Fli>\n\n\n\n\u003Cli>\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Cp>As shown in the diagram below, Googlebot places pages within a queue for their crawling and rendering processes. From here, Googlebot fetches a URL from the crawling queue and reads the robots.txt file to see whether the URL has been disallowed or not.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>From here, Googlebot then parses the HTML response to another URL and adds it to the crawling queue. Once Googlebot’s resources allow, a headless Chromium renders the page and executes the JavaScript. This rendered HTML is then used to index the page. We’ll take a closer look at what JavaScript rendering is in the next section.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>However, during \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fio.google\u002F2018\u002F\">Google’s 2018 I\u002FO conference\u003C\u002Fa>, they stated that JavaScript is now being processed in two separate waves. These waves can take a couple of days – a week to properly index JavaScript-heavy websites, but Google is actively working towards rendering in near-real-time. The diagram below displays the process Googlebot goes through when indexing.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"349\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Fseo-render-queue.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32736\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>\u003Cem>JavaScript\u003C\u002Fem> rendering process: Crawl queue to the crawler. During the processing, the URL is queued to render; once rendered,\u003Cem> it indexes the URL.\u003C\u002Fem>\u003C\u002Fp>\n\n\n\n\u003Cp>As Google is running two separate waves of indexing, it is possible for some details to be missed during the indexing process. For example, if you’re not server-side rendering crucial title tags and meta descriptions, Google may miss this on the second way, having negative implications on your organic visibility on the SERPs.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"other-important-elements-of-javascript-you-need-to-know\">\u003Cstrong>Other important elements of JavaScript you need to know\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"what-is-ajax\">What is Ajax?\u003C\u002Fh3>\n\n\n\n\u003Cp>Asynchronous JavaScript and XML, known as AJAX, is a set of web development techniques combining, you guessed it, JavaScript and XML to create asynchronous web applications.\u003C\u002Fp>\n\n\n\n\u003Cp>Asynchronous means “not existing or occurring at the same time”, so the web applications can communicate with a server without interfering with other functions or lines of code on a page by operating in the background.\u003C\u002Fp>\n\n\n\n\u003Cp>Usually, all the assets on a page are requested and fetched from the server and then rendered on the page. AJAX can be implemented to update the content or a layout without initiating a full page refresh. Usefully, as often, pages on a site don’t differ greatly, using AJAX means only the assets that differ need to be loaded, which improves the UX.\u003C\u002Fp>\n\n\n\n\u003Cp>A great example of this in action is Google Maps; the page updates as the user navigates without a full page reload.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"what-is-the-document-object-model-dom\">What is the Document Object Model (DOM)?\u003C\u002Fh3>\n\n\n\n\u003Cp>Think of the Document Object Model (DOM) as the web browser’s actions taken after receiving the HTML document to render the page.\u003C\u002Fp>\n\n\n\n\u003Cp>It is essentially an application programming interface (API) for markup and structured data such as HTML and XML.\u003C\u002Fp>\n\n\n\n\u003Cp>The HTML document is the first thing the browser receives. Following that, it will start analysing the content within and fetching additional resources, such as images, CSS, and JavaScript files. What forms from this parsing of information and resources is referred to as the DOM. It can therefore be thought of as an organised, structured interpretation of the webpage’s code. A “bridge” that connects web pages and programming languages.\u003C\u002Fp>\n\n\n\n\u003Cp>While the DOM is a language-agnostic (unrestricted to a specific programming language or library) API, it is most commonly used in web applications for JavaScript and dynamic HTML.\u003C\u002Fp>\n\n\n\n\u003Cp>As a result of dynamic HTML, the DOM is often very different from the initial HTML document.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Dynamic HTML is the ability for a page to change its content depending on user input, environment (such as time of day), and other variables, leveraging HTML, CSS, and JavaScript.\u003C\u002Fp>\n\n\n\n\u003Cp>From an SEO perspective, it’s important to understand the DOM because it’s how Google analyses and understands webpages. Visually, the DOM is what you see when you “Inspect Element” in a browser.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Ftechnical-seo\u002F\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"282\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Ftechnical-seo-banner.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32734\"\u002F>\u003C\u002Fa>\u003C\u002Ffigure>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"benefits-of-javascript-for-seo-and-users\">\u003Cstrong>Benefits of JavaScript for SEO and users\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>JavaScript is being used more and more across the web to provide more dynamic experiences to web users. This trend has been growing in recent years, with websites like Airbnb running solely on JavaScript (in this case, a variant of JavaScript called React JS).\u003C\u002Fp>\n\n\n\n\u003Cp>JavaScript allows you to add dynamic elements to web pages, which can enhance interactivity, making it more engaging for the user. Other features like infinite scroll and interactive maps, which are delivered through JS, also help to improve the user experience. \u003C\u002Fp>\n\n\n\n\u003Cp>While the experiences produced by JavaScript can be really good for users, the same cannot always be said for Google and other search bots. This is because they can struggle to render JS unless managed correctly. The reality is that websites seeking to use JavaScript must consider Google in their implementation, ensuring their site can be crawled, rendered and indexed effectively. Google certainly wants to provide users with the best experience, and so there is a gap to bridge here. \u003C\u002Fp>\n\n\n\n\u003Cp>JavaScript is a very useful tool when utilised correctly, but it is by no means perfect. As with everything, it’s about picking the right tool for the job. Developers may prefer to work with a language they’re very familiar with rather than creating something in another language that could perform better. If you’re working with a developer and you are unsure of whether they are using the right tool for the job, the best approach is to always ask questions with an open mind. \u003C\u002Fp>\n\n\n\n\u003Cp>Let’s look at some further considerations and challenges.&nbsp;&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"how-javascript-poses-a-challenge-for-seos\">\u003Cstrong>How JavaScript poses a challenge for SEOs\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>Unfortunately, many JavaScript frameworks are deployed without SEO considerations taken into account, which can have a drastic impact on the overall performance of the website.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"javascript-can-affect-accessibility-if-not-implemented-correctly\">JavaScript can affect accessibility if not implemented correctly\u003C\u002Fh3>\n\n\n\n\u003Cp>As long as there isn’t a script that is device-dependent (requires a mouse or keyboard), then a web page containing JavaScript will normally be fully accessible. JavaScript has the potential to optimise the visitor experience and improve accessibility, but it’s all based on how it’s used.\u003C\u002Fp>\n\n\n\n\u003Cp>When JavaScript has been utilised to create visual interface elements,  such as an image change when hovering over with a mouse cursor, this interaction typically requires a mouse or another interaction device like a laptop touchpad or drawing tablet. As a result, this type of interaction may not be considered fully accessible. However, if this does not affect the important content being displayed on the page, then it does not necessarily need to be addressed.\u003C\u002Fp>\n\n\n\n\u003Cp>For SEO, the user is the focus, and we want to ensure that everyone can access and view a page. The user should be able to see the same important content regardless of whether they have JS enabled or not.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"javascript-can-affect-crawling-and-indexing\">JavaScript can affect crawling and indexing\u003C\u002Fh3>\n\n\n\n\u003Cp>As previously mentioned, the main issue with JS is that if bots are unable to find URLs and understand the site’s architecture. This can cause crawling and indexing to become slow and inefficient.\u003C\u002Fp>\n\n\n\n\u003Cp>On JavaScript-based websites where internal links are not part of the HTML source code, crawlers initially discover only a limited set of URLs. The crawler then has to wait for the indexer to render these pages before extracting new URLs, causing multiple revaluations of the internal \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fwebsite-architecture-seo\u002F\">site structure\u003C\u002Fa>, which can cause the relative importance of pages to change. This can lead to key pages being overlooked or deemed unimportant, while less important pages might appear to have higher value due to their internal links.&nbsp;&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Internal linking is a key signal for search engines to understand a site’s architecture and page importance. If internal links are missing from the HTML source, Google may spend more time crawling and rendering the wrong pages over the pages you actually want to rank.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>As a resolution, internal linking should be implemented with regular anchor tags within the HTML or the DOM rather than using JavaScript functions to allow the user to traverse the site.JavaScript’s onclick events are not a suitable replacement for internal linking. While certain URLs might be found and crawled, likely through \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fxml-sitemaps\u002F\">XML sitemaps\u003C\u002Fa> or in JavaScript code, they won’t be associated with the overall navigation of the site.\u003C\u002Fp>\n\n\n\n\u003Cp>Another issue to avoid is blocking search engines from your JavaScript. If this happens, search engines will not be able to see the most important content on your site, which can negatively affect your SEO efforts.\u003C\u002Fp>\n\n\n\n\u003Cp>The best way this can be resolved is by working with your website development team to determine which files should and should not be accessible to search engines.\u003C\u002Fp>\n\n\n\n\u003Cp>One recommendation is to implement \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FHistory\u002FpushState\">pushState\u003C\u002Fa>, which is navigation-based and used to manipulate the browser History API. Simply, pushState updates the address bar URL, ensuring only what needs to change on the page is updated.\u003C\u002Fp>\n\n\n\n\u003Cp>The best use of pushState is seen with infinite scroll (when the user scrolls to new parts of the page, the URL will update). This means the user shouldn’t need to refresh the page, as the content updates as they scroll down, while the URL is updated in the address bar.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"common-issues-with-javascript-seo\">\u003Cstrong>Common issues with JavaScript SEO\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"internal-linking-issues\">Internal linking issues\u003C\u002Fh3>\n\n\n\n\u003Cp>Internal linking is considered a strong signal to search engines regarding the complete website architecture and the overall importance of pages. JavaScript-based internal linking might not be recognised by search engines if they are not included as part of the static HTML.\u003C\u002Fp>\n\n\n\n\u003Cp>If internal links are being provided via JavaScript, the rendering process needs to occur before the crawler is told where new links are on the site to crawl. This can result in a back-and-forth between the rendering process and the Googlebot crawler, slowing down both the crawling and indexing processes.\u003C\u002Fp>\n\n\n\n\u003Cp>With internal linking being one of the webmaster’s top priorities, regular anchor tags should be used within the HTML or the DOM as opposed to leveraging JavaScript functions. such as JavaScript onclick events to allow the users to traverse from web page to page across the site.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"content-accessibility-for-crawlers\">Content accessibility for crawlers\u003C\u002Fh3>\n\n\n\n\u003Cp>For content to be clear for both the user and search engine bots, the content must be indexable within the load event, require an indexable URL and use the same best practices SEO for HTML applied to render JavaScript sites. Not only this, but as aligned with basic SEO practices, each piece of content on a website should be unique, from the website itself and across other sources on the internet, shouldn’t be duplicated.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"content-accessibility-for-users\">Content accessibility for users\u003C\u002Fh3>\n\n\n\n\u003Cp>If the JavaScript hasn’t been coded with accessibility in mind, this can make it hard for users who rely on screen readers and other assistive devices to access the content. If your website relies on mouse or specific keyboard actions to view important content, this can create a barrier for users. \u003C\u002Fp>\n\n\n\n\u003Cp>Search engines will prioritise websites that are accessible to a broader audience. If your website doesn’t provide an accessible experience, it can lead to lower engagement and a higher bounce rate, which will reduce your chances of ranking well in the search results.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Furthermore, if all the HTML and content are loaded in after the initial server response (client-side rendering), then it can potentially result in the rendering process not detecting any content on the page if the rendering process test finishes before the content has loaded in.\u003Cbr>\u003Cbr>When content isn’t rendered, you are serving less content to a search engine than a user, and this can further impact your organic ranking performance.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"obtainability\">Obtainability\u003C\u002Fh3>\n\n\n\n\u003Cp>A number of search engines will deploy headless browsing, a type of software that can access web pages, but does not show the user and transfers the content of the web page to another program that runs on the backend. A headless browser helps to render the DOM to gain a better understanding of the user’s experience and the content situations on the page.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>However, it’s important to understand how JavaScript is executed and interacted with by search engine bots, with huge organic consequences if not. An example of this is the globally renowned brand Hulu, where a significant visibility drop was seen due to a coding problem and the way the site was serving JavaScript to Googlebot. For further information on this drop-off in traffic, \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsmart.linkresearchtools.com\u002Flinkthing\u002Fcase-studies\u002Fhulu-javascript-fail-visibility-drop\">read the Hulu.com JavaScript Fail case study\u003C\u002Fa>.&nbsp;&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"rendering-issues\">Rendering issues\u003C\u002Fh3>\n\n\n\n\u003Cp>JavaScript can affect the overall rendering of a web page. Therefore, if something is render-blocking, this is likely to delay the page from loading as quickly as it has the potential to. As a rule of thumb, Google recommends completely removing or at least deferring any JavaScript that interferes with the loading of “above the fold” content on a website.\u003C\u002Fp>\n\n\n\n\u003Cp>Above the fold refers to the part of the web page that is visible when the page initially loads. The subsequent portion of the page that requires scrolling is called “below the fold”. This can be apparent across a range of devices, including desktops, mobiles, iPads and many more.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"single-page-application-considerations\">Single Page Application considerations\u003C\u002Fh3>\n\n\n\n\u003Cp>A single-page application (SPA) is a web application or website that has been primarily designed and built to operate efficiently on the web. These pages are dynamically rewritten and loaded with the pieces you require, as opposed to loading an entire page from the server.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>The SPA approach provides a fast loading time, uses less bandwidth and provides the user with a pleasant experience by making the application behave more like a desktop application. It should be noted that there are many different SPA framework options available, depending on the use of the application. These include React.js, Angular.js, Backbone.js, Preact, Next.js and hundreds more.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>When rendering SPAs, John Mueller, Search Advocate at Google, stated the following:\u003C\u002Fp>\n\n\n\n\u003Cp class=\"has-vivid-cyan-blue-background-color has-background has-medium-font-size\">\u003Cstrong>\u003Cem>“There can be many hurdles when Google attempts to crawl and index the content on the SPA. Therefore, if you’re using SPAs, it’s recommended to test out multiple times, using the Fetch command, to understand what Google is able to pick up.”\u003C\u002Fem>\u003C\u002Fstrong>\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"what-happens-if-a-javascript-framework-is-deployed-without-taking-seo-into-consideration\">\u003Cstrong>What happens if a JavaScript framework is deployed without taking SEO into consideration?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>If a JavaScript framework is deployed without considering SEO, then the worst-case scenario is that search engines, like Google, may not be able to read the content on the website.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Without access to the content, Google may view the pages as lacking relevant content, making them irrelevant to specific search queries. If left unresolved, the website may be de-indexed, causing it to disappear from the search results.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>This sounds scary on its own, but if the majority of your business comes in digitally, then this sort of issue will result in a drastic drop in business and conversions until it is resolved. This can also have an impact on paid advertisements.&nbsp; If the page’s content can’t be seen by the search engines, then it could also prevent any paid advertisements via a search engine from being shown. The search engine will see it as having no relevance to your target keyword and instead will prioritise other advertisers that do have relevance.\u003C\u002Fp>\n\n\n\n\u003Cp>Any advertisements like dynamic search ads (DSA) campaigns that utilise content from the page for the advertisement won’t display due to finding no content.\u003C\u002Fp>\n\n\n\n\u003Cp>This scenario highlights the importance of JavaScript frameworks working well from both a user and SEO perspective. Poor usability can negatively impact rankings, and JavaScript that causes significant delays in page load times or hides crucial content can also harm SEO.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Seeking advice from an experienced \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Fjavascript-website-seo\u002F\">JavaScript SEO agency\u003C\u002Fa> can help you avoid these common pitfalls when looking to use JavaScript-based content on your website. Below, we’ll explore some of the best practices and tools you can use to follow for implementing a successful JavaScript SEO strategy.\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Ftechnical-seo\u002F\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"282\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Ftechnical-seo-banner.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32734\"\u002F>\u003C\u002Fa>\u003C\u002Ffigure>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"refining-your-approach-to-javascript-seo\">\u003Cstrong>Refining your approach to JavaScript SEO\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"ensure-urls-are-indexable-and-crawlable\">Ensure URLs are indexable and crawlable\u003C\u002Fh3>\n\n\n\n\u003Cp>To ensure that JavaScript-based URLs are indexable by search engines, it&#8217;s crucial to follow best practices that enhance crawlability and SEO performance. URLs should be clean and static whenever possible, and you should avoid using hashbang URLs and query parameters as these can confuse crawlers.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>To ensure that content is rendered and sent to the search engines as fully indexed HTML, you should look to implement server-side rendering where possible, as this will prevent reliance on JavaScript execution.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"dont-block-javascript-resources\">Don’t block JavaScript resources\u003C\u002Fh3>\n\n\n\n\u003Cp>Often, websites will block resources they think have no importance to a search engine or a user. If your page is feeding content into a page via JavaScript, ensure the JavaScript resources that do this are crawlable and aren’t being blocked in robots.txt.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"include-descriptive-metadata\">Include descriptive metadata\u003C\u002Fh3>\n\n\n\n\u003Cp>With each individual page on the site having a specific focus and target, they should also include descriptive titles and meta descriptions to help search engine bots and users precisely detect what the page is about. Not only this, but it also helps users determine if this is the most suitable page for their search query.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"improve-the-page-loading-speed\">Improve the page loading speed\u003C\u002Fh3>\n\n\n\n\u003Cp>Google indicated that page speed is one of the signals used by their complex algorithm to rank pages, as well as a faster page speed allows search engine bots to increase the number of pages, helping with the overall indexation of a site. \u003C\u002Fp>\n\n\n\n\u003Cp>From a JavaScript point of view, making the web page more interactive and dynamic for users can come with some costs with page speed. To mitigate this, lazy loading can be advised to use for certain components, usually ones that aren’t fully required above the fold.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"provide-essential-content-in-the-initial-html-response\">Provide essential content in the initial HTML response\u003C\u002Fh3>\n\n\n\n\u003Cp>Search engines rely on the initial HTML to crawl and index the content. By including essential content such as title tags and meta descriptions in the initial HTML, it will allow the search engines to crawl the content directly. \u003C\u002Fp>\n\n\n\n\u003Cp>If important content is hidden behind JavaScript, search engines may not index it properly or at all, hurting the page&#8217;s visibility in search results.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"add-navigational-elements-to-your-initial-html-response\">Add navigational elements to your initial HTML response\u003C\u002Fh3>\n\n\n\n\u003Cp>You should ensure that navigational elements, like links, menus and pagination are all included in the initial HTML response of the webpage rather than relying on JavaScript to load them dynamically after the page has been rendered.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>You should also include regular anchor tags (&lt;a href=&#8221;&#8230;&#8221;&gt;) as opposed to the onclick attribute for your links. This is because search engines can’t trigger JavaScript events to load additional content, therefore, any pages or content behind these navigational links could be missed.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"regularly-test-and-monitor-performance\">Regularly test and monitor performance\u003C\u002Fh3>\n\n\n\n\u003Cp>To ensure that JavaScript is running effectively and not negatively impacting the overall performance of your website, it&#8217;s essential to test and monitor it for both desktop and mobile devices.\u003C\u002Fp>\n\n\n\n\u003Cp>Testing should cover various aspects, such as \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fpage-speed\u002F\">measuring page speed\u003C\u002Fa>, \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fcore-web-vitals-a-guide-to-googles-new-page-experience-signals\u002F\">Core Web Vitals\u003C\u002Fa>, and crawlability. This will help you pinpoint areas where JavaScript or other elements might be causing delays or issues.\u003C\u002Fp>\n\n\n\n\u003Cp>To test whether your website is optimised for both search engines and users, you can use a variety of tools and techniques. We’ll cover these in the next section.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"useful-javascript-seo-tools\">\u003Cstrong>Useful JavaScript SEO tools\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>With the endless capabilities JavaScript has, there’s an abundance of helpful tools available to assess and fix issues with JavaScript code. Here are just a few that we find helpful as an \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002F\">SEO agency\u003C\u002Fa>.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"url-inspection-tool-in-google-search-console\">URL Inspection Tool in Google Search Console\u003C\u002Fh3>\n\n\n\n\u003Cp>Found within \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsearch.google.com\u002Fsearch-console\u002Fabout\">Google Search Console\u003C\u002Fa>, the URL Inspection Tool allows you to analyse a specific URL on your website to understand the full status of how Google is viewing it.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>The URL inspection tool provides valuable data about crawling and indexing and highlights whether any errors are occurring and why. It also provides further information from Google’s index, such as details about structured data, along with any errors.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"using-your-browsers-inspect-feature\">Using your browser’s “Inspect” feature\u003C\u002Fh3>\n\n\n\n\u003Cp>To review rendered HTML and general JavaScript elements, the Inspect Element of Google Chrome can be used to assist users in discovering further information about the webpage that is hidden from the user’s view. \u003C\u002Fp>\n\n\n\n\u003Cp>To discover hidden JavaScript files, such as user behaviour when interacting with a web page, you can attain this information from the Sources tab of the Inspect Element. If you loaded the desired page before opening the Sources tab, then you may need to perform a refresh whilst the Sources tab is open to see the full list of sources for that page.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>Inspect is the more comprehensive method to view JavaScript-led sites, as it will show you what’s on the page currently, so if anything is dynamically loaded in after the initial page’s response (server response), then it can be seen within inspect – this is known as client-side rendering. Server-side rendering will look to send the HTML with the initial server response and is more search engine friendly.\u003C\u002Fp>\n\n\n\n\u003Cp>You can test whether your website uses client-side rendering by going to view-source and comparing it against inspect. If all HTML and content can be found in both view-source and inspect, then the website is utilising server-side rendering. If you can’t find any of the content of the pages within view-source, then it is utilising client-side rendering.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>There is the potential that it may be a mix as well, where important HTML and content are being sent via server-side rendering, but a more dynamic section of the page is being delivered via client-side rendering. You can utilise Diffchecker for a more comprehensive view of what is different between view-source and Inspect.\u003C\u002Fp>\n\n\n\n\u003Cp>An example of this can be seen on YouTube, where we have a screenshot of a video on the website’s homepage that looks to deliver personal recommendations based on your viewing history:\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"813\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Finspect-element-1.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32737\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>But when we looked at the source code and ran a search for “your writing process”, it didn’t find anything:\u003C\u002Fp>\n\n\n\n\u003Cfigure class=\"wp-block-image size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"283\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Finspect-element-2.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32738\"\u002F>\u003C\u002Ffigure>\n\n\n\n\u003Cp>But should we then run this same search on Inspect, we can see the video title, which indicates that the website uses client-side rendering and that this content is dynamically loaded in after the initial page load:\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"742\" height=\"310\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Finspect-element-3.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32739\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"mobile-friendly-test-and-lighthouse\">Mobile-Friendly Test and Lighthouse\u003C\u002Fh3>\n\n\n\n\u003Cp>For a more detailed description of any mobile-friendly issues or recommendations for the page, you can utilise the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Flighthouse\u002Foverview\u002F\">Lighthouse\u003C\u002Fa> test found in Google Chrome’s DevTools. This can be accessed by opening the Inspect tool and navigating to the Lighthouse tab. Once a test has been completed, navigate down to the mobile-friendly section, and you will see an overall score out of 100. It will also provide you with recommendations to improve mobile friendliness.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"page-speed-insights\">Page Speed Insights\u003C\u002Fh3>\n\n\n\n\u003Cp>Google’s \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fpagespeed.web.dev\u002F\">Page Speed Insights\u003C\u002Fa> tool (PSI) effectively details the mobile and desktop performance of a page. In addition to this, this tool also provides recommendations on how this can be improved.\u003C\u002Fp>\n\n\n\n\u003Cp>If you are going down this list and have tried out Lighthouse, you will notice that PSI and Lighthouse are similar, this is because PSI utilises Lighthouse for its test. \u003C\u002Fp>\n\n\n\n\u003Cp>Lighthouse is more commonly used by developers as it provides in-depth recommendations and analyses of the page you’re currently on, whilst PSI will fetch the page and test it. This means that if you have a page in staging\u002Ftesting that is not yet live and behind a login, then PSI will likely be unable to test the page whilst Lighthouse can, provided the user is past the login stage.\u003C\u002Fp>\n\n\n\n\u003Cp>Page Speed Insights also provides CWV data on how the page has performed on average with users, if there are enough visits and data available from user experiences to provide this information.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"site-command\">Site: Command\u003C\u002Fh3>\n\n\n\n\u003Cp>The \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdevelopers.google.com\u002Fsearch\u002Fblog\u002F2007\u002F03\u002Fusing-site-command\">site: command\u003C\u002Fa> is one of the most direct tools to help see if Google has properly indexed your content. In order to do this, you can complete the following command in a Google search:&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>site: https:\u002F\u002Fwww.example.com “text snippet or query”\u003C\u002Fp>\n\n\n\n\u003Cp>Replace “https:\u002F\u002Fwww.example.com” with your website or a specific category\u002Fpage if you want to see pages that contain that category or a specific page only.\u003C\u002Fp>\n\n\n\n\u003Cp>The text snippet or query is optional; if you don’t know the URL of a specific page you want to test, but know its overall topic\u002Ffocus, you can enter a strong relevance keyword for that page for it to find the most relevant results found on your site for said keyword.\u003C\u002Fp>\n\n\n\n\u003Cp>The two can be used in combination, so you know the page is within a specific category and you don’t know the URL off by heart, but you know it’s about a specific topic, then:\u003C\u002Fp>\n\n\n\n\u003Cp>site: https:\u002F\u002Fwww.example.com\u002Fcategory\u002F “specific topic”\u003C\u002Fp>\n\n\n\n\u003Cp>If no “text snippet or query” is added to the site command and you enter the root domain URL (often the homepage) then the Google search result will provide a rough count of how many pages on the site are indexed on the search engine.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"296\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F03\u002Fsite-command-function.jpg?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-32740\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"diffchecker\">Diffchecker\u003C\u002Fh3>\n\n\n\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fwww.diffchecker.com\u002F\">Diffchecker\u003C\u002Fa> is a unique tool that allows you to compare two types of text files and review the differences between them. This is especially useful for performing an analysis of a webpage’s original source code against the rendered code. This tool delivers comprehensive comparisons of how the content has changed after being rendered.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"chrome-devtools\">Chrome DevTools\u003C\u002Fh3>\n\n\n\n\u003Cp>Chrome DevTools is a set of tools for experienced web developers to build directly into Google’s Chrome browser. \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002F\">Chrome DevTools\u003C\u002Fa> can help you edit and make quick styled changes without needing to use a text editor. It helps to discover problems in a fast manner, which in turn, can help to build better websites in a quicker period.\u003C\u002Fp>\n\n\n\n\u003Cp>You can access this via Inspect, which we talked about earlier, or via the 3-dot menu > More Tools > Developer Tools\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"crawlers\">Crawlers\u003C\u002Fh3>\n\n\n\n\u003Cp>There are a myriad of crawlers available on the market that can crawl as a JavaScript crawler or imitate Google’s crawler and rendering process. We have listed a couple of our favourites below:\u003C\u002Fp>\n\n\n\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fwww.screamingfrog.co.uk\u002Fseo-spider\u002F\">Screaming Frog\u003C\u002Fa>: A crawler that is constantly updated with new features, has lots of helpful usage guides on their site, allows for custom extraction of specific elements on the site and is used by a very large percentage of SEOs within the industry.\u003C\u002Fp>\n\n\n\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsitebulb.com\u002F\">SiteBulb\u003C\u002Fa>: A crawler that is growing in popularity and provides easy-to-understand ‘hints’ which are recommendations on areas of improvement for the site’s SEO\u002Fvisibility on search engines.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" id=\"builtwith\">BuiltWith\u003C\u002Fh3>\n\n\n\n\u003Cp>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fbuiltwith.com\u002F\">BuiltWith\u003C\u002Fa> is a free website profiler that helps to discover what framework websites are built with. Not only this, but it’ll also tell you about any integrations with a third-party website that the website has.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" id=\"get-help-with-your-javascript-seo\">\u003Cstrong>Get help with your JavaScript SEO\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>If you’d like to find out more information regarding JavaScript SEO or you’re undergoing some crawling or indexation issues due to JavaScript code, \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Fjavascript-website-seo\u002F\">contact our team\u003C\u002Fa> to learn more about our \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Fjavascript-website-seo\u002F\">JavaScript SEO services\u003C\u002Fa>.&nbsp;\u003C\u002Fp>\n",false,{"rendered":103,"protected":157},156,26253,"standard",{"_yoast_wpseo_focuskw":5,"_yoast_wpseo_title":163,"_yoast_wpseo_metadesc":164,"inline_featured_image":157,"footnotes":5},"The Complete JavaScript SEO Guide | Impression","Learn more about JavaScript SEO with our complete guide. Discover best practices and other tips to make your website’s JavaScript SEO-friendly.",[166,167],1,42,[],[170,171],260,237,[173,101,174,175,176,177,178,179,180],"post-26216","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo","category-technical-seo",[],[],[184,185,188,189],{"path":133,"name":134},{"path":186,"name":187},"\u002Fblog\u002F","Blog",{"path":115,"name":17},{"path":142,"name":102},{"thumbnail":191,"medium":193,"medium_large":195,"large":197,"1536x1536":201,"2048x2048":203,"post-thumbnail":205,"12_col":207,"default_landscape":209,"default_portrait":211,"6_col_and_margin_short":213,"11_col_and_margin":215,"9_col_rectangle":217,"11_col":219,"staff_image_696_600":221,"rectangular_thumbnail":223},{"url":107,"width":192,"height":192},640,{"url":194,"width":58,"height":58},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=150&q=90&w=200",{"url":196,"width":61,"height":22},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=576&q=90&w=768",{"url":198,"width":199,"height":200},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892",1892,1000,{"url":202,"width":67,"height":67},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=1152&q=90&w=1536",{"url":204,"width":70,"height":70},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=1536&q=90&w=2048",{"url":206,"width":73,"height":74},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860",{"url":208,"width":76,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880",{"url":210,"width":79,"height":53},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800",{"url":212,"width":53,"height":79},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600",{"url":214,"width":73,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860",{"url":216,"width":83,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080",{"url":218,"width":85,"height":86},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150",{"url":220,"width":88,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640",{"url":222,"width":52,"height":53},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696",{"url":224,"width":91,"height":92},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=300&q=90&w=750",[226,236],{"id":159,"path":227,"display_name":4,"job_title":9,"description":5,"avatar_url":110,"acf":228},"\u002Fabout\u002Four-team\u002Fchris-rogers\u002F",{"job_title":9,"full_bio":10,"specialist_service_links":229,"photo":234},[230,232],{"page":231,"link_text":17},{"ID":14,"post_author":15,"post_date":16,"post_date_gmt":16,"post_content":5,"post_title":17,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":20,"to_ping":5,"pinged":5,"post_modified":21,"post_modified_gmt":21,"post_content_filtered":5,"post_parent":22,"guid":23,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":27},{"page":233,"link_text":32},{"ID":30,"post_author":15,"post_date":31,"post_date_gmt":31,"post_content":5,"post_title":32,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":33,"to_ping":5,"pinged":5,"post_modified":34,"post_modified_gmt":34,"post_content_filtered":5,"post_parent":14,"guid":35,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":36},{"ID":38,"id":38,"title":39,"filename":40,"filesize":41,"url":42,"link":43,"alt":5,"author":44,"description":5,"caption":5,"name":45,"status":46,"uploaded_to":22,"date":47,"modified":47,"menu_order":22,"mime_type":48,"type":49,"subtype":50,"icon":51,"width":52,"height":53,"sizes":235},{"thumbnail":55,"thumbnail-width":56,"thumbnail-height":56,"medium":57,"medium-width":58,"medium-height":59,"medium_large":60,"medium_large-width":61,"medium_large-height":62,"large":63,"large-width":64,"large-height":65,"1536x1536":66,"1536x1536-width":67,"1536x1536-height":68,"2048x2048":69,"2048x2048-width":70,"2048x2048-height":71,"post-thumbnail":72,"post-thumbnail-width":73,"post-thumbnail-height":74,"12_col":75,"12_col-width":76,"12_col-height":77,"default_landscape":78,"default_landscape-width":79,"default_landscape-height":53,"default_portrait":80,"default_portrait-width":53,"default_portrait-height":79,"6_col_and_margin_short":81,"6_col_and_margin_short-width":73,"6_col_and_margin_short-height":77,"11_col_and_margin":82,"11_col_and_margin-width":83,"11_col_and_margin-height":77,"9_col_rectangle":84,"9_col_rectangle-width":85,"9_col_rectangle-height":86,"11_col":87,"11_col-width":88,"11_col-height":77,"staff_image_696_600":89,"staff_image_696_600-width":52,"staff_image_696_600-height":53,"rectangular_thumbnail":90,"rectangular_thumbnail-width":91,"rectangular_thumbnail-height":92},{"id":237,"path":238,"display_name":112,"job_title":239,"description":240,"avatar_url":113,"acf":241},142,"\u002Fabout\u002Four-team\u002Flouisa-holman\u002F","Senior SEO Strategist","I joined Impression as a Senior SEO Strategist in January 2023 having worked across agency, freelance and in-house roles since 2009. I am always trying out new hobbies but always come back to reading, playing the piano and painting.",{"job_title":239,"full_bio":242,"specialist_service_links":243,"photo":246},"\u003Cp>Senior SEO Strategist. Joined Impression in January 2023\u003C\u002Fp>\n\u003Cp>I started out in SEO in 2009 teaching myself before winning my first agency role. I have worked in a few agencies across the East Midlands as well as in-house for a large corporate company. I love how competitive SEO can be and how it requires constant learning and change.\u003C\u002Fp>\n\u003Cp>\u003Cb>Something that I&#8217;m proud of:\u003C\u002Fb>\u003Cbr \u002F>\n8.5 years playing roller derby &#8211; being invited to play in tournaments in Europe and having the privilege to meet some really amazing people.\u003C\u002Fp>\n\u003Cp>\u003Cb>Outside of work:\u003C\u002Fb>\u003Cbr \u002F>\nWalking my dog, a Staffordshire Bull Terrier called Freddie. Having a dog is a lifestyle choice with lots of walks and meeting people your dog wants to introduce themself to. I also like reading and leaving lots of arts and crafts projects half-finished.\u003C\u002Fp>\n",[244],{"page":245,"link_text":17},{"ID":14,"post_author":15,"post_date":16,"post_date_gmt":16,"post_content":5,"post_title":17,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":20,"to_ping":5,"pinged":5,"post_modified":21,"post_modified_gmt":21,"post_content_filtered":5,"post_parent":22,"guid":23,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":27},{"ID":247,"id":247,"title":248,"filename":249,"filesize":250,"url":251,"link":252,"alt":5,"author":44,"description":5,"caption":5,"name":253,"status":46,"uploaded_to":22,"date":254,"modified":254,"menu_order":22,"mime_type":48,"type":49,"subtype":50,"icon":51,"width":52,"height":53,"sizes":255},33331,"Louisa-Holman","Louisa-Holman.png",403804,"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&q=90","\u002Flouisa-holman-2\u002F","louisa-holman-2","2025-05-29 11:59:07",{"thumbnail":256,"thumbnail-width":56,"thumbnail-height":56,"medium":257,"medium-width":58,"medium-height":59,"medium_large":258,"medium_large-width":61,"medium_large-height":62,"large":259,"large-width":64,"large-height":65,"1536x1536":260,"1536x1536-width":67,"1536x1536-height":68,"2048x2048":261,"2048x2048-width":70,"2048x2048-height":71,"post-thumbnail":262,"post-thumbnail-width":73,"post-thumbnail-height":74,"12_col":263,"12_col-width":76,"12_col-height":77,"default_landscape":264,"default_landscape-width":79,"default_landscape-height":53,"default_portrait":265,"default_portrait-width":53,"default_portrait-height":79,"6_col_and_margin_short":266,"6_col_and_margin_short-width":73,"6_col_and_margin_short-height":77,"11_col_and_margin":267,"11_col_and_margin-width":83,"11_col_and_margin-height":77,"9_col_rectangle":268,"9_col_rectangle-width":85,"9_col_rectangle-height":86,"11_col":269,"11_col-width":88,"11_col-height":77,"staff_image_696_600":270,"staff_image_696_600-width":52,"staff_image_696_600-height":53,"rectangular_thumbnail":271,"rectangular_thumbnail-width":91,"rectangular_thumbnail-height":92},"https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=640&q=90&w=640","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=scale&h=172&q=90&w=200","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=scale&h=662&q=90&w=768","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=scale&h=1324&q=90&w=1536","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=scale&h=1766&q=90&w=2048","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=1180&q=90&w=1860","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696","https:\u002F\u002Fimages.impression.co.uk\u002F2025\u002F05\u002FLouisa-Holman.png?auto=compress%2Cformat&fit=crop&h=300&q=90&w=750","Article",[274,275],{"id":166,"name":17,"path":115},{"id":167,"name":32,"path":276},"\u002Fblog\u002Fcategory\u002Ftechnical-seo\u002F",[278,280,282,285,287,290,293,295,297,299,302,305,308,311,314,317,319,321,324,326,329],{"property":279,"content":163},"title",{"property":281,"content":164},"description",{"name":283,"content":284},"robots","index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1",{"property":146,"content":286},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fjavascript-seo-guide\u002F",{"name":288,"content":289},"og:locale","en_GB",{"property":291,"content":292},"og:type","article",{"property":294,"content":163},"og:title",{"property":296,"content":164},"og:description",{"property":298,"content":286},"og:url",{"property":300,"content":301},"og:site_name","Impression",{"property":303,"content":304},"article:publisher","https:\u002F\u002Fwww.facebook.com\u002Fimpression",{"property":306,"content":307},"article:published_time","2025-03-31T15:46:11+00:00",{"property":309,"content":310},"og:image","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fopen-graph-guide-to-javascript-seo.png?auto=compress%2Cformat&q=90",{"property":312,"content":313},"og:image:width",1200,{"property":315,"content":316},"og:image:height",630,{"property":318,"content":48},"og:image:type",{"property":128,"content":320},"Chris Rogers, Louisa Holman",{"property":322,"content":323},"twitter:card","summary_large_image",{"property":325,"content":310},"twitter:image",{"property":327,"content":328},"twitter:creator","@impressiontalk",{"property":330,"content":328},"twitter:site",{"@context":332,"@graph":333},"https:\u002F\u002Fschema.org",[334,348,357,361,375,385,451],{"@type":272,"@id":335,"isPartOf":336,"author":337,"headline":102,"datePublished":307,"mainEntityOfPage":339,"wordCount":340,"publisher":341,"image":343,"thumbnailUrl":345,"articleSection":346,"inLanguage":347},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fjavascript-seo-guide\u002F#article",{"@id":286},{"name":4,"@id":338},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002F91a27c7757c1d70b040d71a55b817a26",{"@id":286},5705,{"@id":342},"https:\u002F\u002Fadmin.impressiondigital.com\u002F#organization",{"@id":344},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fjavascript-seo-guide\u002F#primaryimage","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fgabriel-heinzer-g5jpH62pwes-unsplash.jpg?auto=compress%2Cformat&q=90",[17,32],"en-GB",{"@type":349,"@id":286,"url":286,"name":163,"isPartOf":350,"primaryImageOfPage":352,"image":353,"thumbnailUrl":345,"datePublished":307,"description":164,"breadcrumb":354,"inLanguage":356},"WebPage",{"@id":351},"https:\u002F\u002Fwww.impressiondigital.com\u002F#website",{"@id":344},{"@id":344},{"@id":355},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fjavascript-seo-guide\u002F#breadcrumb","en",{"@type":358,"inLanguage":347,"@id":344,"url":345,"contentUrl":345,"width":359,"height":360},"ImageObject",2400,1800,{"@type":362,"@id":355,"itemListElement":363},"BreadcrumbList",[364,367,370,373],{"@type":365,"position":166,"name":134,"item":366},"ListItem","https:\u002F\u002Fwww.impressiondigital.com\u002F",{"@type":365,"position":368,"name":187,"item":369},2,"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002F",{"@type":365,"position":371,"name":17,"item":372},3,"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Fseo\u002F",{"@type":365,"position":374,"name":102},4,{"@type":376,"@id":351,"url":366,"name":301,"description":5,"publisher":377,"inLanguage":347,"potentialAction":379},"WebSite",{"@id":378},"https:\u002F\u002Fwww.impressiondigital.com\u002F#organization",{"@type":380,"target":381,"query-input":384},"SearchAction",{"@type":382,"urlTemplate":383},"EntryPoint","https:\u002F\u002Fwww.impressiondigital.com\u002Fsearch?q={search_term_string}","required name=search_term_string",{"@type":386,"@id":378,"name":301,"url":366,"logo":387,"image":392,"sameAs":393,"@context":397,"email":398,"foundingDate":399,"legalName":400,"vatID":401,"description":402,"telephone":403,"address":404,"location":411,"areaServed":444},"Organization",{"@type":358,"inLanguage":347,"@id":388,"url":389,"contentUrl":389,"width":390,"height":391,"caption":301},"https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Flogo\u002Fimage\u002F","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F06\u002FA5LuTDrq-Impression_Wordmark.png",920,176,"https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FFAVxDeOS-Nottingham.jpg",[394,395,396],"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fimpression-digital-limited","https:\u002F\u002Fwww.facebook.com\u002Fimpression\u002F","https:\u002F\u002Fwww.instagram.com\u002Fimpressiontalk\u002F","https:\u002F\u002Fwww.schema.org\u002F","hello@impressiondigital.com","2012-11-07","Impression Digital Limited","GB186363774","Impression is an award-winning digital marketing agency based in the UK and USA. We offer SEO agency, PPC agency, Digital PR agency and Analytics services to companies of all sizes across the UK, North America, Europe and beyond. Get in touch with us if you think we can work together.","01158 242 212",{"@type":405,"streetAddress":406,"addressLocality":407,"addressRegion":408,"postalCode":409,"addressCountry":410},"PostalAddress","Fothergill House, 16 King Street","Nottingham","Nottinghamshire","NG1 2AS","United Kingdom",[412,421,433],{"@type":413,"name":414,"geo":415,"address":419,"photo":392,"telephone":420},"Place","Impression Digital - Nottingham",{"@type":416,"latitude":417,"longitude":418},"GeoCoordinates","52.95501401025914","-1.1494887460285232",{"@type":405,"streetAddress":406,"addressLocality":407,"addressRegion":408,"postalCode":409,"addressCountry":410},"+44 01158 242 212",{"@type":413,"name":422,"geo":423,"address":426,"photo":431,"telephone":432},"Impression Digital - London",{"@type":416,"latitude":424,"longitude":425},"51.50237208377361","-0.09229841534284115",{"@type":405,"streetAddress":427,"addressLocality":428,"addressRegion":429,"postalCode":430,"addressCountry":410},"201 Borough High St","Southwark","London","SE1 1JA","https:\u002F\u002Fcdn.impression.co.uk\u002F2021\u002F04\u002FwD0pPVWz-London.jpg","+44 020 7112 8148",{"@type":413,"name":434,"geo":435,"address":438},"Impression Digital - New York",{"@type":416,"latitude":436,"longitude":437},"40.726722746949","-74.00527778220652",{"@type":405,"streetAddress":439,"addressLocality":440,"addressRegion":441,"postalCode":442,"addressCountry":443},"160 Varick St","New York","NY","10013","USA",[445,448,450],{"@type":446,"name":447},"Country","Worldwide",{"@type":446,"name":449},"GBR",{"@type":446,"name":443},{"@type":452,"@id":453,"name":4,"image":454,"url":147},"Person","https:\u002F\u002Fwww.impressiondigital.com\u002F#\u002Fschema\u002Fperson\u002F91a27c7757c1d70b040d71a55b817a26",{"@type":358,"inLanguage":347,"@id":455,"url":7,"contentUrl":7,"caption":4},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress&fit=fit&fm=jpg&h=96&q=90&w=9698bb1c6cabd3502e211777eb3dc0a0b3",{"self":457,"collection":467,"about":470,"author":473,"replies":476,"version-history":479,"predecessor-version":483,"wp:featuredmedia":487,"wp:attachment":490,"wp:term":493,"curies":502},[458],{"href":459,"targetHints":460},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26216",{"allow":461},[462,463,464,465,466],"GET","POST","PUT","PATCH","DELETE",[468],{"href":469},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts",[471],{"href":472},"\u002Fwp-json\u002Fwp\u002Fv2\u002Ftypes\u002Fpost",[474],{"embeddable":96,"href":475},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fusers\u002F156",[477],{"embeddable":96,"href":478},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcomments?post=26216",[480],{"count":481,"href":482},32,"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26216\u002Frevisions",[484],{"id":485,"href":486},32741,"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26216\u002Frevisions\u002F32741",[488],{"embeddable":96,"href":489},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fmedia\u002F26253",[491],{"href":492},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fmedia?parent=26216",[494,497,500],{"taxonomy":495,"embeddable":96,"href":496},"category","\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories?post=26216",{"taxonomy":498,"embeddable":96,"href":499},"collections","\u002Fwp-json\u002Fwp\u002Fv2\u002Fcollections?post=26216",{"taxonomy":128,"embeddable":96,"href":501},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcoauthors?post=26216",[503],{"name":504,"href":505,"templated":96},"wp","https:\u002F\u002Fapi.w.org\u002F{rel}",{"id":507,"date":508,"date_gmt":508,"guid":509,"modified":120,"modified_gmt":120,"slug":511,"status":18,"type":101,"link":119,"title":512,"content":513,"excerpt":515,"author":159,"featured_media":516,"comment_status":19,"ping_status":19,"sticky":157,"template":5,"format":161,"meta":517,"categories":520,"collections":521,"coauthors":522,"class_list":523,"acf":525,"head_links":526,"breadcrumbs":527,"url_path":119,"search_description":519,"featured_image_urls":532,"authors":564,"type_nicename":272,"reading_minutes":121,"category":574,"yoast_title":518,"yoast_meta":577,"yoast_json_ld":605,"_links":657},26074,"2023-11-23T15:35:19",{"rendered":510},"\u002F?p=26074","google-core-web-vital-inp",{"rendered":117},{"rendered":514,"protected":157},"\n\u003Cp>In March of 2024 Google will be replacing the First Input Delay (FID) Core Web Vitals metric with Interaction to Next Paint (INP), but how important is this change and will it affect your website? We will explore these questions within our blog.\u003C\u002Fp>\n\n\n\n\u003Cdiv class=\"table-of-contents\">\u003Cul>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-inp\">What is INP?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#what-is-fid\">What is FID?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#the-difference-between-fid-and-inp\">The difference between FID and INP\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#why-has-google-chosen-this-change\">Why has Google chosen this change?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h3\">\u003Ca href=\"#what-does-this-mean-for-me\">What does this mean for me?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#how-can-i-measure-inp\">How can I measure INP?\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#reporting-on-inp-and-other-cwvs\">Reporting on INP and other CWV’s\u003C\u002Fa>\u003C\u002Fli>\u003Cli class=\"heading-h2\">\u003Ca href=\"#whats-a-good-inp-score\">What’s a good INP score?\u003C\u002Fa>\u003C\u002Fli>\u003C\u002Ful>\u003C\u002Fdiv>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-inp\">\u003Cstrong>What is INP?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>INP stands for Interaction to Next Paint. INP measures the time delay between when a visitor has interacted with an element on a page to the website processing the change and potentially displaying a change on the site if we’re talking about a graphical interaction such as an accordion, dropdown or slideshow. INP looks at all of these interactions performed while on a page and reports on the longest interaction seen.\u003C\u002Fp>\n\n\n\n\u003Cp>\u003Cstrong>The three components of INP:\u003C\u002Fstrong>\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Cstrong>Input Delay\u003C\u002Fstrong>\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Any delay before the page can process the interaction, such as background tasks that need to be completed first.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>Processing Time\u003C\u002Fstrong>\n\u003Cul class=\"wp-block-list\">\n\u003Cli>The processing of an event handler(s) for the user interaction\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Cstrong>Presentation Delay\u003C\u002Fstrong>\n\u003Cul class=\"wp-block-list\">\n\u003Cli>Any rendering or painting undertaken to show interaction change. e.g an accordion opening or closing.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1353\" height=\"368\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fcomponents-of-inp.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26108\"\u002F>\u003Cfigcaption class=\"wp-element-caption\">\u003Cem>Visualisation of the 3 components that make up INP from \u003C\u002Fem>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fweb.dev\u002Finp\u002F\">\u003Cem>web.dev\u003C\u002Fem>\u003C\u002Fa>\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>\u003Cstrong>\u003Cem>Additional Insight\u003C\u002Fem>\u003C\u002Fstrong>: If you’re wondering why the term ‘interaction’ is used for what you’re likely imagining as a click it’s because this not only includes mouse clicks but trackpad interactions, touchscreen taps or even a key press such as someone tabbing to what they want to ‘interact’ with and then pressing Enter or Return.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-is-fid\">\u003Cstrong>What is FID?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>FID stands for First Input Delay. FID measures the time delay between the first element a visitor has interacted with and the website processing the change.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"the-difference-between-fid-and-inp\">The difference between FID and INP\u003C\u002Fh3>\n\n\n\n\u003Cp>First Input Delay (FID) as the name implies only measures the first interaction and its delay between interaction and processing the change, whilst INP measures delays from all interactions performed on a single page and will report on the longest interaction delay seen, meaning that an INP score is not processed until the user leaves the page, either via navigating to another page, minimising their browser window, or navigating to another tab on their browser.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"why-has-google-chosen-this-change\">Why has Google chosen this change?\u003C\u002Fh3>\n\n\n\n\u003Cp>In most \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fblog\u002Fkey-google-algorithm-changes\u002F\">Google algorithm update changes\u003C\u002Fa>, users tend to place themselves within Google’s shoes and try to imagine why they would be undertaking a specific action. In this scenario, we have FID that only measures the first delay between interaction and it being processed by the website. This is followed by INP, which measures all of these delays and it’s key to remember that not every interaction on the website will provide the same score.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>A visual accordion feature that doesn’t feature anything fancy may process the interaction very quickly, whilst something like a slideshow interaction with its bulky JS and\u002For CSS may take considerably longer to process the interaction. Google will need a clear image of how the page performs, so of course it will collect the delay of all interactions performed on that page to get a more accurate representation of its performance.\u003C\u002Fp>\n\n\n\n\u003Ch3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"what-does-this-mean-for-me\">\u003Cstrong>What does this mean for me?\u003C\u002Fstrong>\u003C\u002Fh3>\n\n\n\n\u003Cp>This means that you are only as strong as your weakest performing interaction, which can lead to people only addressing the one problem interaction. Instead, we would suggest reviewing your worst INP-scored pages first and assessing improvements to INP that can be made across all interactions on the page, not just the longest interaction the INP reported on.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>We recommend not just optimising the one problem area, but rather optimise where you see room for improvement. This is because we shouldn’t be optimising for search engines but for the users. It’s also worth noting that multiple interactions may fall under poor, not just the one INP reported on.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"how-can-i-measure-inp\">\u003Cstrong>How can I measure INP?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>There are multiple ways to test INP, but here at Impression, we recommend using the \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fgithub.com\u002FGoogleChrome\u002Fweb-vitals\">Web-Vitals library\u003C\u002Fa> found on GitHub. This allows these metrics to be sent to your \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fanalytics\u002Fgoogle-analytics-consultancy\u002F\">Google Analytics 4\u003C\u002Fa> account.&nbsp;\u003C\u002Fp>\n\n\n\n\u003Cp>We have utilised this method to create a universal customisable version that is added via \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fanalytics\u002Fgoogle-tag-manager\u002F\">Google Tag Manager\u003C\u002Fa>, allowing for the information collected to be sent to your GA4 account or your preferred data collection tool (as long as it’s GTM compatible).\u003C\u002Fp>\n\n\n\n\u003Cp>We have gone with the automatic collection of data to ensure we capture all interactions from all visitors to a website on all pages where GTM is present.\u003C\u002Fp>\n\n\n\n\u003Cp>This ensures we have a full dataset of metrics collected in GA4, allowing us to identify where INP scores are larger on a specific page or page template. This also allows us to see which specific element is causing the largest INP score change on that page. We can provide detailed insights for clients on where they need to improve their INP metric.\u003C\u002Fp>\n\n\n\n\u003Cp>The web-vitals method isn’t just restricted to INP alone. It can report on each core web vital metric (CLS, FID and LCP) along with other metrics such as TTFB and FCP allowing the same level of review attention for other metrics.\u003C\u002Fp>\n\n\n\n\u003Cp>Below is our Custom HTML tag for use in Google Tag Manager that is set to fire on All Pages:\u003C\u002Fp>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>&lt;script&gt;\n  (function () {\n    \n    function sendToGTM(data) {\n      var debug = \"\";\n      switch (data.name) {\n        \u002F\u002FIn the case of CLS set debug location to the following\n        case 'CLS':\n          debug = data.attribution.largestShiftTarget;\n          break;\n        \u002F\u002FIn the case of FID set debug location to the following\n        case 'FID':\n          debug = data.attribution.eventTarget;\n          break;\n        \u002F\u002FIn the case of LCP set debug location to the following\n        case 'LCP':\n          debug = data.attribution.element;\n          break;\n        \u002F\u002FIn the case of INP set debug location to the following\n        case 'INP':\n          debug = {\"attributionEntryType\": data.attribution.entryType, \"attributionName\": data.attribution.name};\n        break;\n      }\n      dataLayer.push({\n        \"event\": \"coreWebVitals\", \n        \"coreWebVitalsEvent\": data.name,\n        \"webVitalsMeasurement\": {\n          \"name\": data.name, \u002F\u002FINP, FID, CLS, LCP, FCP or TTFB\n          \"id\": data.id, \u002F\u002FA unique ID for that metric's instance\n          \"value\": data.value, \u002F\u002FMetric value i.e 200ms\n          \"rating\": data.rating, \u002F\u002FGood, Needs Improvement or Poor\n          \"debug\": debug, \u002F\u002FDebug data\n          \"debug_all\": data.attribution \u002F\u002FFull debug data\n        }\n      });\n    }\n    \u002F\u002FEnsure web-vitals script is present and run sendToGTM function with dataLayer push of data\n    if(typeof webVitals == \"undefined\") { \u002F\u002FIf the web-vitals script wasnt found\n      var script = document.createElement('script'); \u002F\u002Fweb-vitals script creation\n      script.src = 'https:\u002F\u002Funpkg.com\u002Fweb-vitals@3\u002Fdist\u002Fweb-vitals.attribution.iife.js'; \u002F\u002Fweb-vitals script src attribute\n      script.onload = function () {\n        webVitals.onCLS(sendToGTM); \n        webVitals.onFCP(sendToGTM); \n        webVitals.onFID(sendToGTM); \n        webVitals.onINP(sendToGTM); \n        webVitals.onLCP(sendToGTM); \n        webVitals.onTTFB(sendToGTM); \n      };\n      document.head.appendChild(script);\n    } else { \u002F\u002FIf the web-vitals script is already present\n      webVitals.onCLS(sendToGTM); \n      webVitals.onFCP(sendToGTM); \n      webVitals.onFID(sendToGTM); \n      webVitals.onINP(sendToGTM); \n      webVitals.onLCP(sendToGTM); \n      webVitals.onTTFB(sendToGTM); \n    }\n  })();\n&lt;\u002Fscript&gt;\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\n\u003Cp>We then need to create the relevant variables for the values we want to send, as we’re pushing this information to the dataLayer we grab it with a dataLayer variable:\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"386\" height=\"267\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fdatalayer-variable.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26099\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>In the example above, we grabbed the top layer ‘webVitalsMeasurement’ and its rating value within. The same logic applies to the others too, so for ‘debug’ we would grab ‘webVitalsMeasurement.debug’.\u003C\u002Fp>\n\n\n\n\u003Cp>Once you have the relevant values you want to measure, we need to send this information to a data collection platform. We are going to send these to GA4 but you can send them to another platform as long as it’s GTM compatible.\u003C\u002Fp>\n\n\n\n\u003Cp>The event name and event parameters you can customise accordingly, but for the parameter values we need to grab our newly created variables.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"714\" height=\"527\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Finp-tag-configuration.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26102\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>We then need to set up our trigger, which should be a custom event and looks for event line from within our Custom HTML tag:\u003C\u002Fp>\n\n\n\n\u003Cpre class=\"wp-block-code\">\u003Ccode>\"event\": \"coreWebVitals\",\u003C\u002Fcode>\u003C\u002Fpre>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"291\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fcwv-trigger-configuration.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26106\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>Should your event line on your Custom HTML code be defined as something different, you can update accordingly, but if you have copy and pasted our example, it will be coreWebVitals.\u003C\u002Fp>\n\n\n\n\u003Cp>You can test these on Preview Mode of Google Tag Manager, the event name we just talked about will appear on the left when the relevant metric has been measured:\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"237\" height=\"120\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fcwv-tag-preview.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26103\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>If you click on one of these it will let you see which CWV metric has been measured in that specific event you clicked on. If you have set up the GA4 tag, you can click on it which should appear in the tags fired and allow you to see the values recorded:\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"138\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fanalytics-ga4-inp-events.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26104\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>(Ensure the display variables option at the top right of the window is set to values to see values instead of variable names)\u003C\u002Fp>\n\n\n\n\u003Cp>If you haven’t set up the GA4 tag yet, you can see the values by opening up the API call above the Output box that contains tag’s fired and not fired:\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"391\" height=\"272\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fevent-api-call-inp-cwv.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26107\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>A point to consider with a Google Analytics 4 setup is that you will need to add the name, value, rating values as custom definitions within GA4 Admin’s section as they are custom parameters.\u003C\u002Fp>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"reporting-on-inp-and-other-cwvs\">\u003Cstrong>Reporting on INP and other CWV’s\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>If you are collecting this information within your Google Analytics account you’re likely wondering how to view this information in an easy-to-understand manner. The easiest answer is Google Data Studio. We have created a report that contains 3 key elements for each CWV metric, including the upcoming INP metric.\u003C\u002Fp>\n\n\n\n\u003Cp>\u003Cstrong>Table of pages\u003C\u002Fstrong>: This allows us to see individual pages, which are performing well or require improvement and even allows us to organise by value. We collected the values recorded and stored in Google Analytics and used Google Data Studio to calculate an average which we then assigned a colour code depending on its new average value.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"880\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Finp-table-of-pages.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26100\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>\u003Cstrong>Stacked Bar Chart\u003C\u002Fstrong>: We have divided our stacked bar chart by device, which gives us a nice overview as to how our website is performing overall for INP.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"599\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Finp-stacked-bar-chart.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26105\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>\u003Cstrong>Line Graph\u003C\u002Fstrong>: Lastly we have a line graph that allows us to look at the INP metric and its rating over time to determine if there are any specific timeframes where INP was better or worse. This is very useful when performing site-wide improvements and seeing how those improvements have affected ratings since then.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"1103\" height=\"468\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Finp-line-graph.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26109\"\u002F>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>Google Data Studio allows you to create your own reports like the above examples, don’t feel that you need to stick to the way we have chosen to measure these CWV metrics, feel free to take these learnings and adapt to your own reports that can be as detailed or simple as you require. We have provided a basic \u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Flookerstudio.google.com\u002Freporting\u002F05b99d80-a5b4-4df9-9a66-5a47f3b8ca07\">Google Data Studio Web-Vitals template\u003C\u002Fa> here.\u003C\u002Fp>\n\n\n\n\u003Cp>Other methods of measuring INP include:\u003C\u002Fp>\n\n\n\n\u003Cul class=\"wp-block-list\">\n\u003Cli>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fchrome.google.com\u002Fwebstore\u002Fdetail\u002Fweb-vitals\u002Fahfhijdlegdabablpippeagghigmibma\">Web Vitals Chrome Extension\u003C\u002Fa> &#8211; To perform a live test of your page view’s CWV metrics.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fsearch.google.com\u002Fsearch-console\u002Fabout\">Google Search Console\u003C\u002Fa> &#8211; To review your own website’s CWV metrics over time.\u003C\u002Fli>\n\n\n\n\u003Cli>\u003Ca rel=\"noreferrer noopener\" href=\"https:\u002F\u002Fpagespeed.web.dev\u002F\">Google PageSpeed Insights\u003C\u002Fa> &#8211; To review CWV’s for a URL based on user and lab data.\u003C\u002Fli>\n\n\n\n\u003Cli>Lighthouse Timespan test from Chrome DevTools &#8211; With this tool you can run your own test on specific elements on your site, want to test the INP of a singular interaction? Run the test, perform the interaction and stop the test for reading on that one interaction.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\n\n\u003Ch2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"whats-a-good-inp-score\">\u003Cstrong>What’s a good INP score?\u003C\u002Fstrong>\u003C\u002Fh2>\n\n\n\n\u003Cp>A good INP score is under 200ms, whilst a score between 200ms and 500ms is seen as in need of improvement and more than 500ms as poor.\u003C\u002Fp>\n\n\n\u003Cdiv class=\"wp-block-image\">\n\u003Cfigure class=\"aligncenter size-full\">\u003Cimg loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"192\" src=\"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Finp-scoring.png?auto=compress%2Cformat&q=90\" alt=\"\" class=\"wp-image-26101\"\u002F>\u003Cfigcaption class=\"wp-element-caption\">\u003Cem>Visualisation of scoring from web.dev\u003C\u002Fem>\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003C\u002Fdiv>\n\n\n\u003Cp>It’s vital (get it, core web \u003Cem>vitals\u003C\u002Fem>?) to ensure that your pages are registering scores under 500ms at the minimum and to aim for under 200ms to ensure you’re meeting a good CWV score for your INP metric when it is introduced in March 2024. Now is the time to prepare and ensure you’re ready and potentially outperforming your competitors.\u003C\u002Fp>\n\n\n\n\u003Chr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\u002F>\n\n\n\n\u003Cp>If you’re looking for help with reviewing and assessing your CWV’s or elements where your INP needs improvement you can utilise our \u003Ca rel=\"noreferrer noopener\" href=\"\u002Fseo\u002Ftechnical-seo\u002F\">technical SEO service\u003C\u002Fa> to achieve this.\u003C\u002Fp>\n",{"rendered":118,"protected":157},26117,{"_yoast_wpseo_focuskw":5,"_yoast_wpseo_title":518,"_yoast_wpseo_metadesc":519,"inline_featured_image":157,"footnotes":5},"Understanding Google’s Core Web Vitals metric: INP | Impression","INP stands for Interaction to Next Paint. INP measures the time delay between when a visitor has interacted with an element on a page. Read more.",[166,167],[],[170],[524,101,174,175,176,177,178,179,180],"post-26074",[],[],[528,529,530,531],{"path":133,"name":134},{"path":186,"name":187},{"path":276,"name":32},{"path":142,"name":117},{"thumbnail":533,"medium":534,"medium_large":536,"large":538,"1536x1536":540,"2048x2048":542,"post-thumbnail":544,"12_col":546,"default_landscape":548,"default_portrait":550,"6_col_and_margin_short":552,"11_col_and_margin":554,"9_col_rectangle":556,"11_col":558,"staff_image_696_600":560,"rectangular_thumbnail":562},{"url":122,"width":192,"height":192},{"url":535,"width":58,"height":58},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=113&q=90&w=200",{"url":537,"width":61,"height":22},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=432&q=90&w=768",{"url":539,"width":199,"height":200},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1000&q=90&w=1892",{"url":541,"width":67,"height":67},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=864&q=90&w=1536",{"url":543,"width":70,"height":70},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=scale&h=1152&q=90&w=2048",{"url":545,"width":73,"height":74},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1180&q=90&rect=272%2C0%2C2127%2C1350&w=1860",{"url":547,"width":76,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2880",{"url":549,"width":79,"height":53},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=600&q=90&w=800",{"url":551,"width":53,"height":79},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=800&q=90&w=600",{"url":553,"width":73,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=1860",{"url":555,"width":83,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=3080",{"url":557,"width":85,"height":86},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=1400&q=90&w=2150",{"url":559,"width":88,"height":77},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=870&q=90&w=2640",{"url":561,"width":52,"height":53},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=600&q=90&w=696",{"url":563,"width":91,"height":92},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&fit=crop&h=300&q=90&rect=0%2C270%2C2400%2C960&w=750",[565],{"id":159,"path":227,"display_name":4,"job_title":9,"description":5,"avatar_url":110,"acf":566},{"job_title":9,"full_bio":10,"specialist_service_links":567,"photo":572},[568,570],{"page":569,"link_text":17},{"ID":14,"post_author":15,"post_date":16,"post_date_gmt":16,"post_content":5,"post_title":17,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":20,"to_ping":5,"pinged":5,"post_modified":21,"post_modified_gmt":21,"post_content_filtered":5,"post_parent":22,"guid":23,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":27},{"page":571,"link_text":32},{"ID":30,"post_author":15,"post_date":31,"post_date_gmt":31,"post_content":5,"post_title":32,"post_excerpt":5,"post_status":18,"comment_status":19,"ping_status":19,"post_password":5,"post_name":33,"to_ping":5,"pinged":5,"post_modified":34,"post_modified_gmt":34,"post_content_filtered":5,"post_parent":14,"guid":35,"menu_order":22,"post_type":24,"post_mime_type":5,"comment_count":25,"filter":26,"url_path":36},{"ID":38,"id":38,"title":39,"filename":40,"filesize":41,"url":42,"link":43,"alt":5,"author":44,"description":5,"caption":5,"name":45,"status":46,"uploaded_to":22,"date":47,"modified":47,"menu_order":22,"mime_type":48,"type":49,"subtype":50,"icon":51,"width":52,"height":53,"sizes":573},{"thumbnail":55,"thumbnail-width":56,"thumbnail-height":56,"medium":57,"medium-width":58,"medium-height":59,"medium_large":60,"medium_large-width":61,"medium_large-height":62,"large":63,"large-width":64,"large-height":65,"1536x1536":66,"1536x1536-width":67,"1536x1536-height":68,"2048x2048":69,"2048x2048-width":70,"2048x2048-height":71,"post-thumbnail":72,"post-thumbnail-width":73,"post-thumbnail-height":74,"12_col":75,"12_col-width":76,"12_col-height":77,"default_landscape":78,"default_landscape-width":79,"default_landscape-height":53,"default_portrait":80,"default_portrait-width":53,"default_portrait-height":79,"6_col_and_margin_short":81,"6_col_and_margin_short-width":73,"6_col_and_margin_short-height":77,"11_col_and_margin":82,"11_col_and_margin-width":83,"11_col_and_margin-height":77,"9_col_rectangle":84,"9_col_rectangle-width":85,"9_col_rectangle-height":86,"11_col":87,"11_col-width":88,"11_col-height":77,"staff_image_696_600":89,"staff_image_696_600-width":52,"staff_image_696_600-height":53,"rectangular_thumbnail":90,"rectangular_thumbnail-width":91,"rectangular_thumbnail-height":92},[575,576],{"id":166,"name":17,"path":115},{"id":167,"name":32,"path":276},[578,579,580,581,583,584,585,586,587,588,589,590,592,595,597,598,599,600,601,602,603,604],{"property":279,"content":518},{"property":281,"content":519},{"name":283,"content":284},{"property":146,"content":582},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-core-web-vital-inp\u002F",{"name":288,"content":289},{"property":291,"content":292},{"property":294,"content":518},{"property":296,"content":519},{"property":298,"content":582},{"property":300,"content":301},{"property":303,"content":304},{"property":306,"content":591},"2023-11-23T15:35:19+00:00",{"property":593,"content":594},"article:modified_time","2026-08-25T09:31:38+00:00",{"property":309,"content":596},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Fopen-graph-google-cwv-inp.png?auto=compress%2Cformat&q=90",{"property":312,"content":313},{"property":315,"content":316},{"property":318,"content":48},{"property":128,"content":4},{"property":322,"content":323},{"property":325,"content":596},{"property":327,"content":328},{"property":330,"content":328},{"@context":332,"@graph":606},[607,618,624,626,633,637,655],{"@type":272,"@id":608,"isPartOf":609,"author":610,"headline":117,"datePublished":591,"dateModified":594,"mainEntityOfPage":611,"wordCount":612,"publisher":613,"image":614,"thumbnailUrl":616,"articleSection":617,"inLanguage":347},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-core-web-vital-inp\u002F#article",{"@id":582},{"name":4,"@id":338},{"@id":582},1724,{"@id":342},{"@id":615},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-core-web-vital-inp\u002F#primaryimage","https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F11\u002Femile-perron-xrVDYZRGdw4-unsplash.jpg?auto=compress%2Cformat&q=90",[17,32],{"@type":349,"@id":582,"url":582,"name":518,"isPartOf":619,"primaryImageOfPage":620,"image":621,"thumbnailUrl":616,"datePublished":591,"dateModified":594,"description":519,"breadcrumb":622,"inLanguage":356},{"@id":351},{"@id":615},{"@id":615},{"@id":623},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fgoogle-core-web-vital-inp\u002F#breadcrumb",{"@type":358,"inLanguage":347,"@id":615,"url":616,"contentUrl":616,"width":359,"height":625},1350,{"@type":362,"@id":623,"itemListElement":627},[628,629,630,632],{"@type":365,"position":166,"name":134,"item":366},{"@type":365,"position":368,"name":187,"item":369},{"@type":365,"position":371,"name":32,"item":631},"https:\u002F\u002Fwww.impressiondigital.com\u002Fblog\u002Fcategory\u002Ftechnical-seo\u002F",{"@type":365,"position":374,"name":117},{"@type":376,"@id":351,"url":366,"name":301,"description":5,"publisher":634,"inLanguage":347,"potentialAction":635},{"@id":378},{"@type":380,"target":636,"query-input":384},{"@type":382,"urlTemplate":383},{"@type":386,"@id":378,"name":301,"url":366,"logo":638,"image":392,"sameAs":639,"@context":397,"email":398,"foundingDate":399,"legalName":400,"vatID":401,"description":402,"telephone":403,"address":640,"location":641,"areaServed":651},{"@type":358,"inLanguage":347,"@id":388,"url":389,"contentUrl":389,"width":390,"height":391,"caption":301},[394,395,396],{"@type":405,"streetAddress":406,"addressLocality":407,"addressRegion":408,"postalCode":409,"addressCountry":410},[642,645,648],{"@type":413,"name":414,"geo":643,"address":644,"photo":392,"telephone":420},{"@type":416,"latitude":417,"longitude":418},{"@type":405,"streetAddress":406,"addressLocality":407,"addressRegion":408,"postalCode":409,"addressCountry":410},{"@type":413,"name":422,"geo":646,"address":647,"photo":431,"telephone":432},{"@type":416,"latitude":424,"longitude":425},{"@type":405,"streetAddress":427,"addressLocality":428,"addressRegion":429,"postalCode":430,"addressCountry":410},{"@type":413,"name":434,"geo":649,"address":650},{"@type":416,"latitude":436,"longitude":437},{"@type":405,"streetAddress":439,"addressLocality":440,"addressRegion":441,"postalCode":442,"addressCountry":443},[652,653,654],{"@type":446,"name":447},{"@type":446,"name":449},{"@type":446,"name":443},{"@type":452,"@id":453,"name":4,"image":656,"url":147},{"@type":358,"inLanguage":347,"@id":455,"url":7,"contentUrl":7,"caption":4},{"self":658,"collection":663,"about":665,"author":667,"replies":669,"version-history":672,"predecessor-version":675,"wp:featuredmedia":679,"wp:attachment":682,"wp:term":685,"curies":692},[659],{"href":660,"targetHints":661},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26074",{"allow":662},[462,463,464,465,466],[664],{"href":469},[666],{"href":472},[668],{"embeddable":96,"href":475},[670],{"embeddable":96,"href":671},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcomments?post=26074",[673],{"count":106,"href":674},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26074\u002Frevisions",[676],{"id":677,"href":678},39753,"\u002Fwp-json\u002Fwp\u002Fv2\u002Fposts\u002F26074\u002Frevisions\u002F39753",[680],{"embeddable":96,"href":681},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fmedia\u002F26117",[683],{"href":684},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fmedia?parent=26074",[686,688,690],{"taxonomy":495,"embeddable":96,"href":687},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcategories?post=26074",{"taxonomy":498,"embeddable":96,"href":689},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcollections?post=26074",{"taxonomy":128,"embeddable":96,"href":691},"\u002Fwp-json\u002Fwp\u002Fv2\u002Fcoauthors?post=26074",[693],{"name":504,"href":505,"templated":96},{"title":695,"script":696,"meta":709,"link":722},"Chis Rogers | Senior Technical SEO Specialist | Impression",[697],{"type":698,"key":699,"innerHTML":700},"application\u002Fld+json","yoast-json-ld",{"@context":332,"@graph":701},[702,706],{"@id":453,"@type":452,"name":4,"url":-1,"sameAs":-1,"image":703,"description":-1,"jobTitle":9,"knowsAbout":704,"hasCredential":5,"gender":5,"worksFor":705},{"@type":358,"inLanguage":347,"@id":455,"url":7,"contentUrl":7,"caption":4},"SEO, Technical SEO",{"@id":378},{"@type":386,"@id":378,"name":301,"url":366,"logo":707,"image":392,"sameAs":708,"@context":397,"email":398,"foundingDate":399,"legalName":400,"vatID":401,"description":402,"telephone":403},{"@type":358,"inLanguage":347,"@id":388,"url":389,"contentUrl":389,"width":390,"height":391,"caption":301},[394,395,396],[710,711,712,714,715,717,718,720,721],{"name":283,"content":284},{"property":288,"content":347},{"property":291,"content":713},"profile",{"property":294,"content":695},{"property":298,"content":716},"https:\u002F\u002Fadmin.impressiondigital.com\u002Fabout\u002Four-team\u002Fchris-rogers\u002F",{"property":300,"content":301},{"property":309,"content":719},"https:\u002F\u002Fimages.impression.co.uk\u002F2023\u002F07\u002FChris-R.png?auto=compress&fit=fit&fm=jpg&h=500&q=90&w=500",{"name":322,"content":323},{"name":330,"content":328},[]]