# Zotero Attanger: attachment organization modes and setup

> Zotero Attanger is a JavaScript-based Zotero plugin for renaming attachments, moving stored files into external folders, and maintaining organized external copies. Its strongest fit is users who want native Zotero naming combined with predictable filesystem layouts, although external-link mode is limited to an editable personal library.

**MuiseDestiny/zotero-attanger** — Attanger (Attachment Manager) organizes Zotero attachments: attach recent downloads, match files to items, rename them with Zotero's native templates, and move or copy them into a predictable folder structure.

- Repository: https://github.com/MuiseDestiny/zotero-attanger
- Stars: 1,385 · Forks: 41
- Language: JavaScript
- License: AGPL-3.0
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/muisedestiny-zotero-attanger

## Zotero Attanger's attachment management boundaries

Zotero Attanger addresses a specific gap in Zotero's default attachment workflow. Zotero can keep files in its own storage, while many researchers also need predictable directories for cloud synchronization, local browsing, or scripts that expect certain paths. Attanger connects those needs without replacing Zotero's metadata. According to the README, it can rename attachments with Zotero's native filename format, organize folders from collections, years, or other template variables, attach recent downloads, and match a batch of downloaded PDFs to selected items by title.

The target user is a Zotero user who already relies on Zotero for library metadata but needs more control over attachment names and disk layout. This includes users who sync Zotero storage through Zotero Storage or WebDAV, users who prefer linked files managed by OneDrive, Dropbox, Nutstore, or a similar tool, and users who want both Zotero-managed files and an external browsing copy.

Attanger is not a general Zotero metadata cleaner or library deduplicator. Its documented scope is attachments. It also does not replace Zotero's template engine. The project specifically uses Zotero's native filename format, which means the naming vocabulary comes from the fields and variables available to Attanger, rather than from a completely independent naming language.

## Three work modes determine where Zotero reads each file

The main design choice is the work mode, because it determines whether Zotero opens a stored file, a linked file, or a stored file while an external copy exists. `Zotero Storage Only` keeps attachments inside Zotero and applies naming rules without requiring an external directory. This mode suits libraries that use Zotero Storage or WebDAV and only need consistent attachment names.

`External Links` moves files to a user-selected directory and opens them through Zotero links. The directory is required, and the README describes this as the former `Link` attach type. The table also identifies a significant limitation: external links are limited to an editable personal library. That makes the mode unsuitable for libraries where linked attachments would not be available, including group libraries.

`Zotero Storage + External Copy` retains the stored attachment as the file Zotero opens and creates an organized one-way copy outside Zotero. This mode is useful when Zotero's own file synchronization should remain authoritative while the user still wants a browsable directory. Existing attachments are not changed merely by switching modes. The README directs users to select items and run `Attanger > Move Attachment` or `Attanger > Sync External Copy` when they want to reorganize files.

## Naming and folder paths use Zotero templates

Attanger's naming behavior is based on Zotero's native templates rather than a separate filename grammar. The README lists optional title synchronization, diacritics removal, and regex-based exceptions. It also says that linked filenames can be kept in sync after changes to the title, authors, year, or Better BibTeX citation key. This is a meaningful distinction for users whose library metadata changes after files have already been collected.

Folder paths can include collections, years, or any Zotero template variable. A slash in a value can create nested folders. That flexibility supports layouts such as year-based directories or collection-derived subfolders, but it also makes path preview important. Users should inspect the preview before applying a layout to a large selection, because the README does not describe a preview for every possible template combination.

The settings interface groups these controls under `Attachment Names and Folders`. The README says the settings are collapsible and that only `Work Mode` is open initially. It also says searching Zotero's settings opens all sections temporarily. This is a practical detail for users who cannot immediately see the rename and folder controls. The project uses Zotero's settings system rather than presenting a separate configuration application.

## Download folders support single-file and batch attachment

Attanger includes two documented download-oriented operations. `Attach New File` can attach the newest download to an item or collection. `Match Attachment` can match a batch of PDFs to selected items by title. These operations address a common gap between a browser download folder and a structured reference library, where filenames may be related to paper titles but are not yet connected to Zotero records.

To enable either operation, the user must add the download folder under `Download Folder`. The README does not provide a CLI command or an import format for this setting, so the supported path is the Zotero settings interface. The title-based matching approach also implies that duplicate titles, translated titles, or inconsistent PDF names can require manual review. The README does not document a confidence threshold, a preview of proposed matches, or an automatic fallback for ambiguous titles.

Automatic processing covers attachments added through Attanger, drag and drop, or the Zotero Connector. That means the plugin is designed to observe more than one entry path into Zotero. The README does not state that arbitrary files placed directly in Zotero storage are automatically discovered. A user relying on a separate download or ingestion workflow should verify that the relevant entry point is one of the documented paths.

## Install the XPI in Zotero and verify a small workflow

