Convert BibTeX to CSL-JSON
CSL-JSON is the bibliography format that Pandoc, citeproc-js, and
reference managers like Zotero use internally. If you write in Markdown and render
with Pandoc, a .json bibliography is often cleaner to work with than .bib. This
tool reads standard BibTeX entries and emits a CSL-JSON array you can drop into your
Pandoc workflow.
How it works
The parser scans for @type{key, ...} blocks, tracking brace depth so nested braces
inside a field value do not end the entry early. Each field = {value} or
field = "value" pair is captured, and surrounding braces and quotes are stripped.
Fields are then mapped onto CSL variables: title→title, journal/booktitle→container-title,
volume→volume, number→issue, pages→page (with -- normalised to -), doi→DOI,
publisher→publisher. The author and editor fields are split on and into CSL
name objects with family/given. The year becomes an issued object whose
date-parts is [[year]]. The BibTeX entry type chooses the CSL type
(@article→article-journal, @inproceedings→paper-conference, and so on).
Notes
The output id of each CSL item is the BibTeX cite key, so in-text citations like
[@Smith2021] keep working after conversion. Page ranges written with a single
hyphen, an en-dash, or -- are all normalised to a single hyphen, which is what
CSL expects.