Citation.js converts formats like BibTeX, Wikidata JSON and BibJSON to CSL-JSON to convert to other formats like APA, Vancouver, RIS and back to BibTeX.

Read the paper Citation.js: a format-independent, modular bibliography tool for the browser and command line. DOI 10.7717/peerj-cs.214

SiteRepoGetting StartedDocumentationDemo

NPM version NPM total downloads Build Status License JavaScript Style Guide Join the chat at DOI


citation-js/citation-js replaces larsgw/citation.js
This repository contains the npm package @citation-js/core and several other components. This repository contains the npm package citation-js that wraps the aforementioned components for backwards compatibility.


Core functionality:

  • Cite: reference manager
  • plugins: plugins manager
  • util: several utility functions and classes
  • version


Plugin Description
plugin-bibjson Plugin for BibJSON formats for Citation.js
plugin-bibtex Plugin for BibTeX formats for Citation.js
plugin-csl Plugin for CSL output for Citation.js
plugin-doi Plugin for DOI input for Citation.js
plugin-ris Plugin for RIS formats for Citation.js
plugin-wikidata Plugin for Wikidata for Citation.js

Plugins in other repositories

Plugin Description
plugin-software-formats Plugin for CFF, Zenodo JSON, input from GitHub and npm URLs
plugin-isbn Plugin for ISBNs (from Google Books, OpenLibrary)
plugin-orcid Plugin for ORCID profiles (metadata from DOIs and ISBNs)
plugin-pubmed Plugin for PubMed and PubMed Central identifiers
plugin-quickstatements Plugin for output to Wikidata QuickStatements
plugin-zotero-translation-server Plugin for Zotero JSON and interfacing with a Zotero translation server
plugin-refer Plugin for the refer file format
plugin-refworks Plugin for the RefWorks tagged format



Usage: citation-js [options]

  -V, --version                   output the version number
  -i, --input <path>              Input file. If all input options are omitted, it uses stdin
  -t, --text <string>             Input text. If all input options are omitted, it uses stdin
  -u, --url <string>              Deprecated in favor of -t, --text. If all input options are omitted, it uses stdin
  -o, --output <path>             Output file (omit file extension). If this option is omitted, the output is written to stdout
  -R, --output-non-real           Output as a text file
  -f, --output-type <option>      Output structure type: string, html, json (default: "json")
  -s, --output-style <option>     Output scheme. A combination of --output-format json and --output-style citation-* is considered invalid. Options: csl (Citation Style Lanugage JSON), bibtex, citation-* (where * is any formatting style) (default: "csl")
  -l, --output-language <option>  Output language. [RFC 5646]( codes (default: "en-US")
  -h, --help                      output usage information




  • Thanks to BrowserStack for the free Open Source plan, allowing me to automate testing browser support, and avoid issues like this one!