Why I built TinyRank to make real WordPress edits instead of injecting JavaScript
Most AI SEO tools fix your site with a JavaScript layer that rewrites the page in the browser. TinyRank edits WordPress itself. Here is why I chose the harder route and what it costs.
Khalid Farhan, founder4 min read
When I started building TinyRank, the easiest way to ship it would have been a snippet. You paste one line of JavaScript into the site's header, the script loads on every page, and it rewrites titles, descriptions, headings and links in the visitor's browser. Several of the best known AI SEO tools work exactly like this, including SearchAtlas OTTO and Alli AI, as of November 2026.
I did not build it that way. TinyRank logs in to WordPress and changes the actual page, the actual title field in Rank Math or Yoast, the actual image in the media library. This post is about why, because the choice is not obvious and it made the product much harder to build.
What a JavaScript layer actually does
A JavaScript SEO layer sits between the server and the visitor. The server sends the original page, with the original title and the original broken link. Then the script runs and swaps things around before the visitor sees them.
For a human in a browser this works fine. For search engines it is more complicated. Google does run JavaScript, but it does so in a second pass, sometimes days after the first crawl, and with a budget. Other crawlers and most AI assistants that read the web run little or no JavaScript at all. So the fixed version of your page exists for some readers, some of the time, and the original version exists for everyone else.
There is a second problem that bothers me more. The fix only exists while the script is running. Cancel the subscription, or let the snippet break during a theme update, and every fix disappears at once. Two years of SEO work gone in a second, and the site is back to where it started. The client never owned any of it.
What a real edit does
When TinyRank fixes a broken link, it opens the page in WordPress and changes the link. When it writes a missing meta description, it writes it into the SEO plugin's field, the same place a human would type it. When it adds alt text to an image, the alt text is now part of that image in the media library, and every page using that image gets it.
The fix is in the HTML the server sends. Googlebot sees it on the first pass. Bing sees it. An AI assistant fetching the page sees it. A developer who opens the page source sees it. And if the agency stops paying us tomorrow, every fix stays, because they are just normal edits to a normal WordPress site.
I think that is the only honest way to sell SEO work to someone. The work should belong to the client.
Why it is harder
I want to be fair about the trade-off, because the JavaScript approach is popular for good reasons.
A snippet works on any platform. One script covers WordPress, Shopify, Webflow, Wix, a hand-coded site, anything. TinyRank works on WordPress sites with Rank Math, Yoast or All in One SEO, and that is it for now. Agencies with clients on other platforms cannot use us yet. That is a real limitation and I am not going to pretend otherwise.
A snippet cannot break the site. The worst case is that the script fails and the page shows as it was. A real edit can, in principle, change the wrong thing. That is why TinyRank has rules it cannot cross: it never deletes anything, never touches users, passwords or code, logs every change with its old value, and keeps most changes one click from undo. If it updates a plugin and the site stops loading, it switches that plugin off again straight away. Those guardrails took longer to build than the agent itself.
A snippet needs no login. TinyRank needs a WordPress admin login once, to install its connector and create its own access key. Then it deletes the password. Some agencies are uncomfortable with that, and I understand why. We recommend creating a separate admin user called TinyRank so the agency can see exactly what it did and remove it any time.
Elementor and Divi
The hardest part of real edits was page builders. A plain WordPress page stores its content as HTML in one field. An Elementor page stores it as a large structure of nested widgets, and if you change one character in the wrong place the whole layout breaks. Divi is similar, with its own shortcode format.
TinyRank reads those structures properly, finds the one text widget or heading that needs changing, changes it, and leaves everything around it alone. Getting this right across both builders took weeks. But a huge share of small business WordPress sites are built with Elementor or Divi, so a tool that could not edit them would have been a tool that could not edit most of the sites agencies actually manage.
What this means for an agency
If you are comparing TinyRank with a JavaScript based tool, the question I would ask is: in two years, when the client asks what they got for the money, what will be there?
With a snippet, the answer is a script tag. With TinyRank, the answer is a log of every edit made to their site, each with the old and new value, and a site that keeps every one of those edits whether or not they stay with you.
I built it the hard way because that is the answer I would want for my own clients. I have 21 of them, and TinyRank runs on their sites first.
Questions
Does TinyRank install anything on the client's site?
Yes, a small connector plugin that lets the agent read and edit the site through WordPress's own interfaces. It is hidden from the WordPress dashboard so clients do not see TinyRank. The agency can remove it, and TinyRank's access key, at any time.
What happens to the fixes if an agency cancels?
They stay. Every change is a normal edit inside WordPress, so nothing disappears when TinyRank is removed. The change log in the TinyRank dashboard is no longer updated after cancellation.
Does it work on Shopify, Webflow or Wix?
Not yet. TinyRank works on WordPress sites using Rank Math, Yoast or All in One SEO, including pages built with Elementor and Divi. Other platforms are not supported as of November 2026.