{"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":8171,"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":"68bd526ee72b278539f28a9b","content":{"languages":["javascript","typescript"],"difficulty":3},"tags":["javascript","promises","ui","ux","devtools tech","hive.ai"],"slug":"promise-scheduler---qid---Rf3dWn1ULiz3QXytSrxT","title":"Promise Scheduler","questionId":"Rf3dWn1ULiz3QXytSrxT"},{"_id":"68edf425e901f595bb23de45","content":{"languages":["javascript","typescript"],"difficulty":1},"tags":["javascript","type","coding","programming question","array polyfills","problem solving","dsa","loops","array"],"slug":"how-to-implement-custom-array-prototype-foreach-method---qid---OgpckMzL8Cy5qlHhV6Jc","title":"How to implement custom Array.prototype.forEach method?","questionId":"OgpckMzL8Cy5qlHhV6Jc"},{"_id":"64f1c0ffd5ab2876a4c3d891","content":{"languages":["react","html"],"difficulty":2},"tags":["javascript","react","ui","room reservation","blog","tutorial","questions","frontend coding challenge","devtools tech","wework","industrious","co-working space","meeting room challenge"],"slug":"build-a-room-reservation-system-or-frontend-coding-challenge---qid---elXJ1Jch0dc39e87W0PK","title":"Build a Room Reservation System | Frontend Coding Challenge ","questionId":"elXJ1Jch0dc39e87W0PK"},{"_id":"6373bc7b9cbdb764d46a0ec0","content":{"languages":["javascript","typescript"],"difficulty":1},"tags":["","javascript","arrays","javascript polyfills","interview question","frontend","coding","devtools tech","programming","codedamn","frontend masters","egghead","razorpay","hotstar","tata1mg","swiggy","zomato","array","custom unshift","array push"],"slug":"how-to-implement-array-prototype-push-javascript-interview-question-or-problem-solving-or-javascript-polyfills---qid---W3kxb3R36UKmCjPhoVAd","title":"How to implement Array.prototype.push? JavaScript Interview Question | Problem Solving | JavaScript Polyfills","questionId":"W3kxb3R36UKmCjPhoVAd"},{"_id":"635172709efd8c366a2e80f4","content":{"languages":["javascript","typescript"],"difficulty":1},"tags":["","javascript","arrays","javascript polyfills","interview question","frontend","coding","devtools tech","programming","codedamn","frontend masters","egghead","razorpay","hotstar","tata1mg","swiggy","zomato","array","array findLastIndex"],"slug":"how-to-implement-array-prototype-findlastindex-javascript-interview-question-or-problem-solving-or-javascript-polyfills---qid---irZ7BX4HZ8iVyTJ7YDrv","title":"How to implement Array.prototype.findLastIndex? JavaScript Interview Question | Problem Solving | JavaScript Polyfills","questionId":"irZ7BX4HZ8iVyTJ7YDrv"}],"resources":[{"_id":"5f1dd74dcbec5f7ffc0c2fac","content":{"difficulty":2,"domain":3,"type":1,"isInternal":true},"tags":["node.js","express","rest","api","framework","backend","tools","devtools","framework development","build express"],"slug":"build-your-own-expressjs-or-part-3---rid---6mHfnu0fQoPw4RBpexRV","title":"Build your own expressjs | Part 3","resourceId":"6mHfnu0fQoPw4RBpexRV"},{"_id":"5f6994e06d3cda64e470c3f5","content":{"difficulty":2,"domain":2,"type":2,"isInternal":false},"tags":["javascript","reduce","array","polyfill","advanced javascript","interview question"],"slug":"implementation-of-reduce-polyfill-or-devtools-tech---rid---RPwJsAj15EZKfZsMT4V7","title":"Implementation of Reduce Polyfill | Devtools Tech","resourceId":"RPwJsAj15EZKfZsMT4V7"},{"_id":"69662a4b132ce4e954b16208","content":{"difficulty":4,"domain":2,"type":1,"isInternal":true,"languages":[]},"tags":["javascript","ui","ux","devtools tech","coding"],"slug":"walmart-global-tech-frontend-interview-experience-sde-3---rid---p7M1epgvyBQeNoz32zr9","title":"Walmart Global Tech Frontend Interview Experience (SDE 3)","resourceId":"p7M1epgvyBQeNoz32zr9"},{"_id":"620406cce12bce537863eaf0","content":{"difficulty":4,"domain":1,"type":1,"isInternal":true},"tags":["javascript","remix run","social login","login with google","express","session","encryption","js fundamentals"],"slug":"add-social-authentication-to-remix-run-project-or-express-server---rid---jVwo6agJvN2oX4IegYgz","title":"Add Social Authentication to Remix Run Project | Express Server","resourceId":"jVwo6agJvN2oX4IegYgz"},{"_id":"652d6531d5ab2876a4ca214e","content":{"difficulty":4,"domain":2,"type":1,"isInternal":false,"languages":["undefined"]},"tags":["frontend interview","amazon","medium","devtools tech","blog","article","tutorial"],"slug":"how-was-my-frontend-engineer-interview-experience-amazon---rid---fProKruFZQXgvEgZffz9","title":"How was my Frontend Engineer Interview Experience @ Amazon","resourceId":"fProKruFZQXgvEgZffz9"}]}}