Skip to content

Duplicate IDs, titles and rows

What happens when two rows share an ID or a title in one file, the error each gets, why the first row wins, and why the same item next week is an update, not a duplicate.

  • 3 min read
  • Updated October 13, 2026
On this page

Content Uploader tells items apart by their record ID. Two rows with the same ID inside one file would be the same item twice, so it keeps the first and rejects the rest, with a message that names the row.

The same ID twice in one file#

If two rows in a file have the same record ID, the first row counts and every later row is rejected with:

Record ID: “HLJ-603” is used by an earlier row in this file.

The rejected rows appear under Errors in the review, with their row number, and are skipped; the first row and all other rows are handled normally. Fix the ID in your spreadsheet (every item needs its own) and upload the file again: the rows that were already published are shown as unchanged, and the corrected ones as new.

A record ID is also checked when it is empty (Record ID: the “ID” column is empty.) and when it is longer than 255 characters (Record ID: the “ID” value is longer than 255 characters.). IDs are compared exactly (spaces at the start and end are ignored): hlj-001 and HLJ-001 are two different IDs, so copy them exactly.

The same title twice, with a record ID#

If your configuration has a record ID column, titles may repeat: two items called Annual report with different IDs are two items. WordPress makes their slugs unique (annual-report, annual-report-2). On Joomla, the alias must be unique within the category: a new article without an alias gets a number added when its title is taken; an alias that you map yourself and that is already used in the category makes that article fail (Joomla specifics).

No record ID column: rows are matched by title or slug#

Without an ID column, a row is identified by its slug (when it has one) or its title, compared the way people compare them: capital letters, extra spaces, markup and character references do not matter. The category breaks ties. Two rows that repeat the same title (or slug) in the same category cannot be told apart, so the first counts and later ones get:

Record ID: the title “Anchoring etiquette” is used by an earlier row in this file in the same category. Make it unique, or choose a record ID column.

The same title in different categories is fine. How records are matched explains the matching in full, and when a changed title creates a new item.

The same item in next week's file is not a duplicate#

An ID that was published before is the same item. Content Uploader compares the row with what it published last time:

  • unchanged: nothing is sent;
  • changed: the item is updated in place: same page, same address;
  • missing from the new file: nothing happens to it. Content Uploader never deletes anything from your site.

A file can therefore be a partial update: only the rows that changed, or only the rows you want to check, with their IDs.

Preventing duplicates on your site#

  • Always include the same ID for an item in every file.
  • Do not change IDs in your source system without telling Content Uploader: a new ID is a new item, and the old one stays on the site.
  • Decide on the record ID before you publish for the first time. Changing it later changes how items are recognised, and the review then lists the rows as new before anything is published (choosing the record ID).
  • If duplicates are already on the site, they are ordinary posts or articles there; delete them in WordPress or Joomla.

Was this article helpful?