Translations of this page:

We’re in the process of updating the documentation for Zotero 5.0. Some documentation may be outdated in the meantime. Thanks for your understanding.

This page describes the situation for Zotero 1.0, and is heavily outdated.

Most of the files listed below are contained within the zotero.jar archive in the chrome directory. For more information on extracting and modifying such files, see Modifying Zotero Files.

Extension root

  • chrome.manifest
    • Registers chrome files
  • install.rdf
    • Used by the Firefox add-on system
  • license.txt
    • Educational Community License
  • scrapers.sql
    • SQL to initialize site translator and CSL style tables — bundled translators and styles may be overwritten during extension upgrades or updates from central repository, but the table definitions are stored within userdata.sql, so user-added rows are preserved.
  • system.sql
    • SQL to initialize system tables — data in these tables may be overwritten during upgrades. Modifying these tables to add new item types, etc., may seem like a good idea, but it quite likely is not.
  • userdata.sql
    • SQL to initialize user data tables — data in these tables is preserved during upgrades, and any schema changes require migration steps in schema.js.


Main overlay, windows and dialogs

  • about.xul
    • The About Zotero dialog
  • bibliography.js
  • bibliography.xul
    • Bibliography output options dialog
  • exportOptions.js
  • exportOptions.xul
    • Export options dialog
  • fileInterface.js
    • File import/export handler
  • fileProgress.xul
    • Progress window for import/export
  • include.js
    • Calls getService() on the Zotero XPCOM component and assigns the core JS object to the variable Zotero. XUL files that aren't in the global scope need to include this file to gain access to the Zotero object:
      <script src="chrome://zotero/content/include.js"/>
  • itemPane.js
    • Display and editing logic for the metadata pane
  • itemPane.xul
    • Included from overlay.xul — creates the metadata pane on the right
  • note.js
    • Logic for standalone note window
  • note.xul
    • Standalone note window — note itself is created in the noteeditor.xml binding
  • overlay.js
    • Logic for the main Zotero overlay, including actions for many of the primary UI elements
  • overlay.xul
    • The main Zotero overlay on the browser window — this creates the Zotero pane and specifies actions for most of its UI elements.
  • preferences.js
    • Logic for the preferences window
  • preferences.xul
    • The preferences window
  • progressWindow.xul
  • searchDialog.js
    • Passes data to the search dialog
  • searchDialog.xul
    • The window containing the search dialog — the search interface itself is created in the zoterosearch.xml binding.
  • selectItemsDialog.js
  • selectItemsDialog.xul
    • Used by the See Also box


XBL bindings for reusable UI elements (contains both structure and logic)

  • noteeditor.xml
    • Note editor
  • relatedbox.xml
    • See Also tab
  • searchtextbox.xml
    • Textbox in search dialog
  • tagsbox.xml
    • Tag entry pane
  • timedtextarea.xml
    • Used by note editor to trigger auto-save
  • zoterosearch.xml
    • Search dialog


UI elements for site scraping

  • browser.js
  • browser.xul
    • URL bar icon
  • progress.xul
    • Scraping progress popup
  • selectitems.js
  • selectitems.xul
    • Selection dialog for saving multiple items from a site


Persistent objects stored within the core JS object — loaded in components/zotero-service.js

  • attachments.js
    • Methods for attaching files, snapshots and links
  • cite.js
    • CSL engine
  • collectionTreeView.js
    • Implements nsITreeView for the collections pane
  • data_access.js
    • Core data layer objects (e.g. Item, Collection, Tags, etc.)
  • db.js
    • DB abstraction layer (e.g. Zotero.DB.query()) — these methods should not be used outside of the data layer unless absolutely necessary.
  • file.js
    • Helper functions for file operations
  • fulltext.js
    • Full-text indexer
  • ingester.js
    • Proxy detection, OpenURL functionality, and EndNote file download handling
  • itemTreeView.js
    • Implements nsITreeView for the items pane
  • mime.js
    • MIME type detection and handling methods
  • notifier.js
    • The Zotero Notifier — used by the UI to receive notification of changes to the data layer (and can also be used by other extensions).
  • progressWindow.js
  • schema.js
    • Database initialization and upgrade logic (including repository updates)
  • search.js
    • Search engine logic (including saved searches)
  • translate.js
    • Data translation engine for import, export and scraping
  • utilities.js
    • Assorted functions, some local to the translator sandbox
  • zotero.js
    • Creates the core JS object and several other key function groups (e.g. Zotero.Date)


Localized strings

  • about.dtd
  • locales.xml
    • Localizations for CSL
  • preferences.dtd
  • searchbox.dtd
  • zotero.dtd
    • Main entities file (for XUL labels)
    • Main properties file (for JS strings)


Image and style files for the default skin

  • about.css
    • Styles for About Zotero dialog
  • addCitationDialog.css
  • overlay.css
    • Styles for elements in the main browser overlay
  • zotero.css
    • Main style file — the distinction between this and overlay.css has become rather poorly defined, and the two files will likely be merged at some point (and/or separated into disparate files for the various UI sections).
  • *.png
    • Image files for UI elements


CSS for XBL bindings

  • tagselector.css


  • zotero-autocomplete.js
    • Implements the Zotero autocomplete service, which can be enabled on an autocomplete textbox with autocompletesearch=“zotero”. The search field is specified with autocompletesearchparam=“fieldName”, optionally followed by other parameters after a slash.
  • zotero-service.js
    • The base XPCOM component, which provides access to the core JS object from privileged code in Firefox — mostly boilerplate, but new files in chrome/content/zotero/xpcom must be included here using loadSubScript().


  • zotero.js
    • Sets defaults for Zotero preferences — changes to existing defaults only take effect on new installs (though new defaults can be added at any time).