SEO

Fixes

Your to-do list for Google, in three tabs — technical, on-page and off-page. Each row is one task: open it for what to do and the pages it names, approve the changes Vidrys proposes, and publish the pages you write from their briefs. Nothing changes on your site without your approval.

By Garvit Sharma, Co-founder

SEO → Fixes

Who does each fix

Every task says who does it, and the list can be narrowed to one group. Start with these, above the tabs, names the first few to do — the audit's own order, most points at stake first.

GroupWhat it means
Vidrys does itVidrys proposes the fix and writes it through your connected site once you approve it — see Fixes Vidrys proposes, below.
A few clicks for youSomething you can change yourself in your site's own settings. The task lists the steps for your platform, and how long it usually takes.
Your host or developerA change to the site's code or server. Send to your developer or host makes a link for them — see below.
Safe to ignoreWhat the check flags costs more to change than it gains — renaming long or underscored addresses, say. Listed at the bottom, closed.

The steps are written for what your site runs on — WordPress (with Rank Math, Yoast or another SEO plugin), Shopify, Wix, Squarespace, Webflow, Ghost or a custom-built site. Each audit reads it from your home page; if it's wrong, choose the right one with Not right? above the list. On WordPress, a task Vidrys could do through the free Vidrys SEO plugin says so, with Set it up, above the steps — on Shopify, one the Vidrys app for Shopify would do; on Wix, one the Vidrys app for Wix would; on Squarespace, one a Squarespace connection would do on your product pages; and on a custom-built site or one already on Cloudflare, one a Cloudflare connection would.

Some tasks come with something to paste: a robots.txt that names your sitemap, your organisation's structured data, a redirect list in the form your platform imports (Shopify, Squarespace, Ghost, the WordPress Redirection plugin, Apache, Nginx, Netlify or Vercel), the links to change and what to change them to, or the Open Graph tags a page lacks. Show builds it from your latest audit; copy it or download it.

Sending fixes to your developer or host

