← ALL_POSTS

A Nuxt 3 SEO Checklist for Developer Portfolios

A portfolio can look great and still be invisible to search engines. This is the checklist I use to make a Nuxt 3 site easy for Google to find, crawl and understand.

1. Render real HTML

Search engines can run JavaScript, but server-rendered or prerendered HTML is indexed faster and more reliably. Nuxt does this by default. For a mostly static site, prerender your routes:

export default defineNuxtConfig({
  nitro: {
    prerender: { crawlLinks: true, routes: ['/'] },
  },
})

View the page source in your browser. If your headings and text are in the HTML, crawlers can read them.

2. Give every page a unique title and description

Use useSeoMeta in each page so no two pages share the same title or description:

<script setup>
useSeoMeta({
  title: 'My Page Title',
  description: 'One or two sentences that describe this page.',
  ogTitle: 'My Page Title',
  ogDescription: 'One or two sentences that describe this page.',
})
</script>

Keep titles under about 60 characters and descriptions under about 160, or Google will truncate them.

3. Install the Nuxt SEO module

@nuxtjs/seo bundles a sitemap, robots.txt, canonical URLs and Schema.org helpers. Set your site URL once in nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@nuxtjs/seo'],
  site: {
    url: 'https://example.com',
    name: 'Your Name',
  },
})

The site.url value is used to build canonical URLs and sitemap entries, so it must match your production domain exactly.

4. Keep preview deployments out of search results

If you deploy to Vercel, preview URLs can get indexed and compete with your real site. Only allow indexing in production:

site: {
  indexable: process.env.VERCEL_ENV
    ? process.env.VERCEL_ENV === 'production'
    : process.env.NODE_ENV === 'production',
}

5. Add structured data

Structured data helps Google connect your site to you as a person or organization. With the Nuxt SEO module you can describe yourself in a few lines:

useSchemaOrg([
  definePerson({
    name: 'Your Name',
    jobTitle: 'Frontend Developer',
    sameAs: ['https://github.com/you', 'https://www.linkedin.com/in/you/'],
  }),
])

The sameAs links tie your GitHub and LinkedIn profiles to your site.

6. Submit your site to Search Console

  1. Add your domain as a property in Google Search Console and verify it with a DNS record.
  2. Submit /sitemap.xml under Sitemaps.
  3. Use URL inspection on your homepage and click Request indexing.
  4. Check the Pages report to see why any page is not indexed.

Technical SEO only makes a site eligible to rank. To actually rank, other sites need to link to you and you need pages worth ranking. Link to your site from your GitHub profile, LinkedIn and project READMEs, and publish pages that answer real questions, one topic per URL.