Adeel Imran
Offers / Next.js SEO

A Next.js SEO audit that ends in code.

I check every page template of your Next.js site for SEO problems, then fix them in a pull request. The audit is €2,500 for up to 5 pages, and each fix is €500 a page.

Pull request #128

fix(seo): serve canonicals from the real domain

Open3 files changed, ready for your review

app/layout.tsx

Removed: metadataBase: new URL("https://my-app.vercel.app"),

Added: metadataBase: new URL("https://example.com"),

app/blog/[slug]/page.tsx

Removed: alternates: { canonical: "/" },

Added: alternates: { canonical: `/blog/${slug}` },

app/robots.ts

Removed: rules: { userAgent: "*", disallow: "/" },

Added: rules: { userAgent: "*", allow: "/" },

  • Fixes "Duplicate without user-selected canonical"
  • Fixes "Blocked by robots.txt"
An example fix. Each page you pick to fix arrives as a pull request like this.

Search Console is telling you where to look.

These are the Next.js SEO problems I find most often, and the code behind each one.

Crawled - currently not indexed
The page loads its content in a client component, so the first HTML Google gets is a loading state with little to index.
Duplicate without user-selected canonical
No page sets its own canonical, or the root layout sets one that every route inherits.
Duplicate, Google chose different canonical than user
metadataBase is built from VERCEL_URL, so canonicals point at a preview deploy instead of your domain.
Soft 404
A missing page calls notFound() after streaming starts, so the server still answers 200.
LCP issue: longer than 2.5s
The hero image loads late, or a 'use client' boundary high in the tree sends the page as JavaScript.

What I check and fix on each page.

The audit finds the problems on every page template. The SEO fix changes the code for the pages you pick.

Next.js SEO audit and fix checklist, per page
Title, meta description, canonical, and robots tagsAudit: CheckedFix: generateMetadata and metadataBase set up for the template
Open Graph and social previewsAudit: CheckedFix: Open Graph and Twitter tags added
JSON-LD structured dataAudit: CheckedFix: Article, Product, FAQ, or Breadcrumb schema for the page type
RenderingAudit: Is the content in the HTML Google gets?Fix: Main content rendered on the server with SSR, SSG, or ISR
Status codes, redirects, and internal linksAudit: CheckedFix: Broken redirects and wrong status codes fixed
Sitemap and Search Console indexing statusAudit: CheckedFix: Page added to sitemap.ts, stray noindex removed
Headings and image alt textAudit: CheckedFix: Fixed in the template
hreflang for other languagesAudit: CheckedFix: Quoted on the call
Core Web Vitals: LCP, INP, CLSAudit: DiagnosedFix: Speed fix, from €500 a page
What you getAudit: A ranked ticket list for each pageFix: A pull request per page or group of pages, and 30 days of fix support

The speed fix covers LCP (hero image, next/image priority, and fonts), CLS (reserved space for images and embeds), and INP (deferring heavy client JavaScript and third-party scripts). You get before and after numbers from Lighthouse and field data.

Work out your price.

You pay for the pages you pick. Count your page templates, then choose how many to fix.

€2,500 covers up to 5 pages. Each extra page adds €500.

€2,500

€500 per page. I fix the page in your code and open a pull request.

€0

Optional, on pages I fix. Add pages to fix first.

€0

Total, ex-VAT

€2,500

You get a fixed quote in writing after a free call. Migrations, extra languages, stores, and CMS work are quoted on that call.

Book a free call

How it works.

  1. Free 30-minute call

    Send me the URL. We count your page templates together and pick the ones worth fixing.

  2. Fixed quote

    You get the pages, the price, and the dates in writing. Nothing is billed before you accept.

  3. Audit, then the fix

    You get a ranked ticket list for each page. Pages you chose to fix arrive as pull requests.

Who does the work.

Adeel Imran

Adeel Imran

Next.js and React engineer, Berlin

One engineer, not an agency. The person on the call reads your code and writes the pull request. The checklist above comes from my Next.js SEO guide, applied to your codebase.

“He was integral in keeping our design system on track. His relentless focus on testing and code quality significantly improved our transition to trunk-based development, which was crucial in our fast-paced, frequent-release environment.”

Ondrej Barta

Engineering Manager at Glassnode
Read more testimonials

Questions.