DEV Community

Abid niazi
Abid niazi

Posted on

How Dual-URL Architecture Doubled My Indexed Pages (Next.js 14 SEO Strategy)

After 4 months of building ToolForge, I have 152 organic keywords growing at +2,071%. Here's the single architectural decision that made the biggest difference.

The Problem

I built an online calculator. Let's say an EMI Calculator. It lives at:
/tools/calculators/emi-calculator

This page targets action keywords — people who type "emi calculator" into Google. They want to USE the tool.

But there's a second group: people who type "how to calculate emi in pakistan." They want to LEARN. They'll spend 5-10 minutes reading before they need a calculator.

One URL can't serve both intents well. A tool page with a 3,000-word guide has terrible UX. A guide page with an embedded calculator is slow and unfocused.

The Solution: Dual URLs Per Tool

Every tool in ToolForge gets two pages:
/tools/calculators/emi-calculator ← Interactive tool
/emi-calculator ← Long-form SEO guide

In Next.js 14 App Router, this means:
src/app/tools/calculators/emi-calculator/page.tsx ← 'use client', interactive
src/app/emi-calculator/page.tsx ← server component, 3000+ words

The tool page is a client component with state, inputs, and instant results. The guide page is a server-rendered article with headings, tables, FAQs, and schema markup.

How It Works for SEO

Tool page (/tools/calculators/emi-calculator):

  • Targets: "emi calculator", "loan calculator", "emi calculator pakistan"
  • Schema: SoftwareApplication JSON-LD
  • Content: minimal — just the tool + brief instructions
  • User intent: DO something

Guide page (/emi-calculator):

  • Targets: "how to calculate emi", "emi formula", "bank loan rates pakistan"
  • Schema: FAQPage JSON-LD
  • Content: 3,000+ words — formula explanation, bank comparisons, tips, FAQs
  • User intent: LEARN something
  • Contains a prominent CTA button linking to the tool page

The Results

From 61 tools, this architecture generates:

  • 61 tool pages (action keywords)
  • 61 guide pages (informational keywords)
  • = 122 indexable pages from the same number of tools

Our sitemap has 100+ URLs. Google has indexed 86 so far, and we're ranking for 152 keywords.

The guide pages consistently rank higher than tool pages because Google favors comprehensive content for informational queries. But the tool pages capture direct-intent traffic from people who just want a calculator.

Implementation Pattern

Tool page (client component):

// src/app/tools/calculators/emi-calculator/page.tsx
'use client';
import { useState } from 'react';
import RelatedTools from '@/components/ui/RelatedTools';

export default function EMICalculator() {
  const [amount, setAmount] = useState(1000000);
  const [rate, setRate] = useState(15);
  // ... calculator logic

  return (
    <div className="max-w-4xl mx-auto p-6">
      <h1>EMI Calculator</h1>
      {/* Interactive inputs + results */}
      <RelatedTools recommendedIds={['business-loan-calculator', 'fbr-tax-calculator']} />
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

Guide page (server component):

// src/app/emi-calculator/page.tsx
import Link from 'next/link';

export default function EMIGuide() {
  return (
    <article className="max-w-4xl mx-auto p-6">
      <h1>How to Calculate EMI in Pakistan 2026</h1>

      {/* CTA to the actual tool */}
      <Link href="/tools/calculators/emi-calculator"
        className="bg-indigo-600 px-6 py-3 rounded-xl text-white">
        Calculate Your EMI Now →
      </Link>

      {/* 3,000+ words of guide content */}
      <h2>What is EMI?</h2>
      <p>EMI stands for Equated Monthly Installment...</p>

      {/* FAQs with schema markup */}
      <h2>Frequently Asked Questions</h2>
      {/* ... */}
    </article>
  );
}
Enter fullscreen mode Exit fullscreen mode

Layout (metadata for each):

// src/app/tools/calculators/emi-calculator/layout.tsx
export const metadata = {
  title: 'EMI Calculator — Free Loan EMI Calculator Pakistan',
  description: 'Calculate your monthly EMI instantly...',
  alternates: { canonical: 'https://freetoolforge.org/tools/calculators/emi-calculator' },
};

// src/app/emi-calculator/layout.tsx  
export const metadata = {
  title: 'How to Calculate EMI in Pakistan 2026 — Complete Guide',
  description: 'Learn how EMI is calculated with formula...',
  alternates: { canonical: 'https://freetoolforge.org/emi-calculator' },
};
Enter fullscreen mode Exit fullscreen mode

Different canonical URLs, different titles, different meta descriptions. Google treats them as separate pages targeting different keywords.

Cross-Linking Strategy

The guide page links to the tool: "Calculate your EMI instantly →"
The tool page links to the guide via a DocButton component: "Read the full guide →"

This creates a bidirectional internal link loop that passes authority between both pages. When the guide ranks well, it boosts the tool. When the tool ranks well, it boosts the guide.

When NOT to Use Dual URLs

Not every tool needs a guide. If the tool is self-explanatory (like a UUID Generator), the guide page would be thin content — which hurts SEO.

Use dual URLs when:

  • The topic has informational search intent ("how to...")
  • You can write 1,500+ words of genuine, useful content
  • The tool targets a different keyword than the guide

Skip the guide when:

  • The tool is self-explanatory (Base64 encoder, color picker)
  • You'd be padding content just to fill the page
  • The keyword volume for "how to" queries is under 100/month

Try It

The entire architecture is live at freetoolforge.org. You can see the pattern in action:

61 tools × 2 URLs = 122 pages. The dual-URL architecture is the single biggest SEO lever we've pulled.


Abid Niazi — Full Stack Developer, Pakistan
freetoolforge.org — 61 free tools, zero ads

Top comments (0)