The documented installation method is a manual `.xpi` installation from the project's Releases page. The repository's package metadata identifies the project as `zotero-attanger`, with the package version set to `1.5.3`. The README states that Attanger supports Zotero 7 through 10.

Download the latest `.xpi`, open Zotero, and use the plugin installation dialog. The menu name differs across Zotero versions, so the README gives both labels.

The README does not publish a direct download command, package-manager installation name, or documented `npm install` path for end users. In Zotero, open `Tools > Plugins`, or `Tools > Add-ons` in older versions, choose `Install Plugin From File...`, select the downloaded `.xpi`, and restart Zotero if prompted.

After installation, open `Settings`, then select `Attanger`. Choose a work mode. For either external mode, click `Choose...`, select an existing writable directory outside Zotero storage, and wait until the status reads `Setup complete`. Configure `Attachment Names and Folders`, then add a download folder under `Download Folder` if needed.

The first real use should be small. Select a few items and run `Attanger > Move Attachment` or `Attanger > Sync External Copy`, depending on the selected mode. The README explicitly recommends trying a few items before processing a large selection. Users changing modes should not assume that the switch itself will move or copy existing files.

## File handling, maintenance, and AGPL-3.0 implications

The README makes two file-handling claims that affect adoption. Moving a stored attachment is described as preserving annotations, notes, tags, relations, and the full-text index. It also states that existing files are never overwritten. These details reduce the risk of a rename or move discarding associated Zotero data, but they are project documentation claims rather than an independent verification of every Zotero version.

Attanger also supports opening attachments with another application and configurable keyboard shortcuts for its main commands. Those features are secondary to the storage workflow. For engineers, the relevant architecture is a Zotero plugin written in JavaScript, with source under `src/`, package metadata under `package.json`, and build and test scripts defined there. The package scripts include `npm run build`, `npm test`, `npm run lint`, and `npm start`, but the README does not document these as end-user installation steps.

The repository is not archived, and its last push was on 2026-10-15. The release list includes `v1.5.3` on 2026-10-15. This establishes recent project activity at those dates, but it does not establish compatibility with every future Zotero release or remove the cost of validating upgrades.

The repository declares `AGPL-3.0-or-later`. Users distributing a modified or combined version should review the license text and its obligations with appropriate legal expertise. The README does not provide a separate commercial licensing path, support contract, or migration tool.

## When Zotero Attanger is the wrong attachment tool

The clearest wrong-tool case is a group library that requires external links. The README states that `External Links` works only in an editable personal library. Users who need linked attachments across a group library should choose another approach or retain stored attachments, because Attanger's documented external-link mode does not meet that requirement.

It is also a poor fit for users who want a fully automated, server-side ingestion service. The README describes a Zotero plugin with settings, context-menu commands, download-folder handling, and automatic processing within Zotero. It does not describe a headless daemon, an API, a batch import protocol, or a CLI for organizing arbitrary directories. Installing Node dependencies and running the build scripts would be development activity, not a documented replacement for installing the `.xpi`.

Finally, users who need a documented rollback path should verify that separately. The README explains mode selection, setup completion, and processing commands, but it does not document an undo command for a completed mass move, copy, or rename. A backup or file-sync snapshot may therefore matter before a broad operation, although the project does not prescribe a specific backup command.

## Conclusion

Adopt Zotero Attanger if you need consistent filenames and controlled folder layouts without replacing Zotero's native template system. Do not adopt it if you need external links in group libraries, unattended deployment procedures, or a documented rollback process that the README does not describe. Verify the chosen work mode, storage directory, template preview, and behavior on a few representative items before processing a large library.

## FAQ

### How do I install Zotero Attanger?

Download the latest `.xpi` from the project's Releases page. In Zotero, open `Tools > Plugins`, or `Tools > Add-ons` in older versions, choose `Install Plugin From File...`, select the file, and restart Zotero if prompted.

### What are the three Zotero Attanger work modes?

They are `Zotero Storage Only`, `External Links`, and `Zotero Storage + External Copy`. They differ in whether Zotero opens a stored file or a linked file and whether an external directory contains primary files or one-way copies.

### Does Zotero Attanger support group libraries?

The README specifically limits `External Links` to an editable personal library. It does not state the same restriction for `Zotero Storage Only` or `Zotero Storage + External Copy`, so support for group libraries should be verified for the intended mode.

## Sources

- [Issues](https://github.com/MuiseDestiny/zotero-attanger/issues)
- [License: AGPL-3.0](https://github.com/MuiseDestiny/zotero-attanger/blob/main/LICENSE)
- [MuiseDestiny/zotero-attanger on GitHub](https://github.com/MuiseDestiny/zotero-attanger)
- [README](https://github.com/MuiseDestiny/zotero-attanger/blob/main/README.md)
- [Releases](https://github.com/MuiseDestiny/zotero-attanger/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/muisedestiny-zotero-attanger
