facebook/docusaurus · error · Error

The following permalinks are duplicated

Error message

The following permalinks are duplicated:
${errorMessage}

What it means

Thrown by authorsMap validation when two or more authors in the authors map share the same permalink (authorsMap.permalink). Each author page must have a unique URL; duplicates would cause route collisions. The message lists each duplicated permalink and the conflicting author names.

Solutions

  1. Open authors.yml and find every entry listed in the error message.
  2. Give each author a distinct permalink (e.g. /authors/jane, /authors/john).
  3. Re-run the build to confirm no other permalink collisions remain.

Example fix

# before
jane:
  name: Jane
  permalink: /authors/j
john:
  name: John
  permalink: /authors/j
# after
jane:
  name: Jane
  permalink: /authors/jane
john:
  name: John
  permalink: /authors/john
Defensive patterns

Strategy: validation

Validate before calling

const permalinks = Object.values(authorsMap).map(a => (a as any).permalink).filter(Boolean);
const dupes = permalinks.filter((p, i, arr) => arr.indexOf(p) !== i);
if (dupes.length) throw new Error(`Duplicate author permalinks: ${dupes}`);

Prevention

When it happens

Trigger: Two keyed authors in authors.yml specify the same `permalink` value (or both omit it, resolving to a default). Triggered when the blog plugin builds the authors map.

Common situations: Copying an author entry and forgetting to change the permalink, or removing permalink from multiple entries so they all fall back to the same slugified name. Locale-specific author files that duplicate permalinks.

Related errors


AI-assisted analysis of facebook/docusaurus@3f483e80e3 (2026-08-12). Data as JSON: /api/errors/80027340cb04bd4e. Report an issue: GitHub.

Appendix: source

Thrown at packages/docusaurus-plugin-content-blog/src/authorsMap.ts:88

    // Group authors by their permalink
    .groupBy((author) => author.page?.permalink)
    // Filter to keep only permalinks with more than one author
    .pickBy((authors) => authors.length > 1)
    // Transform the object into an array of [permalink, authors] pairs
    .toPairs()
    .value();

  if (permalinkCounts.length > 0) {
    const errorMessage = permalinkCounts
      .map(
        ([permalink, authors]) =>
          `Permalink: ${permalink}\nAuthors: ${authors
            .map((author) => author.name || 'Unknown')
            .join(', ')}`,
      )
      .join('\n');

    throw new Error(
      `The following permalinks are duplicated:\n${errorMessage}`,
    );
  }
}

function normalizeAuthor({
  authorsBaseRoutePath,
  authorKey,
  baseUrl,
  author,
}: {
  authorsBaseRoutePath: string;
  authorKey: string;
  baseUrl: string;
  author: AuthorInput;
}): AuthorWithKey {
  function getAuthorPage(): AuthorPage | null {
    if (!author.page) {

View on GitHub (pinned to 3f483e80e3)