{"resource":{"author":{"id":"3eh0kijZwMrHum8TkMqX","name":"Devtools Tech","username":"devtoolstech"},"content":{"link":"","difficulty":4,"domain":2,"type":1,"isInternal":true,"body":"![Illustration](https://ik.imagekit.io/devtoolstech/blog/improving-seo/Screenshot%202025-04-24%20at%2011.14.53%E2%80%AFPM_cwJCWDmLD.png?updatedAt=1745516843519)\r\n\r\n#BuildInPublic\r\n\r\nSharing a small SEO improvement I made on [devtools.tech](https://devtools.tech/?utm_source=dt-platform&utm_medium=blog&utm_term=seo-boost) — one that could have a big impact.\r\n\r\nSEO is critical for most businesses, and it often comes up in Frontend System Design interviews. Search engine bots crawl webpages by following actual links (`<a>` tags) i.e. a crawler lands on a webpage then starts crawling all the links present on that webpage and keeps on forming a chain. The more meaningful links you expose, the better your chances of ranking and driving organic traffic.\r\n\r\n**Issue:** While auditing one of our top pages ([devtools.tech/questions/all](https://devtools.tech/questions/all?utm_source=dt-platform&utm_medium=blog&utm_term=seo-boost)), I noticed that pagination was handled via client-side JavaScript (onClick handler + manual URL updates). The issue? Bots don’t follow JS-triggered events, so only the first page was getting crawled and indexed.\r\n\r\n**The fix was simple:** switch from buttons to proper anchor tags with URLs pointing to the next/previous pages. Same experience for users, but way better for crawlers.\r\n\r\nA small, low-hanging fruit — but often, it's the simplest changes that have the biggest impact.\r\n\r\nSee the live changes: [devtools.tech/questions/all](https://devtools.tech/questions/all?utm_source=dt-platform&utm_medium=blog&utm_term=seo-boost)\r\n\r\nI’ll share results soon — stay tuned!","languages":[],"editorConfig":"undefined"},"stats":{"views":8166,"used":0,"likes":0},"description":"","published":true,"isActive":true,"tags":["javascript","blog","ui","ux","devtools tech","frontend","coding","seo","improving seo","google","pagination","client-side","javascript coding","interview questions","frontend system design"],"slug":"how-a-small-pagination-fix-boosted-seo---rid---eIjvS9gwWKW18RV86knB","isPremium":false,"categories":[],"requires":[],"_id":"680a7a04ad3ccc49f04e55ba","title":"How a Small Pagination Fix Boosted SEO?","resourceId":"eIjvS9gwWKW18RV86knB","createdAt":1745517060034,"modifiedAt":1745519355424},"currentUser":null,"isOwner":false,"recommendations":{"questions":[{"_id":"5ef44a213cce8c36cd292531","content":{"difficulty":1,"languages":"javascript"},"tags":["javascript","frontend","node.js","arrow functions","javascript engines","frontend fundamentals","prototype chaining","advanced js"],"slug":"what-would-be-the-output-of-the-following-code-snippet-prototype-method-invocation---qid---ZTfiiKiAItdaRMFOcmLQ","title":"What would be the output of the following code snippet? (Prototype method invocation)","questionId":"ZTfiiKiAItdaRMFOcmLQ"},{"_id":"627631891195627fe9f205e1","content":{"languages":["html","react"],"difficulty":1},"tags":["html","styling","css","codepen","frontend coding challenge","beginner","frontend fundamentals.ui","ux","codedamn","frontend masters","egghead","image carousel","coding","programming","image gallery"],"slug":"how-to-create-an-overlapping-image-gallery-or-frontend-coding-challenge-or-html-or-css-or-beginner---qid---iVn7EeHHdzFiy3qfikP6","title":"How to create an overlapping image gallery? | Frontend Coding Challenge | HTML | CSS | Beginner","questionId":"iVn7EeHHdzFiy3qfikP6"},{"_id":"697a002c132ce4e954c67f28","content":{"languages":["react"],"difficulty":2},"tags":["javascript","ui","ux","devtools tech","frontend interview question","hackerrank frontend interview question"],"slug":"spreadsheet-grid---qid---nBrwdTgAJo99lGIYefmC","title":"Spreadsheet Grid","questionId":"nBrwdTgAJo99lGIYefmC"},{"_id":"63b5333e22480f26b3cc475b","content":{"languages":["javascript","typescript"],"difficulty":2},"tags":["","javascript","frontend","array","coding","ui","ux","polyfills","problem solving","array coding questions","frontend problem solving","js","advanced js","codedamn","egghead","leetcode","alogrithms","data structures","javascript framework","devtools tech","frontend interview preparation","interview questions","interview resources","react","blogs","tutorials","youtube","HTML","CSS","programming content","api design","array fill","array reverse"],"slug":"how-to-implement-array-prototype-reverse-javascript-interview-question-or-problem-solving-or-javascript-polyfills---qid---3vTfCSFhmic8gogVDCd9","title":"How to implement Array.prototype.reverse? JavaScript Interview Question | Problem Solving | JavaScript Polyfills","questionId":"3vTfCSFhmic8gogVDCd9"},{"_id":"6259736b1195627fe9f0be26","content":{"languages":["javascript","typescript"],"difficulty":2},"tags":["javascript","frontend","node.js","event emitter","facebook","advanced frontend","interview question","devtools tech","frontend masters","egghead"],"slug":"how-to-implement-event-emitter-in-javascript-or-facebook-interview-question---qid---J4fNqXImp6QIdGMc7SPF","title":"How to implement Event Emitter in JavaScript? | Facebook Interview Question","questionId":"J4fNqXImp6QIdGMc7SPF"}],"resources":[{"_id":"662b53824079503047f86f7f","content":{"difficulty":1,"domain":1,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","frontend","ui","ux","devtools tech","coding","debounce","flipkart","react","tutorial","interviews","visa"],"slug":"what-is-debouncing-explain-with-examples---rid---bn9IQcem9rnLw7rT6gqk","title":"What is Debouncing? Explain with examples","resourceId":"bn9IQcem9rnLw7rT6gqk"},{"_id":"5f202c81cbec5f7ffc0c2fba","content":{"difficulty":1,"domain":2,"type":1},"tags":["Web Development"],"slug":"script-tag-—-defer-and-async---rid---NCXH57kUsnTM2Ev2tzEU","title":"Script Tag — Defer and Async","resourceId":"NCXH57kUsnTM2Ev2tzEU"},{"_id":"6a12e1684b3e6d922c549f09","content":{"difficulty":1,"domain":1,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","image","optimisations","ui","ux","devtools tech","tutorial","article","blog","image optimisations"],"slug":"foundations-why-image-optimisation-matters-and-how-browsers-load-images---rid---CLrYWAoK0LTA67R9oV9H","title":"Foundations: Why Image Optimisation Matters & How Browsers Load Images","resourceId":"CLrYWAoK0LTA67R9oV9H"},{"_id":"6731bf5cd34d7f4b8cccbdec","content":{"difficulty":4,"domain":1,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","frontend","coding","ui","ux","developer tools","youtube videos"],"slug":"how-to-become-a-better-software-engineer---rid---4lmB97aZrn9z5q00FKZz","title":"How to become a better Software Engineer?","resourceId":"4lmB97aZrn9z5q00FKZz"},{"_id":"652d6380d5ab2876a4ca20df","content":{"difficulty":4,"domain":2,"type":1,"isInternal":false,"languages":["undefined"]},"tags":["javascript","frontend","ui","ux","factset","interview experience","devtools tech","blog","medium"],"slug":"factset-software-engineer-ii-interview-experience---rid---ShYACNVRYsAX43wOki4A","title":"FactSet Software Engineer-II Interview Experience","resourceId":"ShYACNVRYsAX43wOki4A"}]}}