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
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?
Related articles
- Importing dataChoose the record IDThe record ID column lets next week's file update an item instead of creating it twice: what makes a good ID, how matching works without one, and what changing it does.
- Reviewing and publishingHow rows are matched to items on your siteHow Content Uploader decides that a row is new or the same item as before: by record ID, or by slug or title with the category as tiebreaker.
- TroubleshootingRows with errors: find, fix and upload againWhat to do when the review lists rows with errors and skips them: reading the groups, the most common messages and their fixes, and uploading just the corrected rows.
- Preparing your spreadsheetCommon spreadsheet mistakes, and the fix for eachA checklist of the mistakes behind most import problems: headers, IDs, dates, numbers, encoding, merged cells, images and more, with what you see and how to fix each one.