Skip to content


Switch branches/tags

Latest commit

Bumps [esbuild]( from 0.14.42 to 0.14.47.
- [Release notes](
- [Changelog](
- [Commits](evanw/esbuild@v0.14.42...v0.14.47)

- dependency-name: esbuild
  dependency-type: direct:development
  update-type: version-update:semver-patch

Signed-off-by: dependabot[bot] <>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]>

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Tidy bibtex files. Try it out.

Screen Recording 2020-10-23 at 16 25 26(1)

There are several ways you can use bibtex-tidy:



@ARTICLE {feinberg1983technique,
  title={A technique for radiolabeling DNA restriction endonuclease fragments to high specific activity},
author={Feinberg, Andrew P and Vogelstein, Bert},
  journal    = {Analytical biochemistry},
  volume = 132,
    title={Qualitative data analysis: A sourcebook},
    author={Miles, Matthew B and Huberman, A Michael and Saldana, J},
    journal={Beverly Hills},

After bibtex-tidy references.bib:

  title         = {A technique for radiolabeling DNA restriction endonuclease fragments to high specific activity},
  author        = {Feinberg, Andrew P and Vogelstein, Bert},
  year          = 1983,
  journal       = {Analytical biochemistry},
  publisher     = {Elsevier},
  volume        = 132,
  number        = 1,
  pages         = {6--13}
  title         = {Qualitative data analysis: A sourcebook},
  author        = {Miles, Matthew B and Huberman, A Michael and Saldana, J},
  year          = 1984,
  journal       = {Beverly Hills}


Requires node v12 or later.

npm install -g bibtex-tidy
bibtex-tidy references.bib
  --help, -h
      Show help
      Remove specified fields from bibliography entries.
  --curly, --no-curly
      Enclose all property values in braces. Quoted values will be converted to
      braces. For example, "Journal of Tea" will become {Journal of Tea}.
  --numeric, --no-numeric
      Strip quotes and braces from numeric/month values. For example, {1998} will
      become 1998.
      Indent all fields with the specified number of spaces. Ignored if tab is set.
      --space=2 (default), --space=4
  --tab, --no-tab
      Indent all fields with a tab.
  --align, --no-align
      Insert whitespace between fields and values so that values are visually
      --align=14 (default)
  --sort, --no-sort
      Sort entries by specified fields. For descending order, prefix the field with
      a dash (-).
      --sort (sort by id), --sort=-year,name (sort year descending then name
      ascending), --sort=name,year
      Warn if duplicates are found, which are entries where DOI, abstract, or
      author and title are the same.
      --duplicates doi (same DOIs), --duplicates key (same IDs), --duplicates
      abstract (similar abstracts), --duplicates citation (similar author and
      titles), --duplicates doi, key (identical DOI or keys), --duplicates (same
      DOI, key, abstract, or citation)
  --merge, --no-merge
      Merge duplicates entries. Use the duplicates option to determine how
      duplicates are identified. There are different ways to merge:
      - first: only keep the original entry
      - last: only keep the last found duplicate
      - combine: keep original entry and merge in fields of duplicates if they do
      not already exist
      - overwrite: keep original entry and merge in fields of duplicates,
      overwriting existing fields if they exist
      Where an entire value is enclosed in double braces, remove the extra braces.
      For example, {{Journal of Tea}} will become {Journal of Tea}.
      Where values are all caps, make them title case. For example, {JOURNAL OF
      TEA} will become {Journal of Tea}.
  --escape, --no-escape
      Escape special characters, such as umlaut. This ensures correct typesetting
      with latex. Enabled by default.
      Sort the fields within entries.
      If no fields are specified fields will be sorted by: title, shorttitle,
      author, year, month, day, journal, booktitle, location, on, publisher,
      address, series, volume, number, pages, doi, isbn, issn, url, urldate,
      copyright, category, note, metadata
  --strip-comments, --no-strip-comments
      Remove all comments from the bibtex source.
  --trailing-commas, --no-trailing-commas
      End the last key value pair in each entry with a comma.
  --encode-urls, --no-encode-urls
      Replace invalid URL characters with percent encoded values.
  --tidy-comments, --no-tidy-comments
      Remove whitespace surrounding comments.
  --remove-empty-fields, --no-remove-empty-fields
      Remove any fields that have empty values.
  --remove-dupe-fields, --no-remove-dupe-fields
      Only allow one of each field in each entry. Enabled by default.
      [Experimental] For all entries replace the key with a new key of the form
      Truncate authors if above a given number into "and others".
      Lowercase field names and entry type. Enabled by default.
      Enclose the given fields in double braces, such that case is preserved during
      BibTeX compilation.
      --enclosing-braces=title,journal (output title and journal fields will be of
      the form {{This is a title}}), --enclosing-braces (equivalent to
  --wrap, --no-wrap
      Wrap long values at the given column
      --wrap (80 by default), --wrap=82
  --version, -v
      Show bibtex-tidy version.
      Suppress logs and warnings.
  --backup, --no-backup
      Make a backup <filename>.original. Enabled by default.

Javascript/Typescript API

npm install bibtex-tidy
const tidy = require('bibtex-tidy');
const bibtex = fs.readFileSync('references.bib', 'utf8');
tidy.tidy(bibtex, { curly: true });

Documentation for the options can be found here