<img src="https://github.com/ChenglongMa/zoplicate/raw/v5.0.8/docs/banner.png" alt="zoplicate banner">
👉
👈

English | <a href="https://github.com/ChenglongMa/zoplicate/raw/v5.0.8/README_CN.md">简体中文</a> | <a href="https://citationstyler.com/wissen/zotero-plugin-zoplicate-einfach-duplikate-erkennen/" target="_blank">Deutsch</a>* | <a href="https://docs.zotero-fr.org/kbfr/kbfr_zoplicate/" target="_blank">French</a>**
Many thanks to Patrick O'Brien* for the German tutorial.
** Many thanks to Frédérique Flamerie for the French tutorial.
A plugin that does one thing only: Detect and Manage duplicate items in
.
Main Features
- Duplicates Detection
- Detects if newly imported items are duplicates of existing ones in the Zotero library.
- You can choose which version of duplicate items to use as the master item and merge them.
- The actions you can take:
- Keep New: Set the new item as the master item and merge the duplicates.
- Keep Old: Set the existing item as the master item and merge the duplicates.
- Keep All: Keep both the new item and the existing item.
- Merge Manually: Go to the Duplicate Items Panel and merge the duplicate item manually.
- Auto-Bulk Merge
- Merges all duplicate items in the library automatically.
- Introduced in Version 2.0.0.
- Non-duplicates Management
- Allows marking items as "Non-duplicates" if mistakenly identified as duplicates by Zotero.
- Supports exporting and importing non-duplicate decisions for cross-device transfer.
- Introduced in Version 3.0.0.
- Show Duplicate Statistics
- Append the duplicate count on the label of Duplicate Items pane.
- Introduced in Version 2.3.0.
If you find this project helpful, please consider giving it a star ⭐. It would be a great encouragement for me!
[!IMPORTANT]
Zoplicate does NOT delete the duplicate items arbitrarily.
Instead, it extracts the useful information from the duplicate items and merges them into the retained item.
It makes some improvements based on the official detection and merging methods of Zotero.
Changelog
v5.0.1
Click here to show more.
This hotfix resolves the Zotero sync error reported as Invalid setting 'zoplicate-nonDuplicatePairs':
- 🐛 FIX!: Disabled the v5.0.0 non-duplicate-pair sync path that wrote an unsupported custom key to
Zotero.SyncedSettings.
- 🧹 CLEANUP!: Zoplicate now removes the legacy
zoplicate-nonDuplicatePairs local synced setting on startup so Zotero stops retrying the invalid upload.
- 🗄️ NOTE!: Non-duplicate pairs continue to be stored locally; cross-device syncing for these pairs is disabled until a supported storage path is available.
v5.0.0
Click here to show more.
This version focuses on the Zotero 9 migration and data integrity work:
- ✨ NEW!: Zoplicate now targets Zotero 9 (
9.0 to 9.*) and the release manifest is generated for Zotero 9.
- ✨ NEW!: Non-duplicate pairs can now be synced through
Zotero.SyncedSettings with key-based storage for cross-device portability.
- 🧬 CHANGE!: The duplicate detection, dialog rendering, menu registration, window handling, and plugin lifecycle code were reorganized for the Zotero 9 runtime.
- 🐛 FIX!: Added local DB schema versioning, safer cleanup for merged/deleted items, startup hydration, and conflict-safe union merge for synced non-duplicate pairs.
- ✅ TEST!: Expanded the automated test suite for duplicate detection, non-duplicate sync, hydration, cleanup, lifecycle, menus, and bulk merge flows.
v4.0.0
Click here to show more.
Many thanks to all the contributors and users who liked, reported issues, and provided valuable feedback! ❤️
We are now supporting Zotero 8!
v3.0.8
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed the bug that caused the dialog not to open again when importing duplicate items.
- Thanks to pascaloettli for reporting this bug in issue #147.
- Thanks to "如梦江南" for reporting this bug on RedNote.
- 🐛 FIX!: We have fixed the dialog styling issue in dark mode.
v3.0.6
Click here to show more.
In this version, we have updated the dependencies and adapted to the latest version of Zotero.
Thanks to pascaloettli for the feedback in issue #131.
v3.0.5
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed the bug that caused the sync error.
- 🐛 FIX!: We have optimized the UI of context menu.
- 🐛 FIX!: We have optimized the UI styling of bulk merge buttons.
v3.0.4
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed the bug that caused the UI blocked when selecting too many items and opening the context menu.
- 🐛 FIX!: We have optimized the plugin lifecycle which may cause the plugin to load multiple preference settings on macOS.
- 🐛 FIX!: We have optimized database operations to reduce the risk of data loss.
v3.0.3
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed the bug that caused the attachment to be lost when merging duplicate items.
- 🐛 FIX!: Zoplicate will now ignore the Feed items when detecting duplicates.
- 🐛 FIX!: We have fixed the bug that caused the detection dialog blocking the main thread.
- 🐛 FIX!: We have fixed the bug that caused the deleted items to be showing in NonDuplicates panel.
- 🐛 FIX!: Now, the NonDuplicates panel won't show up when clicking attachment items.
- ✨ NEW!: We added a prompt to remind the duplicates when Zotero is in background.
Click here to show more.
v3.0.2
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed the progress window icon bug in Zotero 7.0.0-beta.77.
- 🧬 CHANGE!: We have updated the style of duplicate detection dialog.
- 🧬 CHANGE!: We have updated the icon style in preference pane.
- 🧬 CHANGE!: Items with different
itemType will not be considered as duplicates.
v3.0.1
Click here to show more.
In this version, we have made the following changes:
- 🧬 CHANGE!: We have updated the UI of buttons in the duplicate pane.
- 🐛 FIX!: We have optimized the performance of duplicate search and detection.
v3.0.0
Click here to show more.
In this version, we have made the following changes:
- 🐛 FIX!: We have fixed a memory leak bug that caused the app to freeze when editing PDF annotations.
- Thanks vancleve and pencilheart for reporting this bug in issue #30 and issue #31 respectively.
- ✨ NEW!: We have added the Non-duplicates functionality.
- You can mark items as Non-duplicates when they are mistakenly identified as "duplicates" by Zotero.
- Selecting two "false duplicates", you can find the
They are NOT duplicates menu items in the context menu.
- You can also find the
They are NOT duplicates button in the Duplicate Items panel.
- For more details, please see Non-duplicates section below.
- Thanks dschaehi for the discussion in issue #25.
v2.3.0
Click here to show more.
In this version, we have made the following changes:
- ✨ NEW!: We have added an option to show the duplicate count on the left collection pane.
- You can find the option in the
Zoplicate tab in the settings.
-
When your mouse hovers over the Duplicate Items entry, a tooltip will show the duplicate statistics.
* The duplicate count will be updated automatically. You can also find the Refresh Duplicate Count menu to update the count manually.
* Thanks Apollo7777777's idea mentioned in discussion #18
2. 🐛 FIX!: We have fixed a bug that caused the dialog to be too narrow when the title is short.
3. 🐛 FIX!: We have fixed a bug that caused the Bulk Merge icons to not maintain aspect ratios.
v2.2.0
Click here to show more.
In this version, we have made the following changes:
- ✨ NEW!: We have added "Smart" Merge functionality (Only available in Zotero 7 now).
- When merging duplicate items, the function will fill in the missing information of the retained item with the duplicates.
- Thanks endfreude's idea mentioned in issue #15.
v2.1.0
Click here to show more.
In this version, we have made the following changes:
- ✨ NEW!: We have added the Suspend and Restore functionality (Only available in Zotero 7 now).
- Please see Bulk Merge section below for more details.
- 🧬 CHANGE!: We have changed the behavior of Keep Others action.
- Previously, the Keep Others action will delete the last imported item and save ALL the rest existing items.
- Now, the action will Merge the existing items based on the Master Item preferences in Settings.
- 🐛 FIX!: We have fixed a bug that caused the tags could not be loaded correctly in v2.0.0.
- Thanks ChinJCheung for reporting this bug in issue #10.
v2.0.0
<details markdow