Send to your developer or host (on a task, or Send the developer's list above the tabs) makes a link listing the tasks you choose: what's wrong, the pages, how to fix each and anything to paste, with a note from you. Whoever opens it needs no account. It stays up to date — a task they've fixed shows as fixed after your next audit — and works for 30 days. Copy the link or the ready-made message, or email it from your own email. Links you've sent are listed with how often they were opened, and Switch off ends one at once.

Technical, on-page and off-page

TabWhat it listsFrom
TechnicalWhether search engines can reach, index and load your pages: status codes, redirects, broken internal links, indexing, canonical tags, the sitemap, Core Web Vitals and HTTPS. A score cap — robots.txt blocking search engines, say — is shown first.The latest site health audit
On-pageThe pages to write from your keyword briefs, then what each page says: titles, meta descriptions, headings, image alt text, thin, duplicate and orphaned pages.The briefs you started from Keywords, and the latest site health audit
Off-pageWho links to you: pages that link to your competitors and not to you, pages on Google’s first page for your keywords, and links you had and lost.Your backlinks

Under To fix, each row is a check the audit failed, most points on the table first, with how many pages it names and who does it: You, or Vidrys where the field is one it writes. Open a row for what to do, what the failing pages share when they share a cause (a title ending every page carries, a section heading the template marks as H1), and the first pages with what was found on each; Show all N pages lists the rest right there. Checks that pass overall but still name a few pages — three 404s on a large site — follow under Passing, a few pages left. The number on each tab counts its rows to do. Fix things, then Run audit again: a page that no longer fails leaves the list.

Pages to write

Get the brief on a keyword under What to work on next opens its brief here, and Pages to write on the On-page tab keeps every one you started with how far it has come: Brief → Draft → Publish → Rank. A brief is free. Generate writes a draft for one of the month’s SEO page drafts — SEO’s own allowance, not your content credits — and Content grade then scores it against the brief and against Google’s top results for the keyword, whose pages Vidrys reads with its own crawler once the results page is loaded: the keyword in the title, the opening and a heading; the searchers’ questions answered; the related keywords and the topics most top pages cover; length against theirs; sections, links to your other pages and image alt text. A brief that edits a page you already have grades the live page too, so you see where it stands before and after. The grade is free and moves as soon as the draft does. Publish sends the draft to your connected CMS or webhook — a new page is posted; an edit to a page you already have goes to a webhook as a change request — and the page counts as published once it is live; with nothing connected, put it live yourself and press Mark published. From then on the keyword is tracked against the page, and reaching Google’s first page counts as a win.

Fixes Vidrys proposes

The audit findsVidrys proposesMade by
A page with no title, meta description or canonicalThe title from the page’s own heading, the description from its opening paragraph, the canonical from the address that served itThe page itself
A title too long, too short, or shared with other pagesA new title for that pageA model, from the page’s heading and text and the searches it shows up for
A meta description badly sized, or shared with other pagesA new descriptionA model, from the page’s text
A page in your sitemap marked noindexRemoving the noindex — or dismiss it, and take the page out of the sitemap insteadThe page itself
A page other sites link to that no longer existsA permanent redirect to your live page whose address is closestThe page addresses
Images without alt textAlt text for each, up to ten per pageA model that looks at the images
A title showing a year that has passedA new title without itA model, from the page’s heading and text
A canonical that’s relative, uses http:// or points at an address that redirectsThe same page’s full https address — or the address the redirect ends onThe page itself
A page with no Open Graph title or descriptionCopied from the page’s own title and meta description (an image is never invented)The page itself
Links to addresses that redirect or use http://Each link pointed at the address it already ends onThe crawl
Links to pages that answer with an errorEach link pointed at the live page whose address is closest — a guess, so always for a person to checkThe crawl
An address that redirects more than once, or to a dead pageIts redirect pointed straight at the final page — or at the closest live oneThe crawl
An address the crawl reached that answers 404 or 410A permanent redirect to the live page whose address is closest — a guess, so always for a person to check. It fixes every link to it at once, menus and theme includedThe crawl

With the Vidrys SEO plugin on a WordPress site, Vidrys also proposes fixes it makes as your pages are served — for what no page field holds. Those that come from the theme or the server are one fix for the whole site, checked on one page that had the problem:

The audit findsVidrys proposes
Pages served over https without an HSTS headerThe header on every page, telling browsers the site is https-only for a year. Rolling it back stops sending it, but browsers that saw it keep using https until the year is up — so it waits for you
Pages that don't declare their languageThe language on every page's <html> tag — your WordPress language setting
Two title tags, meta descriptions or canonicals on a pageOne of each on every page: the one WordPress or your SEO plugin writes; the extra (usually the theme's) is left out
A page that redirects with a meta refreshA permanent (301) redirect to the same address, before the page loads
A page that says it wasn't found but answers 200A real 404 for that page — its text stays — so search engines drop it. Always for a person to check
robots.txt that doesn't name your sitemapThe line naming the sitemap the audit read
A home page with no organisation structured dataOrganization data with your name and home page (and your logo, if you add it before approving)
Language versions that don't name each other backThe links back, each with the code the other page gives itself

With the Vidrys app for Shopify, its theme embed adds what your theme lacks once you switch it on: Open Graph tags on a product, collection, page or article without them, your organisation's structured data on the home page, and — read from your crawled pages rather than a scored check — Product structured data on product pages and breadcrumbs, when the crawl finds your product pages or store pages without them. An app can add tags but can't take your theme's out, so each is proposed only where the theme lacks it.

With a Cloudflare connection — for any site on Cloudflare, custom-built included — every fix above is served by a Worker on your Cloudflare account, and so is what only a server can do:

The audit findsVidrys proposes
The site answers over http:// as well as https://Every http:// address redirected permanently to its https:// one
Both the www and the bare host name answerEvery address on the other host name redirected to the same page on the one your site uses
A page reached through a temporary (302 or 307) redirectThe same redirect, answered as a permanent one — for you to check: some moves are meant to be temporary
Redirects that go round in a circleThe address pointed at the live page whose address is closest — a guess, so always for a person to check
Pages whose content only appears once JavaScript runsRendered copies for crawlers: search engines and AI crawlers get each of those pages ready-rendered, with the content people see — one fix for the whole site. See Rendered copies for crawlers

Proposals sit under the check they answer — the row says N to approve — canonical tags, noindex, redirects and links under Technical, titles, descriptions, alt text and Open Graph tags under On-page. A model-written proposal is marked AI: read it before approving. Model-written proposals arrive a few minutes after an audit, at most 20 a run, counted in your SEO daily spending limit; one you dismiss is not asked for again until the page itself changes. Check for new fixes looks again after an audit, for every field at once.

  1. Press Review on a proposed fix. It reads the page from your CMS and shows what the page has now and what it would get.

  2. Change the value if you want — a title, a description, an address, each image’s alt text. Titles need 15–60 characters and descriptions 50–160, what the audit asks for; the original proposal stays on the fix. Noindex removal has nothing to edit.

  3. With the Vidrys SEO plugin, Preview on your site opens the page with the change on it — your edit included — seen only by you, while you're logged in to WordPress, for an hour. Visitors see the page as it is.

  4. Press Approve & publish. Vidrys writes the value to your CMS, then reads the live page to confirm it is there: Published · checking, then Live. A redirect counts as live only when it is permanent and lands on a page that answers. (Approve dry run appears instead while fixes through your CMS run as dry runs — nothing is written.)

  5. Not happy with it? Dismiss — that page and field are not proposed again. Changed your mind after publishing? Roll back restores exactly what was there before. Finished fixes move under Done by Vidrys.

A fix that replaces a value — a new title over an old one, say — is written only while the page still shows exactly the value it was proposed against, and while your CMS holds that value or none. If someone changed it since, nothing is overwritten: the fix says so and stops.

Page edits

Some fixes change a page's own text rather than a setting. Each waits for you — never applied without review — and shows as before and after: what the page has now, and what it gets. Change any words before approving, or leave an edit out.

The audit findsVidrys proposes
No H1, or severalThe page's first heading made its H1 (or one added from its title), or the extra H1s made H2s — their words stay the same
An empty H1The page's title as its words
An H1 that's too long, or the same as another page'sA shorter or distinct one, written by a model from the page's own text
Headings that skip a levelEach moved up a level, so the outline reads in order
A long page without subheadingsH2s before the paragraphs that start each section, written by a model
A thin pageA few paragraphs after its last one, written by a model from the page's own text — check every sentence is true of your business
Links that say “click here”Words that say where each goes, written by a model from the sentence it's in
Links with no words (an icon)A label naming the page each leads to; how it looks doesn't change
A page few others link toOn the pages that already name its subject, those words made a link to it
A page that links nowhereA short list of related pages — the ones that link to it — after its last paragraph

Where it's made depends on what your site runs on: in the page's own text where your connection keeps it — a WordPress post, a Shopify product, collection, page or article — and, through the Vidrys SEO plugin or Cloudflare, as the page is served where the theme or a page builder (Elementor, Divi) prints the text. An edit is made only while the page's text still matches what the crawl read; if it changed, the fix stops and says so, and the next audit proposes it again from the page as it is. Rolling back puts the page's text back exactly as it was.

Apply without review

Tick a type under Apply without review and a proposal of that type is published the moment it is found, without waiting for you. Only what Vidrys takes from the page itself is offered: a missing title, description or canonical, Open Graph tags copied from the page’s own title and description, and mechanical corrections that say the same thing properly — a canonical written in full and over https, a link pointed at the address it already ends on — and, through the Vidrys SEO plugin, the page language, one title and description per page, the sitemap in robots.txt and hreflang links back. Each is still checked against the live page first, checked again after, reversible, and drawn from the month’s fix allowance. Model-written text, page edits, removing a noindex, redirects, a broken link’s new address (a guess), the HSTS header, a 404, one canonical per page, your organisation's data and rendered copies for crawlers always wait for you. Untick to go back to approving each one.

Off-page

Where to get links lists the pages to ask, each with what to do and who decides — the same list as under Backlinks; Why this page shows the reasons. Links you lost lists the sites that linked to you and no longer do: ask each one to restore the link, or to point it at the page’s new address.

Export tasks

Export tasks hands the work on to whoever does it. The list is every tab’s: checks the audit failed (with what to do and their pages), fixes waiting for review, pages to write from your briefs, and places to get a link. Choose a tab or All, then:

ChooseYou get
Download CSVA spreadsheet of the tasks: the task, its tab, its priority, what to do and the pages.
Send to TrelloA card per ticked task at the bottom of your chosen list, with what to do, up to 20 pages and a link back to Vidrys.
Send to JiraAn issue per ticked task in your Jira Cloud project (labelled seo and its tab), with the same description.

Up to 25 tasks go at once; one that fails is listed with why, and never stops the rest. To connect Trello, paste your API key, a token and the list id; for Jira, your site’s address, your email, an API token, the project key and the issue type. Vidrys checks them with Trello or Jira before keeping them, keeps them encrypted, and never shows them again. Viewers can download the CSV but not connect or send. Sending the same task twice makes a second card — Vidrys doesn’t follow the card once it’s made.

Which sites can take fixes

Your site runs onFixes
GhostTitles, meta descriptions, canonicals and Open Graph tags of posts and pages, and the links in a post’s own text. Ghost has no per-page noindex or redirect to set, and page edits aren't made there yet.
Shopify, with the Vidrys appEverything below for Shopify, with nothing to copy, plus — through the app's theme embed — Open Graph tags, your organisation's structured data, Product structured data and breadcrumbs where your theme lacks them. Fixes can also be approved inside your Shopify admin. See Vidrys for Shopify.
Shopify, connected with a custom app's tokenTitles and meta descriptions of products, collections, pages and blog posts, the links in their own text and page edits to it (not what the theme prints, like a product's title); removing a noindex (the Hide from search engines setting); alt text on a product's images; and URL redirects — for dead addresses, and pointed straight at the final page where one of Shopify’s own redirects runs through a chain or to a dead page (the app needs online store navigation access). A listing field is written only while it still holds the value read. The canonical and Open Graph tags come from the theme, so they are not offered.
WordPress, with the Vidrys SEO pluginEverything a webhook takes — titles, meta descriptions, canonicals, noindex and Open Graph tags written into Rank Math, Yoast SEO, All in One SEO or SEOPress (or printed by the plugin itself without one), redirects, alt text, links in posts, menus and templates, and page edits saved in a post's own text or served where the theme or a page builder prints them — plus the fixes made as pages are served, above. See Vidrys SEO for WordPress.
WordPress, connected with an application passwordTitles, meta descriptions, canonicals, noindex and Open Graph tags, when the Rank Math SEO plugin is installed and the account you connected can edit the post. On any WordPress site, the links in a post’s own text and page edits to it — not menus, widgets or pages built with Elementor, which keeps its own copy. The plugin does more, with nothing to copy.
Wix, with the Vidrys appThe SEO title, meta description, canonical, noindex and Open Graph tags of your pages, store products and blog posts, and your organisation's structured data on the home page — written to each one's own SEO settings in Wix, where you can still edit them. Nothing to copy. See Vidrys for Wix.
SquarespaceThe SEO title and description of your store's product pages, through Squarespace's own API — the only part of a Squarespace site it can change. Needs a Developer API key (Squarespace's Commerce Advanced plan). See Squarespace.
Any site on CloudflareEvery fix that changes a page as it's served — titles, descriptions, canonicals, noindex, Open Graph tags, alt text, links, page edits, structured data, the language, HSTS, real 404s, robots.txt — redirects: for dead addresses, chains, loops, temporary ones, https and one host name — and, on a site built in JavaScript, rendered copies of its pages for crawlers. Your pages themselves never change. See Cloudflare.
WebflowNone. A change there only goes live with a whole-site publish, which is yours to do.
Your own siteEverything — alt text, Open Graph tags, links, redirects and page edits included — through the same webhook that publishes pages: your receiver applies the change and says so.

Each kind of site goes live on its own. Until we have tried its writes against a real account, approving a fix through it runs a dry run: Vidrys finds the page, reads it and records exactly what it would write — nothing on your site changes — and the screen says so.

›It says “Not confirmed yet”

Your CMS did not answer in time, so Vidrys does not know whether the change landed. It checks back on its own and never writes the same change twice. If it cannot confirm after a few tries, it stops and says so.

›It says “Already in place”

The value was on the page before Vidrys wrote anything — someone else got there first. Nothing was written, and there is nothing to roll back.

›It says fixes are switched off

This deployment has fixes off, so nothing is proposed. Ask us to turn them on — first as dry runs, then for real.

›It says changes through my CMS run as dry runs

Fixes are on, but your kind of site has not been cleared for live changes yet. Approving records exactly what would be written and changes nothing. Once it is cleared, approve the fix again to publish it.

›It says the page changed since this was proposed

A fix that replaces a value is written only over that exact value. Someone changed it after the audit, so nothing was overwritten. The next audit proposes again from the page as it is now.